From ab400d51a639a01f31a60ac9d1e127d4d4d28b24 Mon Sep 17 00:00:00 2001 From: Reshmasree Date: Thu, 21 Mar 2019 18:54:53 +0530 Subject: Add component spec and blueprint - validated component spec and blueprints are added to the repo - pom file changed to build,tag and push the docker image - checkstyle version changed from 1.2.3-SNAPSHOT to 1.2.3 - entrypoint script added Change-Id: I0fcf8a17b0c5ce1990de506bf94d2d9ddf93d6fd Issue-ID: DCAEGEN2-1159 Signed-off-by: Reshmasree --- dpo/blueprints/k8s-sonhms-inputs.yaml | 54 ++++ dpo/blueprints/k8s-sonhms.yaml | 225 ++++++++++++++++ dpo/data-formats/cellListFromSdnr-dataformat.json | 18 ++ dpo/data-formats/configdb-req-dataformat.json | 12 + dpo/data-formats/dmaap_son.json | 45 ++++ dpo/data-formats/nbrListFromSdnr-dataformat.json | 33 +++ dpo/data-formats/oofToSonAsyncResp-dataformat.json | 91 +++++++ dpo/data-formats/oofToSonSyncResp-dataformat.json | 38 +++ dpo/data-formats/pciFromSdnr-dataformat.json | 29 ++ dpo/data-formats/pnfNameFromSdnr-dataformat.json | 29 ++ dpo/data-formats/policyToSonReq-dataformat.json | 23 ++ dpo/data-formats/policyToSonResp-dataformat.json | 64 +++++ dpo/data-formats/sonInputFromSdnr-dataformat.json | 212 +++++++++++++++ dpo/data-formats/sonToOofReq-dataformat.json | 97 +++++++ dpo/data-formats/sonToPolicyDmaap-dataformat.json | 87 ++++++ dpo/data-formats/sonToPolicyReq-dataformat.json | 24 ++ dpo/spec/sonhandler-componentspec.json | 297 +++++++++++++++++++++ entrypoint.sh | 24 ++ pom.xml | 114 +++++++- src/main/docker/postgres_scripts/Dockerfile | 7 - src/main/docker/postgres_scripts/createdb.sql | 25 -- src/main/docker/postgres_scripts/init_db.sh | 23 -- src/main/docker/son-handler/Dockerfile | 17 -- src/main/docker/son-handler/config.json | 48 ---- src/main/docker/son-handler/entrypoint.sh | 35 --- src/main/docker/son-handler/policy.crt | 27 -- .../onap/dcaegen2/services/sonhms/Application.java | 110 ++------ .../sonhms/BufferNotificationComponent.java | 5 +- .../services/sonhms/ClusterDetailsComponent.java | 4 +- .../dcaegen2/services/sonhms/Configuration.java | 243 ++++++++--------- .../services/sonhms/ConfigurationFetcher.java | 72 ----- .../sonhms/DmaapNotificationsComponent.java | 7 +- .../dcaegen2/services/sonhms/EventHandler.java | 23 +- .../onap/dcaegen2/services/sonhms/MainThread.java | 7 +- .../services/sonhms/MainThreadComponent.java | 9 +- .../dcaegen2/services/sonhms/NewNotification.java | 7 + .../sonhms/NotificationToClusterMapping.java | 4 +- .../dcaegen2/services/sonhms/SonController.java | 1 - .../services/sonhms/SonRequestsComponent.java | 1 - .../services/sonhms/child/ChildThread.java | 16 +- .../services/sonhms/child/ChildThreadUtils.java | 6 +- .../services/sonhms/child/ClusterFormation.java | 15 +- .../dcaegen2/services/sonhms/child/Detection.java | 3 +- .../onap/dcaegen2/services/sonhms/child/Graph.java | 5 +- .../dcaegen2/services/sonhms/child/PnfUtils.java | 12 +- .../dcaegen2/services/sonhms/child/StateOof.java | 17 +- .../sonhms/controller/ConfigFetchFromCbs.java | 109 ++++++++ .../services/sonhms/controller/HealthCheck.java | 8 +- .../dao/BufferedNotificationsRepository.java | 3 +- .../services/sonhms/dao/CellInfoRepository.java | 1 - .../sonhms/dao/ClusterDetailsRepository.java | 3 +- .../sonhms/dao/DmaapNotificationsRepository.java | 1 - .../sonhms/dao/FaultNotificationsRepository.java | 43 +++ .../services/sonhms/dao/SonRequestsRepository.java | 1 - .../services/sonhms/dmaap/DmaapClient.java | 255 ++++++------------ .../sonhms/dmaap/NotificationConsumer.java | 2 +- .../sonhms/dmaap/NotificationProducer.java | 10 +- .../services/sonhms/dmaap/PolicyDmaapClient.java | 46 ++-- .../services/sonhms/entity/FaultNotifications.java | 69 +++++ .../services/sonhms/model/NeighborListInUse.java | 1 + .../dcaegen2/services/sonhms/model/Payload.java | 1 + .../services/sonhms/model/PolicyNotification.java | 10 + .../services/sonhms/model/RadioAccess.java | 1 + .../services/sonhms/restclient/OofRestClient.java | 100 +++---- .../sonhms/restclient/PolicyRestClient.java | 77 ------ .../services/sonhms/restclient/SdnrRestClient.java | 19 +- .../dcaegen2/services/sonhms/utils/AppConfig.java | 3 +- .../dcaegen2/services/sonhms/utils/BeanUtil.java | 3 +- .../services/sonhms/utils/ClusterUtils.java | 21 +- .../dcaegen2/services/sonhms/utils/DmaapUtils.java | 133 +++++++++ .../sonhms/utils/SonHandlerRestTemplate.java | 19 -- .../services/sonhms/utils/ThreadUtils.java | 11 +- src/main/resources/application.properties | 9 +- src/main/resources/logback.xml | 2 +- src/main/resources/schema.sql | 27 ++ .../dcaegen2/services/sonhms/ApplicationTest.java | 25 -- .../sonhms/BufferNotificationComponentTest.java | 1 + .../sonhms/ClusterDetailsComponentTest.java | 1 + .../dcaegen2/services/sonhms/ConfigPolicyTest.java | 1 - .../services/sonhms/ConfigurationTest.java | 29 +- .../sonhms/DmaapNotificationsComponentTest.java | 1 + .../dcaegen2/services/sonhms/EventHandlerTest.java | 10 +- .../dcaegen2/services/sonhms/MainThreadTest.java | 26 -- .../dcaegen2/services/sonhms/child/GraphTest.java | 1 - .../sonhms/child/TestChildThreadUtils.java | 4 +- .../services/sonhms/child/TestDetection.java | 2 - .../services/sonhms/child/TestPnfUtils.java | 20 +- .../services/sonhms/dmaap/DmaapClientTest.java | 27 +- .../sonhms/dmaap/NotificationProducerTest.java | 37 +-- .../sonhms/entity/FaultNotificationsTest.java | 45 ++++ .../services/sonhms/model/NotificationTest.java | 10 - .../services/sonhms/model/PayloadTest.java | 9 - .../sonhms/model/PolicyNotificationTest.java | 7 +- .../sonhms/restclient/AsyncResponseBodyTest.java | 3 - .../services/sonhms/restclient/CellInfoTest.java | 2 +- .../sonhms/restclient/OofRequestBodyTest.java | 4 +- .../sonhms/restclient/OofRestClientTest.java | 14 +- .../sonhms/restclient/PciSolutionsTest.java | 1 - .../sonhms/restclient/PolicyRequestBodyTest.java | 1 - .../sonhms/restclient/PolicyRestClientTest.java | 117 -------- .../sonhms/restclient/RequestInfoTest.java | 1 - .../sonhms/restclient/SdnrRestClientTest.java | 2 +- .../services/sonhms/restclient/SolutionsTest.java | 3 +- .../services/sonhms/utils/ClusterUtilsTest.java | 14 +- 104 files changed, 2435 insertions(+), 1236 deletions(-) create mode 100644 dpo/blueprints/k8s-sonhms-inputs.yaml create mode 100644 dpo/blueprints/k8s-sonhms.yaml create mode 100644 dpo/data-formats/cellListFromSdnr-dataformat.json create mode 100644 dpo/data-formats/configdb-req-dataformat.json create mode 100644 dpo/data-formats/dmaap_son.json create mode 100644 dpo/data-formats/nbrListFromSdnr-dataformat.json create mode 100644 dpo/data-formats/oofToSonAsyncResp-dataformat.json create mode 100644 dpo/data-formats/oofToSonSyncResp-dataformat.json create mode 100644 dpo/data-formats/pciFromSdnr-dataformat.json create mode 100644 dpo/data-formats/pnfNameFromSdnr-dataformat.json create mode 100644 dpo/data-formats/policyToSonReq-dataformat.json create mode 100644 dpo/data-formats/policyToSonResp-dataformat.json create mode 100644 dpo/data-formats/sonInputFromSdnr-dataformat.json create mode 100644 dpo/data-formats/sonToOofReq-dataformat.json create mode 100644 dpo/data-formats/sonToPolicyDmaap-dataformat.json create mode 100644 dpo/data-formats/sonToPolicyReq-dataformat.json create mode 100644 dpo/spec/sonhandler-componentspec.json create mode 100644 entrypoint.sh delete mode 100644 src/main/docker/postgres_scripts/Dockerfile delete mode 100644 src/main/docker/postgres_scripts/createdb.sql delete mode 100644 src/main/docker/postgres_scripts/init_db.sh delete mode 100644 src/main/docker/son-handler/Dockerfile delete mode 100644 src/main/docker/son-handler/config.json delete mode 100644 src/main/docker/son-handler/entrypoint.sh delete mode 100644 src/main/docker/son-handler/policy.crt delete mode 100644 src/main/java/org/onap/dcaegen2/services/sonhms/ConfigurationFetcher.java create mode 100644 src/main/java/org/onap/dcaegen2/services/sonhms/controller/ConfigFetchFromCbs.java create mode 100644 src/main/java/org/onap/dcaegen2/services/sonhms/dao/FaultNotificationsRepository.java create mode 100644 src/main/java/org/onap/dcaegen2/services/sonhms/entity/FaultNotifications.java delete mode 100644 src/main/java/org/onap/dcaegen2/services/sonhms/restclient/PolicyRestClient.java create mode 100644 src/main/java/org/onap/dcaegen2/services/sonhms/utils/DmaapUtils.java create mode 100644 src/main/resources/schema.sql delete mode 100644 src/test/java/org/onap/dcaegen2/services/sonhms/ApplicationTest.java delete mode 100644 src/test/java/org/onap/dcaegen2/services/sonhms/MainThreadTest.java create mode 100644 src/test/java/org/onap/dcaegen2/services/sonhms/entity/FaultNotificationsTest.java delete mode 100644 src/test/java/org/onap/dcaegen2/services/sonhms/restclient/PolicyRestClientTest.java diff --git a/dpo/blueprints/k8s-sonhms-inputs.yaml b/dpo/blueprints/k8s-sonhms-inputs.yaml new file mode 100644 index 0000000..9caf823 --- /dev/null +++ b/dpo/blueprints/k8s-sonhms-inputs.yaml @@ -0,0 +1,54 @@ +# ============LICENSE_START======================================================= +# son-handler +# ================================================================================ +# Copyright (C) 2019 Wipro Limited. +# ============================================================================== +# 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========================================================= + +pgaas_cluster_name: dcae-pg-primary.onap +database_name: sonhms +tag_version: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.son-handler:latest +replicas: 1 +aaf_username: +aaf_password: +polling_interval: 20 +polling_timeout: 60 +num_solutions: 5 +min_collision: 5 +min_confusion: 5 +max_clusters: 5 +dmaap: message-router +buffer_time: 60 +cg: sonhms-cg +cid: sonhms-cid +config_db: http://sdnc.onap.svc.cluster.local:8181 +oof: http://oof.onap.svc.cluster.local:8080 +pci_optimizer: pci +log_path: /dockerdata-nfs/son-handler +topic00_location: onap +topic00_client_role: son-subscriber +topic00_client_id: sdnr-son-1 +topic00_url: https://message-router.onap.svc.cluster.local:3905/events/unauthenticated.SEC_MEASUREMENT_OUTPUT +topic01_location: onap +topic01_client_role: son-subscriber +topic01_client_id: sdnr-son-1 +topic01_url: https://message-router.onap.svc.cluster.local:3905/events/unauthenticated.SEC_FAULT_OUTPUT +topic02_location: onap +topic02_client_role: son-subscriber +topic02_client_id: sdnr-son-1 +topic02_url: https://message-router.onap.svc.cluster.local:3905/events/PCI-NOTIF-TOPIC-NGHBR-LIST-CHANGE-INFO +topic03_location: onap +topic03_client_role: son-subscriber +topic03_client_id: sdnr-son-1 +topic03_url: https://message-router.onap.svc.cluster.local:3905/events/DCAE_CL_OUTPUT diff --git a/dpo/blueprints/k8s-sonhms.yaml b/dpo/blueprints/k8s-sonhms.yaml new file mode 100644 index 0000000..172048c --- /dev/null +++ b/dpo/blueprints/k8s-sonhms.yaml @@ -0,0 +1,225 @@ + #============LICENSE_START======================================================= + # son-handler + # ================================================================================ + # Copyright (C) 2019 Wipro Limited. + # ============================================================================== + # 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========================================================= + +tosca_definitions_version: cloudify_dsl_1_3 +imports: + - "http://www.getcloudify.org/spec/cloudify/3.4/types.yaml" + - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.5/k8splugin_types.yaml + - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.ccsdk.platform.plugins/type_files/pgaas/1.1.0/pgaas_types.yaml +inputs: + replicas: + type: integer + description: replica count for deployment + default: 1 + tag_version: + type: string + description: docker image name and version + default: "nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.son-handler:latest" + pgaas_cluster_name: + type: string + description: pg cluster + default: "dcae-postgres.onap.svc.cluster.local" + database_name: + type: string + description: database name + default: sonhms + aaf_username: + type: string + description: aaf username + aaf_password: + type: string + description: aaf password + polling_interval: + type: integer + description: dmaap polling interval + default: 20 + polling_timeout: + type: integer + description: dmaap polling timeout + default: 60 + num_solutions: + type: integer + description: num of solutions + default: 5 + min_collision: + type: integer + description: minimum no. of collisions + default: 5 + min_confusion: + type: integer + description: minimum no. of confusions + default: 5 + max_clusters: + type: integer + description: maximum clusters + default: 5 + dmaap: + type: string + description: dmaap server + default: message-router + buffer_time: + type: integer + description: buffer time + default: 60 + cg: + type: string + description: consumer group + default: sonhms-cg + cid: + type: string + description: consumer id + default: sonhms-cid + config_db: + type: string + description: config db location + oof: + type: string + description: oof location + pci_optimizer: + type: string + description: pci optimizer name in oof + default: pci + log_path: + type: string + description: log location in host + default: /dockerdata-nfs/son-handler + topic00_location: + topic01_location: + topic02_location: + topic03_location: + topic00_client_role: + topic01_client_role: + topic02_client_role: + topic03_client_role: + topic00_client_id: + topic01_client_id: + topic02_client_id: + topic03_client_id: + topic00_url: + topic01_url: + topic02_url: + topic03_url: + +node_templates: + pgaasvm: + type: dcae.nodes.pgaas.database + properties: + writerfqdn: { get_input: pgaas_cluster_name } + name: { get_input: database_name } + use_existing: false + + sonhms: + type: dcae.nodes.ContainerizedServiceComponent + interfaces: + cloudify.interfaces.lifecycle: + start: + inputs: + ports: + - "8080:0" + volumes: + - host: + path: { get_input: log_path } + container: + bind: /var/log/onap + mode: rw + properties: + image: + get_input: tag_version + service_component_type: 'dcae-sonhms' + service_id: 'sonhms' + always_pull_image: true + replicas: {get_input: replicas} + docker_config: + healthcheck: + endpoint: /healthcheck + interval: 15s + timeout: 1s + type: http + application_config: + streams_subscribes: + performance_management_topic: + aaf_username: { get_input: aaf_username } + aaf_password: { get_input: aaf_password } + dmaap_info: + location: { get_input: topic00_location } + client_role: { get_input: topic00_client_role } + client_id: { get_input: topic00_client_id } + topic_url: { get_input: topic00_url } + type: message-router + fault_management_topic: + aaf_username: { get_input: aaf_username } + aaf_password: { get_input: aaf_password } + dmaap_info: + location: { get_input: topic01_location } + client_role: { get_input: topic01_client_role } + client_id: { get_input: topic01_client_id } + topic_url: { get_input: topic01_url } + type: message-router + nbr_list_change_topic: + aaf_username: { get_input: aaf_username } + aaf_password: { get_input: aaf_password } + dmaap_info: + location: { get_input: topic02_location } + client_role: { get_input: topic02_client_role } + client_id: { get_input: topic02_client_id } + topic_url: { get_input: topic02_url } + type: message-router + streams__publishes: + CL_topic: + aaf_username: { get_input: aaf_username } + aaf_password: { get_input: aaf_password } + dmaap_info: + location: { get_input: topic03_location } + client_role: { get_input: topic03_client_role } + client_id: { get_input: topic03_client_id } + topic_url: { get_input: topic03_url } + type: message-router + postgres.host: { get_attribute: [ pgaasvm, admin, host ] } + postgres.port: { get_attribute: [ pgaasvm, admin, port ] } + postgres.username: { get_attribute: [ pgaasvm, admin, user ] } + postgres.password: { get_attribute: [ pgaasvm, admin, password ] } + sonhandler.pollingInterval: { get_input: polling_interval} + sonhandler.pollingTimeout: { get_input: polling_timeout } + sonhandler.numSolutions: { get_input: num_solutions } + sonhandler.minCollision: { get_input: min_collision } + sonhandler.minConfusion: { get_input: min_confusion } + sonhandler.maximumClusters: { get_input: max_clusters } + sonhandler.sourceId: SONHMS + sonhandler.dmaap.server: + - { get_input: dmaap } + sonhandler.bufferTime: { get_input: buffer_time } + sonhandler.cg: { get_input: cg } + sonhandler.cid: { get_input: cid } + sonhandler.configDb.service: { get_input: config_db } + sonhandler.oof.service: { get_input: oof } + sonhandler.optimizers: + - { get_input: pci_optimizer } + service_calls: + sdnr-getpnfname: [] + sdnr-getpci: [] + sdnr-getnbrlist: [] + sdnr-getcelllist: [] + oof-req: [] + policy-req: [] + relationships: + - type: cloudify.relationships.depends_on + target: pgaasvm + + + + diff --git a/dpo/data-formats/cellListFromSdnr-dataformat.json b/dpo/data-formats/cellListFromSdnr-dataformat.json new file mode 100644 index 0000000..610552e --- /dev/null +++ b/dpo/data-formats/cellListFromSdnr-dataformat.json @@ -0,0 +1,18 @@ +{ + "dataformatversion": "1.0.0", + "jsonschema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "", + "items": { + "description": "", + "type": "string" + }, + "type": "array" + }, + "self": { + "description": "", + "name": "CELLLIST_FROM_SDNR", + "version": "1.0.0" + } +} + diff --git a/dpo/data-formats/configdb-req-dataformat.json b/dpo/data-formats/configdb-req-dataformat.json new file mode 100644 index 0000000..a40a05c --- /dev/null +++ b/dpo/data-formats/configdb-req-dataformat.json @@ -0,0 +1,12 @@ +{ + "self": { + "name": "CONFIGDB-REQ", + "version": "1.0.0", + "description": "Request to config DB" + + }, + "dataformatversion": "1.0.0", + "unstructured": { + "encoding": "UTF-8" + } +} diff --git a/dpo/data-formats/dmaap_son.json b/dpo/data-formats/dmaap_son.json new file mode 100644 index 0000000..43f7b8e --- /dev/null +++ b/dpo/data-formats/dmaap_son.json @@ -0,0 +1,45 @@ +{"nbr_list_change_topic":{ + "type": "message_router", + "aaf_username": "", + "aaf_password": "", + "dmaap_info": { + "client_role": "son-subscriber", + "client_id": "sdnr-son-1", + "location": "onap", + "topic_url": "https://HOSTNAME:3905/events/PCI-NOTIF-TOPIC-NGHBR-LIST-CHANGE-INFO" + } +}, +"fault_management_topic":{ + "type": "message_router", + "aaf_username": "", + "aaf_password": "", + "dmaap_info": { + "client_role": "son-subscriber", + "client_id": "sdnr-son-1", + "location": "onap", + "topic_url": "https://HOSTNAME:3905/events/unauthenticated.SEC_FAULT_OUTPUT" + } +}, +"performance_management_topic":{ + "type": "message_router", + "aaf_username": "", + "aaf_password": "", + "dmaap_info": { + "client_role": "son-subscriber", + "client_id": "sdnr-son-1", + "location": "onap", + "topic_url": "https://HOSTNAME:3905/events/unauthenticated.SEC_MEASUREMENT_OUTPUT" + } +}, +"CL_topic":{ + "type": "message_router", + "aaf_username": "", + "aaf_password": "", + "dmaap_info": { + "client_role": "policy-publisher", + "client_id": "policy-son-1", + "location": "onap", + "topic_url": "https://HOSTNAME:3905/events/DCAE_CL_OUTPUT" + } +} +} diff --git a/dpo/data-formats/nbrListFromSdnr-dataformat.json b/dpo/data-formats/nbrListFromSdnr-dataformat.json new file mode 100644 index 0000000..ad50950 --- /dev/null +++ b/dpo/data-formats/nbrListFromSdnr-dataformat.json @@ -0,0 +1,33 @@ +{ + "dataformatversion": "1.0.0", + "jsonschema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "", + "items": { + "additionalproperties": true, + "description": "", + "properties": { + "cellId": { + "description": "", + "type": "string" + }, + "pciValue": { + "description": "", + "type": "integer" + } + }, + "required": [ + "cellId", + "pciValue" + ], + "type": "object" + }, + "type": "array" + }, + "self": { + "description": "", + "name": "NBRLST_FROM_SDNR", + "version": "1.0.0" + } +} + diff --git a/dpo/data-formats/oofToSonAsyncResp-dataformat.json b/dpo/data-formats/oofToSonAsyncResp-dataformat.json new file mode 100644 index 0000000..2668370 --- /dev/null +++ b/dpo/data-formats/oofToSonAsyncResp-dataformat.json @@ -0,0 +1,91 @@ +{ + "dataformatversion": "1.0.0", + "jsonschema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalproperties": true, + "description": "", + "properties": { + "requestId": { + "description": "", + "type": "string" + }, + "requestStatus": { + "description": "", + "type": "string" + }, + "solutions": { + "description": "", + "items": { + "additionalproperties": true, + "description": "", + "properties": { + "finishTime": { + "description": "", + "type": "string" + }, + "networkId": { + "description": "", + "type": "string" + }, + "pciSolutions": { + "description": "", + "items": { + "additionalproperties": true, + "description": "", + "properties": { + "cellId": { + "description": "", + "type": "string" + }, + "pci": { + "description": "", + "type": "string" + } + }, + "required": [ + "cellId", + "pci" + ], + "type": "object" + }, + "type": "array" + }, + "startTime": { + "description": "", + "type": "string" + } + }, + "required": [ + "finishTime", + "networkId", + "pciSolutions", + "startTime" + ], + "type": "object" + }, + "type": "array" + }, + "statusMessage": { + "description": "", + "type": "string" + }, + "transactionId": { + "description": "", + "type": "string" + } + }, + "required": [ + "requestId", + "requestStatus", + "solutions", + "statusMessage", + "transactionId" + ], + "type": "object" + }, + "self": { + "description": "", + "name": "SON_OOF_ASYNC_RESP", + "version": "1.0.0" + } +} diff --git a/dpo/data-formats/oofToSonSyncResp-dataformat.json b/dpo/data-formats/oofToSonSyncResp-dataformat.json new file mode 100644 index 0000000..11f8cd0 --- /dev/null +++ b/dpo/data-formats/oofToSonSyncResp-dataformat.json @@ -0,0 +1,38 @@ +{ + "dataformatversion": "1.0.0", + "jsonschema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalproperties": true, + "description": "", + "properties": { + "requestId": { + "description": "", + "type": "string" + }, + "requestStatus": { + "description": "", + "type": "string" + }, + "statusMessage": { + "description": "", + "type": "string" + }, + "transactionId": { + "description": "", + "type": "string" + } + }, + "required": [ + "requestId", + "requestStatus", + "statusMessage", + "transactionId" + ], + "type": "object" + }, + "self": { + "description": "", + "name": "SON_OOF_SYNC_RESP", + "version": "1.0.0" + } +} diff --git a/dpo/data-formats/pciFromSdnr-dataformat.json b/dpo/data-formats/pciFromSdnr-dataformat.json new file mode 100644 index 0000000..5eb8e7c --- /dev/null +++ b/dpo/data-formats/pciFromSdnr-dataformat.json @@ -0,0 +1,29 @@ +{ + "dataformatversion": "1.0.0", + "jsonschema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalproperties": true, + "description": "", + "properties": { + "attribute-name": { + "description": "", + "type": "string" + }, + "value": { + "description": "", + "type": "string" + } + }, + "required": [ + "attribute-name", + "value" + ], + "type": "object" + }, + "self": { + "description": "", + "name": "PCI_FROM_SDNR", + "version": "1.0.0" + } +} + diff --git a/dpo/data-formats/pnfNameFromSdnr-dataformat.json b/dpo/data-formats/pnfNameFromSdnr-dataformat.json new file mode 100644 index 0000000..84787dc --- /dev/null +++ b/dpo/data-formats/pnfNameFromSdnr-dataformat.json @@ -0,0 +1,29 @@ +{ + "dataformatversion": "1.0.0", + "jsonschema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalproperties": true, + "description": "", + "properties": { + "attribute-name": { + "description": "", + "type": "string" + }, + "value": { + "description": "", + "type": "string" + } + }, + "required": [ + "attribute-name", + "value" + ], + "type": "object" + }, + "self": { + "description": "", + "name": "PNFNAME_FROM_SDNR", + "version": "1.0.0" + } +} + diff --git a/dpo/data-formats/policyToSonReq-dataformat.json b/dpo/data-formats/policyToSonReq-dataformat.json new file mode 100644 index 0000000..f787695 --- /dev/null +++ b/dpo/data-formats/policyToSonReq-dataformat.json @@ -0,0 +1,23 @@ +{ + "dataformatversion": "1.0.0", + "jsonschema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalproperties": true, + "description": "", + "properties": { + "policyName": { + "description": "", + "type": "string" + } + }, + "required": [ + "policyName" + ], + "type": "object" + }, + "self": { + "description": "", + "name": "SON_TO_POLICY_REST_REQ", + "version": "1.0.0" + } +} diff --git a/dpo/data-formats/policyToSonResp-dataformat.json b/dpo/data-formats/policyToSonResp-dataformat.json new file mode 100644 index 0000000..526f145 --- /dev/null +++ b/dpo/data-formats/policyToSonResp-dataformat.json @@ -0,0 +1,64 @@ +{ + "dataformatversion": "1.0.0", + "jsonschema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalproperties": true, + "description": "", + "properties": { + "configBody": { + "description": "", + "type": "string" + }, + "configBodyType": { + "description": "", + "type": "string" + }, + "configName": { + "description": "", + "type": "string" + }, + "onapName": { + "description": "", + "type": "string" + }, + "policyClass": { + "description": "", + "type": "string" + }, + "policyConfigType": { + "description": "", + "type": "string" + }, + "policyName": { + "description": "", + "type": "string" + }, + "policyVersion": { + "description": "", + "type": "string" + }, + "ttlDate": { + "description": "", + "type": "string" + } + }, + "required": [ + "configBody", + "configBodyType", + "configName", + "onapName", + "policyClass", + "policyConfigType", + "policyName", + "policyVersion", + "ttlDate" + ], + "type": "object" + }, + "self": { + "description": "", + "name": "POLICY_TO_SON_REST_RESP", + "version": "1.0.0" + } +} + diff --git a/dpo/data-formats/sonInputFromSdnr-dataformat.json b/dpo/data-formats/sonInputFromSdnr-dataformat.json new file mode 100644 index 0000000..de8c017 --- /dev/null +++ b/dpo/data-formats/sonInputFromSdnr-dataformat.json @@ -0,0 +1,212 @@ +{ + "dataformatversion": "1.0.0", + "jsonschema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalproperties": true, + "description": "", + "properties": { + "AAI": { + "description": "", + "type": "object" + }, + "Action": { + "description": "", + "type": "string" + }, + "Payload": { + "additionalproperties": true, + "description": "", + "properties": { + "RadioAccess": { + "additionalproperties": true, + "description": "", + "properties": { + "FAPServiceList": { + "description": "", + "items": { + "additionalproperties": true, + "description": "", + "properties": { + "CellConfig": { + "additionalproperties": true, + "description": "", + "properties": { + "LTE": { + "additionalproperties": true, + "description": "", + "properties": { + "RAN": { + "additionalproperties": true, + "description": "", + "properties": { + "CellIdentity": { + "description": "", + "type": "string" + }, + "NeighborListInUse": { + "additionalproperties": true, + "description": "", + "properties": { + "LTECellNumberOfEntries": { + "description": "", + "type": "string" + }, + "LTENeighborListInUseLTECell": { + "description": "", + "items": { + "additionalproperties": true, + "description": "", + "properties": { + "alias": { + "description": "", + "type": "string" + }, + "blacklisted": { + "description": "", + "type": "string" + }, + "cid": { + "description": "", + "type": "string" + }, + "enable": { + "description": "", + "type": "string" + }, + "mustInclude": { + "description": "", + "type": "string" + }, + "phyCellId": { + "description": "", + "type": "string" + }, + "plmnid": { + "description": "", + "type": "string" + }, + "pnfName": { + "description": "", + "type": "string" + } + }, + "required": [ + "alias", + "blacklisted", + "cid", + "enable", + "mustInclude", + "phyCellId", + "plmnid", + "pnfName" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "LTECellNumberOfEntries", + "LTENeighborListInUseLTECell" + ], + "type": "object" + } + }, + "required": [ + "CellIdentity", + "NeighborListInUse" + ], + "type": "object" + } + }, + "required": [ + "RAN" + ], + "type": "object" + } + }, + "required": [ + "LTE" + ], + "type": "object" + }, + "X0005b9Lte": { + "additionalproperties": true, + "description": "", + "properties": { + "phyCellIdInUse": { + "description": "", + "type": "string" + }, + "pnfName": { + "description": "", + "type": "string" + } + }, + "required": [ + "phyCellIdInUse", + "pnfName" + ], + "type": "object" + }, + "alias": { + "description": "", + "type": "string" + } + }, + "required": [ + "CellConfig", + "X0005b9Lte", + "alias" + ], + "type": "object" + }, + "type": "array" + }, + "FAPServiceNumberOfEntries": { + "description": "", + "type": "string" + } + }, + "required": [ + "FAPServiceList", + "FAPServiceNumberOfEntries" + ], + "type": "object" + } + }, + "required": [ + "RadioAccess" + ], + "type": "object" + }, + "from": { + "description": "", + "type": "string" + }, + "requestID": { + "description": "", + "type": "string" + }, + "version": { + "description": "", + "type": "string" + } + }, + "required": [ + "AAI", + "Action", + "Payload", + "from", + "requestID", + "version" + ], + "type": "object" + }, + "self": { + "description": "dmaap message from SDNR to SON handler", + "name": "SON_INPUT_FROM_SDNR", + "version": "1.0.0" + } +} + diff --git a/dpo/data-formats/sonToOofReq-dataformat.json b/dpo/data-formats/sonToOofReq-dataformat.json new file mode 100644 index 0000000..3ca70e0 --- /dev/null +++ b/dpo/data-formats/sonToOofReq-dataformat.json @@ -0,0 +1,97 @@ +{ + "dataformatversion": "1.0.0", + "jsonschema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalproperties": true, + "description": "", + "properties": { + "cellInfo": { + "additionalproperties": true, + "description": "", + "properties": { + "cellIdList": { + "description": "", + "items": { + "description": "", + "type": "string" + }, + "type": "array" + }, + "networkId": { + "description": "", + "type": "string" + } + }, + "required": [ + "cellIdList", + "networkId" + ], + "type": "object" + }, + "requestInfo": { + "additionalproperties": true, + "description": "", + "properties": { + "callbackUrl": { + "description": "", + "type": "string" + }, + "numSolutions": { + "description": "", + "type": "integer" + }, + "optimizers": { + "description": "", + "items": { + "description": "", + "type": "string" + }, + "type": "array" + }, + "requestId": { + "description": "", + "type": "string" + }, + "requestType": { + "description": "", + "type": "string" + }, + "sourceId": { + "description": "", + "type": "string" + }, + "timeout": { + "description": "", + "type": "integer" + }, + "transactionId": { + "description": "", + "type": "string" + } + }, + "required": [ + "callbackUrl", + "numSolutions", + "optimizers", + "requestId", + "requestType", + "sourceId", + "timeout", + "transactionId" + ], + "type": "object" + } + }, + "required": [ + "cellInfo", + "requestInfo" + ], + "type": "object" + }, + "self": { + "description": "", + "name": "SON_TO_OOF_REST_REQ", + "version": "1.0.0" + } +} + diff --git a/dpo/data-formats/sonToPolicyDmaap-dataformat.json b/dpo/data-formats/sonToPolicyDmaap-dataformat.json new file mode 100644 index 0000000..fcca5e6 --- /dev/null +++ b/dpo/data-formats/sonToPolicyDmaap-dataformat.json @@ -0,0 +1,87 @@ +{ + "dataformatversion": "1.0.0", + "jsonschema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalproperties": true, + "description": "", + "properties": { + "AAI": { + "additionalproperties": true, + "description": "", + "properties": { + "generic-vnf.is-closed-loop-disabled": { + "description": "", + "type": "string" + }, + "generic-vnf.prov-status": { + "description": "", + "type": "string" + }, + "generic-vnf.vnf-id": { + "description": "", + "type": "string" + } + }, + "required": [ + "generic-vnf.is-closed-loop-disabled", + "generic-vnf.prov-status", + "generic-vnf.vnf-id" + ], + "type": "object" + }, + "Action": { + "description": "", + "type": "string" + }, + "closedLoopAlarmStart": { + "description": "", + "type": "integer" + }, + "closedLoopControlName": { + "description": "", + "type": "string" + }, + "closedLoopEventClient": { + "description": "", + "type": "string" + }, + "closedLoopEventStatus": { + "description": "", + "type": "string" + }, + "from": { + "description": "", + "type": "string" + }, + "payload": { + "description": "", + "type": "string" + }, + "requestID": { + "description": "", + "type": "string" + }, + "target": { + "description": "", + "type": "string" + }, + "target_type": { + "description": "", + "type": "string" + }, + "version": { + "description": "", + "type": "string" + } + }, + "required": [ + "AAI", "Action", "closedLoopAlarmStart", "closedLoopControlName", "closedLoopEventClient", "closedLoopEventStatus", "from", "payload", "requestID", "target", "target_type", "version" + ], + "type": "object" + }, + "self": { + "description": "", + "name": "SON_TO_POLICY_DMAAP", + "version": "1.0.0" + } +} diff --git a/dpo/data-formats/sonToPolicyReq-dataformat.json b/dpo/data-formats/sonToPolicyReq-dataformat.json new file mode 100644 index 0000000..7686242 --- /dev/null +++ b/dpo/data-formats/sonToPolicyReq-dataformat.json @@ -0,0 +1,24 @@ +{ + "dataformatversion": "1.0.0", + "jsonschema": { + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalproperties": true, + "description": "", + "properties": { + "policyName": { + "description": "", + "type": "string" + } + }, + "required": [ + "policyName" + ], + "type": "object" + }, + "self": { + "description": "", + "name": "SON_TO_POLICY_REST_REQ", + "version": "1.0.0" + } +} + diff --git a/dpo/spec/sonhandler-componentspec.json b/dpo/spec/sonhandler-componentspec.json new file mode 100644 index 0000000..186fbf7 --- /dev/null +++ b/dpo/spec/sonhandler-componentspec.json @@ -0,0 +1,297 @@ +{ + "self":{ + "version":"1.0.0", + "name":"docker.sonhandler.app", + "description":"Handles the PCI optimization for SON network", + "component_type":"docker" + }, + "streams":{ + "subscribes":[ + { + "format":"SON_INPUT_FROM_SDNR", + "version":"1.0.0", + "config_key":"nbr_list_change_topic", + "type":"message router" + }, + { + "format":"FM_ALARM_FROM_VES", + "version":"1.0.0", + "config_key":"fault_management_topic", + "type":"message router" + }, + { + "format":"PM_ALARM_FROM_VES", + "version":"1.0.0", + "config_key":"performance_management_topic", + "type":"message router" + }, + { + "format":"SON_OOF_ASYNC_RESP", + "version":"1.0.0", + "route":"/callbackUrl", + "type":"http" + } + ], + "publishes":[ + { + "format":"SON_TO_POLICY_DMAAP", + "version":"1.0.0", + "config_key":"CL_topic", + "type":"message router" + } + ] + }, + "services":{ + "calls":[ + { + "config_key":"oof-req", + "request":{ + "format":"SON_TO_OOF_REST_REQ", + "version":"1.0.0" + }, + "response":{ + "format":"SON_OOF_SYNC_RESP", + "version":"1.0.0" + } + }, + { + "config_key":"sdnr-getpnfname", + "request":{ + "format":"CONFIGDB-REQ", + "version":"1.0.0" + }, + "response":{ + "format":"PNFNAME_FROM_SDNR", + "version":"1.0.0" + } + }, + { + "config_key":"sdnr-getcelllist", + "request":{ + "format":"CONFIGDB-REQ", + "version":"1.0.0" + }, + "response":{ + "format":"CELLLIST_FROM_SDNR", + "version":"1.0.0" + } + }, + { + "config_key":"sdnr-getnbrlist", + "request":{ + "format":"CONFIGDB-REQ", + "version":"1.0.0" + }, + "response":{ + "format":"NBRLST_FROM_SDNR", + "version":"1.0.0" + } + }, + { + "config_key":"sdnr-getpci", + "request":{ + "format":"CONFIGDB-REQ", + "version":"1.0.0" + }, + "response":{ + "format":"PCI_FROM_SDNR", + "version":"1.0.0" + } + } + ], + "provides":[ + + ] + }, + "parameters":[ + { + "name":"postgres.username", + "value":"sonuser", + "description":"postgres config", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"postgres.password", + "value":"sonpassword", + "description":"postgres config", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"postgres.host", + "value":"10.165.160.148", + "description":"postgres config", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"postgres.port", + "value":"5432", + "description":"postgres config", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.optimizers", + "value":[ + "pci" + ], + "description":"son handler optimizers list", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.buffertime", + "value":"60", + "description":"buffer time in seconds", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.numsolutions", + "value":"10", + "description":"number of solutions", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.maximumclusters", + "value":"5", + "description":"maximum number of clusters", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.cg", + "value":"sonhms-cg", + "description":"son consumer group", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.cid", + "value":"sonhms-cid", + "description":"son consumer Id", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.dmaap.servers", + "value":["message-router:3904"], + "description":"dmaap server location", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.pollingInterval", + "value":"20", + "description":"dmaap polling interval", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.pollingTimeout", + "value":"60", + "description":"dmaap polling timeout", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.minCollision", + "value":"5", + "description":"minimum collision count", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.minConfusion", + "value":"5", + "description":"minimum confusion count", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.configDb.service", + "value":"http://sdnc:8282", + "description":"configDb service url", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.oof.service", + "value":"http://oof:8080", + "description":"oof service url", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.sourceId", + "value":"SONHMS", + "description":"sonhms source ID", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + }, + { + "name":"sonhandler.callbackUrl", + "value":"http://sonhms.onap:8080/callbackUrl", + "description":"sonhms callback url", + "sourced_at_deployment":false, + "policy_editable":false, + "designer_editable":false + } + ], + "auxilary":{ + "healthcheck":{ + "type":"http", + "interval":"15s", + "timeout":"1s", + "endpoint":"/healthckeck" + }, + "volumes":[ + { + "container":{ + "bind":"/etc/localtime" + }, + "host":{ + "path":"/etc/localtime" + } + }, + { + "container":{ + "bind":"/var/log/onap" + }, + "host":{ + "path":"/dockerdata-nfs/pci-handler/logs" + } + } + ], + "ports":[ + "8080:8080" + ] + }, + "artifacts":[ + { + "type":"docker image", + "uri":"k8s-rancher-1:5000/son-handler:1.0.1" + } + ] +} diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..5c4541f --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,24 @@ +#!/bin/bash +#******************************************************************************* +# ============LICENSE_START======================================================= +# son-handler +# ================================================================================ +# Copyright (C) 2019 Wipro Limited. +# ============================================================================== +# 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========================================================= +# +#******************************************************************************* + +java -jar /bin/application.jar + diff --git a/pom.xml b/pom.xml index cbb2c72..05dd29b 100644 --- a/pom.xml +++ b/pom.xml @@ -42,12 +42,32 @@ + 1.1.3 UTF-8 1.8 1.8 + onap/org.onap.dcaegen2.services.son-handler + + https://nexus.onap.org + content/repositories/snapshots/ + content/repositories/releases/ + content/sites/site/org/onap/dcaegen2/services/son-handler/${project.artifactId}/${project.version} + yyyyMMdd'T'HHmmss + + + org.onap.dcaegen2.services.sdk.rest.services + cbs-client + ${sdk.version} + + + + org.onap.dcaegen2.services.sdk.security.crypt + crypt-password + ${sdk.version} + org.springframework.boot @@ -82,7 +102,6 @@ javax.json-api 1.1.2 - org.springframework.boot spring-boot-starter-web @@ -212,7 +231,7 @@ org.onap.oparent checkstyle - 1.2.3-SNAPSHOT + 1.2.3 compile @@ -245,13 +264,92 @@ spring-boot-maven-plugin 2.0.4.RELEASE - - - repackage - - - + + + repackage + + + + + com.spotify + docker-maven-plugin + + ${onap.nexus.dockerregistry.daily} + + ${docker.image.name} + + latest + + java:openjdk-8 + + + /bin + ${project.build.directory} + ${project.artifactId}-${project.version}.jar + + + /bin + ${project.basedir} + entrypoint.sh + + + + + chmod +x /bin/entrypoint.sh + mv /bin/*.jar /bin/application.jar + + + 8080 + + /bin/entrypoint.sh + + + + build-image + package + + build + + + + tag-and-push-image-latest + deploy + + tag + + + ${docker.image.name}:latest + ${onap.nexus.dockerregistry.daily}/${docker.image.name}:latest + true + + + + tag-and-push-image-with-version + deploy + + tag + + + ${docker.image.name}:latest + ${onap.nexus.dockerregistry.daily}/${docker.image.name}:${project.version} + true + + + + tag-and-push-image-with-version-and-date + deploy + + tag + + + ${docker.image.name}:latest + ${onap.nexus.dockerregistry.daily}/${docker.image.name}:${project.version}-${maven.build.timestamp}Z + true + + + + diff --git a/src/main/docker/postgres_scripts/Dockerfile b/src/main/docker/postgres_scripts/Dockerfile deleted file mode 100644 index 9ccb016..0000000 --- a/src/main/docker/postgres_scripts/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -from busybox - -RUN mkdir /docker-entrypoint-initdb.d - -ADD createdb.sql /tmp - - diff --git a/src/main/docker/postgres_scripts/createdb.sql b/src/main/docker/postgres_scripts/createdb.sql deleted file mode 100644 index dc843e7..0000000 --- a/src/main/docker/postgres_scripts/createdb.sql +++ /dev/null @@ -1,25 +0,0 @@ -CREATE DATABASE sonh_ms; -\c sonh_ms -CREATE TABLE DMAAP_NOTIFICATIONS( - notification TEXT PRIMARY KEY NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -); -CREATE TABLE BUFFERED_NOTIFICATIONS( - notification TEXT PRIMARY KEY NOT NULL, - cluster_id TEXT NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -); -CREATE TABLE CLUSTER_DETAILS( - cluster_id TEXT PRIMARY KEY NOT NULL, - cluster_info TEXT NOT NULL, - child_thread_id BIGINT UNIQUE NOT NULL -); -CREATE TABLE CELL_INFO( - cell_id TEXT PRIMARY KEY NOT NULL, - pnf_name TEXT NOT NULL -); -CREATE TABLE PCI_REQUESTS( - transaction_id TEXT PRIMARY KEY, - child_thread_id BIGINT UNIQUE NOT NULL -); - diff --git a/src/main/docker/postgres_scripts/init_db.sh b/src/main/docker/postgres_scripts/init_db.sh deleted file mode 100644 index f01eea6..0000000 --- a/src/main/docker/postgres_scripts/init_db.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -#******************************************************************************* -# ============LICENSE_START======================================================= -# son-handler -# ================================================================================ -# Copyright (C) 2019 Wipro Limited. -# ============================================================================== -# 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========================================================= -# -#******************************************************************************* - -psql -U postgres -tc "SELECT 1 FROM pg_database WHERE datname = 'pci_ms'" | grep -q 1 || psql -U postgres -c "CREATE DATABASE pci_ms" diff --git a/src/main/docker/son-handler/Dockerfile b/src/main/docker/son-handler/Dockerfile deleted file mode 100644 index 6e50fb1..0000000 --- a/src/main/docker/son-handler/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -FROM java:openjdk-8 - -ADD config.json /etc/config.json - -ADD policy.crt /policy.crt - -RUN keytool -import -file /policy.crt -alias policycert -keystore /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts -storepass changeit -noprompt - -COPY pci-handler-1.0-SNAPSHOT.jar application.jar - -ADD entrypoint.sh . - -RUN chmod +x entrypoint.sh - -EXPOSE 8080 - -ENTRYPOINT ["./entrypoint.sh"] diff --git a/src/main/docker/son-handler/config.json b/src/main/docker/son-handler/config.json deleted file mode 100644 index 6cdf863..0000000 --- a/src/main/docker/son-handler/config.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "topics":[ - { - "name": "PCI-NOTIF-TOPIC-NGHBR-LIST-CHANGE-INFO", - "producer": "SDNR_API_KEY", - "consumer": "PCIMS_API_KEY" - }, - { - "name": "DCAE_CL_OUTPUT", - "producer": "PCIMS_API_KEY", - "consumer": "POLICY_API_KEY" - }, - { - "name": "SDNR-CL", - "producer": "POLICY_API_KEY", - "consumer": "SDNR_API_KEY" - }, - { - "name": "SDNR-CL-RSP", - "producer": "SDNR_API_KEY", - "consumer": "POLICY_API_KEY" - } - ], - "sdnrTopic": "PCI-NOTIF-TOPIC-NGHBR-LIST-CHANGE-INFO", - "policyTopic": "DCAE_CL_OUTPUT", - "servers": ["DMAAP_SERVER:3904"], - "managerApiKey": "MANAGER_API_KEY", - "managerSecretKey": "MANAGER_SECRET_KEY", - "pcimsApiKey": "PCIMS_API_KEY", - "pcimsSecretKey": "PCIMS_SECRET_KEY", - "cg": "pcims-cg", - "cid": "pcims-cid", - "pollingTimeout": "60", - "pollingInterval": "20", - "minCollision": "5", - "minConfusion": "5", - "sdnrService": "http://SDNR_SERVICE", - "oofService": "http://OOF_SERVICE", - "policyService": "https://POLICY_SERVICE", - "sourceId": "PCIHMS", - "callbackUrl": "http://pcims.onap:8080/callbackUrl", - "policyName": "com.Config_PCIMS_CONFIG_POLICY.1.xml", - "configName": "PCIMS_CONFIG_POLICY", - "optimizers": ["pci"], - "bufferTime": "60000", - "numSolutions": "1", - "maximumClusters": "5" -} diff --git a/src/main/docker/son-handler/entrypoint.sh b/src/main/docker/son-handler/entrypoint.sh deleted file mode 100644 index 36e3178..0000000 --- a/src/main/docker/son-handler/entrypoint.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -#******************************************************************************* -# ============LICENSE_START======================================================= -# son-handler -# ================================================================================ -# Copyright (C) 2019 Wipro Limited. -# ============================================================================== -# 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========================================================= -# -#******************************************************************************* - -sed -i s/DMAAP_SERVER/$DMAAPSERVER/ /etc/config.json -sed -i s/SDNR_SERVICE/$SDNRSERVICE/ /etc/config.json -sed -i s/OOF_SERVICE/$OOFSERVICE/ /etc/config.json -sed -i s/POLICY_SERVICE/$POLICYSERVICE/ /etc/config.json -sed -i s/PCIMS_SERVICE_HOST/$PCIMS_SERVICE_HOST/ /etc/config.json -sed -i s/MANAGER_API_KEY/$MANAGERAPIKEY/ /etc/config.json -sed -i s/MANAGER_SECRET_KEY/$MANAGERSECRETKEY/ /etc/config.json -sed -i s/PCIMS_API_KEY/$PCIMSAPIKEY/ /etc/config.json -sed -i s/PCIMS_SECRET_KEY/$PCIMSSECRETKEY/ /etc/config.json -sed -i s/SDNR_API_KEY/$SDNRAPIKEY/ /etc/config.json -sed -i s/POLICY_API_KEY/$POLICYAPIKEY/ /etc/config.json -java -jar application.jar - diff --git a/src/main/docker/son-handler/policy.crt b/src/main/docker/son-handler/policy.crt deleted file mode 100644 index e017bf4..0000000 --- a/src/main/docker/son-handler/policy.crt +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEkzCCA3ugAwIBAgIIaG5i2/yYcycwDQYJKoZIhvcNAQELBQAwRzELMAkGA1UE -BhMCVVMxDTALBgNVBAoMBE9OQVAxDjAMBgNVBAsMBU9TQUFGMRkwFwYDVQQDDBBp -bnRlcm1lZGlhdGVDQV85MB4XDTE4MTAxMTIyMDkwNVoXDTE5MDQxMTIyMDkwNVow -bzEPMA0GA1UEAwwGcG9saWN5MQ8wDQYJKoZIhvcNAQkBFgAxHzAdBgNVBAsMFnBv -bGljeUBwb2xpY3kub25hcC5vcmcxDjAMBgNVBAsMBU9TQUFGMQ0wCwYDVQQKDARP -TkFQMQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -ALdwMkNAqr43X9eBdGV9xT+Gi2usZC8GdOvAuEJ0srqdLY1baSMrGDY6sN4o5o/X -fD+wwoaTYtnrrESC13BEoXRo7vIuqxKnNjqkljHcgk09m8BaBB5zQQQULoeEEVIV -7c9+agrE+Jg3BPsilyWnJco6zLPpjSuTlqEvCtUjk6aQ+dS8ItHN26c/W42AuyLn -iofaWY2HZdhOZJg6UetyITOywQ5o3vl09tE+zPzk7cixsxVUJy2aunUuDcrFiyKf -tSX3XBAxaspgVtnNrUheudwkWc5pdBFNYSJS8NSCc7yDuAz0AfrCS7Tcd4IZG7Lw -zJjMoIj0fOsinFViPkiyAA8CAwEAAaOCAVkwggFVMAkGA1UdEwQCMAAwDgYDVR0P -AQH/BAQDAgXgMCAGA1UdJQEB/wQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBUBgNV -HSMETTBLgBSB95lbELnIjN7zUl7qTmmgQz6s3aEwpC4wLDEOMAwGA1UECwwFT1NB -QUYxDTALBgNVBAoMBE9OQVAxCzAJBgNVBAYTAlVTggEHMB0GA1UdDgQWBBTO1RjR -xvjgraJ+1nZUENDKSngpITCBoAYDVR0RBIGYMIGVggZwb2xpY3mCBSoucGRwghwq -LnBkcC5vbmFwLnN2Yy5jbHVzdGVyLmxvY2FsggZicm1zZ3eCC2JybXNndy5vbmFw -ggZkcm9vbHOCC2Ryb29scy5vbmFwggNwYXCCCHBhcC5vbmFwggNwZHCCCHBkcC5v -bmFwgh5wb2xpY3kuYXBpLnNpbXBsZWRlbW8ub25hcC5vcmcwDQYJKoZIhvcNAQEL -BQADggEBAHuhhuTD5zcrBaPGU7NT9V82BwrCPfEH2UTxracU/P/3YRQ4yBcnnyX4 -FznNAHJOrNnwdz7kht0XLV2Td5iI+Gs0X5AVlQE2paSgiJRXPkwU7un5xk7a6cbN -7lnx5RcAxVBi6Nf078cSPu0I+E344MUoYwKb4haBKTB2lN48W7HxzePdnWZiPhrR -iTIKwUa1WvKPG9KpbOZDbukCfStPeMb2i0G3rk4T/Vr1cDRLyG8u1nnJEHeAoU+t -SWAq9bKpspFW0rRd2m8jOcql9ja7OUSgU0Qt10xoUQrkogS3Y8P8ib0Nf/kuyTnJ -aAchKp0OSx2z8HceBCQPEJsR5Cj1h2M= ------END CERTIFICATE----- diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/Application.java b/src/main/java/org/onap/dcaegen2/services/sonhms/Application.java index 7eb9e62..22d58d9 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/Application.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/Application.java @@ -21,33 +21,19 @@ package org.onap.dcaegen2.services.sonhms; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.onap.dcaegen2.services.sonhms.dmaap.DmaapClient; -import org.onap.dcaegen2.services.sonhms.restclient.PolicyRestClient; -import org.onap.dcaegen2.services.sonhms.utils.FileIo; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; +import javax.sql.DataSource; +import org.onap.dcaegen2.services.sonhms.controller.ConfigFetchFromCbs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; -@SpringBootApplication +@SpringBootApplication public class Application { - @Autowired - DmaapClient dmaapClient; - - @Autowired - MainThreadComponent mainThreadComponent; private static Logger log = LoggerFactory.getLogger(Application.class); @@ -55,75 +41,35 @@ public class Application { * Main method where the pci context is initially set. */ public static void main(String[] args) { + + ConfigFetchFromCbs configFetchFromCbs = new ConfigFetchFromCbs(); + configFetchFromCbs.getAppConfig(); + try { + Thread.sleep(10000); + } catch (InterruptedException e) { + log.debug("InterruptedException : {}",e); + } + log.info("after 10s sleep"); + log.info("Starting spring boot application"); SpringApplication.run(Application.class); } /** - * initialization. - */ - @PostConstruct - void init() { - getConfig(); - fetchIntialConfigFromPolicy(); - NewNotification newNotification = new NewNotification(false); - dmaapClient.initClient(newNotification); - mainThreadComponent.init(newNotification); - } - - /** - * Gets configuration from policy. - */ - @SuppressWarnings("unchecked") - private void fetchIntialConfigFromPolicy() { - log.debug("fetch initial config from policy"); - String configPolicyResponseJson = PolicyRestClient.fetchConfigFromPolicy(); - if (configPolicyResponseJson.equals("Post failed")) { - log.debug("cannot fetch config from policy"); - return; - } - ObjectMapper mapper = new ObjectMapper(); - List> configPolicyResponse = new ArrayList<>(); - try { - configPolicyResponse = mapper.readValue(configPolicyResponseJson, List.class); - } catch (IOException e) { - log.debug("exception during parsing response from policy", e); - } - String configPolicyJson = null; - if (configPolicyResponse != null) { - configPolicyJson = (String) configPolicyResponse.get(0).get("config"); - } else { - return; - } - Map configPolicyMap = new HashMap<>(); - try { - configPolicyMap = mapper.readValue(configPolicyJson, HashMap.class); - } catch (IOException e) { - log.debug("exception during parsing config body from policy", e); - } - ConfigPolicy configPolicy = ConfigPolicy.getInstance(); - configPolicy.setConfig(configPolicyMap); - if (log.isDebugEnabled()) { - log.debug(configPolicy.toString()); - } - } - - /** - * Gets config from config.json. - * + * DataSource bean. */ - private void getConfig() { - log.debug("getting initial config"); - String configJson = FileIo.readFromFile("/etc/config.json"); - ObjectMapper mapper = new ObjectMapper(); + @Bean + public DataSource dataSource() { Configuration configuration = Configuration.getInstance(); - try { - mapper.readerForUpdating(configuration).readValue(configJson); - if (log.isDebugEnabled()) { - log.debug(configuration.toString()); - } - } catch (IOException e) { - log.debug("exception during parsing configuration", e); - } + + String url = "jdbc:postgresql://" + configuration.getPgHost() + ":" + configuration.getPgPort() + "/sonhms"; + + return DataSourceBuilder + .create() + .url(url) + .username(configuration.getPgUsername()) + .password(configuration.getPgPassword()) + .build(); } + } diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/BufferNotificationComponent.java b/src/main/java/org/onap/dcaegen2/services/sonhms/BufferNotificationComponent.java index 50dec11..d1297b4 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/BufferNotificationComponent.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/BufferNotificationComponent.java @@ -21,10 +21,11 @@ package org.onap.dcaegen2.services.sonhms; +import java.util.List; + import org.onap.dcaegen2.services.sonhms.dao.BufferedNotificationsRepository; import org.onap.dcaegen2.services.sonhms.entity.BufferedNotifications; import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; -import java.util.List; public class BufferNotificationComponent { @@ -45,7 +46,7 @@ public class BufferNotificationComponent { * Retrieves buffered notification from the database. */ public List getBufferedNotification(String clusterId) { - BufferedNotificationsRepository bufferedNotificationsRepository = BeanUtil + BufferedNotificationsRepository bufferedNotificationsRepository = BeanUtil .getBean(BufferedNotificationsRepository.class); return bufferedNotificationsRepository.getNotificationsFromQueue(clusterId); diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/ClusterDetailsComponent.java b/src/main/java/org/onap/dcaegen2/services/sonhms/ClusterDetailsComponent.java index 8e4b357..81d76ef 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/ClusterDetailsComponent.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/ClusterDetailsComponent.java @@ -21,12 +21,12 @@ package org.onap.dcaegen2.services.sonhms; +import java.util.List; + import org.onap.dcaegen2.services.sonhms.dao.ClusterDetailsRepository; import org.onap.dcaegen2.services.sonhms.entity.ClusterDetails; import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; -import java.util.List; - public class ClusterDetailsComponent { diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/Configuration.java b/src/main/java/org/onap/dcaegen2/services/sonhms/Configuration.java index a90a0b9..1126102 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/Configuration.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/Configuration.java @@ -22,64 +22,86 @@ package org.onap.dcaegen2.services.sonhms; import java.util.List; +import java.util.Map; public class Configuration { private static Configuration instance = null; - private List topics; - private String sdnrTopic; - private String policyTopic; - private List servers; - private String managerApiKey; - private String managerSecretKey; - private String pcimsApiKey; - private String pcimsSecretKey; + private String pgHost; + private int pgPort; + private String pgUsername; + private String pgPassword; + private List dmaapServers; + private String configDbService; + private String oofService; private String cg; private String cid; private int pollingInterval; private int pollingTimeout; private int minCollision; private int minConfusion; - private String sdnrService; - private String policyService; - private String oofService; private String sourceId; - private String policyName; - private String configName; private String callbackUrl; private List optimizers; private int numSolutions; private int bufferTime; - private int maximumClusters; - private String consulHost; - private String hostName; - private String configBindingService; + private int maximumClusters; + private String aafUsername; + private String aafPassword; + private Map streamsSubscribes; + private Map streamsPublishes; - public String getConsulHost() { - return consulHost; - } + public boolean isSecured() { + if(aafUsername.equals("")||aafUsername==null){ + return false; + } + else + return true; + } - public void setConsulHost(String consulHost) { - this.consulHost = consulHost; - } - public String getHostName() { - return hostName; - } + + public String getAafUsername() { + return aafUsername; + } - public void setHostName(String hostName) { - this.hostName = hostName; - } - public String getConfigBindingService() { - return configBindingService; - } - public void setConfigBindingService(String configBindingService) { - this.configBindingService = configBindingService; - } + public void setAafUsername(String aafUsername) { + this.aafUsername = aafUsername; + } + + + + public String getAafPassword() { + return aafPassword; + } + + + + public void setAafPassword(String aafPassword) { + this.aafPassword = aafPassword; + } + + - public int getMaximumClusters() { + public Map getStreamsSubscribes() { + return streamsSubscribes; + } + + public void setStreamsSubscribes(Map streamsSubscribes) { + this.streamsSubscribes = streamsSubscribes; + } + + public Map getStreamsPublishes() { + return streamsPublishes; + } + + public void setStreamsPublishes(Map streamsPublishes) { + this.streamsPublishes = streamsPublishes; + } + + public int getMaximumClusters() { return maximumClusters; } @@ -101,46 +123,6 @@ public class Configuration { return instance; } - public List getServers() { - return servers; - } - - public void setServers(List servers) { - this.servers = servers; - } - - public String getManagerApiKey() { - return managerApiKey; - } - - public void setManagerApiKey(String managerApiKey) { - this.managerApiKey = managerApiKey; - } - - public String getManagerSecretKey() { - return managerSecretKey; - } - - public void setManagerSecretKey(String managerSecretKey) { - this.managerSecretKey = managerSecretKey; - } - - public String getPcimsApiKey() { - return pcimsApiKey; - } - - public void setPcimsApiKey(String pcimsApiKey) { - this.pcimsApiKey = pcimsApiKey; - } - - public String getPcimsSecretKey() { - return pcimsSecretKey; - } - - public void setPcimsSecretKey(String pcimsSecretKey) { - this.pcimsSecretKey = pcimsSecretKey; - } - public String getCg() { return cg; } @@ -189,22 +171,6 @@ public class Configuration { this.minConfusion = minConfusion; } - public String getSdnrService() { - return sdnrService; - } - - public void setSdnrService(String sdnrService) { - this.sdnrService = sdnrService; - } - - public String getPolicyService() { - return policyService; - } - - public void setPolicyService(String policyService) { - this.policyService = policyService; - } - public String getOofService() { return oofService; } @@ -221,23 +187,7 @@ public class Configuration { this.sourceId = sourceId; } - public String getPolicyName() { - return policyName; - } - - public void setPolicyName(String policyName) { - this.policyName = policyName; - } - - public String getConfigName() { - return configName; - } - - public void setConfigName(String configName) { - this.configName = configName; - } - - public String getCallbackUrl() { + public String getCallbackUrl() { return callbackUrl; } @@ -269,41 +219,70 @@ public class Configuration { this.bufferTime = bufferTime; } - public List getTopics() { - return topics; + public String getPgHost() { + return pgHost; + } + + public void setPgHost(String pgHost) { + this.pgHost = pgHost; } - public void setTopics(List topics) { - this.topics = topics; + public int getPgPort() { + return pgPort; } - public String getSdnrTopic() { - return sdnrTopic; + public void setPgPort(int pgPort) { + this.pgPort = pgPort; } - public void setSdnrTopic(String sdnrTopic) { - this.sdnrTopic = sdnrTopic; + public String getPgUsername() { + return pgUsername; } - public String getPolicyTopic() { - return policyTopic; + public void setPgUsername(String pgUsername) { + this.pgUsername = pgUsername; } - public void setPolicyTopic(String policyTopic) { - this.policyTopic = policyTopic; + public String getPgPassword() { + return pgPassword; } - @Override - public String toString() { - return "Configuration [topics=" + topics + ", sdnrTopic=" + sdnrTopic + ", policyTopic=" + policyTopic - + ", servers=" + servers + ", managerApiKey=" + managerApiKey + ", managerSecretKey=" + managerSecretKey - + ", pcimsApiKey=" + pcimsApiKey + ", pcimsSecretKey=" + pcimsSecretKey + ", cg=" + cg + ", cid=" + cid - + ", pollingInterval=" + pollingInterval + ", pollingTimeout=" + pollingTimeout + ", minCollision=" - + minCollision + ", minConfusion=" + minConfusion + ", sdnrService=" + sdnrService + ", policyService=" - + policyService + ", oofService=" + oofService + ", sourceId=" + sourceId + ", policyName=" + policyName - + ", configName=" + configName + ", callbackUrl=" + callbackUrl + ", optimizers=" + optimizers - + ", numSolutions=" + numSolutions + ", bufferTime=" + bufferTime + ", maximumClusters=" - + maximumClusters + "]"; + public void setPgPassword(String pgPassword) { + this.pgPassword = pgPassword; } + + public List getDmaapServers() { + return dmaapServers; + } + + public void setDmaapServers(List dmaapServers) { + this.dmaapServers = dmaapServers; + } + + public String getConfigDbService() { + return configDbService; + } + + public void setConfigDbService(String configDbService) { + this.configDbService = configDbService; + } + + + + @Override + public String toString() { + return "Configuration [pgHost=" + pgHost + ", pgPort=" + pgPort + ", pgUsername=" + pgUsername + ", pgPassword=" + + pgPassword + ", dmaapServers=" + dmaapServers + ", configDbService=" + configDbService + ", oofService=" + + oofService + ", cg=" + cg + ", cid=" + cid + ", pollingInterval=" + pollingInterval + + ", pollingTimeout=" + pollingTimeout + ", minCollision=" + minCollision + ", minConfusion=" + + minConfusion + ", sourceId=" + sourceId + ", callbackUrl=" + callbackUrl + ", optimizers=" + + optimizers + ", numSolutions=" + numSolutions + ", bufferTime=" + bufferTime + ", maximumClusters=" + + maximumClusters + ", aafUsername=" + aafUsername + ", aafPassword=" + aafPassword + + ", streamsSubscribes=" + streamsSubscribes + ", streamsPublishes=" + streamsPublishes + "]"; + } + + + + } diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/ConfigurationFetcher.java b/src/main/java/org/onap/dcaegen2/services/sonhms/ConfigurationFetcher.java deleted file mode 100644 index 4a55393..0000000 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/ConfigurationFetcher.java +++ /dev/null @@ -1,72 +0,0 @@ -/******************************************************************************* - * ============LICENSE_START======================================================= - * son-handler - * ================================================================================ - * Copyright (C) 2019 Wipro Limited. - * ============================================================================== - * 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.dcaegen2.services.sonhms; - -import org.onap.dcaegen2.services.sonhms.utils.SonHandlerRestTemplate; - -import org.json.JSONArray; -import org.json.JSONObject; -import org.json.JSONTokener; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.core.ParameterizedTypeReference; -import org.springframework.http.ResponseEntity; - - -public class ConfigurationFetcher { - private static Logger log = LoggerFactory.getLogger(ConfigurationFetcher.class); - - /** - * method that fetches config from config binding service. - */ - public void fetchFromCbs() { - - Configuration configuration = Configuration.getInstance(); - String consulHost = configuration.getConsulHost(); - String configBindingService = configuration.getConfigBindingService(); - ResponseEntity response = null; - String requestUrl = ""; - if ((consulHost != null) && (configBindingService != null)) { - requestUrl = consulHost + ":8500/v1/catalog/service/" + configBindingService; - response = SonHandlerRestTemplate.sendPostRequest(requestUrl, "", - new ParameterizedTypeReference() {}); - } - JSONTokener jsonTokener = new JSONTokener(response.getBody()); - JSONObject cbsjobj = (JSONObject) new JSONArray(jsonTokener).get(0); - String cbsUrl = ""; - String configurationRequestUrl = ""; - ResponseEntity configurationResponse = null; - if (cbsjobj.has("ServiceAddress") && cbsjobj.has("ServicePort")) { - cbsUrl = cbsjobj.getString("ServiceAddress") + ":" + cbsjobj.getInt("ServicePort"); - - } - - configurationRequestUrl = cbsUrl + "/service_component/" + configuration.getHostName(); - configurationResponse = SonHandlerRestTemplate.sendPostRequest1(configurationRequestUrl, "", - new ParameterizedTypeReference() {}); - JSONObject config = new JSONObject(new JSONTokener(configurationResponse.getBody())); - String configString = config.toString(); - log.debug("config:{}",configString); - } - - -} \ No newline at end of file diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponent.java b/src/main/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponent.java index f28de63..f2c444c 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponent.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponent.java @@ -22,13 +22,14 @@ package org.onap.dcaegen2.services.sonhms; import com.fasterxml.jackson.databind.ObjectMapper; -import org.onap.dcaegen2.services.sonhms.dao.DmaapNotificationsRepository; -import org.onap.dcaegen2.services.sonhms.model.Notification; -import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; + import fj.data.Either; import java.io.IOException; +import org.onap.dcaegen2.services.sonhms.dao.DmaapNotificationsRepository; +import org.onap.dcaegen2.services.sonhms.model.Notification; +import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/EventHandler.java b/src/main/java/org/onap/dcaegen2/services/sonhms/EventHandler.java index 312ca60..df24aa8 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/EventHandler.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/EventHandler.java @@ -22,16 +22,9 @@ package org.onap.dcaegen2.services.sonhms; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import org.onap.dcaegen2.services.sonhms.child.ChildThread; -import org.onap.dcaegen2.services.sonhms.child.Graph; -import org.onap.dcaegen2.services.sonhms.entity.ClusterDetails; -import org.onap.dcaegen2.services.sonhms.exceptions.ConfigDbNotFoundException; -import org.onap.dcaegen2.services.sonhms.model.FapServiceList; -import org.onap.dcaegen2.services.sonhms.model.Notification; -import org.onap.dcaegen2.services.sonhms.utils.ClusterUtils; -import org.onap.dcaegen2.services.sonhms.utils.ThreadUtils; import fj.data.Either; + import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -41,6 +34,15 @@ import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; + +import org.onap.dcaegen2.services.sonhms.child.ChildThread; +import org.onap.dcaegen2.services.sonhms.child.Graph; +import org.onap.dcaegen2.services.sonhms.entity.ClusterDetails; +import org.onap.dcaegen2.services.sonhms.exceptions.ConfigDbNotFoundException; +import org.onap.dcaegen2.services.sonhms.model.FapServiceList; +import org.onap.dcaegen2.services.sonhms.model.Notification; +import org.onap.dcaegen2.services.sonhms.utils.ClusterUtils; +import org.onap.dcaegen2.services.sonhms.utils.ThreadUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -82,11 +84,10 @@ public class EventHandler { try { List clusterDetails = clusterUtils.getAllClusters(); - NotificationToClusterMapping mapping = new NotificationToClusterMapping(); - mapping = clusterUtils.getClustersForNotification(notification, clusterDetails); + NotificationToClusterMapping mapping = clusterUtils.getClustersForNotification(notification, + clusterDetails); // Matching cells - System.out.println(mapping); if (mapping.getCellsinCluster() != null) { handleMatchingCells(mapping.getCellsinCluster(), clusterDetails); } diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/MainThread.java b/src/main/java/org/onap/dcaegen2/services/sonhms/MainThread.java index 2026500..84775ad 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/MainThread.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/MainThread.java @@ -21,10 +21,6 @@ package org.onap.dcaegen2.services.sonhms; -import org.onap.dcaegen2.services.sonhms.model.Notification; -import org.onap.dcaegen2.services.sonhms.utils.ClusterUtils; -import org.onap.dcaegen2.services.sonhms.utils.ThreadUtils; - import fj.data.Either; import java.util.HashMap; @@ -33,6 +29,9 @@ import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; +import org.onap.dcaegen2.services.sonhms.model.Notification; +import org.onap.dcaegen2.services.sonhms.utils.ClusterUtils; +import org.onap.dcaegen2.services.sonhms.utils.ThreadUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/MainThreadComponent.java b/src/main/java/org/onap/dcaegen2/services/sonhms/MainThreadComponent.java index f83541a..1b4ff26 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/MainThreadComponent.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/MainThreadComponent.java @@ -21,8 +21,11 @@ package org.onap.dcaegen2.services.sonhms; +import javax.annotation.PostConstruct; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -30,12 +33,14 @@ public class MainThreadComponent { private static Logger log = LoggerFactory.getLogger(MainThreadComponent.class); - + @Autowired + private NewNotification newNotification; /** * main thread initialization. */ - public void init(NewNotification newNotification) { + @PostConstruct + public void init() { log.debug("initializing main thread"); Thread thread = new Thread(new MainThread(newNotification)); thread.start(); diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/NewNotification.java b/src/main/java/org/onap/dcaegen2/services/sonhms/NewNotification.java index 9f6e57f..703204b 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/NewNotification.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/NewNotification.java @@ -21,6 +21,9 @@ package org.onap.dcaegen2.services.sonhms; +import org.springframework.stereotype.Component; + +@Component public class NewNotification { private Boolean newNotif; @@ -37,5 +40,9 @@ public class NewNotification { super(); this.newNotif = newNotif; } + + public NewNotification() { + + } } diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/NotificationToClusterMapping.java b/src/main/java/org/onap/dcaegen2/services/sonhms/NotificationToClusterMapping.java index 14961e5..d507f0c 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/NotificationToClusterMapping.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/NotificationToClusterMapping.java @@ -21,11 +21,11 @@ package org.onap.dcaegen2.services.sonhms; -import org.onap.dcaegen2.services.sonhms.model.FapServiceList; - import java.util.List; import java.util.Map; +import org.onap.dcaegen2.services.sonhms.model.FapServiceList; + public class NotificationToClusterMapping { diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/SonController.java b/src/main/java/org/onap/dcaegen2/services/sonhms/SonController.java index 15aa907..3c7d6ac 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/SonController.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/SonController.java @@ -23,7 +23,6 @@ package org.onap.dcaegen2.services.sonhms; import org.onap.dcaegen2.services.sonhms.child.ChildThread; import org.onap.dcaegen2.services.sonhms.restclient.AsyncResponseBody; - import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/SonRequestsComponent.java b/src/main/java/org/onap/dcaegen2/services/sonhms/SonRequestsComponent.java index 51607fa..a0851ce 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/SonRequestsComponent.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/SonRequestsComponent.java @@ -22,7 +22,6 @@ package org.onap.dcaegen2.services.sonhms; import org.onap.dcaegen2.services.sonhms.dao.SonRequestsRepository; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/child/ChildThread.java b/src/main/java/org/onap/dcaegen2/services/sonhms/child/ChildThread.java index eff7a84..d12092b 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/child/ChildThread.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/child/ChildThread.java @@ -21,14 +21,6 @@ package org.onap.dcaegen2.services.sonhms.child; -import org.onap.dcaegen2.services.sonhms.Configuration; -import org.onap.dcaegen2.services.sonhms.dao.ClusterDetailsRepository; -import org.onap.dcaegen2.services.sonhms.model.FapServiceList; -import org.onap.dcaegen2.services.sonhms.model.ThreadId; -import org.onap.dcaegen2.services.sonhms.restclient.AsyncResponseBody; -import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; -import org.onap.dcaegen2.services.sonhms.utils.ClusterUtils; - import java.sql.Timestamp; import java.util.ArrayList; import java.util.HashMap; @@ -37,6 +29,14 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; + +import org.onap.dcaegen2.services.sonhms.Configuration; +import org.onap.dcaegen2.services.sonhms.dao.ClusterDetailsRepository; +import org.onap.dcaegen2.services.sonhms.model.FapServiceList; +import org.onap.dcaegen2.services.sonhms.model.ThreadId; +import org.onap.dcaegen2.services.sonhms.restclient.AsyncResponseBody; +import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; +import org.onap.dcaegen2.services.sonhms.utils.ClusterUtils; import org.slf4j.Logger; import org.slf4j.MDC; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/child/ChildThreadUtils.java b/src/main/java/org/onap/dcaegen2/services/sonhms/child/ChildThreadUtils.java index d7ff57a..89cafd6 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/child/ChildThreadUtils.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/child/ChildThreadUtils.java @@ -24,6 +24,10 @@ package org.onap.dcaegen2.services.sonhms.child; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; + +import java.util.ArrayList; +import java.util.List; + import org.onap.dcaegen2.services.sonhms.ConfigPolicy; import org.onap.dcaegen2.services.sonhms.model.CellConfig; import org.onap.dcaegen2.services.sonhms.model.CellPciPair; @@ -36,8 +40,6 @@ import org.onap.dcaegen2.services.sonhms.model.Payload; import org.onap.dcaegen2.services.sonhms.model.PolicyNotification; import org.onap.dcaegen2.services.sonhms.model.Ran; import org.onap.dcaegen2.services.sonhms.model.X0005b9Lte; -import java.util.ArrayList; -import java.util.List; import org.slf4j.Logger; public class ChildThreadUtils { diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/child/ClusterFormation.java b/src/main/java/org/onap/dcaegen2/services/sonhms/child/ClusterFormation.java index 9a594a1..e248a59 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/child/ClusterFormation.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/child/ClusterFormation.java @@ -21,14 +21,6 @@ package org.onap.dcaegen2.services.sonhms.child; -import org.onap.dcaegen2.services.sonhms.ConfigPolicy; -import org.onap.dcaegen2.services.sonhms.Configuration; -import org.onap.dcaegen2.services.sonhms.dao.ClusterDetailsRepository; -import org.onap.dcaegen2.services.sonhms.entity.ClusterDetails; -import org.onap.dcaegen2.services.sonhms.model.FapServiceList; -import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; -import org.onap.dcaegen2.services.sonhms.utils.ClusterUtils; - import java.sql.Timestamp; import java.util.ArrayList; import java.util.Map; @@ -36,6 +28,13 @@ import java.util.Properties; import java.util.UUID; import java.util.concurrent.BlockingQueue; +import org.onap.dcaegen2.services.sonhms.ConfigPolicy; +import org.onap.dcaegen2.services.sonhms.Configuration; +import org.onap.dcaegen2.services.sonhms.dao.ClusterDetailsRepository; +import org.onap.dcaegen2.services.sonhms.entity.ClusterDetails; +import org.onap.dcaegen2.services.sonhms.model.FapServiceList; +import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; +import org.onap.dcaegen2.services.sonhms.utils.ClusterUtils; import org.slf4j.Logger; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/child/Detection.java b/src/main/java/org/onap/dcaegen2/services/sonhms/child/Detection.java index 847e2d5..2634d9a 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/child/Detection.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/child/Detection.java @@ -21,12 +21,11 @@ package org.onap.dcaegen2.services.sonhms.child; -import org.onap.dcaegen2.services.sonhms.model.CellPciPair; - import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import org.onap.dcaegen2.services.sonhms.model.CellPciPair; import org.slf4j.Logger; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/child/Graph.java b/src/main/java/org/onap/dcaegen2/services/sonhms/child/Graph.java index eedbd94..a76d0dd 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/child/Graph.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/child/Graph.java @@ -24,8 +24,6 @@ package org.onap.dcaegen2.services.sonhms.child; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import org.onap.dcaegen2.services.sonhms.model.CellNeighbourList; -import org.onap.dcaegen2.services.sonhms.model.CellPciPair; import java.io.IOException; import java.util.ArrayList; @@ -34,12 +32,13 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.UUID; - import java.util.concurrent.ConcurrentHashMap; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import org.onap.dcaegen2.services.sonhms.model.CellNeighbourList; +import org.onap.dcaegen2.services.sonhms.model.CellPciPair; import org.slf4j.Logger; public class Graph { diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/child/PnfUtils.java b/src/main/java/org/onap/dcaegen2/services/sonhms/child/PnfUtils.java index 560fd52..30fd0b9 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/child/PnfUtils.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/child/PnfUtils.java @@ -21,6 +21,12 @@ package org.onap.dcaegen2.services.sonhms.child; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + import org.onap.dcaegen2.services.sonhms.dao.CellInfoRepository; import org.onap.dcaegen2.services.sonhms.entity.CellInfo; import org.onap.dcaegen2.services.sonhms.exceptions.ConfigDbNotFoundException; @@ -30,12 +36,6 @@ import org.onap.dcaegen2.services.sonhms.restclient.Solution; import org.onap.dcaegen2.services.sonhms.restclient.SonSolution; import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - public class PnfUtils { diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/child/StateOof.java b/src/main/java/org/onap/dcaegen2/services/sonhms/child/StateOof.java index d731725..ae40dbf 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/child/StateOof.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/child/StateOof.java @@ -21,6 +21,14 @@ package org.onap.dcaegen2.services.sonhms.child; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.BlockingQueue; + import org.onap.dcaegen2.services.sonhms.ConfigPolicy; import org.onap.dcaegen2.services.sonhms.Configuration; import org.onap.dcaegen2.services.sonhms.dao.SonRequestsRepository; @@ -33,15 +41,6 @@ import org.onap.dcaegen2.services.sonhms.restclient.AsyncResponseBody; import org.onap.dcaegen2.services.sonhms.restclient.OofRestClient; import org.onap.dcaegen2.services.sonhms.restclient.Solution; import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; -import java.util.concurrent.BlockingQueue; - import org.slf4j.Logger; public class StateOof { diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/controller/ConfigFetchFromCbs.java b/src/main/java/org/onap/dcaegen2/services/sonhms/controller/ConfigFetchFromCbs.java new file mode 100644 index 0000000..ab6d40d --- /dev/null +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/controller/ConfigFetchFromCbs.java @@ -0,0 +1,109 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * son-handler + * ================================================================================ + * Copyright (C) 2019 Wipro Limited. + * ============================================================================== + * 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.dcaegen2.services.sonhms.controller; + +import java.util.List; +import java.util.Map; + +import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.api.CbsClientFactory; +import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.model.EnvProperties; +import org.onap.dcaegen2.services.sdk.rest.services.model.logging.RequestDiagnosticContext; +import org.onap.dcaegen2.services.sonhms.Configuration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ConfigFetchFromCbs { + + private static Logger log = LoggerFactory.getLogger(ConfigFetchFromCbs.class); + + /** + * Gets app config from CBS. + */ + @SuppressWarnings("unchecked") + public void getAppConfig() { + + // Generate RequestID and InvocationID which will be used when logging and in + // HTTP requests + log.debug("getAppconfig start .."); + RequestDiagnosticContext diagnosticContext = RequestDiagnosticContext.create(); + log.debug("fiagnostic context : {}",diagnosticContext.toString()); + // Read necessary properties from the environment + final EnvProperties env = EnvProperties.fromEnvironment(); + log.debug("environments {}",env.toString()); + Configuration configuration = Configuration.getInstance(); + + // Create the client and use it to get the configuration + CbsClientFactory.createCbsClient(env).flatMap(cbsClient -> cbsClient.get(diagnosticContext)) + .subscribe(jsonObject -> { + log.debug("configuration from CBS {}", jsonObject.toString()); + final Map streamsSubscribes=(Map) jsonObject.get("streams_subscribes"); + final Map streamsPublishes=(Map) jsonObject.get("streams_publishes"); + final int pgPort = jsonObject.get("postgres.port").getAsInt(); + final int pollingInterval=jsonObject.get("sonhandler.pollingInterval").getAsInt(); + final String pgPassword = jsonObject.get("postgres.password").getAsString(); + final int numSolutions=jsonObject.get("sonhandler.numSolutions").getAsInt(); + final int minConfusion = jsonObject.get("sonhandler.minConfusion").getAsInt(); + final int maximumClusters =jsonObject.get("sonhandler.maximumClusters").getAsInt(); + final int minCollision = jsonObject.get("sonhandler.minCollision").getAsInt(); + final String sourceId = jsonObject.get("sonhandler.sourceId").getAsString(); + final String pgUsername = jsonObject.get("postgres.username").getAsString(); + final String pgHost = jsonObject.get("postgres.host").getAsString(); + final List dmaapServers = (List) jsonObject.get("sonhandler.dmaap.server"); + final String cg=jsonObject.get("sonhandler.cg").getAsString(); + final int bufferTime=jsonObject.get("sonhandler.bufferTime").getAsInt(); + final String cid =jsonObject.get("sonhandler.cid").getAsString(); + final String configDbService=jsonObject.get("sonhandler.configDb.service").getAsString(); + final String callbackUrl=jsonObject.get("sonhandler.callbackUrl").getAsString(); + final List optimizers = (List) jsonObject.get("sonhandler.optimizers"); + final String oofService=jsonObject.get("sonhandler.oof.service").getAsString(); + final int pollingTimeout=jsonObject.get("sonhandler.pollingTimeout").getAsInt(); + + configuration.setStreamsSubscribes(streamsSubscribes); + configuration.setStreamsPublishes(streamsPublishes); + configuration.setPgPassword(pgPassword); + configuration.setPgPort(pgPort); + configuration.setPollingInterval(pollingInterval); + configuration.setNumSolutions(numSolutions); + configuration.setMinCollision(minCollision); + configuration.setMinConfusion(minConfusion); + configuration.setMaximumClusters(maximumClusters); + configuration.setPgHost(pgHost); + configuration.setPgUsername(pgUsername); + configuration.setSourceId(sourceId); + configuration.setDmaapServers(dmaapServers); + configuration.setCg(cg); + configuration.setCid(cid); + configuration.setBufferTime(bufferTime); + configuration.setConfigDbService(configDbService); + configuration.setCallbackUrl(callbackUrl); + configuration.setOptimizers(optimizers); + configuration.setOofService(oofService); + configuration.setPollingTimeout(pollingTimeout); + + log.debug("configuration {}", configuration); + }, throwable -> { + log.warn("Ooops", throwable); + }); + + } + +} diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/controller/HealthCheck.java b/src/main/java/org/onap/dcaegen2/services/sonhms/controller/HealthCheck.java index d0d9321..322c113 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/controller/HealthCheck.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/controller/HealthCheck.java @@ -29,8 +29,8 @@ import org.springframework.web.bind.annotation.RestController; @RestController public class HealthCheck { - @RequestMapping(value = "/healthcheck", method = RequestMethod.GET) - ResponseEntity healthCheck() { - return new ResponseEntity(HttpStatus.OK); - } + @RequestMapping(value = "/healthcheck", method = RequestMethod.GET) + ResponseEntity healthCheck() { + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/dao/BufferedNotificationsRepository.java b/src/main/java/org/onap/dcaegen2/services/sonhms/dao/BufferedNotificationsRepository.java index 43bb1f3..470f50d 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/dao/BufferedNotificationsRepository.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/dao/BufferedNotificationsRepository.java @@ -21,10 +21,9 @@ package org.onap.dcaegen2.services.sonhms.dao; -import org.onap.dcaegen2.services.sonhms.entity.BufferedNotifications; - import java.util.List; +import org.onap.dcaegen2.services.sonhms.entity.BufferedNotifications; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/dao/CellInfoRepository.java b/src/main/java/org/onap/dcaegen2/services/sonhms/dao/CellInfoRepository.java index 80066ad..fcafca9 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/dao/CellInfoRepository.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/dao/CellInfoRepository.java @@ -22,7 +22,6 @@ package org.onap.dcaegen2.services.sonhms.dao; import org.onap.dcaegen2.services.sonhms.entity.CellInfo; - import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/dao/ClusterDetailsRepository.java b/src/main/java/org/onap/dcaegen2/services/sonhms/dao/ClusterDetailsRepository.java index babef00..9bb54af 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/dao/ClusterDetailsRepository.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/dao/ClusterDetailsRepository.java @@ -21,10 +21,9 @@ package org.onap.dcaegen2.services.sonhms.dao; -import org.onap.dcaegen2.services.sonhms.entity.ClusterDetails; - import java.util.List; +import org.onap.dcaegen2.services.sonhms.entity.ClusterDetails; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/dao/DmaapNotificationsRepository.java b/src/main/java/org/onap/dcaegen2/services/sonhms/dao/DmaapNotificationsRepository.java index 356dca6..7d41728 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/dao/DmaapNotificationsRepository.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/dao/DmaapNotificationsRepository.java @@ -22,7 +22,6 @@ package org.onap.dcaegen2.services.sonhms.dao; import org.onap.dcaegen2.services.sonhms.entity.DmaapNotifications; - import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/dao/FaultNotificationsRepository.java b/src/main/java/org/onap/dcaegen2/services/sonhms/dao/FaultNotificationsRepository.java new file mode 100644 index 0000000..31b9b98 --- /dev/null +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/dao/FaultNotificationsRepository.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * son-handler + * ================================================================================ + * Copyright (C) 2019 Wipro Limited. + * ============================================================================== + * 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.dcaegen2.services.sonhms.dao; + +import org.onap.dcaegen2.services.sonhms.entity.FaultNotifications; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + + +@Repository +public interface FaultNotificationsRepository extends CrudRepository { + + @Query(nativeQuery = true, + value = "DELETE FROM fault_notifications " + + "WHERE notification = ( SELECT notification FROM fault_notifications ORDER BY " + + "created_at FOR UPDATE SKIP LOCKED LIMIT 1 ) RETURNING notification;") + + public String getFaultNotificationFromQueue(); + +} + + + diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/dao/SonRequestsRepository.java b/src/main/java/org/onap/dcaegen2/services/sonhms/dao/SonRequestsRepository.java index b54661b..4bf9dd6 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/dao/SonRequestsRepository.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/dao/SonRequestsRepository.java @@ -22,7 +22,6 @@ package org.onap.dcaegen2.services.sonhms.dao; import org.onap.dcaegen2.services.sonhms.entity.PciRequests; - import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/DmaapClient.java b/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/DmaapClient.java index 002f835..91e7117 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/DmaapClient.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/DmaapClient.java @@ -21,25 +21,16 @@ package org.onap.dcaegen2.services.sonhms.dmaap; -import com.att.nsa.apiClient.http.HttpException; -import com.att.nsa.cambria.client.CambriaClient; -import com.att.nsa.cambria.client.CambriaClientBuilders; -import com.att.nsa.cambria.client.CambriaClientBuilders.ConsumerBuilder; -import com.att.nsa.cambria.client.CambriaClientBuilders.TopicManagerBuilder; import com.att.nsa.cambria.client.CambriaConsumer; -import com.att.nsa.cambria.client.CambriaTopicManager; + import org.onap.dcaegen2.services.sonhms.Configuration; import org.onap.dcaegen2.services.sonhms.NewNotification; -import org.onap.dcaegen2.services.sonhms.Topic; import org.onap.dcaegen2.services.sonhms.dao.DmaapNotificationsRepository; import org.onap.dcaegen2.services.sonhms.entity.DmaapNotifications; +import org.onap.dcaegen2.services.sonhms.utils.DmaapUtils; + -import java.io.IOException; -import java.net.MalformedURLException; -import java.security.GeneralSecurityException; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.Map; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -52,164 +43,82 @@ import org.springframework.stereotype.Component; @Component public class DmaapClient { - @Autowired - private DmaapNotificationsRepository dmaapNotificationsRepository; - private Configuration configuration; - private static Logger log = LoggerFactory.getLogger(DmaapClient.class); - private static final String CONSUMER = "CONSUMER"; - private static final String PRODUCER = "PRODUCER"; - private static final String DESCRIPTION = "api keys for OOF PCI use case"; - private static final int PARTITION_COUNT = 1; - private static final int REPLICATION_COUNT = 1; - private NewNotification newNotification; - private CambriaTopicManager topicManager; - - public class NotificationCallback { - DmaapClient dmaapClient; - - public NotificationCallback(DmaapClient dmaapClient) { - this.dmaapClient = dmaapClient; - } - - public void activateCallBack(String msg) { - handleNotification(msg); - } - - private void handleNotification(String msg) { - DmaapNotifications dmaapNotification = new DmaapNotifications(); - dmaapNotification.setNotification(msg); - if (log.isDebugEnabled()) { - log.debug(dmaapNotification.toString()); - } - dmaapNotificationsRepository.save(dmaapNotification); - newNotification.setNewNotif(true); - } - } - - /** - * init dmaap client. - */ - public void initClient(NewNotification newNotification) { - log.debug("initializing client"); - configuration = Configuration.getInstance(); - if (log.isDebugEnabled()) { - log.debug(configuration.toString()); - } - this.newNotification = newNotification; - - createAndConfigureTopics(); - startClient(); - } - - /** - * create and configures topics. - */ - private void createAndConfigureTopics() { - - try { - topicManager = buildCambriaClient(new TopicManagerBuilder().usingHosts(configuration.getServers()) - .authenticatedBy(configuration.getManagerApiKey(), configuration.getManagerSecretKey())); - } catch (GeneralSecurityException | IOException e) { - log.debug("exception during creating topic", e); - } - List topics = configuration.getTopics(); - - for (Topic topic : topics) { - Set topicsInDmaap = getAllTopicsFromDmaap(); - - createTopic(topic, topicsInDmaap); - subscribeToTopic(topic.getName(), topic.getProducer(), PRODUCER); - subscribeToTopic(topic.getName(), topic.getConsumer(), CONSUMER); - - } - - topicManager.close(); - - } - - /** - * create topic. - */ - private void createTopic(Topic topic, Set topicsInDmaap) { - if (topicsInDmaap.contains(topic.getName())) { - log.debug("topic exists in dmaap"); - } else { - try { - topicManager.createTopic(topic.getName(), DESCRIPTION, PARTITION_COUNT, REPLICATION_COUNT); - } catch (HttpException | IOException e) { - log.debug("error while creating topic: {}", e); - } - } - } - - /** - * get all topics from dmaap. - */ - private Set getAllTopicsFromDmaap() { - Set topics = new HashSet<>(); - try { - topics = topicManager.getTopics(); - } catch (IOException e) { - log.debug("IOException while fetching topics"); - } - return topics; - - } - - /** - * start dmaap client. - */ - private synchronized void startClient() { - - ScheduledExecutorService executorPool; - CambriaConsumer cambriaConsumer = null; - - try { - cambriaConsumer = new ConsumerBuilder() - .authenticatedBy(configuration.getPcimsApiKey(), configuration.getPcimsSecretKey()) - .knownAs(configuration.getCg(), configuration.getCid()).onTopic(configuration.getSdnrTopic()) - .usingHosts(configuration.getServers()).withSocketTimeout(configuration.getPollingTimeout() * 1000) - .build(); - - // create notification consumers for SNDR and policy - NotificationConsumer notificationConsumer = new NotificationConsumer(cambriaConsumer, - new NotificationCallback(this)); - - // start notification consumer threads - executorPool = Executors.newScheduledThreadPool(10); - executorPool.scheduleAtFixedRate(notificationConsumer, 0, configuration.getPollingInterval(), - TimeUnit.SECONDS); - } catch (MalformedURLException | GeneralSecurityException e) { - log.debug("exception during starting client", e); - } - - } - - /** - * subscribe to topic. - */ - private void subscribeToTopic(String topicName, String subscriberApiKey, String subscriberType) { - if (subscriberType.equals(PRODUCER)) { - try { - topicManager.allowProducer(topicName, subscriberApiKey); - } catch (HttpException | IOException e) { - log.debug("error while subscribing to a topic: {}", e); - } - } else if (subscriberType.equals(CONSUMER)) { - try { - topicManager.allowConsumer(topicName, subscriberApiKey); - } catch (HttpException | IOException e) { - log.debug("error while subscribing to a topic: {}", e); - } - } - - } - - @SuppressWarnings("unchecked") - private static T buildCambriaClient( - CambriaClientBuilders.AbstractAuthenticatedManagerBuilder client) - throws MalformedURLException, GeneralSecurityException { - return (T) client.build(); - } - + @Autowired + private DmaapNotificationsRepository dmaapNotificationsRepository; + private Configuration configuration; + private static Logger log = LoggerFactory.getLogger(DmaapClient.class); + + @Autowired + private NewNotification newNotification; + private DmaapUtils dmaapUtils; + + public class NotificationCallback { + DmaapClient dmaapClient; + + public NotificationCallback(DmaapClient dmaapClient) { + this.dmaapClient = dmaapClient; + } + + public void activateCallBack(String msg) { + handleNotification(msg); + } + + private void handleNotification(String msg) { + DmaapNotifications dmaapNotification = new DmaapNotifications(); + dmaapNotification.setNotification(msg); + if (log.isDebugEnabled()) { + log.debug(dmaapNotification.toString()); + } + dmaapNotificationsRepository.save(dmaapNotification); + newNotification.setNewNotif(true); + } + } + + /** + * init dmaap client. + */ + public void initClient() { + log.debug("initializing client"); + configuration = Configuration.getInstance(); + if (log.isDebugEnabled()) { + log.debug(configuration.toString()); + } + + startClient(); + } + + + /** + * start dmaap client. + */ + @SuppressWarnings("unchecked") + private synchronized void startClient() { + + Map streamSubscribes= Configuration.getInstance().getStreamsSubscribes(); + String sdnrTopicUrl =((Map)((Map)streamSubscribes.get("nbr_list_change_topic")).get("dmaap_info")).get("topic_url"); + String[] sdnrTopicSplit=sdnrTopicUrl.split("\\/"); + String sdnrTopic=sdnrTopicSplit[sdnrTopicSplit.length-1]; + ScheduledExecutorService executorPool; + CambriaConsumer cambriaConsumer = null; + + cambriaConsumer = dmaapUtils.buildConsumer(configuration, sdnrTopic ); + /* + * cambriaConsumer = new ConsumerBuilder() + * .authenticatedBy(configuration.getPcimsApiKey(), + * configuration.getPcimsSecretKey()) .knownAs(configuration.getCg(), + * configuration.getCid()).onTopic(configuration.getSdnrTopic()) + * .usingHosts(configuration.getServers()).withSocketTimeout(configuration. + * getPollingTimeout() * 1000) .build(); + */ + + // create notification consumers for SNDR and policy + NotificationConsumer notificationConsumer = new NotificationConsumer(cambriaConsumer, + new NotificationCallback(this)); + + // start notification consumer threads + executorPool = Executors.newScheduledThreadPool(10); + executorPool.scheduleAtFixedRate(notificationConsumer, 0, configuration.getPollingInterval(), TimeUnit.SECONDS); + + } + } diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/NotificationConsumer.java b/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/NotificationConsumer.java index ba6b83d..78294a3 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/NotificationConsumer.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/NotificationConsumer.java @@ -22,10 +22,10 @@ package org.onap.dcaegen2.services.sonhms.dmaap; import com.att.nsa.cambria.client.CambriaConsumer; -import org.onap.dcaegen2.services.sonhms.dmaap.DmaapClient.NotificationCallback; import java.io.IOException; +import org.onap.dcaegen2.services.sonhms.dmaap.DmaapClient.NotificationCallback; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/NotificationProducer.java b/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/NotificationProducer.java index e1db372..7ecb1d9 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/NotificationProducer.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/NotificationProducer.java @@ -22,8 +22,8 @@ package org.onap.dcaegen2.services.sonhms.dmaap; import com.att.nsa.cambria.client.CambriaBatchingPublisher; + import java.io.IOException; -import java.security.GeneralSecurityException; public class NotificationProducer { @@ -31,7 +31,7 @@ public class NotificationProducer { /** - * Parameterised constructor. + * Parameterized constructor. */ public NotificationProducer(CambriaBatchingPublisher cambriaBatchingPublisher) { super(); @@ -41,11 +41,9 @@ public class NotificationProducer { /** * sends notification to dmaap. */ - public int sendNotification(String msg) throws GeneralSecurityException, IOException { + public int sendNotification(String msg) throws IOException { - int result = cambriaBatchingPublisher.send("", msg); - System.out.println(result); - return result; + return cambriaBatchingPublisher.send("", msg); } diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyDmaapClient.java b/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyDmaapClient.java index 4d5d23b..68cb788 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyDmaapClient.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyDmaapClient.java @@ -22,31 +22,37 @@ package org.onap.dcaegen2.services.sonhms.dmaap; import com.att.nsa.cambria.client.CambriaBatchingPublisher; -import com.att.nsa.cambria.client.CambriaClientBuilders.PublisherBuilder; import org.onap.dcaegen2.services.sonhms.Configuration; +import org.onap.dcaegen2.services.sonhms.utils.DmaapUtils; import java.io.IOException; -import java.security.GeneralSecurityException; +import java.util.Map; public class PolicyDmaapClient { + DmaapUtils dmaapUtils = new DmaapUtils(); - /** - * Method stub for sending notification to policy. - */ - public boolean sendNotificationToPolicy(String msg) { - - Configuration configuration = Configuration.getInstance(); - CambriaBatchingPublisher cambriaBatchingPublisher; - try { - cambriaBatchingPublisher = new PublisherBuilder().usingHosts(configuration.getServers()) - .onTopic(configuration.getPolicyTopic()) - .authenticatedBy(configuration.getPcimsApiKey(), configuration.getPcimsSecretKey()).build(); - NotificationProducer notificationProducer = new NotificationProducer(cambriaBatchingPublisher); - notificationProducer.sendNotification(msg); - } catch (GeneralSecurityException | IOException e) { - return false; - } - return true; - } + /** + * Method stub for sending notification to policy. + */ + @SuppressWarnings("unchecked") + public boolean sendNotificationToPolicy(String msg) { + + Map streamSubscribes= Configuration.getInstance().getStreamsPublishes(); + String policyTopicUrl =((Map)((Map)streamSubscribes.get("CL_topic")).get("dmaap_info")).get("topic_url"); + String[] policyTopicSplit=policyTopicUrl.split("\\/"); + String policyTopic=policyTopicSplit[policyTopicSplit.length-1]; + Configuration configuration = Configuration.getInstance(); + CambriaBatchingPublisher cambriaBatchingPublisher; + try { + + cambriaBatchingPublisher = dmaapUtils.buildPublisher(configuration, policyTopic); + + NotificationProducer notificationProducer = new NotificationProducer(cambriaBatchingPublisher); + notificationProducer.sendNotification(msg); + } catch (IOException e) { + return false; + } + return true; + } } diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/entity/FaultNotifications.java b/src/main/java/org/onap/dcaegen2/services/sonhms/entity/FaultNotifications.java new file mode 100644 index 0000000..f1d4c5d --- /dev/null +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/entity/FaultNotifications.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * son-handler + * ================================================================================ + * Copyright (C) 2019 Wipro Limited. + * ============================================================================== + * 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.dcaegen2.services.sonhms.entity; + +import java.sql.Timestamp; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.hibernate.annotations.CreationTimestamp; + +@Entity +@Table(name = "FAULT_NOTIFICATIONS") +public class FaultNotifications { + + @Id + @Column(name = "notification", columnDefinition = "text") + private String notification; + + @CreationTimestamp + @Column(name = "created_at", columnDefinition = "timestamp") + private Timestamp createdAt; + + public FaultNotifications() { + } + + public FaultNotifications(String notification, Timestamp createdAt) { + this.notification = notification; + this.createdAt = createdAt; + } + + public String getNotification() { + return notification; + } + + public void setNotification(String notification) { + this.notification = notification; + } + + public Timestamp getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Timestamp createdAt) { + this.createdAt = createdAt; + } + +} diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/model/NeighborListInUse.java b/src/main/java/org/onap/dcaegen2/services/sonhms/model/NeighborListInUse.java index 50df1d8..b88cb5a 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/model/NeighborListInUse.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/model/NeighborListInUse.java @@ -22,6 +22,7 @@ package org.onap.dcaegen2.services.sonhms.model; import com.fasterxml.jackson.annotation.JsonProperty; + import java.util.List; public class NeighborListInUse { diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/model/Payload.java b/src/main/java/org/onap/dcaegen2/services/sonhms/model/Payload.java index dd10a1f..8883992 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/model/Payload.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/model/Payload.java @@ -22,6 +22,7 @@ package org.onap.dcaegen2.services.sonhms.model; import com.fasterxml.jackson.annotation.JsonProperty; + import java.util.List; public class Payload { diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/model/PolicyNotification.java b/src/main/java/org/onap/dcaegen2/services/sonhms/model/PolicyNotification.java index 076c7b5..35480cf 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/model/PolicyNotification.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/model/PolicyNotification.java @@ -203,4 +203,14 @@ public class PolicyNotification { return result; } + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + return (this.hashCode() == obj.hashCode()); + } + + + } diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/model/RadioAccess.java b/src/main/java/org/onap/dcaegen2/services/sonhms/model/RadioAccess.java index 775c14d..21e5c43 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/model/RadioAccess.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/model/RadioAccess.java @@ -22,6 +22,7 @@ package org.onap.dcaegen2.services.sonhms.model; import com.fasterxml.jackson.annotation.JsonProperty; + import java.util.List; public class RadioAccess { diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/restclient/OofRestClient.java b/src/main/java/org/onap/dcaegen2/services/sonhms/restclient/OofRestClient.java index a9ce305..083341b 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/restclient/OofRestClient.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/restclient/OofRestClient.java @@ -23,13 +23,14 @@ package org.onap.dcaegen2.services.sonhms.restclient; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; + +import java.util.List; +import java.util.UUID; + import org.onap.dcaegen2.services.sonhms.ConfigPolicy; import org.onap.dcaegen2.services.sonhms.Configuration; import org.onap.dcaegen2.services.sonhms.exceptions.OofNotFoundException; import org.onap.dcaegen2.services.sonhms.utils.SonHandlerRestTemplate; - -import java.util.List; -import java.util.UUID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.ParameterizedTypeReference; @@ -44,61 +45,64 @@ public class OofRestClient { /** * rest client that pci uses to query the OOF for pci solutions. - * @throws OofNotFoundException when request to oof fails + * + * @throws OofNotFoundException + * when request to oof fails */ - public static String queryOof(int numSolutions, String transactionId, String requestType, - List cellIdList, String networkId, List optimizers) throws OofNotFoundException { + public static String queryOof(int numSolutions, String transactionId, String requestType, List cellIdList, + String networkId, List optimizers) throws OofNotFoundException { log.debug("inside queryoof"); - ResponseEntity response = null; Configuration configuration = Configuration.getInstance(); + UUID requestUuid = UUID.randomUUID(); + String requestId = requestUuid.toString(); + String callbackUrl = configuration.getCallbackUrl(); + RequestInfo requestInfo = new RequestInfo(); + requestInfo.setTransactionId(transactionId); + requestInfo.setRequestId(requestId); + requestInfo.setCallbackUrl(callbackUrl); + String sourceId = configuration.getSourceId(); + requestInfo.setSourceId(sourceId); + requestInfo.setRequestType(requestType); + requestInfo.setNumSolutions(numSolutions); + requestInfo.setOptimizers(optimizers); + ConfigPolicy config = ConfigPolicy.getInstance(); + int timeout = 60; try { - UUID requestUuid = UUID.randomUUID(); - String requestId = requestUuid.toString(); - String callbackUrl = configuration.getCallbackUrl(); - RequestInfo requestInfo = new RequestInfo(); - requestInfo.setTransactionId(transactionId); - requestInfo.setRequestId(requestId); - requestInfo.setCallbackUrl(callbackUrl); - String sourceId = configuration.getSourceId(); - requestInfo.setSourceId(sourceId); - requestInfo.setRequestType(requestType); - requestInfo.setNumSolutions(numSolutions); - requestInfo.setOptimizers(optimizers); - ConfigPolicy config = ConfigPolicy.getInstance(); - int timeout = 60; - try { - timeout = (int) config.getConfig().get("PCI_NEIGHBOR_CHANGE_CLUSTER_TIMEOUT_IN_SECS"); - } catch (NullPointerException e) { - log.debug("No config policy available. Using default timeout 60 sec"); - } - requestInfo.setTimeout(timeout); - CellInfo cellInfo = new CellInfo(); - cellInfo.setCellIdList(cellIdList); - cellInfo.setNetworkId(networkId); - OofRequestBody oofRequestBody = new OofRequestBody(); - oofRequestBody.setRequestInfo(requestInfo); - oofRequestBody.setCellInfo(cellInfo); - - ObjectMapper mapper = new ObjectMapper(); - String requestBody = mapper.writeValueAsString(oofRequestBody); - log.debug("requestBody{}", requestBody); - - String requestUrl = configuration.getOofService() + "/api/oof/v1/pci"; - log.debug("requestUrl {}", requestUrl); - - response = SonHandlerRestTemplate.sendPostRequestToOof(requestUrl, requestBody,new ParameterizedTypeReference() {}); - if (response == null) { - throw new OofNotFoundException("Request to oof failed"); - } - log.debug("response {}", response); + timeout = (int) config.getConfig().get("PCI_NEIGHBOR_CHANGE_CLUSTER_TIMEOUT_IN_SECS"); + } catch (NullPointerException e) { + log.debug("No config policy available. Using default timeout 60 sec"); + } + requestInfo.setTimeout(timeout); + CellInfo cellInfo = new CellInfo(); + cellInfo.setCellIdList(cellIdList); + cellInfo.setNetworkId(networkId); + OofRequestBody oofRequestBody = new OofRequestBody(); + oofRequestBody.setRequestInfo(requestInfo); + oofRequestBody.setCellInfo(cellInfo); - return response.getBody(); + ObjectMapper mapper = new ObjectMapper(); + String requestBody = ""; + try { + requestBody = mapper.writeValueAsString(oofRequestBody); } catch (JsonProcessingException e) { - log.debug("exception{}", e); + log.error("Exception when forming JSON String {}", e); + + } + log.debug("requestBody{}", requestBody); + String requestUrl = configuration.getOofService() + "/api/oof/v1/pci"; + log.debug("requestUrl {}", requestUrl); + ResponseEntity response = null; + response = SonHandlerRestTemplate.sendPostRequestToOof(requestUrl, requestBody, + new ParameterizedTypeReference() { + }); + if (response == null) { + throw new OofNotFoundException("Request to oof failed"); } + log.debug("response {}", response); + return response.getBody(); } } diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/restclient/PolicyRestClient.java b/src/main/java/org/onap/dcaegen2/services/sonhms/restclient/PolicyRestClient.java deleted file mode 100644 index 7334df2..0000000 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/restclient/PolicyRestClient.java +++ /dev/null @@ -1,77 +0,0 @@ -/******************************************************************************* - * ============LICENSE_START======================================================= - * son-handler - * ================================================================================ - * Copyright (C) 2019 Wipro Limited. - * ============================================================================== - * 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.dcaegen2.services.sonhms.restclient; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.onap.dcaegen2.services.sonhms.Configuration; -import org.onap.dcaegen2.services.sonhms.utils.SonHandlerRestTemplate; - -import java.util.UUID; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.core.ParameterizedTypeReference; -import org.springframework.http.ResponseEntity; - -public class PolicyRestClient { - private static Logger log = LoggerFactory.getLogger(PolicyRestClient.class); - - private PolicyRestClient() { - - } - - /** - * Fetches configuration from policy. - */ - public static String fetchConfigFromPolicy() { - log.debug("inside fetconfig from policy"); - - Configuration configuration = Configuration.getInstance(); - ResponseEntity response = null; - String configName = configuration.getConfigName(); - String policyName = configuration.getPolicyName(); - - try { - PolicyRequestBody policyRequestBody = new PolicyRequestBody(); - policyRequestBody.setConfigName(configName); - policyRequestBody.setPolicyName(policyName); - UUID requestUuid = UUID.randomUUID(); - String requestId = requestUuid.toString(); - policyRequestBody.setRequestId(requestId); - ObjectMapper mapper = new ObjectMapper(); - String requestBody; - requestBody = mapper.writeValueAsString(policyRequestBody); - - log.debug("policyRequestBody{}", requestBody); - String requestUrl = configuration.getPolicyService() + "/pdp/api/getConfig"; - response = SonHandlerRestTemplate.sendPostToPolicy(requestUrl, requestBody,new ParameterizedTypeReference() {}); - log.debug("policy response{}", response); - - return response.getBody(); - } catch (JsonProcessingException e) { - log.debug("exception", e); - } - return response.getBody(); - - } - -} diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/restclient/SdnrRestClient.java b/src/main/java/org/onap/dcaegen2/services/sonhms/restclient/SdnrRestClient.java index 0894146..996e553 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/restclient/SdnrRestClient.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/restclient/SdnrRestClient.java @@ -21,11 +21,6 @@ package org.onap.dcaegen2.services.sonhms.restclient; -import org.onap.dcaegen2.services.sonhms.Configuration; -import org.onap.dcaegen2.services.sonhms.exceptions.ConfigDbNotFoundException; -import org.onap.dcaegen2.services.sonhms.model.CellPciPair; -import org.onap.dcaegen2.services.sonhms.utils.SonHandlerRestTemplate; - import java.sql.Time; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -33,6 +28,10 @@ import java.util.List; import org.json.JSONArray; import org.json.JSONObject; +import org.onap.dcaegen2.services.sonhms.Configuration; +import org.onap.dcaegen2.services.sonhms.exceptions.ConfigDbNotFoundException; +import org.onap.dcaegen2.services.sonhms.model.CellPciPair; +import org.onap.dcaegen2.services.sonhms.utils.SonHandlerRestTemplate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.ParameterizedTypeReference; @@ -58,7 +57,7 @@ public class SdnrRestClient { public static String getCellList(String networkId) throws ConfigDbNotFoundException { Configuration configuration = Configuration.getInstance(); String ts = new SimpleDateFormat(DATETIMEFORMAT).format(new Time(System.currentTimeMillis())); - String requestUrl = configuration.getSdnrService() + "/SDNCConfigDBAPI/getCellList" + "/" + networkId + "/" + String requestUrl = configuration.getConfigDbService() + "/SDNCConfigDBAPI/getCellList" + "/" + networkId + "/" + encode(ts); return sendRequest(requestUrl); } @@ -72,7 +71,7 @@ public class SdnrRestClient { public static List getNbrList(String cellId) throws ConfigDbNotFoundException { Configuration configuration = Configuration.getInstance(); String ts = new SimpleDateFormat(DATETIMEFORMAT).format(new Time(System.currentTimeMillis())); - String requestUrl = configuration.getSdnrService() + "/SDNCConfigDBAPI/getNbrList" + "/" + cellId + "/" + String requestUrl = configuration.getConfigDbService() + "/SDNCConfigDBAPI/getNbrList" + "/" + cellId + "/" + encode(ts); log.debug("request url: {}", requestUrl); String response = sendRequest(requestUrl); @@ -96,7 +95,7 @@ public class SdnrRestClient { public static int getPci(String cellId) throws ConfigDbNotFoundException { Configuration configuration = Configuration.getInstance(); String ts = new SimpleDateFormat(DATETIMEFORMAT).format(new Time(System.currentTimeMillis())); - String requestUrl = configuration.getSdnrService() + "/SDNCConfigDBAPI/getPCI" + "/" + cellId + "/" + String requestUrl = configuration.getConfigDbService() + "/SDNCConfigDBAPI/getPCI" + "/" + cellId + "/" + encode(ts); String response = sendRequest(requestUrl); JSONObject respObj = new JSONObject(response); @@ -112,7 +111,7 @@ public class SdnrRestClient { public static String getPnfName(String cellId) throws ConfigDbNotFoundException { Configuration configuration = Configuration.getInstance(); String ts = new SimpleDateFormat(DATETIMEFORMAT).format(new Time(System.currentTimeMillis())); - String requestUrl = configuration.getSdnrService() + "/SDNCConfigDBAPI/getPnfName" + "/" + cellId + "/" + String requestUrl = configuration.getConfigDbService() + "/SDNCConfigDBAPI/getPnfName" + "/" + cellId + "/" + encode(ts); String response = sendRequest(requestUrl); JSONObject responseObject = new JSONObject(response); @@ -132,7 +131,7 @@ public class SdnrRestClient { private static String sendRequest(String url) throws ConfigDbNotFoundException { ResponseEntity response = SonHandlerRestTemplate.sendGetRequest(url, new ParameterizedTypeReference() {}); - if (response.equals(null)) { + if (response == null) { throw new ConfigDbNotFoundException("Cannot reach Config DB"); } return response.getBody(); diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/utils/AppConfig.java b/src/main/java/org/onap/dcaegen2/services/sonhms/utils/AppConfig.java index a30288a..b5c63e8 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/utils/AppConfig.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/utils/AppConfig.java @@ -39,6 +39,7 @@ import org.springframework.web.client.RestTemplate; public class AppConfig { + /** * Rest Template bean. */ @@ -60,7 +61,7 @@ public class AppConfig { private static ByteArrayHttpMessageConverter generateByteArrayHttpMessageConverter() { ByteArrayHttpMessageConverter byteArrayHttpMessageConverter = new ByteArrayHttpMessageConverter(); - List supportedApplicationTypes = new ArrayList(); + List supportedApplicationTypes = new ArrayList<>(); supportedApplicationTypes.add(new MediaType("application", "pdf")); byteArrayHttpMessageConverter.setSupportedMediaTypes(supportedApplicationTypes); return byteArrayHttpMessageConverter; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/utils/BeanUtil.java b/src/main/java/org/onap/dcaegen2/services/sonhms/utils/BeanUtil.java index 63a738c..b7e3123 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/utils/BeanUtil.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/utils/BeanUtil.java @@ -21,7 +21,6 @@ package org.onap.dcaegen2.services.sonhms.utils; -import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Service; @@ -31,7 +30,7 @@ public class BeanUtil implements ApplicationContextAware { private static ApplicationContext context; @Override - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + public void setApplicationContext(ApplicationContext applicationContext) { context = applicationContext; } diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/utils/ClusterUtils.java b/src/main/java/org/onap/dcaegen2/services/sonhms/utils/ClusterUtils.java index 79d0c61..5b4ca55 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/utils/ClusterUtils.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/utils/ClusterUtils.java @@ -21,6 +21,16 @@ package org.onap.dcaegen2.services.sonhms.utils; +import fj.data.Either; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; + import org.onap.dcaegen2.services.sonhms.ClusterDetailsComponent; import org.onap.dcaegen2.services.sonhms.NotificationToClusterMapping; import org.onap.dcaegen2.services.sonhms.child.Graph; @@ -32,17 +42,6 @@ import org.onap.dcaegen2.services.sonhms.model.FapServiceList; import org.onap.dcaegen2.services.sonhms.model.LteNeighborListInUseLteCell; import org.onap.dcaegen2.services.sonhms.model.Notification; import org.onap.dcaegen2.services.sonhms.restclient.SdnrRestClient; - -import fj.data.Either; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/utils/DmaapUtils.java b/src/main/java/org/onap/dcaegen2/services/sonhms/utils/DmaapUtils.java new file mode 100644 index 0000000..ad6c385 --- /dev/null +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/utils/DmaapUtils.java @@ -0,0 +1,133 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * son-handler + * ================================================================================ + * Copyright (C) 2019 Wipro Limited. + * ============================================================================== + * 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.dcaegen2.services.sonhms.utils; + +import java.net.MalformedURLException; +import java.security.GeneralSecurityException; + +import org.onap.dcaegen2.services.sonhms.Configuration; + +import com.att.nsa.cambria.client.CambriaBatchingPublisher; +import com.att.nsa.cambria.client.CambriaClient; +import com.att.nsa.cambria.client.CambriaClientBuilders; +import com.att.nsa.cambria.client.CambriaClientBuilders.ConsumerBuilder; +import com.att.nsa.cambria.client.CambriaClientBuilders.PublisherBuilder; +import com.att.nsa.cambria.client.CambriaClientBuilders.TopicManagerBuilder; +import com.att.nsa.cambria.client.CambriaConsumer; +import com.att.nsa.cambria.client.CambriaTopicManager; + +public class DmaapUtils { + + public CambriaBatchingPublisher buildPublisher(Configuration config, String topic) { + try { + return builder(config, topic).build(); + } catch (MalformedURLException | GeneralSecurityException e) { + // TODO Auto-generated catch block + return null; + + } + } + + public CambriaConsumer buildConsumer(Configuration config, String topic) { + + try { + return builderConsumer(config, topic).build(); + } catch (MalformedURLException | GeneralSecurityException e) { + // TODO Auto-generated catch block + return null; + } + + } + + private static PublisherBuilder builder(Configuration config, String topic) { + if (config.isSecured()) { + return authenticatedBuilder(config, topic); + } else { + return unAuthenticatedBuilder(config, topic); + } + } + + private static PublisherBuilder authenticatedBuilder(Configuration config, String topic) { + return unAuthenticatedBuilder(config, topic).usingHttps().authenticatedByHttp(config.getAafUsername(), + config.getAafPassword()); + } + + private static PublisherBuilder unAuthenticatedBuilder(Configuration config, String topic) { + return new CambriaClientBuilders.PublisherBuilder().usingHosts(config.getDmaapServers()).onTopic(topic) + .logSendFailuresAfter(5); + } + + private static ConsumerBuilder builderConsumer(Configuration config, String topic) { + if (config.isSecured()) { + return authenticatedConsumerBuilder(config, topic); + } else { + return unAuthenticatedConsumerBuilder(config, topic); + } + } + + private static ConsumerBuilder unAuthenticatedConsumerBuilder(Configuration config, String topic) { + // TODO Auto-generated method stub + return new CambriaClientBuilders.ConsumerBuilder().usingHosts(config.getDmaapServers()).onTopic(topic) + .knownAs(config.getCg(), config.getCid()).withSocketTimeout(config.getPollingTimeout() * 1000); + } + + private static ConsumerBuilder authenticatedConsumerBuilder(Configuration config, String topic) { + return unAuthenticatedConsumerBuilder(config, topic).usingHttps().authenticatedByHttp(config.getAafUsername(), + config.getAafPassword()); + } + + public CambriaTopicManager cambriaCLientBuilder(Configuration configuration) { + if(configuration.isSecured()) { + return authenticatedCambriaCLientBuilder(configuration); + } + else + { + return unAuthenticatedCambriaCLientBuilder(configuration); + + } + } + + private static CambriaTopicManager authenticatedCambriaCLientBuilder(Configuration config) { + try { + return buildCambriaClient(new TopicManagerBuilder().usingHosts(config.getDmaapServers()) + .authenticatedByHttp(config.getAafUsername(), config.getAafPassword())); + } catch (MalformedURLException | GeneralSecurityException e) { + return null; + } + } + + private static CambriaTopicManager unAuthenticatedCambriaCLientBuilder(Configuration config) { + try { + return buildCambriaClient(new TopicManagerBuilder().usingHosts(config.getDmaapServers())); + } catch (MalformedURLException | GeneralSecurityException e) { + return null; + + } + } + @SuppressWarnings("unchecked") + private static T buildCambriaClient( + CambriaClientBuilders.AbstractAuthenticatedManagerBuilder client) + throws MalformedURLException, GeneralSecurityException { + return (T) client.build(); + } + +} diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/utils/SonHandlerRestTemplate.java b/src/main/java/org/onap/dcaegen2/services/sonhms/utils/SonHandlerRestTemplate.java index 7745117..2fe478e 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/utils/SonHandlerRestTemplate.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/utils/SonHandlerRestTemplate.java @@ -121,25 +121,6 @@ public class SonHandlerRestTemplate { } } - /** - * Send Post Request1. - */ - - public static ResponseEntity sendPostRequest1(String requestUrl, String requestBody, - ParameterizedTypeReference responseType) { - HttpHeaders headers = new HttpHeaders(); - headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); - headers.setContentType(MediaType.APPLICATION_JSON); - headers.add(AUTH, "Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA=="); - HttpEntity requestEntity = new HttpEntity<>(requestBody, headers); - try { - return restTemplate.exchange(requestUrl, HttpMethod.POST, requestEntity, responseType); - } catch (Exception e) { - log.debug(EXCEPTION_MSG, e.getMessage()); - return new ResponseEntity<>(HttpStatus.NOT_FOUND); - } - } - /** * Send Post Request to oof. */ diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/utils/ThreadUtils.java b/src/main/java/org/onap/dcaegen2/services/sonhms/utils/ThreadUtils.java index 07e7219..78722ba 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/utils/ThreadUtils.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/utils/ThreadUtils.java @@ -20,18 +20,17 @@ package org.onap.dcaegen2.services.sonhms.utils; -import org.onap.dcaegen2.services.sonhms.EventHandler; -import org.onap.dcaegen2.services.sonhms.child.ChildThread; -import org.onap.dcaegen2.services.sonhms.child.Graph; -import org.onap.dcaegen2.services.sonhms.model.FapServiceList; -import org.onap.dcaegen2.services.sonhms.model.ThreadId; - import java.util.List; import java.util.UUID; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingQueue; +import org.onap.dcaegen2.services.sonhms.EventHandler; +import org.onap.dcaegen2.services.sonhms.child.ChildThread; +import org.onap.dcaegen2.services.sonhms.child.Graph; +import org.onap.dcaegen2.services.sonhms.model.FapServiceList; +import org.onap.dcaegen2.services.sonhms.model.ThreadId; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 5905adf..c8bf90c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -19,11 +19,14 @@ # ############################################################################### -spring.datasource.url= jdbc:postgresql://pcims-db:5432/sonh_ms -spring.datasource.username=postgres +spring.datasource.initialization-mode=always -spring.datasource.password=password +spring.datasource.initialize=true + +spring.datasource.schema=classpath:/schema.sql + +spring.datasource.continue-on-error=true spring.jpa.hibernate.ddl-auto=validate diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 160ff9c..b7baa6f 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -28,7 +28,7 @@ - /var/log/onap/pci-handler/${logFileName}.log + /var/log/onap/son-handler/${logFileName}.log ${logFileName}.%i.log.zip 1 diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql new file mode 100644 index 0000000..88b64d5 --- /dev/null +++ b/src/main/resources/schema.sql @@ -0,0 +1,27 @@ +CREATE TABLE DMAAP_NOTIFICATIONS( + notification TEXT PRIMARY KEY NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); +CREATE TABLE BUFFERED_NOTIFICATIONS( + notification TEXT PRIMARY KEY NOT NULL, + cluster_id TEXT NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); +CREATE TABLE CLUSTER_DETAILS( + cluster_id TEXT PRIMARY KEY NOT NULL, + cluster_info TEXT NOT NULL, + child_thread_id BIGINT UNIQUE NOT NULL +); +CREATE TABLE CELL_INFO( + cell_id TEXT PRIMARY KEY NOT NULL, + pnf_name TEXT NOT NULL +); +CREATE TABLE PCI_REQUESTS( + transaction_id TEXT PRIMARY KEY, + child_thread_id BIGINT UNIQUE NOT NULL +); +CREATE TABLE FAULT_NOTIFICATIONS( + notification TEXT PRIMARY KEY NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/ApplicationTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/ApplicationTest.java deleted file mode 100644 index 1b3453a..0000000 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/ApplicationTest.java +++ /dev/null @@ -1,25 +0,0 @@ -/******************************************************************************* - * ============LICENSE_START======================================================= - * son-handler - * ================================================================================ - * Copyright (C) 2019 Wipro Limited. - * ============================================================================== - * 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.dcaegen2.services.sonhms; - -public class ApplicationTest { - -} diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/BufferNotificationComponentTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/BufferNotificationComponentTest.java index 19fe536..d2480d2 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/BufferNotificationComponentTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/BufferNotificationComponentTest.java @@ -26,6 +26,7 @@ import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.List; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/ClusterDetailsComponentTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/ClusterDetailsComponentTest.java index 22d0ccf..18bde74 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/ClusterDetailsComponentTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/ClusterDetailsComponentTest.java @@ -26,6 +26,7 @@ import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.List; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/ConfigPolicyTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/ConfigPolicyTest.java index ca12095..6fe1ffc 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/ConfigPolicyTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/ConfigPolicyTest.java @@ -27,7 +27,6 @@ import java.util.HashMap; import java.util.Map; import org.junit.Test; -import org.onap.dcaegen2.services.sonhms.ConfigPolicy; public class ConfigPolicyTest { diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/ConfigurationTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/ConfigurationTest.java index 02a4f07..851920d 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/ConfigurationTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/ConfigurationTest.java @@ -27,7 +27,6 @@ import java.util.ArrayList; import java.util.List; import org.junit.Test; -import org.onap.dcaegen2.services.sonhms.Configuration; public class ConfigurationTest { @@ -37,53 +36,39 @@ public class ConfigurationTest { public void configurationTest() { configuration.setBufferTime(60); configuration.setCallbackUrl("/callbackUrl"); - configuration.setConfigName("configName"); List list = new ArrayList(); list.add("server"); - configuration.setServers(list); + configuration.setDmaapServers(list); configuration.setCg("cg"); configuration.setCid("cid"); - configuration.setManagerApiKey("managerApiKey"); - configuration.setManagerSecretKey("managerSecretKey"); + configuration.setMaximumClusters(5); configuration.setMinCollision(5); configuration.setMinConfusion(5); configuration.setNumSolutions(1); configuration.setOofService("oofService"); configuration.setOptimizers(list); - configuration.setPcimsApiKey("pcimsApiKey"); - configuration.setPcimsSecretKey("pcimsSecretKey"); - configuration.setPolicyName("policyName"); - configuration.setPolicyService("policyService"); - configuration.setPolicyTopic("policyTopic"); configuration.setPollingInterval(30); configuration.setPollingTimeout(100); - configuration.setSdnrService("sdnrService"); - configuration.setSdnrTopic("sdnrTopic"); + configuration.setConfigDbService("sdnrService"); configuration.setSourceId("sourceId"); assertEquals(60, configuration.getBufferTime()); assertEquals("/callbackUrl", configuration.getCallbackUrl()); assertEquals("cg", configuration.getCg()); assertEquals("cid", configuration.getCid()); - assertEquals("managerApiKey", configuration.getManagerApiKey()); - assertEquals("managerSecretKey", configuration.getManagerSecretKey()); + assertEquals(5, configuration.getMaximumClusters()); assertEquals(5, configuration.getMinCollision()); assertEquals(5, configuration.getMinConfusion()); assertEquals(1, configuration.getNumSolutions()); assertEquals("oofService", configuration.getOofService()); assertEquals(list, configuration.getOptimizers()); - assertEquals("pcimsApiKey", configuration.getPcimsApiKey()); - assertEquals("pcimsSecretKey", configuration.getPcimsSecretKey()); - assertEquals("policyName", configuration.getPolicyName()); - assertEquals("policyService", configuration.getPolicyService()); - assertEquals("policyTopic", configuration.getPolicyTopic()); + assertEquals(30, configuration.getPollingInterval()); assertEquals(100, configuration.getPollingTimeout()); - assertEquals("sdnrService", configuration.getSdnrService()); - assertEquals("sdnrTopic", configuration.getSdnrTopic()); - assertEquals(list, configuration.getServers()); + assertEquals("sdnrService", configuration.getConfigDbService()); + assertEquals(list, configuration.getDmaapServers()); assertEquals("sourceId", configuration.getSourceId()); } } diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponentTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponentTest.java index cc4d3ad..bf5ef97 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponentTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponentTest.java @@ -30,6 +30,7 @@ import fj.data.Either; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; + import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/EventHandlerTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/EventHandlerTest.java index a79e368..5032799 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/EventHandlerTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/EventHandlerTest.java @@ -20,6 +20,10 @@ package org.onap.dcaegen2.services.sonhms; +import com.fasterxml.jackson.databind.ObjectMapper; + +import fj.data.Either; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -29,6 +33,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutorService; + import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -37,8 +42,6 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; -import org.springframework.boot.test.context.SpringBootTest; -import com.fasterxml.jackson.databind.ObjectMapper; import org.onap.dcaegen2.services.sonhms.child.Graph; import org.onap.dcaegen2.services.sonhms.entity.ClusterDetails; import org.onap.dcaegen2.services.sonhms.exceptions.ConfigDbNotFoundException; @@ -47,8 +50,7 @@ import org.onap.dcaegen2.services.sonhms.model.Notification; import org.onap.dcaegen2.services.sonhms.utils.ClusterUtils; import org.onap.dcaegen2.services.sonhms.utils.ClusterUtilsTest; import org.onap.dcaegen2.services.sonhms.utils.ThreadUtils; - -import fj.data.Either; +import org.springframework.boot.test.context.SpringBootTest; @RunWith(MockitoJUnitRunner.class) @SpringBootTest(classes = EventHandler.class) diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/MainThreadTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/MainThreadTest.java deleted file mode 100644 index d06abbf..0000000 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/MainThreadTest.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * ============LICENSE_START======================================================= - * son-handler - * ================================================================================ - * Copyright (C) 2019 Wipro Limited. - * ============================================================================== - * 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.dcaegen2.services.sonhms; - -public class MainThreadTest { - -} diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/child/GraphTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/child/GraphTest.java index 3df7f93..16c3ad9 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/child/GraphTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/child/GraphTest.java @@ -28,7 +28,6 @@ import java.util.HashMap; import java.util.Map; import org.junit.Test; -import org.onap.dcaegen2.services.sonhms.child.Graph; import org.onap.dcaegen2.services.sonhms.model.CellPciPair; import org.slf4j.Logger; diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestChildThreadUtils.java b/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestChildThreadUtils.java index 03e735f..ca5f5fd 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestChildThreadUtils.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestChildThreadUtils.java @@ -21,6 +21,8 @@ package org.onap.dcaegen2.services.sonhms.child; +import com.fasterxml.jackson.databind.ObjectMapper; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -33,8 +35,6 @@ import java.util.Map; import org.junit.Assert; import org.junit.Before; import org.junit.Test; - -import com.fasterxml.jackson.databind.ObjectMapper; import org.onap.dcaegen2.services.sonhms.ConfigPolicy; import org.onap.dcaegen2.services.sonhms.model.CellPciPair; import org.onap.dcaegen2.services.sonhms.model.PolicyNotification; diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestDetection.java b/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestDetection.java index 6e42cce..05d3e79 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestDetection.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestDetection.java @@ -27,8 +27,6 @@ import java.util.HashMap; import java.util.Map; import org.junit.Test; -import org.onap.dcaegen2.services.sonhms.child.Detection; -import org.onap.dcaegen2.services.sonhms.child.Graph; import org.onap.dcaegen2.services.sonhms.model.CellPciPair; diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestPnfUtils.java b/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestPnfUtils.java index e7f822f..0349521 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestPnfUtils.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestPnfUtils.java @@ -22,6 +22,9 @@ package org.onap.dcaegen2.services.sonhms.child; import static org.junit.Assert.assertEquals; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -40,16 +43,6 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; -import org.powermock.modules.junit4.PowerMockRunnerDelegate; -import org.slf4j.Logger; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import org.onap.dcaegen2.services.sonhms.dao.CellInfoRepository; import org.onap.dcaegen2.services.sonhms.entity.CellInfo; import org.onap.dcaegen2.services.sonhms.exceptions.ConfigDbNotFoundException; @@ -58,6 +51,13 @@ import org.onap.dcaegen2.services.sonhms.restclient.SdnrRestClient; import org.onap.dcaegen2.services.sonhms.restclient.Solution; import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; import org.onap.dcaegen2.services.sonhms.utils.ClusterUtilsTest; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.powermock.modules.junit4.PowerMockRunnerDelegate; +import org.slf4j.Logger; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; @RunWith(PowerMockRunner.class) @PowerMockRunnerDelegate(SpringRunner.class) diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/DmaapClientTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/DmaapClientTest.java index 63ba5bd..4f28e35 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/DmaapClientTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/DmaapClientTest.java @@ -21,10 +21,9 @@ package org.onap.dcaegen2.services.sonhms.dmaap; -import com.att.nsa.cambria.client.CambriaTopicManager; - import static org.mockito.Mockito.when; +import com.att.nsa.cambria.client.CambriaTopicManager; import java.io.IOException; import java.util.ArrayList; @@ -38,10 +37,8 @@ import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; - -import org.onap.dcaegen2.services.sonhms.Configuration; -import org.onap.dcaegen2.services.sonhms.NewNotification; import org.mockito.MockitoAnnotations; +import org.onap.dcaegen2.services.sonhms.Configuration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @@ -61,8 +58,6 @@ public class DmaapClientTest { MockitoAnnotations.initMocks(this); } - private Boolean newNotif; - @Test public void getAllTopicsTest() { Set topics = new HashSet(); @@ -71,37 +66,27 @@ public class DmaapClientTest { Configuration configuration = Configuration.getInstance(); configuration.setBufferTime(60); configuration.setCallbackUrl("/callbackUrl"); - configuration.setConfigName("configName"); List list = new ArrayList(); list.add("server"); - configuration.setServers(list); + configuration.setDmaapServers(list); configuration.setCg("cg"); configuration.setCid("cid"); - configuration.setManagerApiKey("managerApiKey"); - configuration.setManagerSecretKey("managerSecretKey"); configuration.setMaximumClusters(5); configuration.setMinCollision(5); configuration.setMinConfusion(5); configuration.setNumSolutions(1); configuration.setOofService("oofService"); configuration.setOptimizers(list); - configuration.setPcimsApiKey("pcimsApiKey"); - configuration.setPcimsSecretKey("pcimsSecretKey"); - configuration.setPolicyName("policyName"); - configuration.setPolicyService("policyService"); - configuration.setPolicyTopic("policyTopic"); configuration.setPollingInterval(30); configuration.setPollingTimeout(100); - configuration.setSdnrService("sdnrService"); - configuration.setSdnrTopic("sdnrTopic"); + configuration.setConfigDbService("sdnrService"); configuration.setSourceId("sourceId"); - NewNotification newNotification = new NewNotification(newNotif); try { when(topicManager.getTopics()).thenReturn(topics); client=Mockito.mock(DmaapClient.class); - client.initClient(newNotification); - Mockito.verify(client).initClient(newNotification); + client.initClient(); + Mockito.verify(client).initClient(); // Mockito.verifycreateAndConfigureTopics(); } catch (IOException e) { diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/NotificationProducerTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/NotificationProducerTest.java index c76b953..4fa8227 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/NotificationProducerTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/NotificationProducerTest.java @@ -25,8 +25,8 @@ import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.when; import com.att.nsa.cambria.client.CambriaBatchingPublisher; + import java.io.IOException; -import java.security.GeneralSecurityException; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; @@ -39,33 +39,24 @@ import org.springframework.test.context.junit4.SpringRunner; @SpringBootTest(classes = NotificationProducerTest.class) public class NotificationProducerTest { - @Mock CambriaBatchingPublisher cambriaBatchingPublisher; - + @InjectMocks NotificationProducer notificationProducer; - + @Test public void notificationProducerTest() { - - - - try { - - when(cambriaBatchingPublisher.send(Mockito.anyString(), Mockito.anyString())).thenReturn(0); - int result=notificationProducer.sendNotification("msg"); - assertEquals(0, result); - } catch (GeneralSecurityException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - - } -} + try { + + when(cambriaBatchingPublisher.send(Mockito.anyString(), Mockito.anyString())).thenReturn(0); + int result = notificationProducer.sendNotification("msg"); + assertEquals(0, result); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } +} diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/entity/FaultNotificationsTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/entity/FaultNotificationsTest.java new file mode 100644 index 0000000..e83e9b9 --- /dev/null +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/entity/FaultNotificationsTest.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * son-handler + * ================================================================================ + * Copyright (C) 2019 Wipro Limited. + * ============================================================================== + * 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.dcaegen2.services.sonhms.entity; + +import static org.junit.Assert.assertEquals; + +import java.sql.Timestamp; + +import org.junit.Test; + +public class FaultNotificationsTest { + + private Timestamp createdAt; + + @Test + public void faultNotififcationsTest() { + FaultNotifications faultNotifications = new FaultNotifications(); + faultNotifications.setNotification("notification"); + faultNotifications.setCreatedAt(createdAt); + assertEquals("notification", faultNotifications.getNotification()); + assertEquals(createdAt, faultNotifications.getCreatedAt()); + } + +} + + diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/model/NotificationTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/model/NotificationTest.java index 8ef4778..29590f9 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/model/NotificationTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/model/NotificationTest.java @@ -32,16 +32,6 @@ import java.io.IOException; import java.util.ArrayList; import org.junit.Test; -import org.onap.dcaegen2.services.sonhms.model.FapServiceList; -import org.onap.dcaegen2.services.sonhms.model.LteNeighborListInUseLteCell; -import org.onap.dcaegen2.services.sonhms.model.NeighborListInUse; -import org.onap.dcaegen2.services.sonhms.model.Notification; -import org.onap.dcaegen2.services.sonhms.model.NotificationCellConfig; -import org.onap.dcaegen2.services.sonhms.model.NotificationLte; -import org.onap.dcaegen2.services.sonhms.model.NotificationPayload; -import org.onap.dcaegen2.services.sonhms.model.NotificationRan; -import org.onap.dcaegen2.services.sonhms.model.RadioAccess; -import org.onap.dcaegen2.services.sonhms.model.X0005b9Lte; public class NotificationTest { diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/model/PayloadTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/model/PayloadTest.java index a7f0a79..1aae8c2 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/model/PayloadTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/model/PayloadTest.java @@ -26,15 +26,6 @@ import static org.junit.Assert.assertEquals; import java.util.ArrayList; import org.junit.Test; -import org.onap.dcaegen2.services.sonhms.model.CellConfig; -import org.onap.dcaegen2.services.sonhms.model.Common; -import org.onap.dcaegen2.services.sonhms.model.Configurations; -import org.onap.dcaegen2.services.sonhms.model.Data; -import org.onap.dcaegen2.services.sonhms.model.FapService; -import org.onap.dcaegen2.services.sonhms.model.Lte; -import org.onap.dcaegen2.services.sonhms.model.Payload; -import org.onap.dcaegen2.services.sonhms.model.Ran; -import org.onap.dcaegen2.services.sonhms.model.X0005b9Lte; diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/model/PolicyNotificationTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/model/PolicyNotificationTest.java index b99a9d7..12b0771 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/model/PolicyNotificationTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/model/PolicyNotificationTest.java @@ -23,6 +23,8 @@ package org.onap.dcaegen2.services.sonhms.model; import static org.junit.Assert.assertEquals; +import com.fasterxml.jackson.databind.ObjectMapper; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -32,8 +34,6 @@ import java.util.Map; import org.junit.Assert; import org.junit.Test; - -import com.fasterxml.jackson.databind.ObjectMapper; import org.onap.dcaegen2.services.sonhms.utils.ClusterUtilsTest; public class PolicyNotificationTest { @@ -94,6 +94,9 @@ public class PolicyNotificationTest { } Assert.assertEquals(policyNotification1.hashCode(), policyNotification2.hashCode()); + Assert.assertEquals(policyNotification1, policyNotification2); + Assert.assertTrue(policyNotification1.equals(policyNotification2)); + Assert.assertFalse(policyNotification1.equals(null)); Assert.assertNotEquals(policyNotification1.hashCode(), policyNotification3.hashCode()); } diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/AsyncResponseBodyTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/AsyncResponseBodyTest.java index 085abbb..fcc2c31 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/AsyncResponseBodyTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/AsyncResponseBodyTest.java @@ -25,9 +25,6 @@ import java.util.ArrayList; import java.util.List; import org.junit.Test; -import org.onap.dcaegen2.services.sonhms.restclient.AsyncResponseBody; -import org.onap.dcaegen2.services.sonhms.restclient.Solution; -import org.onap.dcaegen2.services.sonhms.restclient.SonSolution; diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/CellInfoTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/CellInfoTest.java index 24ba1ae..9f21f8d 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/CellInfoTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/CellInfoTest.java @@ -25,8 +25,8 @@ import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; + import org.junit.Test; -import org.onap.dcaegen2.services.sonhms.restclient.CellInfo; public class CellInfoTest { diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/OofRequestBodyTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/OofRequestBodyTest.java index eb0d189..0e2b59c 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/OofRequestBodyTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/OofRequestBodyTest.java @@ -25,10 +25,8 @@ import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; + import org.junit.Test; -import org.onap.dcaegen2.services.sonhms.restclient.CellInfo; -import org.onap.dcaegen2.services.sonhms.restclient.OofRequestBody; -import org.onap.dcaegen2.services.sonhms.restclient.RequestInfo; diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/OofRestClientTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/OofRestClientTest.java index 4a9fed5..75af4fe 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/OofRestClientTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/OofRestClientTest.java @@ -25,6 +25,7 @@ import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -59,29 +60,20 @@ public class OofRestClientTest { public void queryOofTest() { configuration.setBufferTime(60); configuration.setCallbackUrl("/callbackUrl"); - configuration.setConfigName("configName"); List list = new ArrayList(); list.add("server"); - configuration.setServers(list); + configuration.setDmaapServers(list); configuration.setCg("cg"); configuration.setCid("cid"); - configuration.setManagerApiKey("managerApiKey"); - configuration.setManagerSecretKey("managerSecretKey"); configuration.setMaximumClusters(5); configuration.setMinCollision(5); configuration.setMinConfusion(5); configuration.setNumSolutions(1); configuration.setOofService("oofService"); configuration.setOptimizers(list); - configuration.setPcimsApiKey("pcimsApiKey"); - configuration.setPcimsSecretKey("pcimsSecretKey"); - configuration.setPolicyName("policyName"); - configuration.setPolicyService("policyService"); - configuration.setPolicyTopic("policyTopic"); configuration.setPollingInterval(30); configuration.setPollingTimeout(100); - configuration.setSdnrService("sdnrService"); - configuration.setSdnrTopic("sdnrTopic"); + configuration.setConfigDbService("sdnrService"); configuration.setSourceId("sourceId"); String responseBody="{\n" + " \"transactionId\": \"xxx-xxx-xxxx\",\n" + diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/PciSolutionsTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/PciSolutionsTest.java index 4f59435..79d27ad 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/PciSolutionsTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/PciSolutionsTest.java @@ -24,7 +24,6 @@ package org.onap.dcaegen2.services.sonhms.restclient; import static org.junit.Assert.assertEquals; import org.junit.Test; -import org.onap.dcaegen2.services.sonhms.restclient.SonSolution; public class PciSolutionsTest { diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/PolicyRequestBodyTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/PolicyRequestBodyTest.java index 5de8951..4578fd1 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/PolicyRequestBodyTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/PolicyRequestBodyTest.java @@ -24,7 +24,6 @@ package org.onap.dcaegen2.services.sonhms.restclient; import static org.junit.Assert.assertEquals; import org.junit.Test; -import org.onap.dcaegen2.services.sonhms.restclient.PolicyRequestBody; public class PolicyRequestBodyTest { diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/PolicyRestClientTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/PolicyRestClientTest.java deleted file mode 100644 index 387b958..0000000 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/PolicyRestClientTest.java +++ /dev/null @@ -1,117 +0,0 @@ -/******************************************************************************* - * ============LICENSE_START======================================================= - * son-handler - * ================================================================================ - * Copyright (C) 2019 Wipro Limited. - * ============================================================================== - * 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.dcaegen2.services.sonhms.restclient; - -import static org.junit.Assert.assertEquals; -import java.util.ArrayList; -import java.util.List; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Matchers; -import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; -import org.onap.dcaegen2.services.sonhms.Configuration; -import org.onap.dcaegen2.services.sonhms.restclient.PolicyRestClient; -import org.onap.dcaegen2.services.sonhms.utils.SonHandlerRestTemplate; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; -import org.powermock.modules.junit4.PowerMockRunnerDelegate; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.core.ParameterizedTypeReference; -import org.springframework.http.ResponseEntity; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(PowerMockRunner.class) -@PowerMockRunnerDelegate(SpringRunner.class) -@PrepareForTest({ SonHandlerRestTemplate.class, Configuration.class }) -@SpringBootTest(classes = PolicyRestClientTest.class) -public class PolicyRestClientTest { - - Configuration configuration = Configuration.getInstance(); - - @Before - public void setup() { - MockitoAnnotations.initMocks(this); - } - - @Test - public void fetchConfigFromPolicyTest() { - - configuration.setBufferTime(60); - configuration.setCallbackUrl("/callbackUrl"); - configuration.setConfigName("configName"); - List list = new ArrayList(); - list.add("server"); - configuration.setServers(list); - configuration.setCg("cg"); - configuration.setCid("cid"); - configuration.setManagerApiKey("managerApiKey"); - configuration.setManagerSecretKey("managerSecretKey"); - configuration.setMaximumClusters(5); - configuration.setMinCollision(5); - configuration.setMinConfusion(5); - configuration.setNumSolutions(1); - configuration.setOofService("oofService"); - configuration.setOptimizers(list); - configuration.setPcimsApiKey("pcimsApiKey"); - configuration.setPcimsSecretKey("pcimsSecretKey"); - configuration.setPolicyName("policyName"); - configuration.setPolicyService("policyService"); - configuration.setPolicyTopic("policyTopic"); - configuration.setPollingInterval(30); - configuration.setPollingTimeout(100); - configuration.setSdnrService("sdnrService"); - configuration.setSdnrTopic("sdnrTopic"); - configuration.setSourceId("sourceId"); - String responseBody="{\n" + - "\"policyName\": \"com.Config_PCIMS_CONFIG_POLICY\",\n" + - "\"policyVersion\": \"1\",\n" + - "\"configBody\": \"{ \\\"PCI_NEIGHBOR_CHANGE_CLUSTER_TIMEOUT_IN_SECS\\\":60,\n" + - "\\\"PCI_MODCONFIG_POLICY_NAME\\\":\\\"ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-\n" + - "529269fb1459\\\", \\\"PCI_OPTMIZATION_ALGO_CATEGORY_IN_OOF\\\":\\\"OOF-PCI-\n" + - "OPTIMIZATION\\\", \\\"PCI_SDNR_TARGET_NAME\\\":\\\"SDNR\\\" }\",\n" + - "\"policyClass\": \"Config\",\n" + - "\"policyConfigType\": \"Base\",\n" + - "\"ttlDate\": \"2018-08-29T06:28:16.830Z\",\n" + - "\"onapName\": \"DCAE\",\n" + - "\"configName\": \"PCIMS_CONFIG_POLICY\",\n" + - "\"configBodyType\": \"JSON\"\n" + - "}\n" + - ""; - PowerMockito.mockStatic(SonHandlerRestTemplate.class); - PowerMockito.mockStatic(Configuration.class); - PowerMockito.when(Configuration.getInstance()).thenReturn(configuration); - - PowerMockito.when(SonHandlerRestTemplate.sendPostToPolicy(Mockito.anyString(),Mockito.anyString() ,Matchers.>any())) - .thenReturn(ResponseEntity.ok(responseBody)); - String result=PolicyRestClient.fetchConfigFromPolicy(); - assertEquals(ResponseEntity.ok(responseBody).getBody(), result); - - - - - - } - -} diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/RequestInfoTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/RequestInfoTest.java index 4d360d8..cbb29a7 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/RequestInfoTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/RequestInfoTest.java @@ -27,7 +27,6 @@ import java.util.ArrayList; import java.util.List; import org.junit.Test; -import org.onap.dcaegen2.services.sonhms.restclient.RequestInfo; public class RequestInfoTest { diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/SdnrRestClientTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/SdnrRestClientTest.java index c13b698..bffccfc 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/SdnrRestClientTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/SdnrRestClientTest.java @@ -42,11 +42,11 @@ import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunnerDelegate; +import org.slf4j.Logger; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit4.SpringRunner; -import org.slf4j.Logger; @RunWith(PowerMockRunner.class) @PowerMockRunnerDelegate(SpringRunner.class) diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/SolutionsTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/SolutionsTest.java index 9decce0..9286629 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/SolutionsTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/restclient/SolutionsTest.java @@ -25,9 +25,8 @@ import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; + import org.junit.Test; -import org.onap.dcaegen2.services.sonhms.restclient.Solution; -import org.onap.dcaegen2.services.sonhms.restclient.SonSolution; diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/utils/ClusterUtilsTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/utils/ClusterUtilsTest.java index dd3059a..48813e1 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/utils/ClusterUtilsTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/utils/ClusterUtilsTest.java @@ -21,6 +21,14 @@ package org.onap.dcaegen2.services.sonhms.utils; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +import fj.data.Either; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -31,7 +39,6 @@ import java.util.List; import java.util.Map; import java.util.UUID; -import static org.junit.Assert.*; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -56,11 +63,6 @@ import org.powermock.modules.junit4.PowerMockRunnerDelegate; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; - -import fj.data.Either; - @RunWith(PowerMockRunner.class) @PowerMockRunnerDelegate(SpringRunner.class) @PrepareForTest({ SdnrRestClient.class, BeanUtil.class }) -- cgit 1.2.3-korg