summaryrefslogtreecommitdiffstats
path: root/so-sdn-clients/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'so-sdn-clients/src/main')
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdnc/SDNCClient.java97
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdnc/SdnCommonTasks.java168
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCProperties.java57
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCRequest.java97
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCSvcAction.java55
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCSvcOperation.java44
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdnc/endpoint/SDNCTopology.java44
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdno/SDNOHealthCheckClient.java167
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdno/SDNOValidator.java40
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdno/SDNOValidatorImpl.java116
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/AAIParamList.java83
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/Body.java77
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/Input.java90
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/RequestHdCustom.java183
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/RequestHealthDiagnostic.java197
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/ResultInfo.java112
-rw-r--r--so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/SDNO.java128
17 files changed, 1755 insertions, 0 deletions
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/SDNCClient.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/SDNCClient.java
new file mode 100644
index 0000000000..7d2fc10d0b
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/SDNCClient.java
@@ -0,0 +1,97 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdnc;
+
+import java.util.LinkedHashMap;
+import javax.ws.rs.core.UriBuilder;
+import org.onap.so.client.BaseClient;
+import org.onap.so.client.exception.BadResponseException;
+import org.onap.so.client.exception.MapperException;
+import org.onap.so.client.sdnc.beans.SDNCProperties;
+import org.onap.so.client.sdnc.endpoint.SDNCTopology;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpHeaders;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SDNCClient {
+
+ @Autowired
+ private SDNCProperties properties;
+ @Autowired
+ private SdnCommonTasks sdnCommonTasks;
+
+ /**
+ *
+ * @param request - takes in a generated object from sdnc client - creates a json request string and sends it to
+ * sdnc - receives and validates the linkedhashmap sent back from sdnc
+ * @throws MapperException
+ * @throws BadResponseException
+ */
+ public String post(Object request, SDNCTopology topology) throws MapperException, BadResponseException {
+ String jsonRequest = sdnCommonTasks.buildJsonRequest(request);
+ String targetUrl = properties.getHost() + properties.getPath() + ":" + topology.toString() + "/";
+ BaseClient<String, LinkedHashMap<String, Object>> STOClient = new BaseClient<>();
+
+ STOClient.setTargetUrl(targetUrl);
+ HttpHeaders httpHeader = sdnCommonTasks.getHttpHeaders(properties.getAuth(), true);
+ STOClient.setHttpHeader(httpHeader);
+ LinkedHashMap<String, Object> output =
+ STOClient.post(jsonRequest, new ParameterizedTypeReference<LinkedHashMap<String, Object>>() {});
+ return sdnCommonTasks.validateSDNResponse(output);
+ }
+
+
+ public String post(Object request, String url) throws MapperException, BadResponseException {
+ String jsonRequest = sdnCommonTasks.buildJsonRequest(request);
+ BaseClient<String, LinkedHashMap<String, Object>> STOClient = new BaseClient<>();
+ STOClient.setTargetUrl(url);
+ HttpHeaders httpHeader = sdnCommonTasks.getHttpHeaders(properties.getAuth(), true);
+ STOClient.setHttpHeader(httpHeader);
+ LinkedHashMap<String, Object> output =
+ STOClient.post(jsonRequest, new ParameterizedTypeReference<LinkedHashMap<String, Object>>() {});
+ return sdnCommonTasks.validateSDNResponse(output);
+ }
+
+ /**
+ *
+ * @param queryLink - takes in a link to topology that needs to be queried - creates a json request string and sends
+ * it to sdnc - receives and validates the linkedhashmap sent back from sdnc *
+ * @throws MapperException
+ * @throws BadResponseException
+ */
+ public String get(String queryLink) throws MapperException, BadResponseException {
+ String request = "";
+ String jsonRequest = sdnCommonTasks.buildJsonRequest(request);
+ String targetUrl = UriBuilder.fromUri(properties.getHost()).path(queryLink).build().toString();
+ BaseClient<String, LinkedHashMap<String, Object>> STOClient = new BaseClient<>();
+ STOClient.setTargetUrl(targetUrl);
+ HttpHeaders httpHeader = sdnCommonTasks.getHttpHeaders(properties.getAuth(), false);
+ STOClient.setHttpHeader(httpHeader);
+ LinkedHashMap<String, Object> output =
+ STOClient.get(jsonRequest, new ParameterizedTypeReference<LinkedHashMap<String, Object>>() {});
+ return sdnCommonTasks.validateSDNGetResponse(output);
+ }
+
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/SdnCommonTasks.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/SdnCommonTasks.java
new file mode 100644
index 0000000000..01ac675d83
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/SdnCommonTasks.java
@@ -0,0 +1,168 @@
+/*-
+ * ============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.sdnc;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import org.onap.so.logger.LoggingAnchor;
+import org.apache.commons.lang.StringUtils;
+import org.apache.http.HttpStatus;
+import org.onap.so.client.exception.BadResponseException;
+import org.onap.so.client.exception.MapperException;
+import org.onap.logging.filter.base.ErrorCode;
+import org.onap.so.logger.MessageEnum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+@Component
+public class SdnCommonTasks {
+
+ private static final Logger logger = LoggerFactory.getLogger(SDNCClient.class);
+ private static final String RESPONSE_CODE = "response-code";
+ private static final String RESPONSE_MESSAGE = "response-message";
+ private static final String NO_RESPONSE_FROM_SDNC = "Error did not receive a response from SDNC.";
+ private static final String BAD_RESPONSE_FROM_SDNC = "Error received a bad response from SDNC.";
+ private static final String SDNC_CODE_NOT_0_OR_IN_200_299 = "Error from SDNC: %s";
+ private static final String COULD_NOT_CONVERT_SDNC_POJO_TO_JSON =
+ "ERROR: Could not convert SDNC pojo to json string.";
+ private static final String BRACKETS = LoggingAnchor.FIVE;
+
+ /***
+ *
+ * @param request
+ * @return
+ * @throws MapperException
+ */
+ public String buildJsonRequest(Object request) throws MapperException {
+ String jsonRequest;
+ ObjectMapper objMapper = new ObjectMapper();
+ objMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+ try {
+ jsonRequest = objMapper.writerWithDefaultPrettyPrinter().writeValueAsString(request);
+ } catch (JsonProcessingException e) {
+ logger.error(BRACKETS, MessageEnum.JAXB_EXCEPTION.toString(), COULD_NOT_CONVERT_SDNC_POJO_TO_JSON, "BPMN",
+ ErrorCode.DataError.getValue(), e.getMessage());
+ throw new MapperException(COULD_NOT_CONVERT_SDNC_POJO_TO_JSON);
+ }
+ jsonRequest = "{\"input\":" + jsonRequest + "}";
+ logger.info(jsonRequest);
+ return jsonRequest;
+ }
+
+ /***
+ *
+ * @param auth
+ * @return
+ */
+ public HttpHeaders getHttpHeaders(String auth, boolean includeContentType) {
+ HttpHeaders httpHeader = new HttpHeaders();
+ httpHeader.set("Authorization", auth);
+ if (includeContentType) {
+ httpHeader.setContentType(MediaType.APPLICATION_JSON);
+ }
+ List<MediaType> acceptMediaTypes = new ArrayList<>();
+ acceptMediaTypes.add(MediaType.APPLICATION_JSON);
+ httpHeader.setAccept(acceptMediaTypes);
+ return httpHeader;
+ }
+
+ /***
+ *
+ * @param output
+ * @return
+ * @throws BadResponseException
+ */
+ public String validateSDNResponse(LinkedHashMap<String, Object> output) throws BadResponseException {
+ if (CollectionUtils.isEmpty(output)) {
+ logger.error(BRACKETS, MessageEnum.RA_RESPONSE_FROM_SDNC.toString(), NO_RESPONSE_FROM_SDNC, "BPMN",
+ ErrorCode.UnknownError.getValue(), NO_RESPONSE_FROM_SDNC);
+ throw new BadResponseException(NO_RESPONSE_FROM_SDNC);
+ }
+ LinkedHashMap<String, Object> embeddedResponse = (LinkedHashMap<String, Object>) output.get("output");
+ String responseCode = "";
+ String responseMessage = "";
+ if (embeddedResponse != null) {
+ responseCode = (String) embeddedResponse.get(RESPONSE_CODE);
+ responseMessage = (String) embeddedResponse.get(RESPONSE_MESSAGE);
+ }
+ ObjectMapper objMapper = new ObjectMapper();
+ String jsonResponse;
+ try {
+ jsonResponse = objMapper.writeValueAsString(output);
+ logger.debug(jsonResponse);
+ } catch (JsonProcessingException e) {
+ logger.warn("Could not convert SDNC Response to String", e);
+ jsonResponse = "";
+ }
+ logger.info("ResponseCode: {} ResponseMessage: {}", responseCode, responseMessage);
+ int code = StringUtils.isNotEmpty(responseCode) ? Integer.parseInt(responseCode) : 0;
+ if (isHttpCodeSuccess(code)) {
+ logger.info("Successful Response from SDNC");
+ return jsonResponse;
+ } else {
+ String errorMessage = String.format(SDNC_CODE_NOT_0_OR_IN_200_299, responseMessage);
+ logger.error(BRACKETS, MessageEnum.RA_RESPONSE_FROM_SDNC.toString(), errorMessage, "BPMN",
+ ErrorCode.DataError.getValue(), errorMessage);
+ throw new BadResponseException(errorMessage);
+ }
+ }
+
+ /***
+ *
+ * @param output
+ * @return
+ * @throws BadResponseException
+ */
+ public String validateSDNGetResponse(LinkedHashMap<String, Object> output) throws BadResponseException {
+ if (CollectionUtils.isEmpty(output)) {
+ logger.error(BRACKETS, MessageEnum.RA_RESPONSE_FROM_SDNC.toString(), NO_RESPONSE_FROM_SDNC, "BPMN",
+ ErrorCode.UnknownError.getValue(), NO_RESPONSE_FROM_SDNC);
+ throw new BadResponseException(NO_RESPONSE_FROM_SDNC);
+ }
+ ObjectMapper objMapper = new ObjectMapper();
+ logger.debug("Using object mapper");
+ String stringOutput = "";
+ try {
+ stringOutput = objMapper.writeValueAsString(output);
+ } catch (Exception e) {
+ logger.error(BRACKETS, MessageEnum.RA_RESPONSE_FROM_SDNC.toString(), BAD_RESPONSE_FROM_SDNC, "BPMN",
+ ErrorCode.UnknownError.getValue(), BAD_RESPONSE_FROM_SDNC);
+ throw new BadResponseException(BAD_RESPONSE_FROM_SDNC);
+ }
+ logger.debug("Received from GET request: {}", stringOutput);
+ return stringOutput;
+ }
+
+
+ private boolean isHttpCodeSuccess(int code) {
+ return code >= HttpStatus.SC_OK && code < HttpStatus.SC_MULTIPLE_CHOICES || code == 0;
+ }
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCProperties.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCProperties.java
new file mode 100644
index 0000000000..15076fa45a
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCProperties.java
@@ -0,0 +1,57 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdnc.beans;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ConfigurationProperties(prefix = "sdnc")
+public class SDNCProperties {
+
+ private String host;
+ private String path;
+ private String auth;
+
+ public String getHost() {
+ return host;
+ }
+
+ public void setHost(String host) {
+ this.host = host;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public String getAuth() {
+ return auth;
+ }
+
+ public void setAuth(String auth) {
+ this.auth = auth;
+ }
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCRequest.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCRequest.java
new file mode 100644
index 0000000000..2c8bdd931c
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCRequest.java
@@ -0,0 +1,97 @@
+/*-
+ * ============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.sdnc.beans;
+
+import java.io.Serializable;
+import java.util.UUID;
+import org.onap.so.client.sdnc.endpoint.SDNCTopology;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+
+public class SDNCRequest implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 4679678988657593282L;
+ private String timeOut = "PT1H";
+ private SDNCTopology topology;
+ private String correlationValue = UUID.randomUUID().toString();
+ private String correlationName = "SDNCCallback";
+ private transient Object sdncPayload;
+
+
+ public String getTimeOut() {
+ return timeOut;
+ }
+
+ public void setTimeOut(String timeOut) {
+ this.timeOut = timeOut;
+ }
+
+ public SDNCTopology getTopology() {
+ return topology;
+ }
+
+ public void setTopology(SDNCTopology topology) {
+ this.topology = topology;
+ }
+
+ public String getCorrelationValue() {
+ return correlationValue;
+ }
+
+ public void setCorrelationValue(String correlationValue) {
+ this.correlationValue = correlationValue;
+ }
+
+ public String getCorrelationName() {
+ return correlationName;
+ }
+
+ public void setCorrelationName(String correlationName) {
+ this.correlationName = correlationName;
+ }
+
+ public Object getSDNCPayload() {
+ return sdncPayload;
+ }
+
+ public void setSDNCPayload(Object sDNCPayload) {
+ this.sdncPayload = sDNCPayload;
+ }
+
+ @Override
+ public boolean equals(final Object other) {
+ if (!(other instanceof SDNCRequest)) {
+ return false;
+ }
+ SDNCRequest castOther = (SDNCRequest) other;
+ return new EqualsBuilder().append(correlationValue, castOther.correlationValue)
+ .append(correlationName, castOther.correlationName).isEquals();
+ }
+
+ @Override
+ public int hashCode() {
+ return new HashCodeBuilder().append(correlationValue).append(correlationName).toHashCode();
+ }
+
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCSvcAction.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCSvcAction.java
new file mode 100644
index 0000000000..d6216c509d
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCSvcAction.java
@@ -0,0 +1,55 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdnc.beans;
+
+import org.onap.sdnc.northbound.client.model.GenericResourceApiSvcActionEnumeration;
+
+public enum SDNCSvcAction {
+ ACTIVATE("activate", GenericResourceApiSvcActionEnumeration.ACTIVATE),
+ DELETE("delete", GenericResourceApiSvcActionEnumeration.DELETE),
+ ASSIGN("assign", GenericResourceApiSvcActionEnumeration.ASSIGN),
+ ROLLBACK("rollback", GenericResourceApiSvcActionEnumeration.ROLLBACK),
+ UNASSIGN("unassign", GenericResourceApiSvcActionEnumeration.UNASSIGN),
+ DEACTIVATE("deactivate", GenericResourceApiSvcActionEnumeration.DEACTIVATE),
+ CHANGE_DELETE("changedelete", GenericResourceApiSvcActionEnumeration.CHANGEDELETE),
+ CHANGE_ASSIGN("changeassign", GenericResourceApiSvcActionEnumeration.CHANGEASSIGN),
+ CREATE("create", GenericResourceApiSvcActionEnumeration.CREATE),
+ ENABLE("enable", GenericResourceApiSvcActionEnumeration.ENABLE),
+ DISABLE("disable", GenericResourceApiSvcActionEnumeration.DISABLE);
+
+ private final String name;
+
+ private GenericResourceApiSvcActionEnumeration sdncApiAction;
+
+ private SDNCSvcAction(String name, GenericResourceApiSvcActionEnumeration sdncApiAction) {
+ this.name = name;
+ this.sdncApiAction = sdncApiAction;
+ }
+
+ public GenericResourceApiSvcActionEnumeration getSdncApiAction() {
+ return this.sdncApiAction;
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCSvcOperation.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCSvcOperation.java
new file mode 100644
index 0000000000..4edbf37bad
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/beans/SDNCSvcOperation.java
@@ -0,0 +1,44 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdnc.beans;
+
+public enum SDNCSvcOperation {
+
+ VF_MODULE_TOPOLOGY_OPERATION("vf-module-topology-operation"),
+ NETWORK_TOPOLOGY_OPERATION("network-topology-operation"),
+ VNF_TOPOLOGY_OPERATION("vnf-topology-operation"),
+ CONTRAIL_ROUTE_TOPOLOGY_OPERATION("contrail-route-topology-operation"),
+ SECURITY_ZONE_TOPOLOGY_OPERATION("security-zone-topology-operation"),
+ PORT_MIRROR_TOPOLOGY_OPERATION("port-mirror-topology-operation"),
+ SERVICE_TOPOLOGY_OPERATION("service-topology-operation"),
+ GENERIC_CONFIGURATION_TOPOLOGY_OPERATION("generic-configuration-topology-operation");
+
+ private final String name;
+
+ private SDNCSvcOperation(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/endpoint/SDNCTopology.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/endpoint/SDNCTopology.java
new file mode 100644
index 0000000000..ae9fe6ad70
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdnc/endpoint/SDNCTopology.java
@@ -0,0 +1,44 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdnc.endpoint;
+
+public enum SDNCTopology {
+
+ SERVICE("service-topology-operation"),
+ VNF("vnf-topology-operation"),
+ VFMODULE("vf-module-topology-operation"),
+ CONTRAILROUTE("contrail-route-topology-operation"),
+ PORTMIRROR("port-mirror-topology-operation"),
+ NETWORK("network-topology-operation"),
+ SECURITYZONE("security-zone-topology-operation"),
+ CONFIGURATION("generic-configuration-topology-operation");
+
+ private final String topology;
+
+ private SDNCTopology(String topology) {
+ this.topology = topology;
+ }
+
+ @Override
+ public String toString() {
+ return this.topology;
+ }
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdno/SDNOHealthCheckClient.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/SDNOHealthCheckClient.java
new file mode 100644
index 0000000000..9b857dc08c
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/SDNOHealthCheckClient.java
@@ -0,0 +1,167 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdno;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import org.onap.so.client.dmaap.DmaapConsumer;
+import org.onap.so.client.dmaap.DmaapPublisher;
+import org.onap.so.client.sdno.beans.AAIParamList;
+import org.onap.so.client.sdno.beans.Body;
+import org.onap.so.client.sdno.beans.Input;
+import org.onap.so.client.sdno.beans.RequestHdCustom;
+import org.onap.so.client.sdno.beans.SDNO;
+import org.onap.so.client.sdno.dmaap.SDNOHealthCheckDmaapConsumer;
+import org.onap.so.client.sdno.dmaap.SDNOHealthCheckDmaapPublisher;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class SDNOHealthCheckClient {
+
+ private static final String NODE_TYPE = "VROUTER";
+ private static final String API_OPERATION_TYPE = "health-diagnostic-custom";
+ private static final String MIRRORING_CHECK = "mirroring_check";
+ private static final String CLIENT_NAME = "MSO";
+ private static final String PRE_CHECK_CODE = "VROUTER000003";
+ private static final String POST_CHECK_CODE = "VROUTER000004";
+ private static final String LPORT_MIRRORING_CHECK = "lport_mirroring_check";
+ private static final String CONFIGURATION_ID = "configuration-id";
+
+
+ public boolean lPortMirrorHealthPreCheck(String userId, String requestId, Optional<String> clliCode,
+ String configurationId, String interfaceId) throws Exception {
+ String request = buildLPortMirrorCheckPreRequest(userId, requestId, clliCode, configurationId, interfaceId);
+ return this.execute(requestId, request);
+ }
+
+ public boolean lPortMirrorHealthPostCheck(String userId, String requestId, Optional<String> clliCode,
+ String configurationId, String interfaceId) throws Exception {
+ String request = buildLPortMirrorCheckPostRequest(userId, requestId, clliCode, configurationId, interfaceId);
+ return this.execute(requestId, request);
+ }
+
+ public boolean portMirrorHealthPreCheck(String userId, String requestId, Optional<String> clliCode,
+ String configurationId) throws Exception {
+ final String request = this.buildPortMirrorPreCheckRequest(userId, requestId, clliCode, configurationId);
+ return this.execute(requestId, request);
+ }
+
+ public boolean portMirrorHealthPostCheck(String userId, String requestId, Optional<String> clliCode,
+ String configurationId) throws Exception {
+ final String request = this.buildPortMirrorPostCheckRequest(userId, requestId, clliCode, configurationId);
+ return this.execute(requestId, request);
+ }
+
+ protected String buildLPortMirrorCheckPreRequest(String userId, String requestId, Optional<String> clliCode,
+ String configurationId, String interfaceId) throws JsonProcessingException {
+ return this.buildLPortMirrorCheckRequest(userId, requestId, clliCode, configurationId, interfaceId,
+ PRE_CHECK_CODE);
+ }
+
+ protected String buildLPortMirrorCheckPostRequest(String userId, String requestId, Optional<String> clliCode,
+ String configurationId, String interfaceId) throws JsonProcessingException {
+ return this.buildLPortMirrorCheckRequest(userId, requestId, clliCode, configurationId, interfaceId,
+ POST_CHECK_CODE);
+ }
+
+ protected String buildPortMirrorPreCheckRequest(String userId, String requestId, Optional<String> clliCode,
+ String configurationId) throws JsonProcessingException {
+ return this.buildPortMirrorCheckRequest(userId, requestId, clliCode, configurationId, PRE_CHECK_CODE);
+ }
+
+ protected String buildPortMirrorPostCheckRequest(String userId, String requestId, Optional<String> clliCode,
+ String configurationId) throws JsonProcessingException {
+ return this.buildPortMirrorCheckRequest(userId, requestId, clliCode, configurationId, POST_CHECK_CODE);
+ }
+
+ protected String buildPortMirrorCheckRequest(String userId, String requestId, Optional<String> clliCode,
+ String configurationId, String diagnosticCode) throws JsonProcessingException {
+ final AAIParamList list = new AAIParamList();
+ list.setKey(CONFIGURATION_ID);
+ list.setValue(configurationId);
+
+ return this.buildRequest(userId, requestId, clliCode, diagnosticCode, MIRRORING_CHECK,
+ Collections.singletonList(list));
+ }
+
+ protected String buildLPortMirrorCheckRequest(String userId, String requestId, Optional<String> clliCode,
+ String configurationId, String interfaceId, String diagnosticCode) throws JsonProcessingException {
+
+ final AAIParamList configurationIdParam = new AAIParamList();
+ configurationIdParam.setKey(CONFIGURATION_ID);
+ configurationIdParam.setValue(configurationId);
+ final AAIParamList interfaceIdParam = new AAIParamList();
+ interfaceIdParam.setKey("interface-id");
+ interfaceIdParam.setValue(interfaceId);
+ final List<AAIParamList> list = new ArrayList<>();
+ list.add(configurationIdParam);
+ list.add(interfaceIdParam);
+ return this.buildRequest(userId, requestId, clliCode, diagnosticCode, LPORT_MIRRORING_CHECK, list);
+ }
+
+
+ protected String buildRequest(String userId, String requestId, Optional<String> clliCode, String diagnosticCode,
+ String operationType, List<AAIParamList> paramList) throws JsonProcessingException {
+
+ final RequestHdCustom hdCustom = new RequestHdCustom();
+ hdCustom.withRequestUserId(userId).withRequestId(requestId).withRequestClientName(CLIENT_NAME)
+ .withHealthDiagnosticCode(diagnosticCode).withOperationType(operationType).withAaiParamList(paramList);
+
+ final Input input = new Input();
+ input.setRequestHdCustom(hdCustom);
+ final Body body = new Body();
+ body.setInput(input);
+ final SDNO request = new SDNO();
+ request.withBody(body).withOperation(API_OPERATION_TYPE).withNodeType(NODE_TYPE);
+ if (clliCode.isPresent()) {
+ request.setNodeLoc(clliCode.get());
+ }
+ return this.getJson(request);
+
+ }
+
+ protected String getJson(SDNO obj) throws JsonProcessingException {
+ final ObjectMapper mapper = new ObjectMapper();
+ return mapper.writeValueAsString(obj);
+ }
+
+ protected DmaapPublisher getPublisher() throws FileNotFoundException, IOException {
+ return new SDNOHealthCheckDmaapPublisher();
+ }
+
+ protected DmaapConsumer getConsumer(String requestId) throws FileNotFoundException, IOException {
+ return new SDNOHealthCheckDmaapConsumer(requestId);
+ }
+
+ protected boolean execute(String requestId, String request) throws Exception {
+ final DmaapPublisher publisher = this.getPublisher();
+ publisher.send(request);
+
+ final DmaapConsumer consumer = this.getConsumer(requestId);
+
+ return consumer.consume();
+ }
+
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdno/SDNOValidator.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/SDNOValidator.java
new file mode 100644
index 0000000000..d4af90267d
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/SDNOValidator.java
@@ -0,0 +1,40 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdno;
+
+import java.io.IOException;
+import java.util.UUID;
+
+public interface SDNOValidator {
+
+ /**
+ * Issues a health diagnostic request for a given vnf to SDN-O
+ *
+ * @param vnfId
+ * @param uuid
+ * @param requestingUserId
+ * @return diagnostic result
+ * @throws IOException
+ * @throws Exception
+ */
+ public boolean healthDiagnostic(String vnfId, UUID uuid, String requestingUserId) throws IOException, Exception;
+
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdno/SDNOValidatorImpl.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/SDNOValidatorImpl.java
new file mode 100644
index 0000000000..d2a87db70a
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/SDNOValidatorImpl.java
@@ -0,0 +1,116 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdno;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Optional;
+import java.util.UUID;
+import javax.ws.rs.NotFoundException;
+import org.onap.aai.domain.yang.GenericVnf;
+import org.onap.aaiclient.client.aai.AAIObjectType;
+import org.onap.aaiclient.client.aai.AAIResourcesClient;
+import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
+import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
+import org.onap.so.client.dmaap.DmaapConsumer;
+import org.onap.so.client.dmaap.DmaapPublisher;
+import org.onap.so.client.sdno.beans.Body;
+import org.onap.so.client.sdno.beans.Input;
+import org.onap.so.client.sdno.beans.RequestHealthDiagnostic;
+import org.onap.so.client.sdno.beans.SDNO;
+import org.onap.so.client.sdno.dmaap.SDNOHealthCheckDmaapConsumer;
+import org.onap.so.client.sdno.dmaap.SDNOHealthCheckDmaapPublisher;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class SDNOValidatorImpl implements SDNOValidator {
+
+ private final static String clientName = "MSO";
+ private final static String HEALTH_DIAGNOSTIC_CODE_DEFAULT = "default";
+
+ @Override
+ public boolean healthDiagnostic(String vnfId, UUID uuid, String requestingUserId) throws IOException, Exception {
+
+ AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId);
+ AAIResourcesClient client = new AAIResourcesClient();
+ GenericVnf vnf = client.get(GenericVnf.class, uri)
+ .orElseThrow(() -> new NotFoundException(vnfId + " not found in A&AI"));
+
+ SDNO requestDiagnostic = buildRequestDiagnostic(vnf, uuid, requestingUserId);
+ ObjectMapper mapper = new ObjectMapper();
+ String json = mapper.writeValueAsString(requestDiagnostic);
+ this.submitRequest(json);
+ boolean status = this.pollForResponse(uuid.toString());
+ return status;
+ }
+
+ protected SDNO buildRequestDiagnostic(GenericVnf vnf, UUID uuid, String requestingUserId) {
+
+ Optional<String> nfRole;
+ if (vnf.getNfRole() == null) {
+ nfRole = Optional.empty();
+ } else {
+ nfRole = Optional.of(vnf.getNfRole());
+ }
+ Input input = new Input();
+ SDNO parentRequest = new SDNO();
+ Body body = new Body();
+ parentRequest.setBody(body);
+ parentRequest.setNodeType(nfRole.orElse("NONE").toUpperCase());
+ parentRequest.setOperation("health-diagnostic");
+
+ body.setInput(input);
+
+ RequestHealthDiagnostic request = new RequestHealthDiagnostic();
+
+ request.setRequestClientName(clientName);
+ request.setRequestNodeName(vnf.getVnfName());
+ request.setRequestNodeUuid(vnf.getVnfId());
+ request.setRequestNodeType(nfRole.orElse("NONE").toUpperCase());
+ request.setRequestNodeIp(vnf.getIpv4OamAddress()); // generic-vnf oam ip
+ request.setRequestUserId(requestingUserId); // mech id?
+ request.setRequestId(uuid.toString()); // something to identify this request by for polling
+ request.setHealthDiagnosticCode(HEALTH_DIAGNOSTIC_CODE_DEFAULT);
+
+ input.setRequestHealthDiagnostic(request);
+
+ return parentRequest;
+ }
+
+ protected void submitRequest(String json) throws FileNotFoundException, IOException, InterruptedException {
+
+ DmaapPublisher publisher = new SDNOHealthCheckDmaapPublisher();
+ publisher.send(json);
+ }
+
+ protected boolean pollForResponse(String uuid) throws Exception {
+ DmaapConsumer consumer = this.getConsumer(uuid);
+ return consumer.consume();
+ }
+
+
+
+ protected DmaapConsumer getConsumer(String uuid) throws FileNotFoundException, IOException {
+ return new SDNOHealthCheckDmaapConsumer(uuid);
+ }
+
+
+
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/AAIParamList.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/AAIParamList.java
new file mode 100644
index 0000000000..7e98355b4d
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/AAIParamList.java
@@ -0,0 +1,83 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdno.beans;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({"key", "value"})
+public class AAIParamList {
+
+ @JsonProperty("key")
+ private String key;
+ @JsonProperty("value")
+ private String value;
+
+ /**
+ * No args constructor for use in serialization
+ *
+ */
+ public AAIParamList() {}
+
+ /**
+ *
+ * @param value
+ * @param key
+ */
+ public AAIParamList(String key, String value) {
+ super();
+ this.key = key;
+ this.value = value;
+ }
+
+ @JsonProperty("key")
+ public String getKey() {
+ return key;
+ }
+
+ @JsonProperty("key")
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public AAIParamList withKey(String key) {
+ this.key = key;
+ return this;
+ }
+
+ @JsonProperty("value")
+ public String getValue() {
+ return value;
+ }
+
+ @JsonProperty("value")
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public AAIParamList withValue(String value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/Body.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/Body.java
new file mode 100644
index 0000000000..8c40b749a6
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/Body.java
@@ -0,0 +1,77 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdno.beans;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({"input"})
+public class Body implements Serializable {
+
+ @JsonProperty("input")
+ private Input input;
+ @JsonIgnore
+ private Map<String, Object> additionalProperties = new HashMap<>();
+ private static final long serialVersionUID = 9101706044452851559L;
+
+ @JsonProperty("input")
+ public Input getInput() {
+ return input;
+ }
+
+ @JsonProperty("input")
+ public void setInput(Input input) {
+ this.input = input;
+ }
+
+ public Body withInput(Input input) {
+ this.input = input;
+ return this;
+ }
+
+ @JsonAnyGetter
+ public Map<String, Object> getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ @JsonAnySetter
+ public void setAdditionalProperty(String name, Object value) {
+ this.additionalProperties.put(name, value);
+ }
+
+ public void setAdditionalProperties(Map<String, Object> map) {
+ this.additionalProperties = map;
+ }
+
+ public Body withAdditionalProperty(String name, Object value) {
+ this.additionalProperties.put(name, value);
+ return this;
+ }
+
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/Input.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/Input.java
new file mode 100644
index 0000000000..c8122c06f6
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/Input.java
@@ -0,0 +1,90 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdno.beans;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({"request-healthdiagnostic", "request-hd-custom"})
+public class Input implements Serializable {
+
+ @JsonProperty("request-healthdiagnostic")
+ private RequestHealthDiagnostic RequestHealthDiagnostic;
+ @JsonProperty("request-hd-custom")
+ private RequestHdCustom requestHdCustom;
+
+ @JsonIgnore
+ private Map<String, Object> additionalProperties = new HashMap<>();
+ private final static long serialVersionUID = 7155546785389227528L;
+
+ @JsonProperty("request-healthdiagnostic")
+ public RequestHealthDiagnostic getRequestHealthDiagnostic() {
+ return RequestHealthDiagnostic;
+ }
+
+ @JsonProperty("request-healthdiagnostic")
+ public void setRequestHealthDiagnostic(RequestHealthDiagnostic RequestHealthDiagnostic) {
+ this.RequestHealthDiagnostic = RequestHealthDiagnostic;
+ }
+
+ @JsonProperty("request-hd-custom")
+ public RequestHdCustom getRequestHdCustom() {
+ return requestHdCustom;
+ }
+
+ @JsonProperty("request-hd-custom")
+ public void setRequestHdCustom(RequestHdCustom requestHdCustom) {
+ this.requestHdCustom = requestHdCustom;
+ }
+
+ public Input withRequestHealthDiagnostic(RequestHealthDiagnostic RequestHealthDiagnostic) {
+ this.RequestHealthDiagnostic = RequestHealthDiagnostic;
+ return this;
+ }
+
+ @JsonAnyGetter
+ public Map<String, Object> getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ @JsonAnySetter
+ public void setAdditionalProperty(String name, Object value) {
+ this.additionalProperties.put(name, value);
+ }
+
+ public void setAdditionalProperties(Map<String, Object> map) {
+ this.additionalProperties = map;
+ }
+
+ public Input withAdditionalProperty(String name, Object value) {
+ this.additionalProperties.put(name, value);
+ return this;
+ }
+
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/RequestHdCustom.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/RequestHdCustom.java
new file mode 100644
index 0000000000..485f64673f
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/RequestHdCustom.java
@@ -0,0 +1,183 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdno.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.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({"request-client-name", "request-user-id", "request-id", "health-diagnostic-code", "operation-type",
+ "send-detailed-cmd-response", "aai-param-list"})
+public class RequestHdCustom implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -206110458275127710L;
+ @JsonProperty("request-client-name")
+ private String requestClientName;
+ @JsonProperty("request-user-id")
+ private String requestUserId;
+ @JsonProperty("request-id")
+ private String requestId;
+ @JsonProperty("health-diagnostic-code")
+ private String healthDiagnosticCode;
+ @JsonProperty("operation-type")
+ private String operationType;
+ @JsonProperty("send-detailed-cmd-response")
+ private String sendDetailedCmdResponse = "false";
+ @JsonProperty("aai-param-list")
+ private List<AAIParamList> aaiParamList = new ArrayList<>();
+
+ /**
+ * No args constructor for use in serialization
+ *
+ */
+ public RequestHdCustom() {}
+
+ /**
+ *
+ * @param requestClientName
+ * @param operationType
+ * @param requestId
+ * @param healthDiagnosticCode
+ * @param aaiParamList
+ * @param requestUserId
+ */
+ public RequestHdCustom(String requestClientName, String requestUserId, String requestId,
+ String healthDiagnosticCode, String operationType, List<AAIParamList> aaiParamList) {
+ super();
+ this.requestClientName = requestClientName;
+ this.requestUserId = requestUserId;
+ this.requestId = requestId;
+ this.healthDiagnosticCode = healthDiagnosticCode;
+ this.operationType = operationType;
+ this.aaiParamList = aaiParamList;
+ }
+
+ @JsonProperty("request-client-name")
+ public String getRequestClientName() {
+ return requestClientName;
+ }
+
+ @JsonProperty("request-client-name")
+ public void setRequestClientName(String requestClientName) {
+ this.requestClientName = requestClientName;
+ }
+
+ public RequestHdCustom withRequestClientName(String requestClientName) {
+ this.requestClientName = requestClientName;
+ return this;
+ }
+
+ @JsonProperty("request-user-id")
+ public String getRequestUserId() {
+ return requestUserId;
+ }
+
+ @JsonProperty("request-user-id")
+ public void setRequestUserId(String requestUserId) {
+ this.requestUserId = requestUserId;
+ }
+
+ public RequestHdCustom withRequestUserId(String requestUserId) {
+ this.requestUserId = requestUserId;
+ return this;
+ }
+
+ @JsonProperty("request-id")
+ public String getRequestId() {
+ return requestId;
+ }
+
+ @JsonProperty("request-id")
+ public void setRequestId(String requestId) {
+ this.requestId = requestId;
+ }
+
+ public RequestHdCustom withRequestId(String requestId) {
+ this.requestId = requestId;
+ return this;
+ }
+
+ @JsonProperty("health-diagnostic-code")
+ public String getHealthDiagnosticCode() {
+ return healthDiagnosticCode;
+ }
+
+ @JsonProperty("health-diagnostic-code")
+ public void setHealthDiagnosticCode(String healthDiagnosticCode) {
+ this.healthDiagnosticCode = healthDiagnosticCode;
+ }
+
+ public RequestHdCustom withHealthDiagnosticCode(String healthDiagnosticCode) {
+ this.healthDiagnosticCode = healthDiagnosticCode;
+ return this;
+ }
+
+ @JsonProperty("operation-type")
+ public String getOperationType() {
+ return operationType;
+ }
+
+ @JsonProperty("operation-type")
+ public void setOperationType(String operationType) {
+ this.operationType = operationType;
+ }
+
+ public RequestHdCustom withOperationType(String operationType) {
+ this.operationType = operationType;
+ return this;
+ }
+
+ public void setSendDetailedCmdResponse(String sendDetailedCmdResponse) {
+ this.sendDetailedCmdResponse = sendDetailedCmdResponse;
+ }
+
+ public String getSendDetailedCmdResponse() {
+ return sendDetailedCmdResponse;
+ }
+
+ public RequestHdCustom withSendDetailedCmdResponse(String sendDetailedCmdResponse) {
+ this.sendDetailedCmdResponse = sendDetailedCmdResponse;
+ return this;
+ }
+
+ @JsonProperty("aai-param-list")
+ public List<AAIParamList> getAaiParamList() {
+ return aaiParamList;
+ }
+
+ @JsonProperty("aai-param-list")
+ public void setAaiParamList(List<AAIParamList> aaiParamList) {
+ this.aaiParamList = aaiParamList;
+ }
+
+ public RequestHdCustom withAaiParamList(List<AAIParamList> aaiParamList) {
+ this.aaiParamList = aaiParamList;
+ return this;
+ }
+
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/RequestHealthDiagnostic.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/RequestHealthDiagnostic.java
new file mode 100644
index 0000000000..b1b75ab412
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/RequestHealthDiagnostic.java
@@ -0,0 +1,197 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdno.beans;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({"request-client-name", "request-node-name", "request-node-uuid", "request-node-ip", "request-id",
+ "request-user-id", "request-node-type", "health-diagnostic-code"})
+public class RequestHealthDiagnostic implements Serializable {
+
+ @JsonProperty("request-client-name")
+ private String requestClientName;
+ @JsonProperty("request-node-name")
+ private String requestNodeName;
+ @JsonProperty("request-node-uuid")
+ private String requestNodeUuid;
+ @JsonProperty("request-node-ip")
+ private String requestNodeIp;
+ @JsonProperty("request-id")
+ private String requestId;
+ @JsonProperty("request-user-id")
+ private String requestUserId;
+ @JsonProperty("request-node-type")
+ private String requestNodeType;
+ @JsonProperty("health-diagnostic-code")
+ private String healthDiagnosticCode;
+ @JsonIgnore
+ private Map<String, Object> additionalProperties = new HashMap<>();
+ private static final long serialVersionUID = 1166788526178388021L;
+
+ @JsonProperty("request-client-name")
+ public String getRequestClientName() {
+ return requestClientName;
+ }
+
+ @JsonProperty("request-client-name")
+ public void setRequestClientName(String requestClientName) {
+ this.requestClientName = requestClientName;
+ }
+
+ public RequestHealthDiagnostic withRequestClientName(String requestClientName) {
+ this.requestClientName = requestClientName;
+ return this;
+ }
+
+ @JsonProperty("request-node-name")
+ public String getRequestNodeName() {
+ return requestNodeName;
+ }
+
+ @JsonProperty("request-node-name")
+ public void setRequestNodeName(String requestNodeName) {
+ this.requestNodeName = requestNodeName;
+ }
+
+ public RequestHealthDiagnostic withRequestNodeName(String requestNodeName) {
+ this.requestNodeName = requestNodeName;
+ return this;
+ }
+
+ @JsonProperty("request-node-uuid")
+ public String getRequestNodeUuid() {
+ return requestNodeUuid;
+ }
+
+ @JsonProperty("request-node-uuid")
+ public void setRequestNodeUuid(String requestNodeUuid) {
+ this.requestNodeUuid = requestNodeUuid;
+ }
+
+ public RequestHealthDiagnostic withRequestNodeUuid(String requestNodeUuid) {
+ this.requestNodeUuid = requestNodeUuid;
+ return this;
+ }
+
+ @JsonProperty("request-node-ip")
+ public String getRequestNodeIp() {
+ return requestNodeIp;
+ }
+
+ @JsonProperty("request-node-ip")
+ public void setRequestNodeIp(String requestNodeIp) {
+ this.requestNodeIp = requestNodeIp;
+ }
+
+ public RequestHealthDiagnostic withRequestNodeIp(String requestNodeIp) {
+ this.requestNodeIp = requestNodeIp;
+ return this;
+ }
+
+ @JsonProperty("request-id")
+ public String getRequestId() {
+ return requestId;
+ }
+
+ @JsonProperty("request-id")
+ public void setRequestId(String requestId) {
+ this.requestId = requestId;
+ }
+
+ public RequestHealthDiagnostic withRequestId(String requestId) {
+ this.requestId = requestId;
+ return this;
+ }
+
+ @JsonProperty("request-user-id")
+ public String getRequestUserId() {
+ return requestUserId;
+ }
+
+ @JsonProperty("request-user-id")
+ public void setRequestUserId(String requestUserId) {
+ this.requestUserId = requestUserId;
+ }
+
+ public RequestHealthDiagnostic withRequestUserId(String requestUserId) {
+ this.requestUserId = requestUserId;
+ return this;
+ }
+
+ @JsonProperty("request-node-type")
+ public String getRequestNodeType() {
+ return requestNodeType;
+ }
+
+ @JsonProperty("request-node-type")
+ public void setRequestNodeType(String requestNodeType) {
+ this.requestNodeType = requestNodeType;
+ }
+
+ public RequestHealthDiagnostic withRequestNodeType(String requestNodeType) {
+ this.requestNodeType = requestNodeType;
+ return this;
+ }
+
+ @JsonProperty("health-diagnostic-code")
+ public String getHealthDiagnosticCode() {
+ return healthDiagnosticCode;
+ }
+
+ @JsonProperty("health-diagnostic-code")
+ public void setHealthDiagnosticCode(String healthDiagnosticCode) {
+ this.healthDiagnosticCode = healthDiagnosticCode;
+ }
+
+ public RequestHealthDiagnostic withHealthDiagnosticCode(String healthDiagnosticCode) {
+ this.healthDiagnosticCode = healthDiagnosticCode;
+ return this;
+ }
+
+ @JsonAnyGetter
+ public Map<String, Object> getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ @JsonAnySetter
+ public void setAdditionalProperty(String name, Object value) {
+ this.additionalProperties.put(name, value);
+ }
+
+ public void setAdditionalProperties(Map<String, Object> map) {
+ this.additionalProperties = map;
+ }
+
+ public RequestHealthDiagnostic withAdditionalProperty(String name, Object value) {
+ this.additionalProperties.put(name, value);
+ return this;
+ }
+
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/ResultInfo.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/ResultInfo.java
new file mode 100644
index 0000000000..8b84cf6659
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/ResultInfo.java
@@ -0,0 +1,112 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdno.beans;
+
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({"client-name", "code", "processing-host", "request-id", "status"})
+public class ResultInfo {
+
+ @JsonProperty("client-name")
+ private String clientName;
+ @JsonProperty("code")
+ private String code;
+ @JsonProperty("processing-host")
+ private String processingHost;
+ @JsonProperty("request-id")
+ private String requestId;
+ @JsonProperty("status")
+ private String status;
+ @JsonIgnore
+ private Map<String, Object> additionalProperties = new HashMap<>();
+
+ @JsonProperty("client-name")
+ public String getClientName() {
+ return clientName;
+ }
+
+ @JsonProperty("client-name")
+ public void setClientName(String clientName) {
+ this.clientName = clientName;
+ }
+
+ @JsonProperty("code")
+ public String getCode() {
+ return code;
+ }
+
+ @JsonProperty("code")
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ @JsonProperty("processing-host")
+ public String getProcessingHost() {
+ return processingHost;
+ }
+
+ @JsonProperty("processing-host")
+ public void setProcessingHost(String processingHost) {
+ this.processingHost = processingHost;
+ }
+
+ @JsonProperty("request-id")
+ public String getRequestId() {
+ return requestId;
+ }
+
+ @JsonProperty("request-id")
+ public void setRequestId(String requestId) {
+ this.requestId = requestId;
+ }
+
+ @JsonProperty("status")
+ public String getStatus() {
+ return status;
+ }
+
+ @JsonProperty("status")
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ @JsonAnyGetter
+ public Map<String, Object> getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ @JsonAnySetter
+ public void setAdditionalProperty(String name, Object value) {
+ this.additionalProperties.put(name, value);
+ }
+
+ public void setAdditionalProperties(Map<String, Object> map) {
+ this.additionalProperties = map;
+ }
+}
diff --git a/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/SDNO.java b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/SDNO.java
new file mode 100644
index 0000000000..46e2c1d1fc
--- /dev/null
+++ b/so-sdn-clients/src/main/java/org/onap/so/client/sdno/beans/SDNO.java
@@ -0,0 +1,128 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.sdno.beans;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({"operation", "nodeLoc", "nodeType", "body"})
+public class SDNO implements Serializable {
+
+ @JsonProperty("operation")
+ private String operation;
+ @JsonProperty("nodeLoc")
+ private String nodeLoc;
+ @JsonProperty("nodeType")
+ private String nodeType;
+ @JsonProperty("body")
+ private Body body;
+ @JsonIgnore
+ private Map<String, Object> additionalProperties = new HashMap<>();
+ private static final long serialVersionUID = -5303297382564282650L;
+
+ @JsonProperty("operation")
+ public String getOperation() {
+ return operation;
+ }
+
+ @JsonProperty("operation")
+ public void setOperation(String operation) {
+ this.operation = operation;
+ }
+
+ @JsonProperty("nodeLoc")
+ public String getNodeLoc() {
+ return nodeLoc;
+ }
+
+ @JsonProperty("nodeLoc")
+ public void setNodeLoc(String nodeLoc) {
+ this.nodeLoc = nodeLoc;
+ }
+
+ public SDNO withNodeLoc(String nodeLoc) {
+ this.nodeLoc = nodeLoc;
+ return this;
+ }
+
+ public SDNO withOperation(String operation) {
+ this.operation = operation;
+ return this;
+ }
+
+ @JsonProperty("nodeType")
+ public String getNodeType() {
+ return nodeType;
+ }
+
+ @JsonProperty("nodeType")
+ public void setNodeType(String nodeType) {
+ this.nodeType = nodeType;
+ }
+
+ public SDNO withNodeType(String nodeType) {
+ this.nodeType = nodeType;
+ return this;
+ }
+
+ @JsonProperty("body")
+ public Body getBody() {
+ return body;
+ }
+
+ @JsonProperty("body")
+ public void setBody(Body body) {
+ this.body = body;
+ }
+
+ public SDNO withBody(Body body) {
+ this.body = body;
+ return this;
+ }
+
+ @JsonAnyGetter
+ public Map<String, Object> getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ @JsonAnySetter
+ public void setAdditionalProperty(String name, Object value) {
+ this.additionalProperties.put(name, value);
+ }
+
+ public void setAdditionalProperties(Map<String, Object> map) {
+ this.additionalProperties = map;
+ }
+
+ public SDNO SDNO(String name, Object value) {
+ this.additionalProperties.put(name, value);
+ return this;
+ }
+
+}