diff options
Diffstat (limited to 'so-optimization-clients/src/main')
31 files changed, 2519 insertions, 0 deletions
diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/OofClient.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/OofClient.java new file mode 100644 index 0000000000..71ecc5c478 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/OofClient.java @@ -0,0 +1,83 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof; + + +import org.onap.so.client.BaseClient; +import org.onap.so.client.exception.BadResponseException; +import org.onap.so.client.oof.beans.OofProperties; +import org.onap.so.client.oof.beans.OofRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Component; +import com.fasterxml.jackson.core.JsonProcessingException; +import java.util.LinkedHashMap; + +@Component +public class OofClient { + + private static final Logger logger = LoggerFactory.getLogger(OofClient.class); + public static final String X_MINOR_VERSION = "X-MinorVersion"; + public static final String X_PATCH_VERSION = "X-PatchVersion"; + public static final String X_LATEST_VERSION = "X-LatestVersion"; + + @Autowired + private OofProperties oofProperties; + + @Autowired + private OofValidator validator; + + + /** + * Makes a rest call to oof to perform homing and licensing for a list of demands + * + * @param homingRequest + * @return + * @throws JsonProcessingException + * @throws BpmnError + */ + public void postDemands(OofRequest homingRequest) throws BadResponseException, JsonProcessingException { + logger.trace("Started oof Client Post Demands"); + String url = oofProperties.getHost() + oofProperties.getUri(); + logger.debug("Post demands url: " + url); + logger.debug("Post demands payload: " + homingRequest.toJsonString()); + + HttpHeaders header = new HttpHeaders(); + header.setContentType(MediaType.APPLICATION_JSON); + header.set(HttpHeaders.AUTHORIZATION, oofProperties.getHeaders().get("auth")); + header.set(X_PATCH_VERSION, oofProperties.getHeaders().get("patchVersion")); + header.set(X_MINOR_VERSION, oofProperties.getHeaders().get("minorVersion")); + header.set(X_LATEST_VERSION, oofProperties.getHeaders().get("latestVersion")); + BaseClient<String, LinkedHashMap<?, ?>> baseClient = new BaseClient<>(); + + baseClient.setTargetUrl(url); + baseClient.setHttpHeader(header); + + LinkedHashMap<?, ?> response = + baseClient.post(homingRequest.toJsonString(), new ParameterizedTypeReference<LinkedHashMap<?, ?>>() {}); + validator.validateDemandsResponse(response); + logger.trace("Completed OOF Client Post Demands"); + } +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/OofValidator.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/OofValidator.java new file mode 100644 index 0000000000..2c22d9d09e --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/OofValidator.java @@ -0,0 +1,98 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof; + + +import org.json.JSONObject; +import org.onap.so.client.exception.BadResponseException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import java.util.LinkedHashMap; +import static org.apache.commons.lang3.StringUtils.isNotBlank; + + +@Component +public class OofValidator { + + private static final Logger logger = LoggerFactory.getLogger(OofValidator.class); + + /** + * Validates the synchronous homing response from oof + * + * @throws BadResponseException + */ + public void validateDemandsResponse(LinkedHashMap<?, ?> response) throws BadResponseException { + logger.debug("Validating oofs synchronous response"); + if (!response.isEmpty()) { + JSONObject jsonResponse = new JSONObject(response); + if (jsonResponse.has("requestStatus")) { + String status = jsonResponse.getString("requestStatus"); + if (status.equals("accepted")) { + logger.debug("oofs synchronous response indicates accepted"); + } else { + String message = jsonResponse.getString("statusMessage"); + if (isNotBlank(message)) { + logger.debug("oofs response indicates failed: " + message); + } else { + logger.debug("oofs response indicates failed: no status message provided"); + message = "error message not provided"; + } + throw new BadResponseException("oofs synchronous response indicates failed: " + message); + } + } else { + logger.debug("oofs synchronous response does not contain: request status"); + throw new BadResponseException("oofs synchronous response does not contain: request status"); + } + } else { + logger.debug("oofs synchronous response is empty"); + throw new BadResponseException("oofs synchronous response i is empty"); + } + } + + /** + * Validates the asynchronous/callback response from oof which contains the homing and licensing solutions + * + * @throws BadResponseException + */ + public void validateSolution(String response) throws BadResponseException { + logger.debug("Validating oofs asynchronous callback response"); + if (isNotBlank(response)) { + JSONObject jsonResponse = new JSONObject(response); + if (!jsonResponse.has("serviceException")) { + logger.debug("oofs asynchronous response is valid"); + } else { + String message = jsonResponse.getJSONObject("serviceException").getString("text"); + if (isNotBlank(message)) { + logger.debug("oofs response contains a service exception: " + message); + } else { + logger.debug("oofs response contains a service exception: no service exception text provided"); + message = "error message not provided"; + } + throw new BadResponseException("oofs asynchronous response contains a service exception: " + message); + } + } else { + logger.debug("oofs asynchronous response is empty"); + throw new BadResponseException("oofs asynchronous response is empty"); + } + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/LicenseDemand.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/LicenseDemand.java new file mode 100644 index 0000000000..e64a5450b5 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/LicenseDemand.java @@ -0,0 +1,97 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2019 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof.beans; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRootName; +import java.io.Serializable; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({"resourceModuleName", "serviceResourceId", "tenantId", "resourceModelInfo"}) +@JsonRootName("licenseDemand") +public class LicenseDemand implements Serializable { + + private static final long serialVersionUID = -759180997599143791L; + + @JsonProperty("resourceModuleName") + private String resourceModuleName; + @JsonProperty("serviceResourceId") + private String serviceResourceId; + @JsonProperty("tenantId") + private String tenantId; + @JsonProperty("resourceModelInfo") + private ResourceModelInfo resourceModelInfo; + + @JsonProperty("resourceModuleName") + public String getResourceModuleName() { + return resourceModuleName; + } + + @JsonProperty("resourceModuleName") + public void setResourceModuleName(String resourceModuleName) { + this.resourceModuleName = resourceModuleName; + } + + @JsonProperty("serviceResourceId") + public String getServiceResourceId() { + return serviceResourceId; + } + + @JsonProperty("serviceResourceId") + public void setServiceResourceId(String serviceResourceId) { + this.serviceResourceId = serviceResourceId; + } + + @JsonProperty("tenantId") + public String getTenantId() { + return tenantId; + } + + @JsonProperty("tenantId") + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + @JsonProperty("resourceModelInfo") + public ResourceModelInfo getResourceModelInfo() { + return resourceModelInfo; + } + + @JsonProperty("resourceModelInfo") + public void setResourceModelInfo(ResourceModelInfo resourceModelInfo) { + this.resourceModelInfo = resourceModelInfo; + } + + public void setResourceModelInfo(ModelInfo modelInfo) { + ResourceModelInfo localResourceModelInfo = new ResourceModelInfo(); + localResourceModelInfo.setModelVersionId(modelInfo.getModelVersionId()); + localResourceModelInfo.setModelVersionId(modelInfo.getModelVersionId()); + localResourceModelInfo.setModelVersion(modelInfo.getModelVersion()); + localResourceModelInfo.setModelName(modelInfo.getModelName()); + localResourceModelInfo.setModelType(modelInfo.getModelType()); + localResourceModelInfo.setModelInvariantId(modelInfo.getModelInvariantId()); + localResourceModelInfo.setModelCustomizationName(modelInfo.getModelCustomizationName()); + this.resourceModelInfo = localResourceModelInfo; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/LicenseInfo.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/LicenseInfo.java new file mode 100644 index 0000000000..74ff9339d3 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/LicenseInfo.java @@ -0,0 +1,49 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2019 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof.beans; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonRootName; +import java.io.Serializable; +import java.util.ArrayList; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonRootName("licenseInfo") +public class LicenseInfo implements Serializable { + + private static final long serialVersionUID = -759180997599143791L; + + @JsonProperty("licenseDemands") + private ArrayList<LicenseDemand> licenseDemands = new ArrayList<>(); + + + @JsonProperty("licenseDemands") + public ArrayList<LicenseDemand> getLicenseDemands() { + return licenseDemands; + } + + @JsonProperty("licenseDemands") + public void setLicenseDemands(ArrayList<LicenseDemand> licenseDemands) { + this.licenseDemands = licenseDemands; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/ModelInfo.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/ModelInfo.java new file mode 100644 index 0000000000..433de22aba --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/ModelInfo.java @@ -0,0 +1,110 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof.beans; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRootName; +import java.io.Serializable; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({"modelType", "modelInvariantId", "modelVersionId", "modelName", "modelVersion", + "modelCustomizationName"}) +@JsonRootName("modelInfo") +public class ModelInfo implements Serializable { + + private static final long serialVersionUID = -759180997599143791L; + + @JsonProperty("modelType") + private String modelType; + @JsonProperty("modelInvariantId") + private String modelInvariantId; + @JsonProperty("modelVersionId") + private String modelVersionId; + @JsonProperty("modelName") + private String modelName; + @JsonProperty("modelVersion") + private String modelVersion; + @JsonProperty("modelCustomizationName") + private String modelCustomizationName; + + @JsonProperty("modelType") + public String getModelType() { + return modelType; + } + + @JsonProperty("modelType") + public void setModelType(String modelType) { + this.modelType = modelType; + } + + @JsonProperty("modelInvariantId") + public String getModelInvariantId() { + return modelInvariantId; + } + + @JsonProperty("modelInvariantId") + public void setModelInvariantId(String modelInvariantId) { + this.modelInvariantId = modelInvariantId; + } + + @JsonProperty("modelVersionId") + public String getModelVersionId() { + return modelVersionId; + } + + @JsonProperty("modelVersionId") + public void setModelVersionId(String modelVersionId) { + this.modelVersionId = modelVersionId; + } + + @JsonProperty("modelName") + public String getModelName() { + return modelName; + } + + @JsonProperty("modelName") + public void setModelName(String modelName) { + this.modelName = modelName; + } + + @JsonProperty("modelVersion") + public String getModelVersion() { + return modelVersion; + } + + @JsonProperty("modelVersion") + public void setModelVersion(String modelVersion) { + this.modelVersion = modelVersion; + } + + @JsonProperty("modelCustomizationName") + public String getModelCustomizationName() { + return modelCustomizationName; + } + + @JsonProperty("modelCustomizationName") + public void setModelCustomizationName(String modelCustomizationName) { + this.modelCustomizationName = modelCustomizationName; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/OofProperties.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/OofProperties.java new file mode 100644 index 0000000000..84e29b6f2d --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/OofProperties.java @@ -0,0 +1,63 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof.beans; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import java.util.Map; + +@Configuration +@ConfigurationProperties(prefix = "oof") +public class OofProperties { + + private String host; + private String uri; + + private Map<String, String> headers; + + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public String getUri() { + return uri; + } + + public void setUri(String uri) { + this.uri = uri; + } + + public Map<String, String> getHeaders() { + return headers; + } + + public void setHeaders(Map<String, String> headers) { + this.headers = headers; + } + + + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/OofRequest.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/OofRequest.java new file mode 100644 index 0000000000..f8896240ba --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/OofRequest.java @@ -0,0 +1,100 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof.beans; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.io.Serializable; + + +public class OofRequest implements Serializable { + + private static final long serialVersionUID = -1541132882892163132L; + private static final Logger logger = LoggerFactory.getLogger(OofRequest.class); + + + @JsonProperty("requestInfo") + private RequestInfo requestInformation; + + @JsonProperty("serviceInfo") + private ServiceInfo serviceInformation; + + @JsonProperty("placementInfo") + private PlacementInfo placementInformation; + + @JsonProperty("licenseInfo") + private LicenseInfo licenseInformation; + + + public RequestInfo getRequestInformation() { + return requestInformation; + } + + public void setRequestInformation(RequestInfo requestInformation) { + this.requestInformation = requestInformation; + } + + public ServiceInfo getServiceInformation() { + return serviceInformation; + } + + public void setServiceInformation(ServiceInfo serviceInformation) { + this.serviceInformation = serviceInformation; + } + + public PlacementInfo getPlacementInformation() { + return placementInformation; + } + + public void setPlacementInformation(PlacementInfo placementInformation) { + this.placementInformation = placementInformation; + } + + public LicenseInfo getLicenseInformation() { + return licenseInformation; + } + + public void setLicenseInformation(LicenseInfo licenseInformation) { + this.licenseInformation = licenseInformation; + } + + + @JsonInclude(Include.NON_NULL) + public String toJsonString() { + String json = ""; + ObjectMapper mapper = new ObjectMapper(); + mapper.setSerializationInclusion(Include.NON_NULL); + ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter(); + try { + json = ow.writeValueAsString(this); + } catch (Exception e) { + logger.error("Unable to convert oofRequest to string", e); + } + return json.replaceAll("\\\\", ""); + } + + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/OofRequestParameters.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/OofRequestParameters.java new file mode 100644 index 0000000000..6c9e45c787 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/OofRequestParameters.java @@ -0,0 +1,74 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof.beans; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRootName; +import java.io.Serializable; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({"customerLatitude", "customerLongitude", "customerName"}) +@JsonRootName("requestParameters") +public class OofRequestParameters implements Serializable { + + private static final long serialVersionUID = -759180997599143791L; + + + @JsonProperty("customerLatitude") + private String customerLatitude; + @JsonProperty("customerLongitude") + private String customerLongitude; + @JsonProperty("customerName") + private String customerName; + + @JsonProperty("customerLatitude") + public String getCustomerLatitude() { + return customerLatitude; + } + + @JsonProperty("customerLatitude") + public void setCustomerLatitude(String customerLatitude) { + this.customerLatitude = customerLatitude; + } + + @JsonProperty("customerLongitude") + public String getCustomerLongitude() { + return customerLongitude; + } + + @JsonProperty("customerLongitude") + public void setCustomerLongitude(String customerLongitude) { + this.customerLongitude = customerLongitude; + } + + @JsonProperty("customerName") + public String getCustomerName() { + return customerName; + } + + @JsonProperty("customerName") + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/PlacementDemand.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/PlacementDemand.java new file mode 100644 index 0000000000..631b3707d4 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/PlacementDemand.java @@ -0,0 +1,97 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof.beans; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRootName; +import java.io.Serializable; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({"resourceModuleName", "serviceResourceId", "tenantId", "resourceModelInfo"}) +@JsonRootName("placementDemand") +public class PlacementDemand implements Serializable { + + private static final long serialVersionUID = -759180997599143791L; + + @JsonProperty("resourceModuleName") + private String resourceModuleName; + @JsonProperty("serviceResourceId") + private String serviceResourceId; + @JsonProperty("tenantId") + private String tenantId; + @JsonProperty("resourceModelInfo") + private ResourceModelInfo resourceModelInfo; + + @JsonProperty("resourceModuleName") + public String getResourceModuleName() { + return resourceModuleName; + } + + @JsonProperty("resourceModuleName") + public void setResourceModuleName(String resourceModuleName) { + this.resourceModuleName = resourceModuleName; + } + + @JsonProperty("serviceResourceId") + public String getServiceResourceId() { + return serviceResourceId; + } + + @JsonProperty("serviceResourceId") + public void setServiceResourceId(String serviceResourceId) { + this.serviceResourceId = serviceResourceId; + } + + @JsonProperty("tenantId") + public String getTenantId() { + return tenantId; + } + + @JsonProperty("tenantId") + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + @JsonProperty("resourceModelInfo") + public ResourceModelInfo getResourceModelInfo() { + return resourceModelInfo; + } + + @JsonProperty("resourceModelInfo") + public void setResourceModelInfo(ResourceModelInfo resourceModelInfo) { + this.resourceModelInfo = resourceModelInfo; + } + + public void setResourceModelInfo(ModelInfo modelInfo) { + ResourceModelInfo localResourceModelInfo = new ResourceModelInfo(); + localResourceModelInfo.setModelVersionId(modelInfo.getModelVersionId()); + localResourceModelInfo.setModelVersionId(modelInfo.getModelVersionId()); + localResourceModelInfo.setModelVersion(modelInfo.getModelVersion()); + localResourceModelInfo.setModelName(modelInfo.getModelName()); + localResourceModelInfo.setModelType(modelInfo.getModelType()); + localResourceModelInfo.setModelInvariantId(modelInfo.getModelInvariantId()); + localResourceModelInfo.setModelCustomizationName(modelInfo.getModelCustomizationName()); + this.resourceModelInfo = localResourceModelInfo; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/PlacementInfo.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/PlacementInfo.java new file mode 100644 index 0000000000..7519e8c87e --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/PlacementInfo.java @@ -0,0 +1,74 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof.beans; + +import java.io.Serializable; +import java.util.ArrayList; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRootName; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({"requestParameters", "subscriberInfo", "placementDemands"}) +@JsonRootName("placementInfo") +public class PlacementInfo implements Serializable { + + private static final long serialVersionUID = -759180997599143791L; + + @JsonProperty("requestParameters") + private OofRequestParameters requestParameters; + @JsonProperty("subscriberInfo") + private SubscriberInfo subscriberInfo; + @JsonProperty("placementDemands") + private ArrayList<PlacementDemand> placementDemands = new ArrayList<>(); + + @JsonProperty("requestParameters") + public OofRequestParameters getRequestParameters() { + return requestParameters; + } + + @JsonProperty("requestParameters") + public void setRequestParameters(OofRequestParameters requestParameters) { + this.requestParameters = requestParameters; + } + + @JsonProperty("subscriberInfo") + public SubscriberInfo getSubscriberInfo() { + return subscriberInfo; + } + + @JsonProperty("subscriberInfo") + public void setSubscriberInfo(SubscriberInfo subscriberInfo) { + this.subscriberInfo = subscriberInfo; + } + + @JsonProperty("placementDemands") + public ArrayList<PlacementDemand> getPlacementDemands() { + return placementDemands; + } + + @JsonProperty("placementDemands") + public void setPlacementDemands(ArrayList<PlacementDemand> placementDemands) { + this.placementDemands = placementDemands; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/RequestInfo.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/RequestInfo.java new file mode 100644 index 0000000000..0132ed56e9 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/RequestInfo.java @@ -0,0 +1,135 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof.beans; + +import java.io.Serializable; +import java.util.List; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRootName; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({"transactionId", "requestId", "callbackUrl", "sourceId", "requestType", "numSolutions", + "optimizers", "timeout"}) +@JsonRootName("requestInfo") +public class RequestInfo implements Serializable { + + private static final long serialVersionUID = -759180997599143791L; + + @JsonProperty("transactionId") + private String transactionId; + @JsonProperty("requestId") + private String requestId; + @JsonProperty("callbackUrl") + private String callbackUrl; + @JsonProperty("sourceId") + private String sourceId; + @JsonProperty("requestType") + private String requestType; + @JsonProperty("numSolutions") + private Integer numSolutions; + @JsonProperty("optimizers") + private List<String> optimizers = null; + @JsonProperty("timeout") + private Long timeout; + + @JsonProperty("transactionId") + public String getTransactionId() { + return transactionId; + } + + @JsonProperty("transactionId") + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } + + @JsonProperty("requestId") + public String getRequestId() { + return requestId; + } + + @JsonProperty("requestId") + public void setRequestId(String requestId) { + this.requestId = requestId; + } + + @JsonProperty("callbackUrl") + public String getCallbackUrl() { + return callbackUrl; + } + + @JsonProperty("callbackUrl") + public void setCallbackUrl(String callbackUrl) { + this.callbackUrl = callbackUrl; + } + + @JsonProperty("sourceId") + public String getSourceId() { + return sourceId; + } + + @JsonProperty("sourceId") + public void setSourceId(String sourceId) { + this.sourceId = sourceId; + } + + @JsonProperty("requestType") + public String getRequestType() { + return requestType; + } + + @JsonProperty("requestType") + public void setRequestType(String requestType) { + this.requestType = requestType; + } + + @JsonProperty("numSolutions") + public Integer getNumSolutions() { + return numSolutions; + } + + @JsonProperty("numSolutions") + public void setNumSolutions(Integer numSolutions) { + this.numSolutions = numSolutions; + } + + @JsonProperty("optimizers") + public List<String> getOptimizers() { + return optimizers; + } + + @JsonProperty("optimizers") + public void setOptimizers(List<String> optimizers) { + this.optimizers = optimizers; + } + + @JsonProperty("timeout") + public Long getTimeout() { + return timeout; + } + + @JsonProperty("timeout") + public void setTimeout(Long timeout) { + this.timeout = timeout; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/Resource.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/Resource.java new file mode 100644 index 0000000000..8d44c63571 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/Resource.java @@ -0,0 +1,54 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof.beans; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.io.Serializable; + +public class Resource implements Serializable { + + private static final long serialVersionUID = 5949861520571440421L; + + @JsonProperty("service-resource-id") + private String serviceResourceId; + @JsonProperty("status") + private String status; + + + public String getServiceResourceId() { + return serviceResourceId; + } + + public void setServiceResourceId(String serviceResourceId) { + this.serviceResourceId = serviceResourceId; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/ResourceModelInfo.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/ResourceModelInfo.java new file mode 100644 index 0000000000..9d0352525d --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/ResourceModelInfo.java @@ -0,0 +1,107 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof.beans; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonRootName; +import java.io.Serializable; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonRootName("resourceModelInfo") +public class ResourceModelInfo extends ModelInfo implements Serializable { + + private static final long serialVersionUID = -759180997599143791L; + + @JsonProperty("modelInvariantId") + private String modelInvariantId; + @JsonProperty("modelVersionId") + private String modelVersionId; + @JsonProperty("modelName") + private String modelName; + @JsonProperty("modelType") + private String modelType; + @JsonProperty("modelVersion") + private String modelVersion; + @JsonProperty("modelCustomizationName") + private String modelCustomizationName; + + @JsonProperty("modelInvariantId") + public String getModelInvariantId() { + return modelInvariantId; + } + + @JsonProperty("modelInvariantId") + public void setModelInvariantId(String modelInvariantId) { + this.modelInvariantId = modelInvariantId; + } + + @JsonProperty("modelVersionId") + public String getModelVersionId() { + return modelVersionId; + } + + @JsonProperty("modelVersionId") + public void setModelVersionId(String modelVersionId) { + this.modelVersionId = modelVersionId; + } + + @JsonProperty("modelName") + public String getModelName() { + return modelName; + } + + @JsonProperty("modelName") + public void setModelName(String modelName) { + this.modelName = modelName; + } + + @JsonProperty("modelType") + public String getModelType() { + return modelType; + } + + @JsonProperty("modelType") + public void setModelType(String modelType) { + this.modelType = modelType; + } + + @JsonProperty("modelVersion") + public String getModelVersion() { + return modelVersion; + } + + @JsonProperty("modelVersion") + public void setModelVersion(String modelVersion) { + this.modelVersion = modelVersion; + } + + @JsonProperty("modelCustomizationName") + public String getModelCustomizationName() { + return modelCustomizationName; + } + + @JsonProperty("modelCustomizationName") + public void setModelCustomizationName(String modelCustomizationName) { + this.modelCustomizationName = modelCustomizationName; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/ServiceInfo.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/ServiceInfo.java new file mode 100644 index 0000000000..db0e2acd60 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/ServiceInfo.java @@ -0,0 +1,73 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof.beans; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRootName; +import java.io.Serializable; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({"serviceInstanceId", "serviceName", "modelInfo"}) +@JsonRootName("serviceInfo") +public class ServiceInfo implements Serializable { + + private static final long serialVersionUID = -759180997599143791L; + + @JsonProperty("serviceInstanceId") + private String serviceInstanceId; + @JsonProperty("serviceName") + private String serviceName; + @JsonProperty("modelInfo") + private ModelInfo modelInfo; + + @JsonProperty("serviceInstanceId") + public String getServiceInstanceId() { + return serviceInstanceId; + } + + @JsonProperty("serviceInstanceId") + public void setServiceInstanceId(String serviceInstanceId) { + this.serviceInstanceId = serviceInstanceId; + } + + @JsonProperty("serviceName") + public String getServiceName() { + return serviceName; + } + + @JsonProperty("serviceName") + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + + @JsonProperty("modelInfo") + public ModelInfo getModelInfo() { + return modelInfo; + } + + @JsonProperty("modelInfo") + public void setModelInfo(ModelInfo modelInfo) { + this.modelInfo = modelInfo; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/SubscriberInfo.java b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/SubscriberInfo.java new file mode 100644 index 0000000000..8fef4c45e7 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/oof/beans/SubscriberInfo.java @@ -0,0 +1,72 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Intel Corp. All rights reserved. + * ================================================================================ + * 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.so.client.oof.beans; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRootName; +import java.io.Serializable; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({"globalSubscriberId", "subscriberName", "subscriberCommonSiteId"}) +@JsonRootName("subscriberInfo") +public class SubscriberInfo implements Serializable { + + private static final long serialVersionUID = -759180997599143791L; + + @JsonProperty("globalSubscriberId") + private String globalSubscriberId; + @JsonProperty("subscriberName") + private String subscriberName; + @JsonProperty("subscriberCommonSiteId") + private String subscriberCommonSiteId; + + @JsonProperty("globalSubscriberId") + public String getGlobalSubscriberId() { + return globalSubscriberId; + } + + @JsonProperty("globalSubscriberId") + public void setGlobalSubscriberId(String globalSubscriberId) { + this.globalSubscriberId = globalSubscriberId; + } + + @JsonProperty("subscriberName") + public String getSubscriberName() { + return subscriberName; + } + + @JsonProperty("subscriberName") + public void setSubscriberName(String subscriberName) { + this.subscriberName = subscriberName; + } + + @JsonProperty("subscriberCommonSiteId") + public String getSubscriberCommonSiteId() { + return subscriberCommonSiteId; + } + + @JsonProperty("subscriberCommonSiteId") + public void setSubscriberCommonSiteId(String subscriberCommonSiteId) { + this.subscriberCommonSiteId = subscriberCommonSiteId; + } +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/SniroClient.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/SniroClient.java new file mode 100644 index 0000000000..6930b6e0af --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/SniroClient.java @@ -0,0 +1,115 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright (c) 2019 Samsung + * ================================================================================ + * 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.so.client.sniro; + +import java.util.LinkedHashMap; +import org.onap.so.client.BaseClient; +import org.onap.so.client.exception.BadResponseException; +import org.onap.so.client.sniro.beans.ConductorProperties; +import org.onap.so.client.sniro.beans.ManagerProperties; +import org.onap.so.client.sniro.beans.SniroConductorRequest; +import org.onap.so.client.sniro.beans.SniroManagerRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Component; + + +@Component +public class SniroClient { + + private static final Logger logger = LoggerFactory.getLogger(SniroClient.class); + + @Autowired + private ManagerProperties managerProperties; + + @Autowired + private SniroValidator validator; + + + /** + * Makes a rest call to sniro manager to perform homing and licensing for a list of demands + * + * @param homingRequest + * @return + * @throws BadResponseException + */ + public void postDemands(SniroManagerRequest homingRequest) throws BadResponseException { + logger.trace("Started Sniro Client Post Demands"); + String url = managerProperties.getHost() + managerProperties.getUri().get("v2"); + logger.debug("Post demands url: {}", url); + logger.debug("Post demands payload: {}", homingRequest.toJsonString()); + + HttpHeaders header = new HttpHeaders(); + header.setContentType(MediaType.APPLICATION_JSON); + header.set("Authorization", managerProperties.getHeaders().get("auth")); + header.set("X-patchVersion", managerProperties.getHeaders().get("patchVersion")); + header.set("X-minorVersion", managerProperties.getHeaders().get("minorVersion")); + header.set("X-latestVersion", managerProperties.getHeaders().get("latestVersion")); + BaseClient<String, LinkedHashMap<String, Object>> baseClient = new BaseClient<>(); + + baseClient.setTargetUrl(url); + baseClient.setHttpHeader(header); + + LinkedHashMap<String, Object> response = baseClient.post(homingRequest.toJsonString(), + new ParameterizedTypeReference<LinkedHashMap<String, Object>>() {}); + validator.validateDemandsResponse(response); + logger.trace("Completed Sniro Client Post Demands"); + } + + /** + * Makes a rest call to sniro conductor to notify them of successful or unsuccessful vnf creation for previously + * homed resources + * + * TODO Temporarily being used in groovy therefore can not utilize autowire. Once java "release" subflow is + * developed it will be refactored to use autowire. + * + * @param releaseRequest + * @return + * @throws BadResponseException + */ + public void postRelease(SniroConductorRequest releaseRequest) throws BadResponseException { + logger.trace("Started Sniro Client Post Release"); + String url = ConductorProperties.getHost() + ConductorProperties.getUri(); + logger.debug("Post release url: {}", url); + logger.debug("Post release payload: {}", releaseRequest.toJsonString()); + + HttpHeaders header = new HttpHeaders(); + header.setContentType(MediaType.APPLICATION_JSON); + header.set("Authorization", ConductorProperties.getAuth()); + BaseClient<String, LinkedHashMap<String, Object>> baseClient = new BaseClient<>(); + + baseClient.setTargetUrl(url); + baseClient.setHttpHeader(header); + + LinkedHashMap<String, Object> response = baseClient.post(releaseRequest.toJsonString(), + new ParameterizedTypeReference<LinkedHashMap<String, Object>>() {}); + SniroValidator v = new SniroValidator(); + v.validateReleaseResponse(response); + logger.trace("Completed Sniro Client Post Release"); + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/SniroValidator.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/SniroValidator.java new file mode 100644 index 0000000000..fc16125433 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/SniroValidator.java @@ -0,0 +1,138 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright (c) 2019 Samsung + * ================================================================================ + * 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.so.client.sniro; + + +import static org.apache.commons.lang3.StringUtils.*; +import java.util.LinkedHashMap; +import org.json.JSONObject; +import org.onap.so.client.exception.BadResponseException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + + + +@Component +public class SniroValidator { + + private static final Logger logger = LoggerFactory.getLogger(SniroValidator.class); + + /** + * Validates the synchronous homing response from sniro manager + * + * @throws BadResponseException + */ + public void validateDemandsResponse(LinkedHashMap<String, Object> response) throws BadResponseException { + logger.debug("Validating Sniro Managers synchronous response"); + if (!response.isEmpty()) { + JSONObject jsonResponse = new JSONObject(response); + if (jsonResponse.has("requestStatus")) { + String status = jsonResponse.getString("requestStatus"); + if ("accepted".equals(status)) { + logger.debug("Sniro Managers synchronous response indicates accepted"); + } else { + String message = jsonResponse.getString("statusMessage"); + if (isNotBlank(message)) { + logger.debug("Sniro Managers response indicates failed: " + message); + } else { + logger.debug("Sniro Managers response indicates failed: no status message provided"); + message = "error message not provided"; + } + throw new BadResponseException("Sniro Managers synchronous response indicates failed: " + message); + } + } else { + logger.debug("Sniro Managers synchronous response does not contain: request status"); + throw new BadResponseException("Sniro Managers synchronous response does not contain: request status"); + } + } else { + logger.debug("Sniro Managers synchronous response is empty"); + throw new BadResponseException("Sniro Managers synchronous response i is empty"); + } + } + + /** + * Validates the asynchronous/callback response from sniro manager which contains the homing and licensing solutions + * + * @throws BadResponseException + */ + public static void validateSolution(String response) throws BadResponseException { + logger.debug("Validating Sniro Managers asynchronous callback response"); + if (isNotBlank(response)) { + JSONObject jsonResponse = new JSONObject(response); + if (!jsonResponse.has("serviceException")) { + logger.debug("Sniro Managers asynchronous response is valid"); + } else { + String message = jsonResponse.getJSONObject("serviceException").getString("text"); + if (isNotBlank(message)) { + logger.debug("Sniro Managers response contains a service exception: " + message); + } else { + logger.debug( + "Sniro Managers response contains a service exception: no service exception text provided"); + message = "error message not provided"; + } + throw new BadResponseException( + "Sniro Managers asynchronous response contains a service exception: " + message); + } + } else { + logger.debug("Sniro Managers asynchronous response is empty"); + throw new BadResponseException("Sniro Managers asynchronous response is empty"); + } + } + + + /** + * Validates the release response from sniro conductor + * + * @throws BadResponseException + */ + public void validateReleaseResponse(LinkedHashMap<String, Object> response) throws BadResponseException { + logger.debug("Validating Sniro Conductors response"); + if (!response.isEmpty()) { + String status = (String) response.get("status"); + if (isNotBlank(status)) { + if ("success".equals(status)) { + logger.debug("Sniro Conductors synchronous response indicates success"); + } else { + String message = (String) response.get("message"); + if (isNotBlank(message)) { + logger.debug("Sniro Conductors response indicates failed: " + message); + } else { + logger.debug("Sniro Conductors response indicates failed: error message not provided"); + message = "error message not provided"; + } + throw new BadResponseException( + "Sniro Conductors synchronous response indicates failed: " + message); + } + } else { + logger.debug("Sniro Managers Conductors response does not contain: status"); + throw new BadResponseException("Sniro Conductors synchronous response does not contain: status"); + } + } else { + logger.debug("Sniro Conductors response is empty"); + throw new BadResponseException("Sniro Conductors response is empty"); + } + + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/Candidate.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/Candidate.java new file mode 100644 index 0000000000..87e81ccaad --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/Candidate.java @@ -0,0 +1,70 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.client.sniro.beans; + +import java.io.Serializable; +import java.util.List; +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Candidate implements Serializable { + + private static final long serialVersionUID = -5474502255533410907L; + + @JsonProperty("identifierType") + private CandidateType identifierType; + @JsonProperty("identifiers") + private List<String> identifiers; + @JsonProperty("cloudOwner") + private String cloudOwner; + + public Candidate() {} + + public Candidate(CandidateType identifierType, List<String> identifiers, String cloudOwner) { + this.identifierType = identifierType; + this.identifiers = identifiers; + this.cloudOwner = cloudOwner; + } + + public CandidateType getIdentifierType() { + return identifierType; + } + + public void setIdentifierType(CandidateType identifierType) { + this.identifierType = identifierType; + } + + public List<String> getIdentifiers() { + return identifiers; + } + + public void setIdentifiers(List<String> identifiers) { + this.identifiers = identifiers; + } + + public String getCloudOwner() { + return cloudOwner; + } + + public void setCloudOwner(String cloudOwner) { + this.cloudOwner = cloudOwner; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/CandidateType.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/CandidateType.java new file mode 100644 index 0000000000..3ef89184e2 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/CandidateType.java @@ -0,0 +1,41 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.client.sniro.beans; + +import com.fasterxml.jackson.annotation.JsonValue; + +public enum CandidateType { + + + SERVICE_INSTANCE_ID("serviceInstanceId"), CLOUD_REGION_ID("cloudRegionId"), VNF_ID("vnfId"), VNF_NAME("vnfName"); + + private final String name; + + private CandidateType(String name) { + this.name = name; + } + + @Override + @JsonValue + public String toString() { + return name; + } +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/ConductorProperties.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/ConductorProperties.java new file mode 100644 index 0000000000..0250ea06b4 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/ConductorProperties.java @@ -0,0 +1,61 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.client.sniro.beans; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +@Component +@Configuration +public class ConductorProperties { + + private static Environment environment; + + @Autowired + public void setEnvironment(Environment environment) { + this.environment = environment; + } + + public static String getHost() { + return getProperty("sniro.conductor.host"); + } + + public static String getUri() { + return getProperty("sniro.conductor.uri"); + } + + public static String getAuth() { + return getProperty("sniro.conductor.headers.auth"); + } + + private static String getProperty(String variableName) { + if (environment != null) { + return environment.getProperty(variableName); + } else { + return null; + } + } + + + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/Demand.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/Demand.java new file mode 100644 index 0000000000..0cc993560d --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/Demand.java @@ -0,0 +1,103 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.client.sniro.beans; + +import java.io.Serializable; +import java.util.List; +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Demand implements Serializable { + + private static final long serialVersionUID = 5676094538091859816L; + + @JsonProperty("serviceResourceId") + private String serviceResourceId; + @JsonProperty("resourceModuleName") + private String resourceModuleName; + @JsonProperty("resourceModelInfo") + private ModelInfo modelInfo; + @JsonProperty("requiredCandidates") + private List<Candidate> requiredCandidates; + @JsonProperty("excludedCandidates") + private List<Candidate> excludedCandidates; + @JsonProperty("existingCandidates") + private List<Candidate> existingCandidates; + @JsonProperty("filteringAttributes") + private List<Candidate> filteringAttributes; + + + public List<Candidate> getRequiredCandidates() { + return requiredCandidates; + } + + public void setRequiredCandidates(List<Candidate> requiredCandidates) { + this.requiredCandidates = requiredCandidates; + } + + public List<Candidate> getExcludedCandidates() { + return excludedCandidates; + } + + public void setExcludedCandidates(List<Candidate> excludedCandidates) { + this.excludedCandidates = excludedCandidates; + } + + public String getServiceResourceId() { + return serviceResourceId; + } + + public void setServiceResourceId(String serviceResourceId) { + this.serviceResourceId = serviceResourceId; + } + + public String getResourceModuleName() { + return resourceModuleName; + } + + public void setResourceModuleName(String resourceModuleName) { + this.resourceModuleName = resourceModuleName; + } + + public ModelInfo getModelInfo() { + return modelInfo; + } + + public void setModelInfo(ModelInfo modelInfo) { + this.modelInfo = modelInfo; + } + + public List<Candidate> getExistingCandidates() { + return existingCandidates; + } + + public void setExistingCandidates(List<Candidate> existingCandidates) { + this.existingCandidates = existingCandidates; + } + + public List<Candidate> getFilteringAttributes() { + return filteringAttributes; + } + + public void setFilteringAttributes(List<Candidate> filteringAttributes) { + this.filteringAttributes = filteringAttributes; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/LicenseInfo.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/LicenseInfo.java new file mode 100644 index 0000000000..9ab3ae673a --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/LicenseInfo.java @@ -0,0 +1,44 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.client.sniro.beans; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import com.fasterxml.jackson.annotation.JsonProperty; + +public class LicenseInfo implements Serializable { + + private static final long serialVersionUID = 6878164369491185856L; + + @JsonProperty("licenseDemands") + private List<Demand> demands = new ArrayList<>(); + + + public List<Demand> getDemands() { + return demands; + } + + public void setDemands(List<Demand> demands) { + this.demands = demands; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/ManagerProperties.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/ManagerProperties.java new file mode 100644 index 0000000000..70b1a37b5e --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/ManagerProperties.java @@ -0,0 +1,62 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.client.sniro.beans; + +import java.util.Map; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ConfigurationProperties(prefix = "sniro.manager") +public class ManagerProperties { + + private String host; + private Map<String, String> uri; + private Map<String, String> headers; + + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public Map<String, String> getUri() { + return uri; + } + + public void setUri(Map<String, String> uri) { + this.uri = uri; + } + + public Map<String, String> getHeaders() { + return headers; + } + + public void setHeaders(Map<String, String> headers) { + this.headers = headers; + } + + + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/ModelInfo.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/ModelInfo.java new file mode 100644 index 0000000000..6c1932e344 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/ModelInfo.java @@ -0,0 +1,76 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.client.sniro.beans; + +import java.io.Serializable; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRootName; + +@JsonPropertyOrder({"modelName", "modelVersionId", "modelVersion", "modelInvariantId"}) +@JsonRootName("modelInfo") +public class ModelInfo implements Serializable { + + private static final long serialVersionUID = 1488642558601651075L; + + @JsonProperty("modelInvariantId") + private String modelInvariantId; + @JsonProperty("modelVersionId") + private String modelVersionId; + @JsonProperty("modelName") + private String modelName; + @JsonProperty("modelVersion") + private String modelVersion; + + + public String getModelInvariantId() { + return modelInvariantId; + } + + public void setModelInvariantId(String modelInvariantId) { + this.modelInvariantId = modelInvariantId; + } + + public String getModelVersionId() { + return modelVersionId; + } + + public void setModelVersionId(String modelVersionId) { + this.modelVersionId = modelVersionId; + } + + public String getModelName() { + return modelName; + } + + public void setModelName(String modelName) { + this.modelName = modelName; + } + + public String getModelVersion() { + return modelVersion; + } + + public void setModelVersion(String modelVersion) { + this.modelVersion = modelVersion; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/PlacementInfo.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/PlacementInfo.java new file mode 100644 index 0000000000..bbbbf9cfd6 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/PlacementInfo.java @@ -0,0 +1,70 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.client.sniro.beans; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRawValue; +import com.fasterxml.jackson.annotation.JsonRootName; + +@JsonPropertyOrder({"subscriberInfo", "placementDemands", "requestParameters"}) +@JsonRootName("placementInfo") +public class PlacementInfo implements Serializable { + + private static final long serialVersionUID = -964488472247386556L; + + @JsonProperty("subscriberInfo") + private SubscriberInfo subscriberInfo; + @JsonProperty("placementDemands") + private List<Demand> demands = new ArrayList<>(); + @JsonRawValue + @JsonProperty("requestParameters") + private String requestParameters; + + + public SubscriberInfo getSubscriberInfo() { + return subscriberInfo; + } + + public void setSubscriberInfo(SubscriberInfo subscriberInfo) { + this.subscriberInfo = subscriberInfo; + } + + public List<Demand> getDemands() { + return demands; + } + + public void setDemands(List<Demand> demands) { + this.demands = demands; + } + + public String getRequestParameters() { + return requestParameters; + } + + public void setRequestParameters(String requestParameters) { + this.requestParameters = requestParameters; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/RequestInfo.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/RequestInfo.java new file mode 100644 index 0000000000..fc6aec7d14 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/RequestInfo.java @@ -0,0 +1,95 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.client.sniro.beans; + +import java.io.Serializable; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonRootName; + + +@JsonRootName("requestInfo") +public class RequestInfo implements Serializable { + + private static final long serialVersionUID = -759180997599143791L; + + @JsonProperty("transactionId") + String transactionId; + @JsonProperty("requestId") + String requestId; + @JsonProperty("callbackUrl") + String callbackUrl; + @JsonProperty("sourceId") + String sourceId = "mso"; + @JsonProperty("requestType") + String requestType; + @JsonProperty("timeout") + long timeout; + + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } + + public String getRequestId() { + return requestId; + } + + public void setRequestId(String requestId) { + this.requestId = requestId; + } + + public String getCallbackUrl() { + return callbackUrl; + } + + public void setCallbackUrl(String callbackUrl) { + this.callbackUrl = callbackUrl; + } + + public String getSourceId() { + return sourceId; + } + + public void setSourceId(String sourceId) { + this.sourceId = sourceId; + } + + public String getRequestType() { + return requestType; + } + + public void setRequestType(String requestType) { + this.requestType = requestType; + } + + public long getTimeout() { + return timeout; + } + + public void setTimeout(long timeout) { + this.timeout = timeout; + } + + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/Resource.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/Resource.java new file mode 100644 index 0000000000..b5d40a8e80 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/Resource.java @@ -0,0 +1,54 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.client.sniro.beans; + +import java.io.Serializable; +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Resource implements Serializable { + + private static final long serialVersionUID = 5949861520571440421L; + + @JsonProperty("service-resource-id") + private String serviceResourceId; + @JsonProperty("status") + private String status; + + + public String getServiceResourceId() { + return serviceResourceId; + } + + public void setServiceResourceId(String serviceResourceId) { + this.serviceResourceId = serviceResourceId; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/ServiceInfo.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/ServiceInfo.java new file mode 100644 index 0000000000..8b6f234c1e --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/ServiceInfo.java @@ -0,0 +1,76 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.client.sniro.beans; + +import java.io.Serializable; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRootName; + +@JsonPropertyOrder({"modelInfo", "serviceRole", "serviceInstanceId", "serviceName"}) +@JsonRootName("serviceInfo") +public class ServiceInfo implements Serializable { + + private static final long serialVersionUID = -6866022419398548585L; + + @JsonProperty("serviceInstanceId") + private String serviceInstanceId; + @JsonProperty("serviceName") + private String serviceName; + @JsonProperty("serviceRole") + private String serviceRole; + @JsonProperty("modelInfo") + private ModelInfo modelInfo; + + + public String getServiceInstanceId() { + return serviceInstanceId; + } + + public void setServiceInstanceId(String serviceInstanceId) { + this.serviceInstanceId = serviceInstanceId; + } + + public String getServiceName() { + return serviceName; + } + + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + + public String getServiceRole() { + return serviceRole; + } + + public void setServiceRole(String serviceRole) { + this.serviceRole = serviceRole; + } + + public ModelInfo getModelInfo() { + return modelInfo; + } + + public void setModelInfo(ModelInfo modelInfo) { + this.modelInfo = modelInfo; + } + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/SniroConductorRequest.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/SniroConductorRequest.java new file mode 100644 index 0000000000..b8896a2bab --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/SniroConductorRequest.java @@ -0,0 +1,66 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright (c) 2019 Samsung + * ================================================================================ + * 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.so.client.sniro.beans; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class SniroConductorRequest implements Serializable { + + private static final long serialVersionUID = 1906052095861777655L; + private static final Logger logger = LoggerFactory.getLogger(SniroConductorRequest.class); + + @JsonProperty("release-locks") + private List<Resource> resources = new ArrayList<>(); + + + public List<Resource> getResources() { + return resources; + } + + @JsonInclude(Include.NON_NULL) + public String toJsonString() { + String json = ""; + ObjectMapper mapper = new ObjectMapper(); + mapper.setSerializationInclusion(Include.NON_NULL); + ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter(); + try { + json = ow.writeValueAsString(this); + } catch (Exception e) { + logger.error("Unable to convert SniroConductorRequest to string", e); + } + return json; + } + + + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/SniroManagerRequest.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/SniroManagerRequest.java new file mode 100644 index 0000000000..4babbe5c39 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/SniroManagerRequest.java @@ -0,0 +1,98 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright (c) 2019 Samsung + * ================================================================================ + * 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.so.client.sniro.beans; + +import java.io.Serializable; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class SniroManagerRequest implements Serializable { + + private static final long serialVersionUID = -1541132882892163132L; + private static final Logger logger = LoggerFactory.getLogger(SniroManagerRequest.class); + + @JsonProperty("requestInfo") + private RequestInfo requestInformation; + @JsonProperty("serviceInfo") + private ServiceInfo serviceInformation; + @JsonProperty("placementInfo") + private PlacementInfo placementInformation; + @JsonProperty("licenseInfo") + private LicenseInfo licenseInformation; + + + public RequestInfo getRequestInformation() { + return requestInformation; + } + + public void setRequestInformation(RequestInfo requestInformation) { + this.requestInformation = requestInformation; + } + + public ServiceInfo getServiceInformation() { + return serviceInformation; + } + + public void setServiceInformation(ServiceInfo serviceInformation) { + this.serviceInformation = serviceInformation; + } + + public PlacementInfo getPlacementInformation() { + return placementInformation; + } + + public void setPlacementInformation(PlacementInfo placementInformation) { + this.placementInformation = placementInformation; + } + + public LicenseInfo getLicenseInformation() { + return licenseInformation; + } + + public void setLicenseInformation(LicenseInfo licenseInformation) { + this.licenseInformation = licenseInformation; + } + + + @JsonInclude(Include.NON_NULL) + public String toJsonString() { + String json = ""; + ObjectMapper mapper = new ObjectMapper(); + mapper.setSerializationInclusion(Include.NON_NULL); + ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter(); + try { + json = ow.writeValueAsString(this); + } catch (Exception e) { + logger.error("Unable to convert SniroManagerRequest to string", e); + } + return json.replaceAll("\\\\", ""); + } + + +} diff --git a/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/SubscriberInfo.java b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/SubscriberInfo.java new file mode 100644 index 0000000000..35a4cac459 --- /dev/null +++ b/so-optimization-clients/src/main/java/org/onap/so/client/sniro/beans/SubscriberInfo.java @@ -0,0 +1,64 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.client.sniro.beans; + +import java.io.Serializable; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonRootName; + +@JsonRootName("subscriberInfo") +public class SubscriberInfo implements Serializable { + + private static final long serialVersionUID = -6350949051379748872L; + + @JsonProperty("globalSubscriberId") + private String globalSubscriberId; + @JsonProperty("subscriberName") + private String subscriberName; + @JsonProperty("subscriberCommonSiteId") + private String subscriberCommonSiteId; + + + public String getGlobalSubscriberId() { + return globalSubscriberId; + } + + public void setGlobalSubscriberId(String globalSubscriberId) { + this.globalSubscriberId = globalSubscriberId; + } + + public String getSubscriberName() { + return subscriberName; + } + + public void setSubscriberName(String subscriberName) { + this.subscriberName = subscriberName; + } + + public String getSubscriberCommonSiteId() { + return subscriberCommonSiteId; + } + + public void setSubscriberCommonSiteId(String subscriberCommonSiteId) { + this.subscriberCommonSiteId = subscriberCommonSiteId; + } + +} |