diff options
author | Boslet, Cory <cory.boslet@att.com> | 2020-07-06 09:58:17 -0400 |
---|---|---|
committer | Benjamin, Max (mb388a) <mb388a@att.com> | 2020-07-06 09:58:17 -0400 |
commit | b7c956f3fa521e2031a7b7051ba2f42e6ac30cf5 (patch) | |
tree | 342aa19a7a86684b69500eef3313eaaa9cb2e87a /so-optimization-clients/src/main/java/org | |
parent | 47cb76e07dd671bab171432141fa89f6c2a1c95f (diff) |
Moved sniro and oof clients into their own project
Moved sniro and oof clients into their own project
Remove methods that arnt used to avoid comp error
Refactored the conductor call to not use the urn property reader so
that we dont have to import bpmn core.
Replaced the auth method and removed unused import.
Issue-ID: SO-3021
Signed-off-by: Benjamin, Max (mb388a) <mb388a@att.com>
Change-Id: Ie281ef95fef984890b10297f434b8336e9017921
Diffstat (limited to 'so-optimization-clients/src/main/java/org')
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; + } + +} |