From 7aeb6339da8ab2bd346655438b65fa4a413c7405 Mon Sep 17 00:00:00 2001 From: Marcus G K Williams Date: Fri, 4 Aug 2017 14:40:55 -0700 Subject: Update sli-adaptor/aai-service package names Update package names from org.openecomp.sdnc.adaptors.* -> onap.ccsdk.sli.adaptors.* Update groupIds from org.openecomp.sdnc.adaptors -> onap.ccsdk.sli.adaptors Issue: CCSDK-19 Change-Id: I3d41c1484479645edaf0d47ad4e8fd87e707cb39 Signed-off-by: Marcus G K Williams --- .../java/org/onap/sli/adaptors/aai/AAIClient.java | 220 ++ .../org/onap/sli/adaptors/aai/AAIDeclarations.java | 2045 ++++++++++++ .../sli/adaptors/aai/AAIExecutorInterface.java | 30 + .../java/org/onap/sli/adaptors/aai/AAIRequest.java | 420 +++ .../java/org/onap/sli/adaptors/aai/AAIService.java | 3278 ++++++++++++++++++++ .../onap/sli/adaptors/aai/AAIServiceActivator.java | 239 ++ .../onap/sli/adaptors/aai/AAIServiceException.java | 77 + .../onap/sli/adaptors/aai/AAITrinityService.java | 38 + .../onap/sli/adaptors/aai/CloudRegionRequest.java | 135 + .../onap/sli/adaptors/aai/CustomQueryRequest.java | 134 + .../org/onap/sli/adaptors/aai/EchoRequest.java | 93 + .../onap/sli/adaptors/aai/GenericQueryRequest.java | 144 + .../org/onap/sli/adaptors/aai/GenericRequest.java | 319 ++ .../onap/sli/adaptors/aai/GenericVnfRequest.java | 144 + .../aai/L3InterfaceIpv4AddressListRequest.java | 212 ++ .../aai/L3InterfaceIpv6AddressListRequest.java | 179 ++ .../onap/sli/adaptors/aai/LInterfaceRequest.java | 244 ++ .../sli/adaptors/aai/LagInterfacePnfRequest.java | 142 + .../onap/sli/adaptors/aai/NamedQueryRequest.java | 190 ++ .../onap/sli/adaptors/aai/NodesQueryRequest.java | 144 + .../sli/adaptors/aai/PInterfacePnfRequest.java | 142 + .../onap/sli/adaptors/aai/PInterfaceRequest.java | 132 + .../org/onap/sli/adaptors/aai/PathRequest.java | 88 + .../onap/sli/adaptors/aai/PhysicalLinkRequest.java | 112 + .../onap/sli/adaptors/aai/RelationshipRequest.java | 126 + .../org/onap/sli/adaptors/aai/SelfLinkRequest.java | 98 + .../onap/sli/adaptors/aai/SubInterfaceRequest.java | 184 ++ .../org/onap/sli/adaptors/aai/UpdateRequest.java | 106 + .../org/onap/sli/adaptors/aai/data/AAIDatum.java | 26 + .../onap/sli/adaptors/aai/data/EchoResponse.java | 76 + .../onap/sli/adaptors/aai/data/ErrorResponse.java | 78 + .../onap/sli/adaptors/aai/data/RequestError.java | 78 + .../sli/adaptors/aai/data/ResourceVersion.java | 28 + .../sli/adaptors/aai/data/ResponseMessage.java | 122 + .../sli/adaptors/aai/data/ResponseMessages.java | 78 + .../sli/adaptors/aai/data/ServiceException.java | 126 + .../onap/sli/adaptors/aai/data/SubInterface.java | 171 + .../org/onap/sli/adaptors/aai/data/Variables.java | 78 + .../sli/adaptors/aai/data/notify/KeyDatum.java | 99 + .../sli/adaptors/aai/data/notify/NotifyEvent.java | 170 + .../onap/sli/adaptors/aai/data/v1507/Flavor.java | 122 + .../org/onap/sli/adaptors/aai/data/v1507/Host.java | 122 + .../onap/sli/adaptors/aai/data/v1507/Image.java | 237 ++ .../sli/adaptors/aai/data/v1507/IpAddress.java | 168 + .../sli/adaptors/aai/data/v1507/Relationship.java | 147 + .../adaptors/aai/data/v1507/RelationshipDatum.java | 124 + .../adaptors/aai/data/v1507/RelationshipList.java | 101 + .../onap/sli/adaptors/aai/data/v1507/VServer.java | 262 ++ .../aai/query/FormattedQueryRequestData.java | 83 + .../aai/query/FormattedQueryResultList.java | 59 + .../sli/adaptors/aai/query/InstanceFilter.java | 133 + .../sli/adaptors/aai/query/InstanceFilters.java | 78 + .../onap/sli/adaptors/aai/query/NamedQuery.java | 76 + .../sli/adaptors/aai/query/NamedQueryData.java | 102 + .../sli/adaptors/aai/query/QueryParameters.java | 76 + .../org/onap/sli/adaptors/aai/query/Results.java | 84 + .../org/onap/sli/adaptors/aai/update/Action.java | 101 + .../onap/sli/adaptors/aai/update/ActionDatum.java | 99 + .../org/onap/sli/adaptors/aai/update/Update.java | 124 + .../sli/adaptors/aai/update/UpdateNodeKey.java | 99 + .../java/org/openecomp/sdnc/sli/aai/AAIClient.java | 220 -- .../openecomp/sdnc/sli/aai/AAIDeclarations.java | 2045 ------------ .../sdnc/sli/aai/AAIExecutorInterface.java | 30 - .../org/openecomp/sdnc/sli/aai/AAIRequest.java | 420 --- .../org/openecomp/sdnc/sli/aai/AAIService.java | 3278 -------------------- .../sdnc/sli/aai/AAIServiceActivator.java | 239 -- .../sdnc/sli/aai/AAIServiceException.java | 77 - .../openecomp/sdnc/sli/aai/AAITrinityService.java | 38 - .../openecomp/sdnc/sli/aai/CloudRegionRequest.java | 135 - .../openecomp/sdnc/sli/aai/CustomQueryRequest.java | 134 - .../org/openecomp/sdnc/sli/aai/EchoRequest.java | 93 - .../sdnc/sli/aai/GenericQueryRequest.java | 144 - .../org/openecomp/sdnc/sli/aai/GenericRequest.java | 319 -- .../openecomp/sdnc/sli/aai/GenericVnfRequest.java | 144 - .../sli/aai/L3InterfaceIpv4AddressListRequest.java | 212 -- .../sli/aai/L3InterfaceIpv6AddressListRequest.java | 179 -- .../openecomp/sdnc/sli/aai/LInterfaceRequest.java | 244 -- .../sdnc/sli/aai/LagInterfacePnfRequest.java | 142 - .../openecomp/sdnc/sli/aai/NamedQueryRequest.java | 190 -- .../openecomp/sdnc/sli/aai/NodesQueryRequest.java | 144 - .../sdnc/sli/aai/PInterfacePnfRequest.java | 142 - .../openecomp/sdnc/sli/aai/PInterfaceRequest.java | 132 - .../org/openecomp/sdnc/sli/aai/PathRequest.java | 88 - .../sdnc/sli/aai/PhysicalLinkRequest.java | 112 - .../sdnc/sli/aai/RelationshipRequest.java | 126 - .../openecomp/sdnc/sli/aai/SelfLinkRequest.java | 98 - .../sdnc/sli/aai/SubInterfaceRequest.java | 184 -- .../org/openecomp/sdnc/sli/aai/UpdateRequest.java | 106 - .../org/openecomp/sdnc/sli/aai/data/AAIDatum.java | 26 - .../openecomp/sdnc/sli/aai/data/EchoResponse.java | 76 - .../openecomp/sdnc/sli/aai/data/ErrorResponse.java | 78 - .../openecomp/sdnc/sli/aai/data/RequestError.java | 78 - .../sdnc/sli/aai/data/ResourceVersion.java | 28 - .../sdnc/sli/aai/data/ResponseMessage.java | 122 - .../sdnc/sli/aai/data/ResponseMessages.java | 78 - .../sdnc/sli/aai/data/ServiceException.java | 126 - .../openecomp/sdnc/sli/aai/data/SubInterface.java | 171 - .../org/openecomp/sdnc/sli/aai/data/Variables.java | 78 - .../sdnc/sli/aai/data/notify/KeyDatum.java | 99 - .../sdnc/sli/aai/data/notify/NotifyEvent.java | 170 - .../openecomp/sdnc/sli/aai/data/v1507/Flavor.java | 122 - .../openecomp/sdnc/sli/aai/data/v1507/Host.java | 122 - .../openecomp/sdnc/sli/aai/data/v1507/Image.java | 237 -- .../sdnc/sli/aai/data/v1507/IpAddress.java | 168 - .../sdnc/sli/aai/data/v1507/Relationship.java | 147 - .../sdnc/sli/aai/data/v1507/RelationshipDatum.java | 124 - .../sdnc/sli/aai/data/v1507/RelationshipList.java | 101 - .../openecomp/sdnc/sli/aai/data/v1507/VServer.java | 262 -- .../sli/aai/query/FormattedQueryRequestData.java | 83 - .../sli/aai/query/FormattedQueryResultList.java | 59 - .../sdnc/sli/aai/query/InstanceFilter.java | 133 - .../sdnc/sli/aai/query/InstanceFilters.java | 78 - .../openecomp/sdnc/sli/aai/query/NamedQuery.java | 76 - .../sdnc/sli/aai/query/NamedQueryData.java | 101 - .../sdnc/sli/aai/query/QueryParameters.java | 76 - .../org/openecomp/sdnc/sli/aai/query/Results.java | 84 - .../org/openecomp/sdnc/sli/aai/update/Action.java | 101 - .../openecomp/sdnc/sli/aai/update/ActionDatum.java | 99 - .../org/openecomp/sdnc/sli/aai/update/Update.java | 124 - .../sdnc/sli/aai/update/UpdateNodeKey.java | 99 - .../src/main/resources/aai-schema-bindings.xjb | 2 +- .../adaptors/aai/r1607/R1607AutoGeneratedTest.java | 489 +++ .../sdnc/sli/aai/r1607/R1607AutoGeneratedTest.java | 489 --- .../src/test/resources/aaiclient.properties | 186 +- 124 files changed, 13525 insertions(+), 13524 deletions(-) create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIClient.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIDeclarations.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIExecutorInterface.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIService.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIServiceActivator.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIServiceException.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAITrinityService.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/CloudRegionRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/CustomQueryRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/EchoRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/GenericQueryRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/GenericRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/GenericVnfRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/L3InterfaceIpv4AddressListRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/L3InterfaceIpv6AddressListRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/LInterfaceRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/LagInterfacePnfRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/NamedQueryRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/NodesQueryRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PInterfacePnfRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PInterfaceRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PathRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PhysicalLinkRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/RelationshipRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/SelfLinkRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/SubInterfaceRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/UpdateRequest.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/AAIDatum.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/EchoResponse.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ErrorResponse.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/RequestError.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ResourceVersion.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ResponseMessage.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ResponseMessages.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ServiceException.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/SubInterface.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/Variables.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/notify/KeyDatum.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/notify/NotifyEvent.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Flavor.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Host.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Image.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/IpAddress.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Relationship.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/RelationshipDatum.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/RelationshipList.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/VServer.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/FormattedQueryRequestData.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/FormattedQueryResultList.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/InstanceFilter.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/InstanceFilters.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/NamedQuery.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/NamedQueryData.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/QueryParameters.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/Results.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/Action.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/ActionDatum.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/Update.java create mode 100644 aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/UpdateNodeKey.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIClient.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIDeclarations.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIExecutorInterface.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIService.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIServiceActivator.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIServiceException.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAITrinityService.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/CloudRegionRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/CustomQueryRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/EchoRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/GenericQueryRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/GenericRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/GenericVnfRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/L3InterfaceIpv4AddressListRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/L3InterfaceIpv6AddressListRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/LInterfaceRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/LagInterfacePnfRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/NamedQueryRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/NodesQueryRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PInterfacePnfRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PInterfaceRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PathRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PhysicalLinkRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/RelationshipRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/SelfLinkRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/SubInterfaceRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/UpdateRequest.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/AAIDatum.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/EchoResponse.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ErrorResponse.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/RequestError.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ResourceVersion.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ResponseMessage.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ResponseMessages.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ServiceException.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/SubInterface.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/Variables.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/notify/KeyDatum.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/notify/NotifyEvent.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Flavor.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Host.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Image.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/IpAddress.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Relationship.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/RelationshipDatum.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/RelationshipList.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/VServer.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/FormattedQueryRequestData.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/FormattedQueryResultList.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/InstanceFilter.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/InstanceFilters.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/NamedQuery.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/NamedQueryData.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/QueryParameters.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/Results.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/Action.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/ActionDatum.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/Update.java delete mode 100644 aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/UpdateNodeKey.java create mode 100644 aai-service/provider/src/test/java/org/onap/sli/adaptors/aai/r1607/R1607AutoGeneratedTest.java delete mode 100644 aai-service/provider/src/test/java/org/openecomp/sdnc/sli/aai/r1607/R1607AutoGeneratedTest.java (limited to 'aai-service/provider/src') diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIClient.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIClient.java new file mode 100644 index 00000000..ba5ef587 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIClient.java @@ -0,0 +1,220 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.IOException; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; + +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicException; +import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin; +import org.onap.ccsdk.sli.core.sli.SvcLogicResource; +import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; +import org.openecomp.aai.inventory.v10.AvailabilityZone; +import org.openecomp.aai.inventory.v10.Complex; +import org.openecomp.aai.inventory.v10.CtagPool; +import org.openecomp.aai.inventory.v10.DvsSwitch; +import org.openecomp.aai.inventory.v10.GenericVnf; +import org.openecomp.aai.inventory.v10.L3Network; +import org.openecomp.aai.inventory.v10.OamNetwork; +import org.openecomp.aai.inventory.v10.PInterface; +import org.openecomp.aai.inventory.v10.PhysicalLink; +import org.openecomp.aai.inventory.v10.Pserver; +import org.openecomp.aai.inventory.v10.SearchResults; +import org.openecomp.aai.inventory.v10.Service; +import org.openecomp.aai.inventory.v10.ServiceInstance; +import org.openecomp.aai.inventory.v10.SitePairSet; +import org.openecomp.aai.inventory.v10.Tenant; +import org.openecomp.aai.inventory.v10.Vce; +import org.openecomp.aai.inventory.v10.VnfImage; +import org.openecomp.aai.inventory.v10.Vpe; +import org.openecomp.aai.inventory.v10.VplsPe; +import org.openecomp.aai.inventory.v10.VpnBinding; +import org.openecomp.aai.inventory.v10.Vserver; +import org.onap.ccsdk.sli.adaptors.aai.data.notify.NotifyEvent; +import org.onap.ccsdk.sli.adaptors.aai.data.v1507.VServer; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; + +public interface AAIClient extends SvcLogicResource, SvcLogicJavaPlugin { + + // VCE + public boolean postNetworkVceData(String vnf_id, Vce request) throws AAIServiceException; + public Vce requestNetworkVceData(String vnf_id) throws AAIServiceException; + public boolean deleteNetworkVceData(String vnf_id, String resourceVersion) throws AAIServiceException; + + // Service Inteface + public ServiceInstance requestServiceInterfaceData(String customer_id, String service_type, String svc_instance_id) throws AAIServiceException; + public boolean postServiceInterfaceData(String customer_id, String service_type, String svc_instance_id, ServiceInstance request) throws AAIServiceException; + public SearchResults requestServiceInstanceURL(String svc_instance_id) throws AAIServiceException; + + // VPE +// public Vpes requestNetworkVpeList() throws AAIServiceException; + public Vpe requestNetworkVpeData(String vnf_id) throws AAIServiceException; + public boolean postNetworkVpeData(String vnf_id, Vpe request) throws AAIServiceException; + public boolean deleteNetworkVpeData(String vnf_id, String resourceVersion) throws AAIServiceException; + + // VServers + public Vserver requestVServerData(String tenant_id, String vserver_id, String cloudOwner, String cloudRegionId) throws AAIServiceException; + public boolean postVServerData(String tenantId, String vserverId, String cloudOwner, String cloudRegionId, Vserver request) throws AAIServiceException; + public boolean deleteVServerData(String tenant_id, String vserver_id, String cloudOwner, String cloudRegionId, String resourceVersion) throws AAIServiceException; + + public URL requestVserverURLNodeQuery(String vserver_name) throws AAIServiceException; + public String getTenantIdFromVserverUrl(URL url); + public String getCloudOwnerFromVserverUrl(URL url); + public String getCloudRegionFromVserverUrl(URL url); + public String getVServerIdFromVserverUrl(URL url, String tennantId); + public Vserver requestVServerDataByURL(URL url) throws AAIServiceException; + + // VPLS-PE + public VplsPe requestNetworkVplsPeData(String equipment_name) throws AAIServiceException; + public boolean postNetworkVplsPeData(String vnf_id, VplsPe request) throws AAIServiceException; + public boolean deleteNetworkVplsPeData(String vnf_id, String resourceVersion) throws AAIServiceException; + + + // Complexes + public Complex requestNetworkComplexData(String vnf_id) throws AAIServiceException; + public boolean postNetworkComplexData(String vnf_id, Complex request) throws AAIServiceException; + public boolean deleteNetworkComplexData(String vnf_id, String resourceVersion) throws AAIServiceException; + + // CTag Pool + public CtagPool requestCtagPoolData(String physical_location_id, String target_pe, String availability_zone_name) throws AAIServiceException; + + // --------------------------------- 1507 --------------------------- + // Data Change + public VServer dataChangeRequestVServerData(URL url) throws AAIServiceException; + + public CtagPool dataChangeRequestCtagPoolData(URL url) throws AAIServiceException; + + public VplsPe dataChangeRequestVplsPeData(URL url) throws AAIServiceException; + + public Vpe dataChangeRequestVpeData(URL url) throws AAIServiceException; + + public DvsSwitch dataChangeRequestDvsSwitchData(URL url) throws AAIServiceException; + + public Pserver dataChangeRequestPServerData(URL url) throws AAIServiceException; + + //OAM-Network: + public OamNetwork dataChangeRequestOAMNetworkData(URL url) throws AAIServiceException; + //Availability-Zone: + public AvailabilityZone dataChangeRequestAvailabilityZoneData(URL url) throws AAIServiceException; + //Complex: + public Complex dataChangeRequestComplexData(URL url) throws AAIServiceException; + + + /* DELETE */ + public boolean dataChangeDeleteVServerData(URL url) throws AAIServiceException; + + public boolean dataChangeDeleteCtagPoolData(URL url) throws AAIServiceException; + + public boolean dataChangeDeleteVplsPeData(URL url) throws AAIServiceException; + + public boolean dataChangeDeleteVpeData(URL url) throws AAIServiceException; + + public boolean dataChangeDeleteDvsSwitchData(URL url) throws AAIServiceException; + //OAM-Network: + public boolean dataChangeDeleteOAMNetworkData(URL url) throws AAIServiceException; + //Availability-Zone: + public boolean dataChangeDeleteAvailabilityZoneData(URL url) throws AAIServiceException; + //Complex: + public boolean dataChangeDeleteComplexData(URL url) throws AAIServiceException; + + // ----------------- Release 1510 ---------------------- + // // GenericVNF + public GenericVnf requestGenericVnfData(String vnf_id) throws AAIServiceException; + public boolean postGenericVnfData(String vnf_id, GenericVnf request) throws AAIServiceException; + public boolean deleteGenericVnfData(String vnf_id, String resourceVersion) throws AAIServiceException; + + // DvsSwitch + public DvsSwitch requestDvsSwitchData(String vnf_id) throws AAIServiceException; + public boolean postDvsSwitchData(String vnf_id, DvsSwitch request) throws AAIServiceException; + public boolean deleteDvsSwitchData(String vnf_id, String resourceVersion) throws AAIServiceException; + + // PInterface + public PInterface requestPInterfaceData(String hostname, String interfaceName) throws AAIServiceException; + public boolean postPInterfaceData(String hostname, String interfaceName, PInterface request) throws AAIServiceException; + public boolean deletePInterfaceData(String hostname, String interfaceName, String resourceVersion) throws AAIServiceException; + + // Physical Link + public PhysicalLink requestPhysicalLinkData(String vnf_id) throws AAIServiceException; + public boolean postPhysicalLinkData(String vnf_id, PhysicalLink request) throws AAIServiceException; + public boolean deletePhysicalLinkData(String vnf_id, String resourceVersion) throws AAIServiceException; + + // PServers + public Pserver requestPServerData(String hostname) throws AAIServiceException; + public boolean postPServerData(String hostname, Pserver server) throws AAIServiceException; + public boolean deletePServerData(String hostname, String resourceVersion) throws AAIServiceException; + + // L3Networks + public L3Network requestL3NetworkData(String networkId) throws AAIServiceException; + public L3Network requestL3NetworkQueryByName(String networkId) throws AAIServiceException; + public boolean postL3NetworkData(String networkId, L3Network request) throws AAIServiceException; + public boolean deleteL3NetworkData(String networkId, String resourceVersion) throws AAIServiceException; + + // Vpn Bindings + public VpnBinding requestVpnBindingData(String vpnId) throws AAIServiceException; +// public boolean postVpnBindingData(String vpnId, VpnBinding request) throws AAIServiceException; + public boolean deleteVpnBindingData(String vpnId, String resourceVersion) throws AAIServiceException; + + //VnfImage + public VnfImage requestVnfImageData(String vpnId) throws AAIServiceException; + public VnfImage requestVnfImageDataByVendorModel(String vendor, String model) throws AAIServiceException; + public VnfImage requestVnfImageDataByVendorModelVersion(String vendor, String model, String version) throws AAIServiceException; + + // UBB Notify + public boolean sendNotify(NotifyEvent event, String serviceInstanceId, String pathCode) throws AAIServiceException; + + // 1512 + // Site Pair Site + public SitePairSet requestSitePairSetData(String sitePairSetId) throws AAIServiceException; + public boolean postSitePairSetData(String sitePairSetId, SitePairSet request) throws AAIServiceException; + public boolean deleteSitePairSetData(String sitePairSetId, String resourceVersion) throws AAIServiceException; + + // Services + public Service requestServiceData(String serviceId) throws AAIServiceException; + public boolean postServiceData(String serviceId, Service request) throws AAIServiceException; + public boolean deleteServiceData(String serviceId, String resourceVersion) throws AAIServiceException; + + // Node Query - 1602 + public SearchResults requestNodeQuery(String type, String entityIdentifier, String entityName) throws AAIServiceException; + public String requestDataByURL(URL url) throws AAIServiceException; +// public Object requestDataInstanceNodeQuery(String type, String vnf_name) throws AAIServiceException; + public GenericVnf requestGenericVnfeNodeQuery(String vnf_name) throws AAIServiceException; + + // // tenant + public Tenant requestTenantData(String tenant_id, String cloudOwner, String cloudRegionId) throws AAIServiceException; + public Tenant requestTenantDataByName(String tenant_name, String cloudOwner, String cloudRegionId) throws AAIServiceException; + public boolean postTenantData(String tenant_id, String cloudOwner, String cloudRegionId, Tenant request) throws AAIServiceException; +// public boolean deleteGenericVnfData(String vnf_id, String resourceVersion) throws AAIServiceException; + + + public QueryStatus backup(Map params, SvcLogicContext ctx) throws SvcLogicException; + public QueryStatus restore(Map params, SvcLogicContext ctx) throws SvcLogicException; + + public void logKeyError(String keys); + + public QueryStatus processResponseData(String rv, String resource, AAIRequest request, String prefix, SvcLogicContext ctx, HashMap nameValues, String modifier) throws JsonParseException, JsonMappingException, IOException, AAIServiceException ; + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIDeclarations.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIDeclarations.java new file mode 100644 index 00000000..3ba453d3 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIDeclarations.java @@ -0,0 +1,2045 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.lang.annotation.Annotation; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLDecoder; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.xml.bind.annotation.XmlType; + +import org.apache.commons.lang.StringUtils; +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicException; +import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; +import org.openecomp.aai.inventory.v10.GenericVnf; +import org.openecomp.aai.inventory.v10.InventoryResponseItem; +import org.openecomp.aai.inventory.v10.InventoryResponseItems; +import org.openecomp.aai.inventory.v10.L3Network; +import org.openecomp.aai.inventory.v10.LogicalLink; +import org.openecomp.aai.inventory.v10.Metadata; +import org.openecomp.aai.inventory.v10.Metadatum; +import org.openecomp.aai.inventory.v10.Pnf; +import org.openecomp.aai.inventory.v10.Relationship; +import org.openecomp.aai.inventory.v10.RelationshipData; +import org.openecomp.aai.inventory.v10.RelationshipList; +import org.openecomp.aai.inventory.v10.ResultData; +import org.openecomp.aai.inventory.v10.SearchResults; +import org.openecomp.aai.inventory.v10.ServiceInstance; +import org.openecomp.aai.inventory.v10.Vlan; +import org.openecomp.aai.inventory.v10.Vlans; +import org.openecomp.aai.inventory.v10.Vserver; +import org.onap.ccsdk.sli.adaptors.aai.AAIService.AAIRequestExecutor; +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.onap.ccsdk.sli.adaptors.aai.query.FormattedQueryResultList; +import org.onap.ccsdk.sli.adaptors.aai.query.InstanceFilter; +import org.onap.ccsdk.sli.adaptors.aai.query.InstanceFilters; +import org.onap.ccsdk.sli.adaptors.aai.query.NamedQuery; +import org.onap.ccsdk.sli.adaptors.aai.query.NamedQueryData; +import org.onap.ccsdk.sli.adaptors.aai.query.QueryParameters; +import org.onap.ccsdk.sli.adaptors.aai.query.Results; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; + + +public abstract class AAIDeclarations implements AAIClient { + + public static final String TRUSTSTORE_PATH = "org.onap.ccsdk.sli.adaptors.aai.ssl.trust"; + public static final String TRUSTSTORE_PSSWD = "org.onap.ccsdk.sli.adaptors.aai.ssl.trust.psswd"; + public static final String KEYSTORE_PATH = "org.onap.ccsdk.sli.adaptors.aai.ssl.key"; + public static final String KEYSTORE_PSSWD = "org.onap.ccsdk.sli.adaptors.aai.ssl.key.psswd"; + + public static final String APPLICATION_ID = "org.onap.ccsdk.sli.adaptors.aai.application"; + + public static final String CLIENT_NAME = "org.onap.ccsdk.sli.adaptors.aai.client.name"; + public static final String CLIENT_PWWD = "org.onap.ccsdk.sli.adaptors.aai.client.psswd"; + + + public static final String CONNECTION_TIMEOUT = "connection.timeout"; + public static final String READ_TIMEOUT = "read.timeout"; + + public static final String TARGET_URI = "org.onap.ccsdk.sli.adaptors.aai.uri"; + + // Availability zones query + public static final String QUERY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.query"; + + // Update + public static final String UPDATE_PATH = "org.onap.ccsdk.sli.adaptors.aai.update"; + + // Service instance + public static final String SVC_INSTANCE_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.svcinst"; + public static final String SVC_INST_QRY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.svcinst.query"; + + // VServer + public static final String NETWORK_VSERVER_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.vserver"; + + public static final String VNF_IMAGE_QUERY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.vnf.image.query"; + + public static final String PARAM_SERVICE_TYPE = "org.onap.ccsdk.sli.adaptors.aai.param.service.type"; + public static final String CERTIFICATE_HOST_ERROR = "org.onap.ccsdk.sli.adaptors.aai.host.certificate.ignore"; + + // UBB Notify + public static final String UBB_NOTIFY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.notify"; + public static final String SELFLINK_AVPN = "org.onap.ccsdk.sli.adaptors.aai.notify.selflink.avpn"; + public static final String SELFLINK_FQDN = "org.onap.ccsdk.sli.adaptors.aai.notify.selflink.fqdn"; + + //Service + public static final String SERVICE_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.service"; + + // P-Interfaces + public static final String P_INTERFACE_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface"; + + // site-pair-sets + public static final String SITE_PAIR_SET_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.site.pair.set"; + + // node query (1602) + public static final String QUERY_NODES_PATH = "org.onap.ccsdk.sli.adaptors.aai.query.nodes"; + + + protected abstract Logger getLogger(); + public abstract AAIRequestExecutor getExecutor(); + + + @Override + public QueryStatus query(String resource, boolean localOnly, String select, String key, String prefix, String orderBy, SvcLogicContext ctx) + throws SvcLogicException { + + getLogger().debug("AAIService.query \tresource = "+resource); + + String vnfId = null; + String vnfName = null; + HashMap nameValues = keyToHashMap(key, ctx); + getLogger().debug("key = "+ nameValues.toString()); + + if(!checkOldFormat(resource, nameValues)) { + ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported. Key string contains invaid identifiers", resource)); + return QueryStatus.FAILURE; + } + + if(resource == null || resource.isEmpty() || AAIRequest.createRequest(resource, nameValues) == null) { + ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported", resource)); + return QueryStatus.FAILURE; + } + + // process data using new model + boolean useNewModelProcessing = true; + // process server query by name the old way + if(("vserver".equals(resource) || "vserver2".equals(resource))){ + if(nameValues.containsKey("vserver_name") || nameValues.containsKey("vserver-name") || nameValues.containsKey("vserver.vserver_name") || nameValues.containsKey("vserver.vserver-name")) + useNewModelProcessing = false; + } + if("generic-vnf".equals(resource)){ + if(nameValues.containsKey("vnf_name") || nameValues.containsKey("vnf-name") || nameValues.containsKey("generic_vnf.vnf_name") || nameValues.containsKey("generic-vnf.vnf-name")) + useNewModelProcessing = false; + } + + // process data using new model + if(useNewModelProcessing && AAIRequest.createRequest(resource, nameValues) != null) { + + try { + return newModelQuery(resource, localOnly, select, key, prefix, orderBy, ctx); + } catch (Exception exc) { + getLogger().warn("Failed query - returning FAILURE", exc); + return QueryStatus.FAILURE; + } + } + + ObjectMapper mapper = AAIService.getObjectMapper(); + Map attributes = new HashMap(); + + String modifier = null; + + if(resource.contains(":")) { + String[] tokens = resource.split(":"); + resource = tokens[0]; + if(tokens.length > 1) { + modifier = tokens[1]; + } + } + + resource = resource.toLowerCase().replace("-", "_"); + + try { + + switch(resource) { + case "generic_vnf": + vnfId = nameValues.get("vnf_id"); + if(nameValues.containsKey("vnf_id")) + vnfId = nameValues.get("vnf_id"); + else if(nameValues.containsKey("generic_vnf.vnf_name")) + vnfId = nameValues.get("generic_vnf.vserver_name"); + + if(nameValues.containsKey("vnf_name")) + vnfName = nameValues.get("vnf_name"); + else if(nameValues.containsKey("generic_vnf.vnf_name")) + vnfName = nameValues.get("generic_vnf.vnf_name"); + + if(vnfId != null && !vnfId.isEmpty()) { + // at this point of the project this part should not be executed + vnfId = vnfId.trim().replace("'", "").replace("$", "").replace("'", ""); + GenericVnf vnf = this.requestGenericVnfData(vnfId); + if(vnf == null) { + return QueryStatus.NOT_FOUND; + } + + attributes = mapper.convertValue(vnf, attributes.getClass()); + } else if(vnfName != null && !vnfName.isEmpty()) { + try { + vnfName = vnfName.trim().replace("'", "").replace("$", "").replace("'", ""); + GenericVnf vnf = this.requestGenericVnfeNodeQuery(vnfName); + if(vnf == null) { + return QueryStatus.NOT_FOUND; + } + vnfId=vnf.getVnfId(); + nameValues.put("vnf_id", vnfId); + attributes = mapper.convertValue(vnf, attributes.getClass()); + } catch (AAIServiceException exc) { + int errorCode = exc.getReturnCode(); + switch(errorCode) { + case 400: + case 404: + case 412: + break; + default: + getLogger().warn("Caught exception trying to refresh generic VNF", exc); + } + ctx.setAttribute(prefix + ".error.message", exc.getMessage()); + if(errorCode >= 300) { + ctx.setAttribute(prefix + ".error.http.response-code", "" + exc.getReturnCode()); + } + return QueryStatus.FAILURE; + } + } else { + getLogger().warn("No arguments are available to process generic VNF"); + return QueryStatus.FAILURE; + } + break; + case "vserver": + case "vserver2": + String vserverName = null; + if(nameValues.containsKey("vserver_name")) + vserverName = nameValues.get("vserver_name"); + else if(nameValues.containsKey("vserver.vserver_name")) + vserverName = nameValues.get("vserver.vserver_name"); + + String vserverId = null; + if(nameValues.containsKey("vserver_id")) + vserverId = nameValues.get("vserver_id"); + if(nameValues.containsKey("vserver.vserver_id")) + vserverId = nameValues.get("vserver.vserver_id"); + String tenantId = nameValues.get("teannt_id"); + + if(vserverName != null) vserverName = vserverName.trim().replace("'", "").replace("$", "").replace("'", ""); + if(vserverId != null) vserverId = vserverId.trim().replace("'", "").replace("$", "").replace("'", ""); + if(tenantId != null) tenantId = tenantId.trim().replace("'", "").replace("$", "").replace("'", ""); + + if (vserverName != null) { + URL vserverUrl = null; + try { + vserverUrl = this.requestVserverURLNodeQuery(vserverName); + } catch (AAIServiceException aaiexc) { + ctx.setAttribute(prefix + ".error.message", aaiexc.getMessage()); + if (aaiexc.getReturnCode() >= 300) { + ctx.setAttribute(prefix + ".error.http.response-code", "" + aaiexc.getReturnCode()); + } + + if (aaiexc.getReturnCode() == 404) + return QueryStatus.NOT_FOUND; + else + return QueryStatus.FAILURE; + } + if (vserverUrl == null) { + return QueryStatus.NOT_FOUND; + } + + tenantId = getTenantIdFromVserverUrl(vserverUrl); + String cloudOwner = getCloudOwnerFromVserverUrl(vserverUrl); + String cloudRegionId = getCloudRegionFromVserverUrl(vserverUrl); + + Vserver vserver = null; + try { + vserver = this.requestVServerDataByURL(vserverUrl); + } catch (AAIServiceException aaiexc) { + ctx.setAttribute(prefix + ".error.message", aaiexc.getMessage()); + if (aaiexc.getReturnCode() >= 300) { + ctx.setAttribute(prefix + ".error.http.response-code", "" + aaiexc.getReturnCode()); + } + + if (aaiexc.getReturnCode() == 404) + return QueryStatus.NOT_FOUND; + else + return QueryStatus.FAILURE; + } + if (vserver == null) { + return QueryStatus.NOT_FOUND; + } + attributes = mapper.convertValue(vserver, attributes.getClass()); + if (!attributes.containsKey("tenant-id") && tenantId != null) { + attributes.put("tenant-id", tenantId); + } + if (!attributes.containsKey("cloud-owner") && cloudOwner != null) { + attributes.put("cloud-owner", cloudOwner); + } + if (!attributes.containsKey("cloud-region-id") && cloudRegionId != null) { + attributes.put("cloud-region-id", cloudRegionId); + } + } else if (vserverId != null && tenantId != null) { + Vserver vserver = this.requestVServerData(tenantId, vserverId, "att-aic", "AAIAIC25"); + if(vserver == null) { + return QueryStatus.NOT_FOUND; + } + attributes = mapper.convertValue(vserver, attributes.getClass()); + if(!attributes.containsKey("tenant-id") && tenantId != null){ + attributes.put("tenant-id", tenantId); + } + } else { + return QueryStatus.FAILURE; + } + break; + + default: + return QueryStatus.FAILURE; + } + + QueryStatus retval = QueryStatus.SUCCESS; + + if (attributes == null || attributes.isEmpty()) { + retval = QueryStatus.NOT_FOUND; + getLogger().debug("No data found"); + } else { + if (ctx != null) { + if (prefix != null) { + ArrayList keys = new ArrayList(attributes.keySet()); + + int numCols = keys.size(); + + for (int i = 0; i < numCols; i++) { + String colValue = null; + String colName = keys.get(i); + Object object = attributes.get(colName); + + if(object != null && object instanceof String) { + colValue = (String)object; + + if (prefix != null) { + getLogger().debug("Setting "+prefix + "." + colName.replaceAll("_", "-")+" = "+ colValue); + ctx.setAttribute(prefix + "." + colName.replaceAll("_", "-"), colValue); + } else { + getLogger().debug("Setting " + colValue.replaceAll("_", "-")+" = "+colValue); + ctx.setAttribute(colValue.replaceAll("_", "-"), colValue); + } + } else if(object != null && object instanceof Map) { + if(colName.equals(modifier) || colName.equals("relationship-list")){ + String localNodifier = modifier; + if(localNodifier == null) + localNodifier = "relationship-list"; + Map properties = (Map)object; + writeMap(properties, prefix+"."+localNodifier, ctx); + } + } + } + } + } + } + getLogger().debug("Query - returning " + retval); + return (retval); + + } catch (Exception exc) { + getLogger().warn("Failed query - returning FAILURE", exc); + return QueryStatus.FAILURE; + } + +// return QueryStatus.SUCCESS; + } + + private boolean checkOldFormat(String resource, HashMap nameValues) { + + switch(resource){ + case "formatted-query": + case "generic-query": + case "named-query": + case "nodes-query": + case "linterface": + case "l2-bridge-sbg": + case "l2-bridge-bgf": + case "echo": + case "test": + return true; + } + if(resource.contains(":")) { + resource = resource.substring(0, resource.indexOf(":")); + } + + Set keys = nameValues.keySet(); + for(String key : keys) { + if(!key.contains(".")) { + if("depth".equals(key) || "related-to".equals(key) || "related_to".equals(key)) + continue; + else { + getLogger().warn(String.format("key %s is incompatible with resource type '%s'", key, resource)); + return false; + } + } + } + return true; + } + + public void writeMap(Map properties, String prefix, SvcLogicContext ctx) { + Set mapKeys = properties.keySet(); + + for(String mapKey : mapKeys) { + Object entity = properties.get(mapKey); + if(entity instanceof ArrayList) { + writeList((ArrayList)entity, prefix + "." + mapKey, ctx); + } else + if(entity instanceof String || entity instanceof Long || entity instanceof Integer || entity instanceof Boolean) { + ctx.setAttribute(prefix + "." + mapKey, entity.toString()); + getLogger().debug(prefix + "." + mapKey + " : " + entity.toString()); + } else if(entity instanceof Map) { + String localPrefix = prefix; + if(mapKey != null) { + localPrefix = String.format("%s.%s", prefix, mapKey); + } + writeMap( (Map)entity, localPrefix, ctx); + } + } + } + + private void writeList(ArrayList list, String prefix, SvcLogicContext ctx) { + for(int i = 0; i < list.size(); i++ ) { + Object entity = list.get(i); + if(entity instanceof Map) { + writeMap( (Map)entity, prefix + "[" + i + "]", ctx); + } else + if(entity instanceof String || entity instanceof Long || entity instanceof Integer || entity instanceof Boolean) { + ctx.setAttribute(prefix, entity.toString()); + getLogger().debug(prefix + " : " + entity.toString()); + } + } + + if(list.size() > 0) { + ctx.setAttribute(prefix + "_length", Integer.toString(list.size())); + getLogger().debug(prefix + "_length" + " : " + Integer.toString(list.size())); + } + } + + @Override + public QueryStatus save(String resource, boolean force, boolean localOnly, String key, Map params, String prefix, SvcLogicContext ctx) + throws SvcLogicException { + + getLogger().debug("AAIService.save\tresource="+resource); + HashMap nameValues = keyToHashMap(key, ctx); + + if(!checkOldFormat(resource, nameValues)) { + ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported. Key string contains invaid identifiers", resource)); + return QueryStatus.FAILURE; + } + + if(resource == null || resource.isEmpty() || AAIRequest.createRequest(resource, nameValues) == null) { + getLogger().warn("AAIService.save has unspecified resource"); + ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported", resource)); + return QueryStatus.FAILURE; + } + // keys passed + getLogger().debug("key = "+ Arrays.toString(nameValues.entrySet().toArray())); + + // process params + if(params.containsKey("prefix")) { + Map tmpParams = ctxGetBeginsWith(ctx, params.get("prefix")); + if(!tmpParams.isEmpty()) { + params.putAll(tmpParams); +// params.remove("prefix"); + } + } + // params passed + getLogger().debug("parms = "+ Arrays.toString(params.entrySet().toArray())); + + boolean useNewModelProcessing = true; + // process server query by name the old way + if(("vserver".equals(resource) || "vserver2".equals(resource))){ + if(nameValues.containsKey("vserver-name")) { + useNewModelProcessing = false; + } + + if(!params.containsKey("vserver-selflink")) { + + AAIRequest request = AAIRequest.createRequest(resource, nameValues); + URL path = null; + try { + request.processRequestPathValues(nameValues); + path = request.getRequestUrl("GET", null); + params.put("vserver-selflink", path.toString()); + } catch (UnsupportedEncodingException | MalformedURLException e) { + // TODO : Fix this + params.put("vserver-selflink", "/vserver"); + } + } + } + + // process data using new model + if(useNewModelProcessing && AAIRequest.createRequest(resource, nameValues) != null) { + + try { + if(!resource.contains(":")){ + return newModelSave(resource, force, key, params, prefix, ctx); + } else { + String[] tokens = resource.split(":"); + String localResource = tokens[0]; + String dependency = tokens[1]; + + AAIDatum instance = newModelObjectRequest( localResource, nameValues, prefix, ctx); + if(instance == null) { + return QueryStatus.NOT_FOUND; + } + + switch(dependency){ + case "relationship-list": + newModelProcessRelationshipList(instance, params, prefix, ctx); + break; + } + // create a method to update relationship-list + AAIRequest request = AAIRequest.createRequest(localResource, nameValues); + request.setRequestObject(instance); + request.processRequestPathValues(nameValues); + + getExecutor().post(request); + getLogger().debug("Save relationship list - returning SUCCESS"); + return QueryStatus.SUCCESS; + } + } catch (Exception exc) { + ctx.setAttribute(prefix + ".error.message", exc.getMessage()); + if(exc instanceof AAIServiceException) { + AAIServiceException aaiexc = (AAIServiceException)exc; + if(aaiexc.getReturnCode() >= 300) { + ctx.setAttribute(prefix + ".error.http.response-code", "" + aaiexc.getReturnCode()); + } + + if(aaiexc.getReturnCode() == 404) { + return QueryStatus.NOT_FOUND; + } + } + getLogger().warn("Failed save() - returning FAILURE", exc); + return QueryStatus.FAILURE; + } + } else { + String reSource = resource.toLowerCase().replace("-", "_"); + String vnfId = null; + + try { + switch(reSource) { + case "generic_vnf": + case "generic-vnf": + vnfId = nameValues.get("vnf_id"); + if(vnfId == null) { + getLogger().debug("Save(generic-vnf) with no vnf-id specified. Returning FAILURE"); + return QueryStatus.FAILURE; + } + vnfId = vnfId.trim().replace("'", "").replace("$", "").replace("'", ""); + GenericVnf vnf = this.requestGenericVnfData(vnfId); + String status = params.get("prov-status"); + boolean updated = false; + if(status != null && !status.isEmpty()) { + vnf.setProvStatus(status); + } + if(updated) { + this.postGenericVnfData(vnfId, vnf); + } + break; + case "vpe": + return update( resource, key, params, prefix, ctx) ; + + default: + getLogger().debug("Save() executing default path - returning FAILURE"); + return QueryStatus.FAILURE; + } + } catch (Exception exc) { + getLogger().warn("Failed save - returning FAILURE", exc); + ctx.setAttribute(prefix + ".error.message", exc.getMessage()); + return QueryStatus.FAILURE; + } + } + + getLogger().debug("Save - returning SUCCESS"); + return QueryStatus.SUCCESS; + } + + @Override + public QueryStatus update(String resource, String key, Map params, String prefix, SvcLogicContext ctx) throws SvcLogicException { + + resource = resource.toLowerCase(); + HashMap nameValues = keyToHashMap(key, ctx); + getLogger().debug("key = "+ Arrays.toString(nameValues.entrySet().toArray())); + if(!checkOldFormat(resource, nameValues)) { + ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported. Key string contains invaid identifiers", resource)); + return QueryStatus.FAILURE; + } + + if(resource == null || resource.isEmpty() || AAIRequest.createRequest(resource, nameValues) == null) { + ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported", resource)); + return QueryStatus.FAILURE; + } + + getLogger().debug("parms = "+ Arrays.toString(params.entrySet().toArray())); + + AAIRequest request = AAIRequest.createRequest(resource, nameValues); + request = new UpdateRequest(request, params); + + String[] arguments = request.getArgsList(); + for(String name : arguments) { + String modifiedKey = name.replaceAll("-", "_"); + if(nameValues.containsKey(modifiedKey)) { + String argValue = nameValues.get(modifiedKey); + if(argValue != null) argValue = argValue.trim().replace("'", "").replace("$", "").replace("'", ""); + request.addRequestProperty(name, argValue); + } + } + + try { + QueryStatus retval = QueryStatus.SUCCESS; + + retval = newModelQuery(resource, false, null, key, "tmpDelete", null, ctx); + + if(retval == null || retval != QueryStatus.SUCCESS) { + return retval; + } + + String resourceVersion = ctx.getAttribute("tmpDelete.resource-version"); + if(resourceVersion == null) { + return QueryStatus.NOT_FOUND; + } + params.put("resource-version", resourceVersion); + + request.processRequestPathValues(nameValues); + getExecutor().patch(request, resourceVersion); + } catch(AAIServiceException aaiexc) { + if(aaiexc.getReturnCode() == 404) + return QueryStatus.NOT_FOUND; + else + return QueryStatus.FAILURE; + } catch (Exception exc) { + getLogger().warn("Failed update - returning FAILURE", exc); + return QueryStatus.FAILURE; + } + + getLogger().debug("Update - returning SUCCESS"); + return QueryStatus.SUCCESS; + } + + @Override + public QueryStatus delete(String resource, String key, SvcLogicContext ctx) throws SvcLogicException { + getLogger().debug("AAIService.delete\tresource="+resource); + HashMap nameValues = keyToHashMap(key, ctx); + getLogger().debug("key = "+ Arrays.toString(nameValues.entrySet().toArray())); + + if(!checkOldFormat(resource, nameValues)) { + ctx.setAttribute(String.format("%s.error.message", "aaiData"), String.format("Resource %s is not supported. Key string contains invaid identifiers", resource)); + return QueryStatus.FAILURE; + } + + if(resource == null || resource.isEmpty() || AAIRequest.createRequest(resource, nameValues) == null) { + ctx.setAttribute(String.format("%s.error.message", "tmpDelete"), String.format("Resource %s is not supported", resource)); + return QueryStatus.FAILURE; + } + + if(AAIRequest.createRequest(resource, nameValues) != null) { + if(resource.contains(":")) { + return processDeleteRelationshipList(resource, key, ctx, nameValues); + } + + + try { + QueryStatus retval = QueryStatus.SUCCESS; + + retval = newModelQuery(resource, false, null, key, "tmpDelete", null, ctx); + + if(retval == null || retval != QueryStatus.SUCCESS) { + return retval; + } + + String resourceVersion = ctx.getAttribute("tmpDelete.resource-version"); + if(resourceVersion == null) { + return QueryStatus.NOT_FOUND; + } + + try { + AAIRequest request = AAIRequest.createRequest(resource, nameValues); + if(request == null) { + return QueryStatus.FAILURE; + } + + request.processRequestPathValues(nameValues); + + if(getExecutor().delete(request, resourceVersion)) { + return QueryStatus.SUCCESS; + } + } catch(AAIServiceException aaiexc) { + if(aaiexc.getReturnCode() == 404) + return QueryStatus.NOT_FOUND; + else + return QueryStatus.FAILURE; + + } catch (Exception exc) { + getLogger().warn("requestGenericVnfData", exc); + return QueryStatus.FAILURE; + } + + } catch (Exception exc) { + getLogger().warn("Failed delete - returning FAILURE", exc); + return QueryStatus.FAILURE; + } + } else { + String resoourceName = resource; + String identifier = null; + + if(resoourceName == null) + return QueryStatus.FAILURE; + + if(resoourceName.contains(":")) { + String[] tokens = resoourceName.split(":"); + if(tokens != null && tokens.length > 0) { + resoourceName = tokens[0]; + identifier = tokens[1]; + } + } + if("relationship-list".equals(identifier) || "relationshipList".equals(identifier)) { +// RelationshipRequest relationshipRequest = new RelationshipRequest(); + if("generic-vnf".equals(resoourceName)){ + String vnfId = nameValues.get("vnf_id"); + String relatedTo = nameValues.get("related_to"); + vnfId = vnfId.trim().replace("'", "").replace("$", "").replace("'", ""); + relatedTo = relatedTo.trim().replace("'", "").replace("$", "").replace("'", ""); + + GenericVnf vnf; + try { + vnf = this.requestGenericVnfData(vnfId); + if(vnf == null) + return QueryStatus.NOT_FOUND; + } catch (AAIServiceException exc) { + getLogger().warn("Failed delete - returning NOT_FOUND", exc); + return QueryStatus.NOT_FOUND; + } + boolean itemRemoved = false; + RelationshipList relationshipList = vnf.getRelationshipList(); + List relationships = relationshipList.getRelationship(); + List iterableList = new LinkedList(relationships); + for(Relationship relationship : iterableList) { + if(relationship.getRelatedTo().equals(relatedTo)) { + relationships.remove(relationship); + itemRemoved = true; + } + } + + if(!itemRemoved) + return QueryStatus.NOT_FOUND; + +// AAIRequest masterRequest = new GenericVnfRequest(); +// masterRequest.addRequestProperty(GenericVnfRequest.VNF_ID, vnfId); +// relationshipRequest.addMasterRequest(masterRequest); +// Map attributes = objectToProperties(vnf); +// try { +// Boolean result = getExecutor().delete(relationshipRequest, attributes.get(AAIRequest.RESOURCE_VERSION)); +// } catch (AAIServiceException e) { +// return QueryStatus.FAILURE; +// } + + try { + this.postGenericVnfData(vnf.getVnfId(), vnf); + } catch (AAIServiceException exc) { + if(exc.getReturnCode() == 404){ + return QueryStatus.NOT_FOUND; + } else { + getLogger().warn("Failed delete - returning FAILURE", exc); + return QueryStatus.FAILURE; + } + } + return QueryStatus.SUCCESS; + } + } + } + return QueryStatus.FAILURE; + } + + @Override + public QueryStatus exists(String resource, String key, String prefix, SvcLogicContext ctx) throws SvcLogicException { + return query(resource, false, null, key, prefix, null, ctx); + } + + @Override + public QueryStatus isAvailable(String arg0, String arg1, String arg2, SvcLogicContext arg3) + throws SvcLogicException { + // TODO Auto-generated method stub + throw new SvcLogicException("Method AAIService.isAvailable() has not been implemented yet"); + } + + @Override + public QueryStatus notify(String resource, String action, String key, SvcLogicContext ctx) throws SvcLogicException { + // TODO Auto-generated method stub + throw new SvcLogicException("Method AAIService.notify() has not been implemented yet"); + } + +// @Override + public QueryStatus newModelQuery(String resource, boolean localOnly, String select, String key, String prefix, String orderBy, SvcLogicContext ctx) { + + Object response = null; + QueryStatus retval = QueryStatus.SUCCESS; + String modifier = null; + + HashMap nameValues = keyToHashMap(key, ctx); + if(resource.contains(":")) { + modifier = resource.split(":")[1]; + } + + try { + AAIRequest request = AAIRequest.createRequest(resource, nameValues); + if(request == null) { + return QueryStatus.FAILURE; + } + + Map params = new HashMap(); + + request.processRequestPathValues(nameValues); + if(nameValues.containsKey("prefix")){ + Map tmpParams = ctxGetBeginsWith(ctx, nameValues.get("prefix")); + if(!tmpParams.isEmpty()) { + params.putAll(tmpParams); + } + if("named-query".equals(resource)) + request.setRequestObject(extractNamedQueryDataFromQueryPrefix(nameValues, params)); + } + String rv = getExecutor().get(request); + + retval = processResponseData(rv, resource, request, prefix, ctx, nameValues, modifier); + + } catch(AAIServiceException aaiexc) { + int errorCode = aaiexc.getReturnCode(); + ctx.setAttribute(prefix + ".error.message", aaiexc.getMessage()); + if(errorCode >= 300) { + ctx.setAttribute(prefix + ".error.http.response-code", "" + aaiexc.getReturnCode()); + } + + if(aaiexc.getReturnCode() == 404) + return QueryStatus.NOT_FOUND; + + return QueryStatus.FAILURE; + } catch (Exception exc) { + getLogger().warn("requestGenericVnfData", exc); + ctx.setAttribute(prefix + ".error.message", exc.getMessage()); + return QueryStatus.FAILURE; + } + + return retval; + } + + public QueryStatus processResponseData(String rv, String resource, AAIRequest request, String prefix, SvcLogicContext ctx, HashMap nameValues, String modifier) throws JsonParseException, JsonMappingException, IOException, AAIServiceException + { + Object response = null; + + if(rv == null) { + return QueryStatus.NOT_FOUND; + } + + response = request.jsonStringToObject(rv); + if(response == null) { + return QueryStatus.NOT_FOUND; + } + + if("generic-query".equals(resource)) { + SearchResults rd = SearchResults.class.cast(response); + List rdList = rd.getResultData(); + if(rdList == null || rdList.isEmpty()) { + return QueryStatus.NOT_FOUND; + } + ResultData rDatum = rdList.get(0); + nameValues.put("selflink", rDatum.getResourceLink()); + AAIRequest req2 = AAIRequest.createRequest(rDatum.getResourceType(), nameValues); + req2.processRequestPathValues(nameValues); + rv = getExecutor().get(req2); + if(rv == null) { + return QueryStatus.NOT_FOUND; + } + + response = req2.jsonStringToObject(rv); + if(response == null) { + return QueryStatus.NOT_FOUND; + } + } + + if("named-query".equals(resource)) { + InventoryResponseItems rd = InventoryResponseItems.class.cast(response); + List iRIlist = rd.getInventoryResponseItem(); + if(iRIlist == null || iRIlist.isEmpty()) { + return QueryStatus.NOT_FOUND; + } + } + + if("nodes-query".equals(resource)) { + SearchResults rd = SearchResults.class.cast(response); + List rdList = rd.getResultData(); + if(rdList == null || rdList.isEmpty()) { + return QueryStatus.NOT_FOUND; + } + ResultData rDatum = rdList.get(0); + response = rDatum; + } + + if("formatted-query".equals(resource)) { + FormattedQueryResultList rd = FormattedQueryResultList.class.cast(response); + List iRIlist = rd.getResults(); + if(iRIlist == null || iRIlist.isEmpty()) { + return QueryStatus.NOT_FOUND; + } + } + + String preFix = null; + if(prefix == null || prefix.isEmpty()) { + preFix = ""; + } else { + preFix = prefix + "."; + } + + Map props = objectToProperties(response); + Set keys = props.keySet(); + for(String theKey: keys) { + if(getLogger().isTraceEnabled()) + getLogger().trace(theKey); + + Object value = props.get(theKey); + if(value == null) + continue; + Object type = value.getClass(); + if(value instanceof String) { + ctx.setAttribute(preFix + theKey, value.toString()); + continue; + } + if(value instanceof Boolean) { + ctx.setAttribute(preFix + theKey, value.toString()); + continue; + } + if(value instanceof Integer) { + ctx.setAttribute(preFix + theKey, value.toString()); + continue; + } + if(value instanceof Long) { + ctx.setAttribute(preFix + theKey, value.toString()); + continue; + } + + if(value instanceof ArrayList) { + ArrayList array = ArrayList.class.cast(value); + for(int i = 0; i < array.size(); i++) { +// ctx.setAttribute(String.format("%s%s[%d]", preFix, theKey, i), array.get(i).toString()); + writeList(array, String.format("%s.%s", prefix, theKey), ctx); + } + continue; + } + + if("relationship-list".equals(theKey)){ + Map relationshipList = (Map)value; + // we are interested in seeing just the selected relationship + if(theKey.equals(modifier)) { + List relationships = (List)relationshipList.get("relationship"); + if(relationships != null && !relationships.isEmpty()) { + + List newRelationships = new LinkedList(); + newRelationships.addAll(relationships); + + for(Object obj : newRelationships){ + if(obj instanceof Map) { + Map relProperties = (Map)obj; + if(relProperties.containsKey("related-to")) { + Object relPropsRelatedTo = relProperties.get("related-to"); + + String relatedTo = nameValues.get("related_to"); + if(relatedTo != null) { + relatedTo = relatedTo.trim().replace("'", "").replace("$", "").replace("'", ""); + if(!relatedTo.equals(relPropsRelatedTo)) { + relationships.remove(relProperties); + } + continue; + } else { + continue; + } + } + } + } + } + } + writeMap(relationshipList, String.format("%s.%s", prefix, theKey), ctx); + continue; + } + + if(value instanceof Map) { + Map subnetsList = (Map)value; + writeMap(subnetsList, String.format("%s.%s", prefix, theKey), ctx); + continue; + } + + } + return QueryStatus.SUCCESS; + } + + + public QueryStatus newModelBackupRequest(String resource, Map params, String prefix, SvcLogicContext ctx) { + + QueryStatus retval = QueryStatus.SUCCESS; + HashMap nameValues = new HashMap(); + + try { + AAIRequest request = AAIRequest.createRequest(resource, nameValues); + if(request == null) { + return QueryStatus.FAILURE; + } + + boolean argsFound = false; + String[] arguments = request.getArgsList(); + for(String name : arguments) { + String tmpName = name.replaceAll("-", "_"); + String value = params.get(tmpName); + if(value != null && !value.isEmpty()) { + value = value.trim().replace("'", "").replace("$", "").replace("'", ""); + request.addRequestProperty(name, value); + argsFound = true; + } + } + if(!argsFound) { + getLogger().warn("No arguments were found. Terminating backup request."); + return QueryStatus.FAILURE; + } + + String rv = getExecutor().get(request); + ctx.setAttribute(prefix, rv); + } catch(AAIServiceException aaiexc) { + if(aaiexc.getReturnCode() == 404) + return QueryStatus.NOT_FOUND; + + return QueryStatus.FAILURE; + } catch (Exception exc) { + getLogger().warn("newModelBackupRequest", exc); + return QueryStatus.FAILURE; + } + + return retval; + } + + public AAIDatum newModelObjectRequest(String resource, Map params, String prefix, SvcLogicContext ctx) + throws AAIServiceException { + + AAIDatum response = null; + + try { + AAIRequest request = AAIRequest.createRequest(resource, params); + if(request == null) { + return null; + } + + request.processRequestPathValues(params); + String rv = getExecutor().get(request); + response = request.jsonStringToObject(rv); + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + getLogger().warn("newModelBackupRequest", exc); + throw new AAIServiceException(exc); + } + + return response; + } + + + @Override + public QueryStatus release(String arg0, String arg1, SvcLogicContext arg2) throws SvcLogicException { + // TODO Auto-generated method stub + throw new SvcLogicException("Method AAIService.release() has not been implemented yet"); + } + + @Override + public QueryStatus reserve(String arg0, String arg1, String arg2, String arg3, SvcLogicContext arg4) + throws SvcLogicException { + // TODO Auto-generated method stub + throw new SvcLogicException("Method AAIService.reserve() has not been implemented yet"); + } + + private QueryStatus newModelSave(String resource, boolean force, String key, Map parms, String prefix, SvcLogicContext ctx) { + getLogger().debug("Executing newModelSave for resource : " + resource); + HashMap nameValues = keyToHashMap(key, ctx); + + try { + ArrayList subResources = new ArrayList(); + Set set = parms.keySet(); + Map setters = new HashMap(); + Map getters = new HashMap(); + + // 1. find class + AAIRequest request = AAIRequest.createRequest(resource, nameValues); + Class resourceClass = request.getModelClass(); + getLogger().debug(resourceClass.getName()); + AAIDatum instance = resourceClass.newInstance(); + + { + Annotation[] annotations = resourceClass.getAnnotations(); + for(Annotation annotation : annotations) { + Class anotationType = annotation.annotationType(); + String annotationName = anotationType.getName(); +// if("com.fasterxml.jackson.annotation.JsonPropertyOrder".equals(annotationName)){ + + // 2. find string property setters and getters for the lists + if("javax.xml.bind.annotation.XmlType".equals(annotationName)){ + XmlType order = (XmlType)annotation; + String[] values = order.propOrder(); + for(String value : values) { + String id = camelCaseToDashedString(value); + Field field = resourceClass.getDeclaredField(value); + Class type = field.getType(); + Method setter = null; + try { + setter = resourceClass.getMethod("set"+StringUtils.capitalize(value), type); + if(type.getName().startsWith("java.lang") || "boolean".equals(type.getName()) || "long".equals(type.getName())) { + try { + setter.setAccessible(true); + Object arglist[] = new Object[1]; + arglist[0] = parms.get(id); + + if(arglist[0] != null) { + if(!type.getName().equals("java.lang.String")) { +// getLogger().debug(String.format("Processing %s with parameter %s", types[0].getName(), value)); + if("boolean".equals(type.getName())) { + arglist[0] = valueOf(Boolean.class, parms.get(id)); + } else if("long".equals(type.getName())) { + arglist[0] = valueOf(Long.class, parms.get(id)); + } else { + arglist[0] = valueOf(type, parms.get(id)); + } + } + Object o = setter.invoke(instance, arglist); + } + set.remove(id); + + } catch (Exception x) { + Throwable cause = x.getCause(); + getLogger().warn("Failed process for " + resourceClass.getName(), x); + } + } else if(type.getName().equals("java.util.List")) { + List newValues = new ArrayList(); + String length = id+"_length"; + if(!parms.isEmpty() && parms.containsKey(length)) { + String tmp = parms.get(length).toString(); + int count = Integer.valueOf(tmp); + for(int i=0; i relationshipKeys = new TreeSet(); + Set vlansKeys = new TreeSet(); + Set metadataKeys = new TreeSet(); + + for(String attribute : set) { + String value = parms.get(attribute); + if(attribute.startsWith("relationship-list")) { + relationshipKeys.add(attribute); + } else if(attribute.startsWith("vlans")) { + vlansKeys.add(attribute); + } else if(attribute.startsWith("metadata")) { + metadataKeys.add(attribute); + } + } + // 3. find list property getters + for(String attribute : set) { + String value = parms.get(attribute); + Method method = getters.get(attribute); + if(method != null) { + try { + method.setAccessible(true); + Object arglist[] = new Object[0]; +// arglist[0] = value; + Class[] types = method.getParameterTypes(); + if(types.length == 0){ + Object o = method.invoke(instance, arglist); + if(o instanceof ArrayList) { + ArrayList values = (ArrayList)o; +// getLogger().debug(String.format("Processing %s with parameter %s", types[0].getName(), value)); + value = value.replace("[", "").replace("]", ""); + List items = Arrays.asList(value.split("\\s*,\\s*")); + for(String s : items) { + values.add(s.trim()); + } + } + } + } catch (Exception x) { + Throwable cause = x.getCause(); + getLogger().warn("Failed process for " + resourceClass.getName(), x); + } + } + } + // 4. Process Relationships + // add relationship list + if( (subResources.contains("relationship-list") || subResources.contains("relationshipList")) && !relationshipKeys.isEmpty()) { + RelationshipList relationshipList = null; + Object obj = null; + Method getRelationshipListMethod = resourceClass.getMethod("getRelationshipList"); + if(getRelationshipListMethod != null){ + try { + getRelationshipListMethod.setAccessible(true); + obj = getRelationshipListMethod.invoke(instance); + } catch (InvocationTargetException x) { + Throwable cause = x.getCause(); + } + } + if(obj != null && obj instanceof RelationshipList){ + relationshipList = (RelationshipList)obj; + } else { + relationshipList = new RelationshipList(); + Method setRelationshipListMethod = resourceClass.getMethod("setRelationshipList", RelationshipList.class); + if(setRelationshipListMethod != null){ + try { + setRelationshipListMethod.setAccessible(true); + Object arglist[] = new Object[1]; + arglist[0] = relationshipList; + + obj = setRelationshipListMethod.invoke(instance, arglist); + } catch (InvocationTargetException x) { + Throwable cause = x.getCause(); + } + } + } + + List relationships = relationshipList.getRelationship(); + + int i = 0; + while(true){ + int j = 0; + String searchKey = "relationship-list.relationship[" + i + "].related-to"; + if(!parms.containsKey(searchKey)) + break; + Relationship relationship = new Relationship(); + relationships.add(relationship); + + String relatedTo = parms.get(searchKey); + relationship.setRelatedTo(relatedTo); + + List relData = relationship.getRelationshipData(); +// if(relData == null) { +// relData = new LinkedList(); +// relationship.setRelationshipData(relData); +// } + + while(true) { + String searchRelationshipKey = "relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-key"; + String searchRelationshipValue = "relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-value"; + if(!parms.containsKey(searchRelationshipKey)) + break; + + RelationshipData relDatum = new RelationshipData(); + relDatum.setRelationshipKey(parms.get(searchRelationshipKey)); + relDatum.setRelationshipValue(parms.get(searchRelationshipValue)); + relData.add(relDatum); + j++; + } + + i++; + } + } + + // 4. vlans + if(subResources.contains("vlans") && !vlansKeys.isEmpty()) { + Object obj = null; + Vlans vlanList = null; + Method getVLansMethod = resourceClass.getMethod("getVlans"); + if(getVLansMethod != null){ + try { + getVLansMethod.setAccessible(true); + obj = getVLansMethod.invoke(instance); + } catch (InvocationTargetException x) { + Throwable cause = x.getCause(); + } + } + if(obj != null && obj instanceof Vlans){ + vlanList = (Vlans)obj; + } else { + vlanList = new Vlans(); + Method setVlansMethod = resourceClass.getMethod("setVlans", Vlans.class); + if(setVlansMethod != null){ + try { + setVlansMethod.setAccessible(true); + Object arglist[] = new Object[1]; + arglist[0] = vlanList; + + obj = setVlansMethod.invoke(instance, arglist); + } catch (InvocationTargetException x) { + Throwable cause = x.getCause(); + } + } + } + + int i = 0; + while(true){ + String searchKey = "vlans.vlan[" + i + "].vlan-interface"; + if(!parms.containsKey(searchKey)) + break; + + String vlanInterface = parms.get("vlans.vlan[" + i + "].vlan-interface"); + String vlanIdInner = parms.get("vlans.vlan[" + i + "].vlan-id-inner"); + String vlanIdOute = parms.get("vlans.vlan[" + i + "].vlan-id-outer"); + String speedValue = parms.get("vlans.vlan[" + i + "].speed-value"); + String speedUnits = parms.get("vlans.vlan[" + i + "].speed-units"); + + Vlan vlan = new Vlan(); + vlan.setVlanInterface(vlanInterface); + + if(vlanIdInner != null) { + Long iVlanIdInner = Long.parseLong(vlanIdInner); + vlan.setVlanIdInner(iVlanIdInner); + } + + if(vlanIdOute != null) { + Long iVlanIdOuter = Long.parseLong(vlanIdOute); + vlan.setVlanIdOuter(iVlanIdOuter); + } + + if(speedValue != null) { + vlan.setSpeedValue(speedValue); + vlan.setSpeedUnits(speedUnits); + } + + vlanList.getVlan().add(vlan); + i++; + } + } + + // 5. metadata + if(subResources.contains("metadata") && !metadataKeys.isEmpty()) { + Object obj = null; + Metadata metadataList = null; + Method getMetadataMethod = resourceClass.getMethod("getMetadata"); + if(getMetadataMethod != null){ + try { + getMetadataMethod.setAccessible(true); + obj = getMetadataMethod.invoke(instance); + } catch (InvocationTargetException x) { + Throwable cause = x.getCause(); + } + } + if(obj != null && obj instanceof Metadata){ + metadataList = (Metadata)obj; + } else { + metadataList = new Metadata(); + Method setMetadataMethod = resourceClass.getMethod("setMetadata", Metadata.class); + if(setMetadataMethod != null){ + try { + setMetadataMethod.setAccessible(true); + Object arglist[] = new Object[1]; + arglist[0] = metadataList; + + obj = setMetadataMethod.invoke(instance, arglist); + } catch (InvocationTargetException x) { + Throwable cause = x.getCause(); + } + } + } + + if(metadataList.getMetadatum() == null) { +// metadataList.setMetadatum(new ArrayList()); + } + + // process data + int i = 0; + while(true){ + String metaKey = "metadata.metadatum[" + i + "].meta-key"; + if(!parms.containsKey(metaKey)) + break; + + String metaValue = parms.get("metadata.metadatum[" + i + "].meta-value"); + + Metadatum vlan = new Metadatum(); + vlan.setMetaname(metaKey); + vlan.setMetaval(metaValue); + + metadataList.getMetadatum().add(vlan); + i++; + } + + } + + + // 6. Prepare AAI request + String[] args = request.getArgsList(); + for(String arg : args) { + String modifiedKey = arg.replaceAll("-", "_"); + if(nameValues.containsKey(modifiedKey)) { + String argValue = nameValues.get(modifiedKey); + if(argValue != null) argValue = argValue.trim().replace("'", "").replace("$", "").replace("'", ""); + request.addRequestProperty(arg, argValue); + } + } + + request.processRequestPathValues(nameValues); + request.setRequestObject(instance); + Object response = getExecutor().post(request); + if(request.expectsDataFromPUTRequest()){ + if(response != null && response instanceof String) { + String rv = response.toString(); + QueryStatus retval = processResponseData(rv, resource, request, prefix, ctx, nameValues, null); + getLogger().debug("newModelSave - returning " + retval.toString()); + return retval; + } + } + + } catch(AAIServiceException exc){ + ctx.setAttribute(prefix + ".error.message", exc.getMessage()); + int returnCode = exc.getReturnCode(); + if(returnCode >= 300) { + ctx.setAttribute(prefix + ".error.http.response-code", "" + exc.getReturnCode()); + } + + if(returnCode == 400 || returnCode == 412) + return QueryStatus.FAILURE; + else if(returnCode == 404) + return QueryStatus.NOT_FOUND; + else { + getLogger().warn("Failed newModelSave - returning FAILURE", exc); + return QueryStatus.FAILURE; + } + } catch(Exception exc){ + getLogger().warn("Failed newModelSave - returning FAILURE", exc); + ctx.setAttribute(prefix + ".error.message", exc.getMessage()); + return QueryStatus.FAILURE; + } + + getLogger().debug("newModelSave - returning SUCCESS"); + return QueryStatus.SUCCESS; + } + + private static final String regex = "([A-Z][a-z,0-9]+)"; + private static final String replacement = "-$1"; + + private String camelCaseToDashedString(String propOrder) { + return propOrder.replaceAll(regex, replacement).toLowerCase(); + } + + private QueryStatus newModelProcessRelationshipList(Object instance, Map params, String prefix, SvcLogicContext ctx) throws Exception { + + Class resourceClass = instance.getClass(); + + Set relationshipKeys = new TreeSet(); + + Set set = params.keySet(); + + for(String attribute : set) { + String value = params.get(attribute); + + if(attribute.startsWith("relationship-list")) { + relationshipKeys.add(attribute); + } + } + + // 3. Process Relationships + // add relationship list + if(!relationshipKeys.isEmpty()) { + RelationshipList relationshipList = null; + Object obj = null; + Method getRelationshipListMethod = resourceClass.getMethod("getRelationshipList"); + if(getRelationshipListMethod != null){ + try { + getRelationshipListMethod.setAccessible(true); + obj = getRelationshipListMethod.invoke(instance); + } catch (InvocationTargetException x) { + Throwable cause = x.getCause(); + } + } + if(obj != null && obj instanceof RelationshipList){ + relationshipList = (RelationshipList)obj; + } else { + relationshipList = new RelationshipList(); + Method setRelationshipListMethod = resourceClass.getMethod("setRelationshipList", RelationshipList.class); + if(setRelationshipListMethod != null){ + try { + setRelationshipListMethod.setAccessible(true); + Object arglist[] = new Object[1]; + arglist[0] = relationshipList; + + obj = setRelationshipListMethod.invoke(instance, arglist); + } catch (InvocationTargetException x) { + Throwable cause = x.getCause(); + } + } + } + + boolean createdNewRelationships = false; + List relationships = relationshipList.getRelationship(); + if(relationships == null) { + relationships = new ArrayList(); + createdNewRelationships = true; + } + + int i = 0; + int j = 0; + while(true){ + String searchKey = "relationship-list.relationship[" + i + "].related-to"; + if(!params.containsKey(searchKey)) + break; + + j = 0; + String relatedTo = params.get(searchKey); + String relatedLinkKey = "relationship-list.relationship[" + i + "].related-link"; + String relatedLink = null; + if(params.containsKey(relatedLinkKey)) { + relatedLink = params.get(relatedLinkKey); + } + + Relationship relationship = new Relationship(); + relationships.add(relationship); + relationship.setRelatedTo(relatedTo); + if(relatedLink != null) { + relationship.setRelatedLink(relatedLink); + } else { + List relData = relationship.getRelationshipData(); + + while(true) { + String searchRelationshipKey = "relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-key"; + String searchRelationshipValue = "relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-value"; + if(!params.containsKey(searchRelationshipKey)) + break; + + RelationshipData relDatum = new RelationshipData(); + relDatum.setRelationshipKey(params.get(searchRelationshipKey)); + relDatum.setRelationshipValue(params.get(searchRelationshipValue)); + relData.add(relDatum); + j++; + } + } + + + i++; + } + } + + return QueryStatus.SUCCESS; + } + + private Relationship findRelationship(List relationships, String relatedTo) { + if(relatedTo == null) + return null; + + for(Relationship relationship : relationships) { + if(relationship.getRelatedTo().equals(relatedTo)){ + return relationship; + } + } + return null; + } + + protected HashMap keyToHashMap(String key, SvcLogicContext ctx) { + if (key == null) { + return (null); + } + + getLogger().debug("Converting key [" + key + "] to where clause"); + + if (key.startsWith("'") && key.endsWith("'")) { + key = key.substring(1, key.length() - 1); + + getLogger().debug("Stripped outer single quotes - key is now [" + key + "]"); + } + + String[] keyTerms = key.split("\\s+"); + + StringBuffer whereBuff = new StringBuffer(); + String term1 = null; + String op = null; + String term2 = null; + HashMap results = new HashMap(); + + for (int i = 0; i < keyTerms.length; i++) { + if (term1 == null) { + if ("and".equalsIgnoreCase(keyTerms[i]) + || "or".equalsIgnoreCase(keyTerms[i])) { + // Skip over ADD/OR + } else { + term1 = resolveTerm(keyTerms[i], ctx); + } + } else if (op == null) { + if ("==".equals(keyTerms[i])) { + op = "="; + } else { + op = keyTerms[i]; + } + } else { + term2 = resolveTerm(keyTerms[i], ctx); + term2 = term2.trim().replace("'", "").replace("$", "").replace("'", ""); + results.put(term1, term2); + + term1 = null; + op = null; + term2 = null; + } + } + + return (results); + } + + private String resolveTerm(String term, SvcLogicContext ctx) { + if (term == null) { + return (null); + } + + getLogger().debug("resolveTerm: term is " + term); + + if (term.startsWith("$") && (ctx != null)) { + // Resolve any index variables. + + return ("'" + resolveCtxVariable(term.substring(1), ctx) + "'"); + } else if (term.startsWith("'") || term.startsWith("\"")) { + return (term); + } else { + return (term.replaceAll("-", "_")); + + } + + } + + private String resolveCtxVariable(String ctxVarName, SvcLogicContext ctx) { + + if (ctxVarName.indexOf('[') == -1) { + // Ctx variable contains no arrays + return (ctx.getAttribute(ctxVarName)); + } + + // Resolve any array references + StringBuffer sbuff = new StringBuffer(); + String[] ctxVarParts = ctxVarName.split("\\["); + sbuff.append(ctxVarParts[0]); + for (int i = 1; i < ctxVarParts.length; i++) { + if (ctxVarParts[i].startsWith("$")) { + int endBracketLoc = ctxVarParts[i].indexOf("]"); + if (endBracketLoc == -1) { + // Missing end bracket ... give up parsing + getLogger().warn("Variable reference " + ctxVarName + + " seems to be missing a ']'"); + return (ctx.getAttribute(ctxVarName)); + } + + String idxVarName = ctxVarParts[i].substring(1, endBracketLoc); + String remainder = ctxVarParts[i].substring(endBracketLoc); + + sbuff.append("["); + sbuff.append(ctx.getAttribute(idxVarName)); + sbuff.append(remainder); + + } else { + // Index is not a variable reference + sbuff.append("["); + sbuff.append(ctxVarParts[i]); + } + } + + return (ctx.getAttribute(sbuff.toString())); + } + + + public QueryStatus backup(Map params, SvcLogicContext ctx) throws SvcLogicException { + String resource = params.get("resource").toLowerCase(); + String prefix = params.get("data-key"); + + HashMap nameValues = new HashMap(); + if(AAIRequest.createRequest(resource, nameValues) != null) { + + try { + return newModelBackupRequest(resource, params, prefix, ctx); + } catch (Exception exc) { + getLogger().warn("Failed backup - returning FAILURE", exc); + return QueryStatus.FAILURE; + } + } + + return QueryStatus.NOT_FOUND; + } + + @Override + public QueryStatus restore(Map params, SvcLogicContext ctx) throws SvcLogicException { + + QueryStatus retval = QueryStatus.SUCCESS; + String resource = params.get("resource").toLowerCase(); + String prefix = params.get("data-key"); + + HashMap nameValues = new HashMap(); + if(AAIRequest.createRequest(resource, nameValues) != null) { + + try { + retval = newModelBackupRequest(resource, params, "tmpRestore", ctx); + if(retval == QueryStatus.SUCCESS) { + String current_json = ctx.getAttribute("tmpRestore"); + ctx. setAttribute("tmpRestore", null); + + String snapshot_json = ctx.getAttribute(prefix); + } + } catch (Exception exc) { + getLogger().warn("Failed restore - returning FAILURE", exc); + return QueryStatus.FAILURE; + } + } + + return QueryStatus.NOT_FOUND; + } + + protected Map objectToProperties(Object object) { + ObjectMapper mapper = AAIService.getObjectMapper(); + return mapper.convertValue(object, Map.class); + } + + static T valueOf(Class klazz, String arg) { + Exception cause = null; + T ret = null; + try { + ret = klazz.cast(klazz.getDeclaredMethod("valueOf", String.class).invoke(null, arg)); + } catch (NoSuchMethodException exc) { + LoggerFactory.getLogger(AAIService.class).warn("Wrong data type", exc); + ret = klazz.cast(arg); + } catch (IllegalAccessException e) { + cause = e; + } catch (InvocationTargetException e) { + cause = e; + } + if (cause == null) { + return ret; + } else { + throw new IllegalArgumentException(cause); + } + } + + private QueryStatus processDeleteRelationshipList(String resource, String key, SvcLogicContext ctx, HashMap nameValues) { + try { + AAIRequest request = AAIRequest.createRequest(resource, nameValues); + if(request == null) { + return QueryStatus.FAILURE; + } + + request.processRequestPathValues(nameValues); + URL url = request.getRequestUrl("GET", null); + + Class resourceClass = request.getModelClass(); + Object instance = getResource(url.toString(), resourceClass); + if(instance == null) + return QueryStatus.NOT_FOUND; + + // get resource version + String resourceVersion = null; + Method getResourceVersionMethod = resourceClass.getMethod("getResourceVersion"); + if(getResourceVersionMethod != null){ + try { + getResourceVersionMethod.setAccessible(true); + Object object = getResourceVersionMethod.invoke(instance); + if(object != null) + resourceVersion = object.toString(); + } catch (InvocationTargetException x) { + Throwable cause = x.getCause(); + } + } + + RelationshipList relationshipList = null; + Object obj = null; + Method getRelationshipListMethod = resourceClass.getMethod("getRelationshipList"); + if(getRelationshipListMethod != null){ + try { + getRelationshipListMethod.setAccessible(true); + obj = getRelationshipListMethod.invoke(instance); + } catch (InvocationTargetException x) { + Throwable cause = x.getCause(); + } + } + if(obj != null && obj instanceof RelationshipList){ + relationshipList = (RelationshipList)obj; + } else { + getLogger().debug("No relationships found to process."); + return QueryStatus.NOT_FOUND; + } + + if(relationshipList.getRelationship() == null || relationshipList.getRelationship().isEmpty()) { + return QueryStatus.NOT_FOUND; + } + String relatedTo = nameValues.get("related_to"); + if(relatedTo == null) { + return QueryStatus.FAILURE; + } + + relatedTo = relatedTo.replaceAll("_", "-"); + + String relatedLink = nameValues.get("relationship.related_link"); + if(relatedLink != null) { + relatedLink = URLDecoder.decode(relatedLink, "UTF-8"); + } + + List relationships = relationshipList.getRelationship(); + List relationshipsToDelete = new LinkedList(); + + for(Relationship relationship : relationships) { + if(relatedTo.equals(relationship.getRelatedTo())) { + if(relatedLink != null) { + if(relationship.getRelatedLink() != null ) { + String localRelatedLink = relationship.getRelatedLink(); + localRelatedLink = URLDecoder.decode(localRelatedLink, "UTF-8"); + if(localRelatedLink.endsWith(relatedLink)) { + getLogger().debug(String.format("Found relationship of '%s' to keyword '%s'", relationship.getRelatedTo(), relatedTo)); + relationshipsToDelete.add(relationship); + } + } + } else { + getLogger().debug(String.format("Found relationship of '%s' to keyword '%s'", relationship.getRelatedTo(), relatedTo)); + relationshipsToDelete.add(relationship); + } + } + } + if(relationshipsToDelete == null || relationshipsToDelete.isEmpty()) { + getLogger().info(String.format("Relationship has not been found for %s", key)); + return QueryStatus.NOT_FOUND; + } + + String path = url.toString(); + path = path + "/relationship-list/relationship"; + URL deleteUrl = new URL(path); + + ObjectMapper mapper = AAIService.getObjectMapper(); + + boolean cumulativeResponse = true; + + for(Relationship targetRelationship : relationshipsToDelete) { + String json_text = mapper.writeValueAsString(targetRelationship); + boolean response = deleteRelationshipList(deleteUrl, json_text); + if(!response) + cumulativeResponse = response; + + } + + if(!cumulativeResponse) + return QueryStatus.FAILURE; + + return QueryStatus.SUCCESS; + + } catch(Exception exc) { + getLogger().warn("processDelete", exc); + return QueryStatus.FAILURE; + } + } + + static final Map ctxGetBeginsWith( SvcLogicContext ctx, String prefix ) { + Map tmpPrefixMap = new HashMap(); + + if(prefix == null || prefix.isEmpty()){ + return tmpPrefixMap; + } + + for( String key : ctx.getAttributeKeySet() ) { + if( key.startsWith(prefix) ) { + String tmpKey = key.substring(prefix.length() + 1); + tmpPrefixMap.put( tmpKey, ctx.getAttribute(key)); + } + } + + Map prefixMap = new HashMap(); + Pattern p = Pattern.compile(".*\\[\\d\\]"); + + SortedSet keys = new TreeSet(tmpPrefixMap.keySet () ); + for(String key : keys) { + Matcher m = p.matcher(key); + if(m.matches()) { + continue; + } else if(key.endsWith("_length")) { + String listKey = key.substring(0, key.indexOf("_length")); + int max = Integer.parseInt(tmpPrefixMap.get(key)); + + ArrayList data = new ArrayList(); + for(int x = 0; x < max; x++){ + String tmpKey = String.format("%s[%d]", listKey, x); + String tmpValue = tmpPrefixMap.get(tmpKey); + if(tmpValue != null && !tmpValue.isEmpty()) { + data.add(tmpValue); + } + } + if(!data.isEmpty()) { + prefixMap.put(listKey, data.toString()); + } else { + prefixMap.put(key, tmpPrefixMap.get(key)); + } + } else { + prefixMap.put(key, tmpPrefixMap.get(key)); + } + } + + return prefixMap; + } + + /** + */ + protected NamedQueryData extractNamedQueryDataFromQueryPrefix(HashMap nameValues, Map parms) { + if(parms.isEmpty()) { + return null; + } + + NamedQueryData data = new NamedQueryData(); + + // query parameters + if(data.getQueryParameters() == null) { + data.setQueryParameters(new QueryParameters()); + } + String namedQueryUuid = nameValues.get("named-query-uuid".replaceAll("-", "_")); + if(namedQueryUuid == null) { + namedQueryUuid = parms.get("query-parameters.named-query.named-query-uuid"); + } + NamedQuery namedQuery = new NamedQuery(); + namedQuery.setNamedQueryUuid(namedQueryUuid); + data.getQueryParameters().setNamedQuery(namedQuery); + + // instance filters + if(data.getInstanceFilters() == null) { + data.setInstanceFilters(new InstanceFilters()); + } + + + String quantity = parms.get("instance-filters.instance-filter_length"); + if(quantity != null && StringUtils.isNumeric(quantity)) { + int max = Integer.parseInt(quantity); + for(int i = 0; i < max; i++) { + String keyPattern = String.format("instance-filters.instance-filter[%d].", i); + Set keys = parms.keySet(); + for(String key: keys) { + if(key.startsWith(keyPattern)){ + String value = parms.get(key); + String remainder = key.substring(keyPattern.length()); + String[] split = remainder.split("\\."); + getLogger().debug(String.format("%s", remainder)); + if("logical-link".equals(split[0])) { + InstanceFilter insf = null; + if(data.getInstanceFilters().getInstanceFilter().isEmpty()) { + insf = new InstanceFilter(); + data.getInstanceFilters().getInstanceFilter().add(insf); + } else { + insf = data.getInstanceFilters().getInstanceFilter().get(0); + } + LogicalLink logicalLink = insf.getLogicalLink(); + if(logicalLink == null) { + logicalLink = new LogicalLink(); + insf.setLogicalLink(logicalLink); + } + + switch(split[1]) { + case "link-name": + logicalLink.setLinkName(value); + break; + case "link-type": + logicalLink.setLinkType(value); + break; + case "operational-state": + logicalLink.setOperationalStatus(value); + break; + } + + } else if("pnf".equals(split[0])) { + Pnf pnf = new Pnf(); + pnf.setPnfName(value); + + InstanceFilter insf = new InstanceFilter(); + insf.setPnf(pnf); + data.getInstanceFilters().getInstanceFilter().add(insf); + + } else if("service-instance".equals(split[0])) { + ServiceInstance serviceInstance = new ServiceInstance(); + serviceInstance.setServiceInstanceId(value); + + InstanceFilter insf = new InstanceFilter(); + insf.setServiceInstance(serviceInstance); + data.getInstanceFilters().getInstanceFilter().add(insf); + + } else if("l3-network".equals(split[0])) { + L3Network l3Network = new L3Network(); + if("network-role".equals(split[1])) { + l3Network.setNetworkRole(value); + } + + InstanceFilter insf = new InstanceFilter(); + insf.setL3Network(l3Network); + data.getInstanceFilters().getInstanceFilter().add(insf); + } + } + } + } + } + + return data; + } + + public abstract T getResource(String key, Class type) throws AAIServiceException ; + protected abstract boolean deleteRelationshipList(URL url, String caller) throws AAIServiceException; +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIExecutorInterface.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIExecutorInterface.java new file mode 100644 index 00000000..d315bad1 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIExecutorInterface.java @@ -0,0 +1,30 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +public interface AAIExecutorInterface { + public Object get(AAIRequest request) throws AAIServiceException; + public Object post(AAIRequest request) throws AAIServiceException; + public Boolean delete(AAIRequest request, String resourceVersion) throws AAIServiceException; + public Object query(AAIRequest request, Class clas) throws AAIServiceException; + public Boolean patch(AAIRequest request, String resourceVersion) throws AAIServiceException; +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIRequest.java new file mode 100644 index 00000000..4f2181f6 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIRequest.java @@ -0,0 +1,420 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.BitSet; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; +import java.util.TreeSet; + +import org.apache.commons.lang.StringUtils; +import org.openecomp.aai.inventory.v10.GenericVnf; +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.FrameworkUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public abstract class AAIRequest { + protected static final Logger LOG = LoggerFactory.getLogger(AAIRequest.class); + + protected static final String TARGET_URI = "org.onap.ccsdk.sli.adaptors.aai.uri"; + + protected static final String MASTER_REQUEST = "master-request"; + + public static final String RESOURCE_VERSION = "resource-version"; + + public static final String DEPTH = "depth"; + + protected static Properties configProperties; + protected final String target_uri; + protected static AAIService aaiService; + + protected AAIDatum requestDatum; + + protected final Properties requestProperties = new Properties(); + + + public static AAIRequest createRequest(String resoourceName, Map nameValues){ + + String resoource = resoourceName; + + if(resoource == null) + return null; + + if(resoource.contains(":")) { + String[] tokens = resoource.split(":"); + if(tokens != null && tokens.length > 0) { + resoource = tokens[0]; + } + } + + if(nameValues.containsKey("selflink")){ + Class clazz = null; + try { + clazz = getClassFromResource(resoource) ; + } catch (ClassNotFoundException e) { + LOG.warn("AAIRequest does not support class: " + e.getMessage()); + return null; + } + + if(clazz != null) + return new SelfLinkRequest(clazz); + else + return null; + } + + switch(resoource){ + case "generic-query": + return new GenericQueryRequest(); + case "named-query": + return new NamedQueryRequest(); + case "nodes-query": + return new NodesQueryRequest(); + case "custom-query": + return new CustomQueryRequest(); + case "linterface": + return new LInterfaceRequest(LInterfaceRequest.TYPE.L2_BRIDGE_SBG); + case "l2-bridge-sbg": + return new SubInterfaceRequest(SubInterfaceRequest.TYPE.L2_BRIDGE_SBG); + case "l2-bridge-bgf": + return new SubInterfaceRequest(SubInterfaceRequest.TYPE.L2_BRIDGE_BGF); + case "echo": + case "test": + return new EchoRequest(); + + default: + { + AAIRequest request = getRequestFromResource(resoource); + if(request == null) { + return null; + } + return request; + } + } + } + + + /** + * Map containing resource tag to its bit position in bitset mapping + */ + private static Map tagValues = new LinkedHashMap(); + /** + * Map containing bitset value of the path to its path mapping + */ + private static Map bitsetPaths = new LinkedHashMap(); + + + public static void setProperties(Properties props, AAIService aaiService) { + AAIRequest.configProperties = props; + AAIRequest.aaiService = aaiService; + + try + { + URL url = null; + Bundle bundle = FrameworkUtil.getBundle(AAIServiceActivator.class); + if(bundle != null) { + BundleContext ctx = bundle.getBundleContext(); + if(ctx == null) + return; + + url = ctx.getBundle().getResource(AAIService.PATH_PROPERTIES); + } else { + url = aaiService.getClass().getResource("/aai-path.properties"); + } + + InputStream in = url.openStream(); + Reader reader = new InputStreamReader(in, "UTF-8"); + + Properties properties = new Properties(); + properties.load(reader); + LOG.info("loaded " + properties.size()); + + Set keys = properties.stringPropertyNames(); + + int index = 0; + Set resourceNames = new TreeSet(); + + for(String key : keys) { + String[] tags = key.split("\\|"); + for(String tag : tags) { + if(!resourceNames.contains(tag)) { + resourceNames.add(tag); + tagValues.put(tag, Integer.toString(++index)); + } + } + BitSet bs = new BitSet(256); + for(String tag : tags) { + String value = tagValues.get(tag); + Integer bitIndex = Integer.parseInt(value) ; + bs.set(bitIndex); + } + String path = properties.getProperty(key); + LOG.info(String.format("bitset %s\t\t%s", bs.toString(), path)); + bitsetPaths.put(bs, path); + } + LOG.info("loaded " + resourceNames.toString()); + } + catch (Exception e) + { + LOG.error("Caught exception", e); + } + } + + public AAIRequest() { + target_uri = configProperties.getProperty(TARGET_URI); + } + + public void addRequestProperty(String key, String value) { + requestProperties.put(key, value); + } + + public final void setRequestObject(AAIDatum value) { + requestDatum = value; + } + + public final AAIDatum getRequestObject() { + return requestDatum; + } + + public final void addMasterRequest(AAIRequest masterRequest) { + requestProperties.put(MASTER_REQUEST, masterRequest); + } + + protected static String encodeQuery(String param) throws UnsupportedEncodingException { + return URLEncoder.encode(param, "UTF-8").replace("+", "%20"); + } + + protected void handleException(AAIRequest lInterfaceRequest, JsonProcessingException exc) { + aaiService.getLogger().warn("Could not deserialize object of type " + lInterfaceRequest.getClass().getSimpleName(), exc) ; + } + +// public abstract URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException; + + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = null; + + request_url = target_uri + getRequestPath(); + + Set uniqueResources = extractUniqueResourceSetFromKeys(requestProperties.stringPropertyNames()); + +// request_url = processPathData(request_url, requestProperties); + + for(String resoourceName:uniqueResources) { + AAIRequest locRequest = AAIRequest.createRequest(resoourceName, new HashMap()); + if(locRequest != null) { + Class clazz = locRequest.getClass(); + Method function = null; + try { + function = clazz.getMethod("processPathData", request_url.getClass(), requestProperties.getClass()); + request_url = (String) function.invoke(null, request_url, requestProperties); + } catch (Exception e) { + e.printStackTrace(); + } +// request_url = locRequest.processPathData(request_url, requestProperties); + } + } + + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + + + return http_req_url; + } + + + protected String getRequestPath() throws MalformedURLException { + Set uniqueResources = extractUniqueResourceSetFromKeys(requestProperties.stringPropertyNames()); + BitSet bitset = new BitSet(); + for(String key : uniqueResources) { + if(tagValues.containsKey(key)) { + Object tmpValue = tagValues.get(key); + if(tmpValue != null) { + String value = tmpValue.toString(); + int bitIndex = Integer.parseInt(value); + bitset.set(bitIndex); + } + } + } + + String path = bitsetPaths.get(bitset); + if(path == null) { + throw new MalformedURLException("PATH not found for key string containing valies :" +requestProperties.toString()); + } + return path; + } + + public abstract URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException; + + public abstract String toJSONString(); + + public abstract String[] getArgsList(); + + public abstract Class getModelClass() ; + + public String getPrimaryResourceName(String resource) { + return resource; + } + + public String formatKey(String argument) { + return argument; + } + + public AAIDatum jsonStringToObject(String jsonData) throws JsonParseException, JsonMappingException, IOException { + if(jsonData == null) { + return null; + } + + AAIDatum response = null; + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(jsonData, getModelClass()); + return response; + } + + protected static Set extractUniqueResourceSetFromKeys(Set keySet) { + Set uniqueResources = new TreeSet(); + List keys = new ArrayList(keySet); + for(String resource : keys) { + if(resource.contains(".")) { + String [] split = resource.split("\\."); + uniqueResources.add(split[0].replaceAll("_", "-")); + } + } + return uniqueResources; + } + + public void processRequestPathValues(Map nameValues) { + Set uniqueResources = extractUniqueResourceSetFromKeys(nameValues.keySet()); + + Set tokens = new TreeSet(); + tokens.add(DEPTH); + tokens.addAll(Arrays.asList(this.getArgsList())); + + for(String resoourceName:uniqueResources) { + AAIRequest locRequest = AAIRequest.createRequest(resoourceName, nameValues); + if(locRequest != null) + tokens.addAll(Arrays.asList(locRequest.getArgsList())); + } + + String[] arguments = tokens.toArray(new String[0]); + for(String name : arguments) { + String tmpName = name.replaceAll("-", "_"); + String value = nameValues.get(tmpName); + if(value != null && !value.isEmpty()) { + value = value.trim().replace("'", "").replace("$", "").replace("'", ""); + this.addRequestProperty(name, value); + } + } + } + + public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + return request_url; + } + + public boolean isDeleteDataRequired() { + return false; + } + + ObjectMapper getObjectMapper() { + return AAIService.getObjectMapper(); + } + + protected static Class getClassFromResource(String resoourceName) throws ClassNotFoundException { + String className = GenericVnf.class.getName(); + String[] split = resoourceName.split("-"); + for(int i = 0; i < split.length; i++) { + split[i] = StringUtils.capitalize(split[i]); + } + + String caps = StringUtils.join(split); + className = className.replace("GenericVnf", caps); + Class clazz = null; + try { + clazz = (Class)Class.forName(className); + } catch (ClassNotFoundException e) { + LOG.warn("AAIRequest does not support class: " + e.getMessage()); + return null; + } + + return clazz; + } + + protected static AAIRequest getRequestFromResource(String resoourceName) { + + Class clazz = null; + try { + clazz = getClassFromResource(resoourceName); + } catch (ClassNotFoundException e) { + LOG.warn("AAIRequest does not support class: " + e.getMessage()); + return null; + } + if(clazz == null) { + return null; + } + GenericRequest request = new GenericRequest(clazz); + return request; + } + + public static Map splitQuery(String query) throws UnsupportedEncodingException { + Map query_pairs = new LinkedHashMap(); + + if(query != null && !query.isEmpty()) { + String[] pairs = query.split("&"); + for (String pair : pairs) { + int idx = pair.indexOf("="); + query_pairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8")); + } + } + return query_pairs; + } + + protected boolean expectsDataFromPUTRequest() { + return false; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIService.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIService.java new file mode 100644 index 00000000..c50178bc --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIService.java @@ -0,0 +1,3278 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + + +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URISyntaxException; +import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.security.KeyManagementException; +import java.security.KeyStore; +import java.security.NoSuchAlgorithmException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Properties; +import java.util.Set; +import java.util.TimeZone; +import java.util.UUID; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSession; +import javax.net.ssl.SSLSocketFactory; +import javax.ws.rs.HttpMethod; +import javax.xml.bind.annotation.XmlElement; + +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.lang3.StringUtils; +import org.onap.ccsdk.sli.core.sli.ConfigurationException; +import org.onap.ccsdk.sli.core.sli.MetricLogger; +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicException; +import org.onap.ccsdk.sli.core.sli.SvcLogicResource; +import org.openecomp.aai.inventory.v10.AvailabilityZone; +import org.openecomp.aai.inventory.v10.Complex; +import org.openecomp.aai.inventory.v10.CtagPool; +import org.openecomp.aai.inventory.v10.DvsSwitch; +import org.openecomp.aai.inventory.v10.GenericVnf; +import org.openecomp.aai.inventory.v10.L3Network; +import org.openecomp.aai.inventory.v10.OamNetwork; +import org.openecomp.aai.inventory.v10.PInterface; +import org.openecomp.aai.inventory.v10.PhysicalLink; +import org.openecomp.aai.inventory.v10.Pserver; +import org.openecomp.aai.inventory.v10.ResultData; +import org.openecomp.aai.inventory.v10.SearchResults; +import org.openecomp.aai.inventory.v10.Service; +import org.openecomp.aai.inventory.v10.ServiceInstance; +import org.openecomp.aai.inventory.v10.SitePairSet; +import org.openecomp.aai.inventory.v10.Tenant; +import org.openecomp.aai.inventory.v10.Vce; +import org.openecomp.aai.inventory.v10.VnfImage; +import org.openecomp.aai.inventory.v10.VnfImages; +import org.openecomp.aai.inventory.v10.Vpe; +import org.openecomp.aai.inventory.v10.VplsPe; +import org.openecomp.aai.inventory.v10.VpnBinding; +import org.openecomp.aai.inventory.v10.Vserver; +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.onap.ccsdk.sli.adaptors.aai.data.ErrorResponse; +import org.onap.ccsdk.sli.adaptors.aai.data.RequestError; +import org.onap.ccsdk.sli.adaptors.aai.data.ResourceVersion; +import org.onap.ccsdk.sli.adaptors.aai.data.ServiceException; +import org.onap.ccsdk.sli.adaptors.aai.data.notify.NotifyEvent; +import org.onap.ccsdk.sli.adaptors.aai.data.v1507.VServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.databind.AnnotationIntrospector; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector; +import com.fasterxml.jackson.databind.type.TypeFactory; +import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector; +import com.sun.jersey.api.client.config.DefaultClientConfig; +import com.sun.jersey.client.urlconnection.HTTPSProperties; + + +public class AAIService extends AAIDeclarations implements AAIClient, SvcLogicResource { + + public static final String AAICLIENT_PROPERTIES = "/aaiclient.properties"; + public static final String PATH_PROPERTIES = "/aai-path.properties"; + + private static final Logger LOG = LoggerFactory.getLogger(AAIService.class); + + private final String truststore_path; + private final String truststore_password; + private final String keystore_path; + private final String keystore_password; + private final Boolean ignore_certificate_host_error; + + private final String target_uri; + private final String query_path; // = "sdn-zone-query"; + + private final String network_vserver_path; + + private final String svc_instance_path; + private final String svc_inst_qry_path; + + private final String vnf_image_query_path; + + private final String param_service_type; //= "service-type"; + + private final String ubb_notify_path; + private final String selflink_avpn; + private final String selflink_fqdn; + + private final String p_interface_path; + + private final String service_path; + private final String site_pair_set_path; + + private final int connection_timeout; + private final int read_timeout; + + // 1602 + private final String query_nodes_path; + private final String update_path; + + private final String application_id; + + // authentication credentials + private String user_name; + private String user_password; + + // runtime + private final boolean runtimeOSGI; + + private SSLContext CTX; + + private final MetricLogger ml = new MetricLogger(); + + private final AAIRequestExecutor executor; + + public AAIService(URL propURL) { + LOG.info("Entered AAIService.ctor"); + + String runtime = System.getProperty("aaiclient.runtime"); + if(runtime != null && runtime.equals("OSGI")) { + runtimeOSGI = true; + } else { + runtimeOSGI = false; + } + + Properties props = null; + try { + props = initialize(propURL); + AAIRequest.setProperties(props, this); + + } catch(Exception exc){ + LOG.error("AicAAIResource.static", exc); + } + + executor = new AAIRequestExecutor(); + + user_name = props.getProperty(CLIENT_NAME); + user_password = props.getProperty(CLIENT_PWWD); + + if(user_name == null || user_name.isEmpty()){ + LOG.debug("Basic user name is not set"); + } + if(user_password == null || user_password.isEmpty()) { + LOG.debug("Basic password is not set"); + } + + truststore_path = props.getProperty(TRUSTSTORE_PATH); + truststore_password = props.getProperty(TRUSTSTORE_PSSWD); + keystore_path = props.getProperty(KEYSTORE_PATH); + keystore_password = props.getProperty(KEYSTORE_PSSWD); + + target_uri = props.getProperty(TARGET_URI); + query_path = props.getProperty(QUERY_PATH); + update_path = props.getProperty(UPDATE_PATH); + + String applicationId =props.getProperty(APPLICATION_ID); + if(applicationId == null || applicationId.isEmpty()) { + applicationId = "SDNC"; + } + application_id = applicationId; + + // connection timeout + int tmpConnectionTimeout = 30000; + int tmpReadTimeout = 30000; + + try { + String tmpValue = null; + tmpValue = props.getProperty(CONNECTION_TIMEOUT, "30000"); + tmpConnectionTimeout = Integer.parseInt(tmpValue); + tmpValue = props.getProperty(READ_TIMEOUT, "30000"); + tmpReadTimeout = Integer.parseInt(tmpValue); + } catch(Exception exc) { + LOG.error("Failed setting connection timeout", exc); + tmpConnectionTimeout = 30000; + tmpReadTimeout = 30000; + } + connection_timeout = tmpConnectionTimeout; + read_timeout = tmpReadTimeout; + + network_vserver_path =props.getProperty(NETWORK_VSERVER_PATH); + + svc_instance_path = props.getProperty(SVC_INSTANCE_PATH); // "/aai/v1/business/customers/customer/{customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances"); +// "/aai/v1/business/customers/customer/ma9181-203-customerid/service-subscriptions/service-subscription/ma9181%20Hosted%20Voice/service-instances"; + +// svc_inst_qry_path = props.getProperty(SVC_INST_QRY_PATH, "/aai/v1/search/generic-query?key=service-instance.service-instance-id:ma9181-204-instance&start-node-type=service-instance&include=service-instance"); + svc_inst_qry_path = props.getProperty(SVC_INST_QRY_PATH); // "/aai/v1/search/generic-query?key=service-instance.service-instance-id:{svc-instance-id}&start-node-type=service-instance&include=service-instance"); + + + param_service_type = props.getProperty(PARAM_SERVICE_TYPE, "service-type"); + + // P-Interfaces + p_interface_path = props.getProperty(P_INTERFACE_PATH); + + vnf_image_query_path = props.getProperty(VNF_IMAGE_QUERY_PATH); + + ubb_notify_path = props.getProperty(UBB_NOTIFY_PATH); + selflink_avpn = props.getProperty(SELFLINK_AVPN); + selflink_fqdn = props.getProperty(SELFLINK_FQDN); + + service_path = props.getProperty(SERVICE_PATH); + + site_pair_set_path = props.getProperty(SITE_PAIR_SET_PATH); + + query_nodes_path = props.getProperty(QUERY_NODES_PATH); + + String iche = props.getProperty(CERTIFICATE_HOST_ERROR); + boolean host_error = false; + if(iche != null && !iche.isEmpty()) { + host_error = Boolean.valueOf(iche); + } + + ignore_certificate_host_error = host_error; + + HttpsURLConnection.setDefaultHostnameVerifier( new HostnameVerifier(){ + public boolean verify(String string,SSLSession ssls) { + return ignore_certificate_host_error; + } + }); + + if(truststore_path != null && truststore_password != null && (new File(truststore_path)).exists()) { + System.setProperty("javax.net.ssl.trustStore", truststore_path); + System.setProperty("javax.net.ssl.trustStorePassword", truststore_password); + } + + if(keystore_path != null && keystore_password != null && (new File(keystore_path)).exists()) + { + DefaultClientConfig config = new DefaultClientConfig(); + //both jersey and HttpURLConnection can use this + SSLContext ctx = null; + try { + ctx = SSLContext.getInstance("TLS"); + + KeyManagerFactory kmf = null; + try { + String def = "SunX509"; + String storeType = "PKCS12"; + def = KeyStore.getDefaultType(); + kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + FileInputStream fin = new FileInputStream(keystore_path); +// KeyStore ks = KeyStore.getInstance("PKCS12"); + + String extension = keystore_path.substring(keystore_path.lastIndexOf(".") + 1); + + if(extension != null && !extension.isEmpty() && extension.equalsIgnoreCase("JKS")) { + storeType = "JKS"; + } + KeyStore ks = KeyStore.getInstance(storeType); + + char[] pwd = keystore_password.toCharArray(); + ks.load(fin, pwd); + kmf.init(ks, pwd); + } catch (Exception ex) { + LOG.error("AAIResource", ex); + } + + ctx.init(kmf.getKeyManagers(), null, null); + config.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties( new HostnameVerifier() { + @Override + public boolean verify( String s, SSLSession sslSession ) { + return ignore_certificate_host_error; + } + }, ctx)); + + CTX = ctx; + LOG.debug("SSLContext created"); + + } catch (KeyManagementException | NoSuchAlgorithmException exc) { + LOG.error("AAIResource", exc); + } + } + + LOG.info("AAIResource.ctor initialized."); + + try { + Field methodsField = HttpURLConnection.class.getDeclaredField("methods"); + methodsField.setAccessible(true); + // get the methods field modifiers + Field modifiersField = Field.class.getDeclaredField("modifiers"); + // bypass the "private" modifier + modifiersField.setAccessible(true); + + // remove the "final" modifier + modifiersField.setInt(methodsField, methodsField.getModifiers() & ~Modifier.FINAL); + + /* valid HTTP methods */ + String[] methods = { + "GET", "POST", "HEAD", "OPTIONS", "PUT", "DELETE", "TRACE", "PATCH" + }; + // set the new methods - including patch + methodsField.set(null, methods); + + } catch (SecurityException | IllegalArgumentException | IllegalAccessException | NoSuchFieldException e) { + e.printStackTrace(); + } + + } + + public void cleanUp() { + + } + + /** + * + * @param http_req_url + * @param method + * @return + * @throws Exception + */ + protected HttpURLConnection getConfiguredConnection(URL http_req_url, String method) throws Exception { + HttpURLConnection con = (HttpURLConnection) http_req_url.openConnection(); + + // Set up the connection properties + con.setRequestProperty( "Connection", "close" ); + con.setDoInput(true); + con.setDoOutput(true); + con.setUseCaches(false); + con.setConnectTimeout( connection_timeout ); + con.setReadTimeout( read_timeout ); + con.setRequestMethod( method ); + con.setRequestProperty( "Accept", "application/json" ); + con.setRequestProperty( "Content-Type", "PATCH".equalsIgnoreCase(method) ? "application/merge-patch+json" : "application/json" ); + con.setRequestProperty("X-FromAppId", application_id); + con.setRequestProperty("X-TransactionId",TransactionIdTracker.getNextTransactionId()); + con.setRequestProperty(MetricLogger.REQUEST_ID, ml.getRequestID()); + + if(user_name != null && !user_name.isEmpty() && user_password != null && !user_password.isEmpty()) { + String basicAuth = "Basic " + new String(Base64.encodeBase64((user_name + ":" + user_password).getBytes())); + con.setRequestProperty ("Authorization", basicAuth); + } + + if(con instanceof HttpsURLConnection && CTX != null) { + SSLSocketFactory sockFact = CTX.getSocketFactory(); + HttpsURLConnection.class.cast(con).setSSLSocketFactory( sockFact ); + } + return con; + } + + + @Override + public GenericVnf requestGenericVnfData(String vnf_id) throws AAIServiceException { + GenericVnf response = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("generic-vnf"); + request.addRequestProperty("generic-vnf.vnf-id", vnf_id); + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, GenericVnf.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); + throw new AAIServiceException(exc); + } + + return response; + + } + + @Override + public boolean postGenericVnfData(String vnf_id, GenericVnf data) throws AAIServiceException { + try { + AAIRequest request = AAIRequest.getRequestFromResource("generic-vnf"); + request.addRequestProperty("generic-vnf.vnf-id", vnf_id); + request.setRequestObject(data); + Object response = executor.post(request); + return true; + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestGenericVnfData", exc); + throw new AAIServiceException(exc); + } + } + + @Override + public boolean deleteGenericVnfData(String vnf_id, String resourceVersion) throws AAIServiceException { + boolean response = false; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("generic-vnf"); + request.addRequestProperty("generic-vnf.vnf-id", vnf_id); + response = executor.delete(request, resourceVersion); + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("deleteGenericVnfData", exc); + throw new AAIServiceException(exc); + } + return response; + } + + /* (non-Javadoc) + * @see org.onap.ccsdk.sli.adaptors.resource.aic.AnAIClient#requestSdnZoneQuery(java.lang.String, java.lang.String, java.lang.String) + */ + @Override + public Vce requestNetworkVceData(String vnf_id) throws AAIServiceException { + Vce response = null; + try { + AAIRequest request = AAIRequest.getRequestFromResource("vce"); + request.addRequestProperty("vce.vnf-id", vnf_id); + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, Vce.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); + throw new AAIServiceException(exc); + } + + return response; + } + + + /* (non-Javadoc) + * @see org.onap.ccsdk.sli.adaptors.resource.aic.AnAIClient#requestSdnZoneQuery(java.lang.String, java.lang.String, java.lang.String) + */ + @Override + public boolean deleteNetworkVceData(String vnf_id, String resourceVersion) throws AAIServiceException { + boolean response = false; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("vce"); + request.addRequestProperty("vce.vnf-id", vnf_id); + response = executor.delete(request, resourceVersion); + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("deleteNetworkVceData", exc); + throw new AAIServiceException(exc); + } + return response; + } + + /* (non-Javadoc) + * @see org.onap.ccsdk.sli.adaptors.resource.aic.AnAIClient#postNetworkVceData(java.lang.String, org.onap.ccsdk.sli.adaptors.resource.aic.aai.VCERequest) + */ + @Override + public boolean postNetworkVceData(String vnf_id, Vce data) throws AAIServiceException { + try { + AAIRequest request = AAIRequest.getRequestFromResource("vce"); + request.addRequestProperty("vce.vnf-id", vnf_id); + request.setRequestObject(data); + Object response = executor.post(request); + return true; + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestGenericVnfData", exc); + throw new AAIServiceException(exc); + } + } + + + @Override + public SearchResults requestServiceInstanceURL(String svc_instance_id) throws AAIServiceException { + SearchResults response = null; + InputStream inputStream = null; + + try { + String path = svc_inst_qry_path; + path = path.replace("{svc-instance-id}", encodeQuery(svc_instance_id)); + + String request_url = target_uri+path; + URL http_req_url = new URL(request_url); + + HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.GET); + + LOGwriteFirstTrace(HttpMethod.GET, http_req_url.toString()); + LOGwriteDateTrace("svc_instance_id", svc_instance_id); + + // Check for errors + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + // Process the response + LOG.debug("HttpURLConnection result:" + responseCode); + if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); + BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); + + ObjectMapper mapper = getObjectMapper(); + + if (responseCode == HttpURLConnection.HTTP_OK) { +// StringBuilder stringBuilder = new StringBuilder("\n"); +// String line = null; +// while( ( line = reader.readLine() ) != null ) { +// stringBuilder.append("\n").append( line ); +// } +// LOG.info(stringBuilder.toString()); + response = mapper.readValue(reader, SearchResults.class); + LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, "SUCCESS", mapper.writeValueAsString(response)); + } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) { + LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); + return response; + } else { + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); + throw new AAIServiceException(responseCode, errorresponse); + } + + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestServiceInstanceURL", exc); + throw new AAIServiceException(exc); + } finally { + if(inputStream != null){ + try { + inputStream.close(); + } catch(Exception exc) { + + } + } + } + return response; + } + + @Override + public ServiceInstance requestServiceInterfaceData(String customer_id, String service_type, String svc_instance_id) throws AAIServiceException { + ServiceInstance response = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("service-instance"); + request.addRequestProperty("customer.global-customer-id", customer_id); + request.addRequestProperty("ervice-subscription.service-type", service_type); + request.addRequestProperty("service-instance.service-instance-id", svc_instance_id); + + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, ServiceInstance.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestServiceInterfaceData", exc); + throw new AAIServiceException(exc); + } + return response; + } + + @Override + public boolean postServiceInterfaceData(String customer_id, String service_type, String svc_instance_id, ServiceInstance data) throws AAIServiceException { + try { + AAIRequest request = AAIRequest.getRequestFromResource("service-instance"); + request.addRequestProperty("customer.customer-id", customer_id); + request.addRequestProperty("service-subscription.service-type", service_type); + request.addRequestProperty("service-instance.service-instance-id", svc_instance_id); + request.setRequestObject(data); + Object response = executor.post(request); + return true; + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestGenericVnfData", exc); + throw new AAIServiceException(exc); + } + } + + + private static Properties initialize(URL url ) throws ConfigurationException { + + if(url == null) { + throw new NullPointerException(); + } + + InputStream is = null; + Properties props = new Properties(); + + try { + if(LOG.isDebugEnabled()) + LOG.info("Property file is: " + url.toString()); + + is = url.openStream(); + + props.load(is); + if(LOG.isDebugEnabled()) { + LOG.info("Properties loaded: " + props.size()); + Enumeration en = props.keys(); + + while(en.hasMoreElements()) { + String key = (String)en.nextElement(); + String property = props.getProperty(key); + LOG.debug(key + " : " + property); + } + } + } catch (Exception e) { + throw new ConfigurationException("Could not load properties file.", e); + } + return props; + } + + static class TransactionIdTracker { +// protected static AtomicLong tracker = new AtomicLong(); + + public static String getNextTransactionId() { +// long id = tracker.getAndIncrement(); +// String transactionId = String.format("N%016X", id); + String transactionId = UUID.randomUUID().toString(); + return transactionId; + } + + } + + protected void LOGwriteFirstTrace(String method, String url) { + String time = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").format(System.currentTimeMillis()); + LOG.info("A&AI transaction :"); + LOG.info("Request Time : " + time + ", Method : " + method); + LOG.info("Request URL : "+ url); + } + + protected void LOGwriteDateTrace(String name, String data) { + LOG.info("Input - " + name + " : " + data); + } + + protected void LOGwriteEndingTrace(int response_code, String comment, String data) { + LOG.info("Response code : " + response_code +", " + comment); + LOG.info(String.format("Response data : %s", data)); + } + + protected String encodeQuery(String param) throws UnsupportedEncodingException { + return URLEncoder.encode(param, "UTF-8").replace("+", "%20"); + } + + private String encodeCustomerURL(final String selection) + { + String encrypted_url = selection; + String apnpattern = + "/aai/v10/business/customers/customer/(.+)/service-subscriptions/service-subscription/(.+)/service-instances/service-instance/(.+)/"; + Pattern pattern = Pattern.compile(apnpattern); + + try { + URL url = new URL(selection); + String path = url.getPath(); + + LOG.info("Trying to match apn to <" + path + ">"); + + Matcher matcher = pattern.matcher(path); + + while(matcher.find()) { + String customer = matcher.group(1); + String subscription = matcher.group(2); + String service = matcher.group(3); + + encrypted_url = selection.replace(customer, encodeQuery(customer)); + encrypted_url = encrypted_url.replace(subscription, encodeQuery(subscription)); + encrypted_url = encrypted_url.replace(service, encodeQuery(service)); + } + } catch (Exception e) { + LOG.warn("", e); + } + + return encrypted_url; + } + + @Override + public Vpe requestNetworkVpeData(String vnf_id) throws AAIServiceException { + Vpe response = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("vpe"); + request.addRequestProperty("vpe.vnf-id", vnf_id); + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, Vpe.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); + throw new AAIServiceException(exc); + } + return response; + } + + @Override + public boolean postNetworkVpeData(String vnf_id, Vpe data) throws AAIServiceException { + try { + AAIRequest request = AAIRequest.getRequestFromResource("vpe"); + request.addRequestProperty("vpe.vnf-id", vnf_id); + request.setRequestObject(data); + Object response = executor.post(request); + return true; + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); + throw new AAIServiceException(exc); + } + } + + @Override + public boolean deleteNetworkVpeData(String vnf_id, String resourceVersion) throws AAIServiceException { + boolean response = false; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("vpe"); + request.addRequestProperty("vpe.vnf-id", vnf_id); + response = executor.delete(request, resourceVersion); + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); + throw new AAIServiceException(exc); + } + return response; + } + + @Override + public VplsPe requestNetworkVplsPeData(String equipment_name)throws AAIServiceException { + VplsPe response = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("vpls-pe"); + request.addRequestProperty("vpls-pe.equipment-name", equipment_name); + + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, VplsPe.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); + throw new AAIServiceException(exc); + } + return response; + } + + @Override + public boolean postNetworkVplsPeData(String equipment_name, VplsPe data) throws AAIServiceException { + try { + AAIRequest request = AAIRequest.getRequestFromResource("vpls-pe"); + request.addRequestProperty("vpls-pe.equipment-name", equipment_name); + request.setRequestObject(data); + Object response = executor.post(request); + return true; + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestGenericVnfData", exc); + throw new AAIServiceException(exc); + } + } + + @Override + public boolean deleteNetworkVplsPeData(String vnf_id, String resourceVersion) throws AAIServiceException { + boolean response = false; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("vpls-pe"); + request.addRequestProperty("vpls-pe.equipment-name", vnf_id); + response = executor.delete(request, resourceVersion); + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("deleteNetworkVplsPeData", exc); + throw new AAIServiceException(exc); + } + return response; + } + + @Override + public Complex requestNetworkComplexData(String pLocId) throws AAIServiceException { + Complex response = null; + InputStream inputStream = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("complex"); + request.addRequestProperty("complex.physical-location-id", pLocId); + + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, Complex.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestNetworkComplexData", exc); + throw new AAIServiceException(exc); + } finally { + if(inputStream != null){ + try { + inputStream.close(); + } catch(Exception exc) { + + } + } + } + return response; + } + + @Override + public boolean postNetworkComplexData(String vnf_id, Complex data) throws AAIServiceException { + try { + AAIRequest request = AAIRequest.getRequestFromResource("complex"); + request.addRequestProperty("complex.physical-location-id", vnf_id); + request.setRequestObject(data); + Object response = executor.post(request); + return true; + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("postNetworkComplexData", exc); + throw new AAIServiceException(exc); + } + } + + @Override + public boolean deleteNetworkComplexData(String pLocId, String resourceVersion) throws AAIServiceException { + boolean response = false; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("complex"); + request.addRequestProperty("complex.physical-location-id", pLocId); + + response = executor.delete(request, resourceVersion); + + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("deleteNetworkComplexData", exc); + throw new AAIServiceException(exc); + } + return response; + } + + /* + * (non-Javadoc) + * @see org.openecomp.sdnct.sli.aai.AAIClient#requestVServersData(java.lang.String, java.lang.String) + */ + @Override + public Vserver requestVServerData(String tenantId, String vserverId, String cloudOwner, String cloudRegionId) throws AAIServiceException { + Vserver response = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("vserver"); + request.addRequestProperty("cloud-region.cloud-owner", cloudOwner); + request.addRequestProperty("cloud-region.cloud-region-id", cloudRegionId); + request.addRequestProperty("tenant.tenant-id", tenantId); + request.addRequestProperty("vserver.vserver-id", vserverId); + + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, Vserver.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); + throw new AAIServiceException(exc); + } + return response; + } + + + @Override + public boolean postVServerData(String tenantId, String vserverId, String cloudOwner, String cloudRegionId, Vserver data) throws AAIServiceException { + try { + AAIRequest request = AAIRequest.getRequestFromResource("vserver"); + request.addRequestProperty("cloud-region.cloud-owner", cloudOwner); + request.addRequestProperty("cloud-region.cloud-region-id", cloudRegionId); + request.addRequestProperty("tenant.tenant-id", tenantId); + request.addRequestProperty("vserver.vserver-id", vserverId); + request.setRequestObject(data); + Object response = executor.post(request); + return true; + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("postNetworkComplexData", exc); + throw new AAIServiceException(exc); + } + } + + @Override + public boolean deleteVServerData(String tenant_id, String vserver_id, String cloudOwner, String cloudRegionId, String resourceVersion) throws AAIServiceException { + boolean response = false; + InputStream inputStream = null; + + try { + String local_network_complexes_path = network_vserver_path.replace("{tenant-id}", encodeQuery(tenant_id)); + local_network_complexes_path = local_network_complexes_path.replace("{vserver-id}", encodeQuery(vserver_id)); + local_network_complexes_path = local_network_complexes_path.replace("{cloud-owner}", encodeQuery(cloudOwner)); + local_network_complexes_path = local_network_complexes_path.replace("{cloud-region-id}", encodeQuery(cloudRegionId)); + + String request_url = target_uri+local_network_complexes_path; + if(resourceVersion!=null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.DELETE); + + LOGwriteFirstTrace(HttpMethod.DELETE, http_req_url.toString()); + LOGwriteDateTrace("tenant_id", tenant_id); + LOGwriteDateTrace("vserver_id", vserver_id); + LOGwriteDateTrace("cloud-owner", cloudOwner); + LOGwriteDateTrace("cloud-region-id", cloudRegionId); + + // Check for errors + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + // Process the response + LOG.debug("HttpURLConnection result:" + responseCode); + if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); + BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); + String line = null; + + ObjectMapper mapper = getObjectMapper(); + + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + StringBuilder stringBuilder = new StringBuilder(); + + while( ( line = reader.readLine() ) != null ) { + stringBuilder.append( line ); + } + LOGwriteEndingTrace(responseCode, "SUCCESS", stringBuilder.toString()); + response = true; + } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) { + LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); + response = false; + } else { + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); + throw new AAIServiceException(responseCode, errorresponse); + } + + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("deleteVServerData", exc); + throw new AAIServiceException(exc); + } finally { + if(inputStream != null){ + try { + inputStream.close(); + } catch(Exception exc) { + + } + } + } + return response; + } + + + /* + * (non-Javadoc) + * @see org.onap.ccsdk.sli.adaptors.aai.AAIClient#requestCtagPoolData(String) + */ + @Override + public CtagPool requestCtagPoolData(String physical_location_id, String target_pe, String availability_zone_name) throws AAIServiceException { + CtagPool response = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("ctag-pool"); + + request.addRequestProperty("ctag-pool.target-pe", target_pe); + request.addRequestProperty("ctag-pool.availability-zone-name", availability_zone_name); + request.addRequestProperty("complex.physical-location-id", physical_location_id); + + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, CtagPool.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestNetworkVceData", exc); + throw new AAIServiceException(exc); + } + return response; + } + + //==================== DvsSwitch ====================== + @Override + public DvsSwitch requestDvsSwitchData(String vnf_id) throws AAIServiceException { + DvsSwitch response = null; + InputStream inputStream = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("dvs-switch"); + request.addRequestProperty("dvs-switch.switch-name", vnf_id); + + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, DvsSwitch.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestDvsSwitchData", exc); + throw new AAIServiceException(exc); + } finally { + if(inputStream != null){ + try { + inputStream.close(); + } catch(Exception exc) { + + } + } + } + return response; + } + + @Override + public boolean postDvsSwitchData(String switch_name, DvsSwitch data) throws AAIServiceException { + try { + AAIRequest request = AAIRequest.getRequestFromResource("dvs-switch"); + request.addRequestProperty("dvs-switch.switch-name", switch_name); + request.setRequestObject(data); + Object response = executor.post(request); + return true; + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); + throw new AAIServiceException(exc); + } + } + + @Override + public boolean deleteDvsSwitchData(String vnf_id, String resourceVersion) throws AAIServiceException { + boolean response = false; + InputStream inputStream = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("dvs-switch"); + request.addRequestProperty("dvs-switch.switch-name", vnf_id); + response = executor.delete(request, resourceVersion); + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("deleteDvsSwitchData", exc); + throw new AAIServiceException(exc); + } + return response; + } + //================== End of DvsSwitch ================= + //==================== PhysicalLink ====================== + @Override + public PhysicalLink requestPhysicalLinkData(String linkName) throws AAIServiceException { + PhysicalLink response = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("physical-link"); + request.addRequestProperty("physical-link.link-name", linkName); + + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, PhysicalLink.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestPhysicalLinkData", exc); + throw new AAIServiceException(exc); + } + return response; + } + + @Override + public boolean postPhysicalLinkData(String linkName, PhysicalLink data) throws AAIServiceException { + try { + AAIRequest request = AAIRequest.getRequestFromResource("physical-link"); + request.addRequestProperty("physical-link.link-name", linkName); + request.setRequestObject(data); + Object response = executor.post(request); + return true; + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); + throw new AAIServiceException(exc); + } + } + + @Override + public boolean deletePhysicalLinkData(String linkName, String resourceVersion) throws AAIServiceException { + boolean response = false; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("physical-link"); + request.addRequestProperty("physical-link.link-name", linkName); + response = executor.delete(request, resourceVersion); + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("deletePhysicalLinkData", exc); + throw new AAIServiceException(exc); + } + return response; + } + //================== End of PhysicalLink ================= + //==================== PInterface ====================== + @Override + public PInterface requestPInterfaceData(String hostname, String interfaceName) throws AAIServiceException { + PInterface response = null; + + try { + AAIRequest request = new PInterfaceRequest(); + request.addRequestProperty(PInterfaceRequest.PINTERFACE_INTERFACE_NAME, interfaceName); + request.addRequestProperty(PInterfaceRequest.PSERVER_HOSTNAME, hostname); + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, PInterface.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); + throw new AAIServiceException(exc); + } + return response; + } + + @Override + public boolean postPInterfaceData(String hostname, String interfaceName, PInterface request) throws AAIServiceException { + InputStream inputStream = null; + + try { + + ObjectMapper mapper = getObjectMapper(); + String json_text = mapper.writeValueAsString(request); + + SSLSocketFactory sockFact = CTX.getSocketFactory(); + + String request_url = target_uri+p_interface_path; + String encoded_vnf = encodeQuery(hostname); + request_url = request_url.replace("{hostname}", encoded_vnf) ; + encoded_vnf = encodeQuery(interfaceName); + request_url = request_url.replace("{interface-name}", encoded_vnf) ; + URL http_req_url = new URL(request_url); + + HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.PUT); + + OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); + osw.write(json_text); + osw.flush(); + osw.close(); + + + LOGwriteFirstTrace("PUT", request_url); + LOGwriteDateTrace("hostname", hostname); + LOGwriteDateTrace("interface-name", interfaceName); + LOGwriteDateTrace("PInterface", json_text); + + // Check for errors + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + // Process the response + BufferedReader reader; + String line = null; + reader = new BufferedReader( new InputStreamReader( inputStream ) ); + + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + StringBuilder stringBuilder = new StringBuilder(); + + while( ( line = reader.readLine() ) != null ) { + stringBuilder.append( line ); + } + LOGwriteEndingTrace(responseCode, "SUCCESS", (stringBuilder != null) ? stringBuilder.toString() : "{no-data}"); + return true; + } else { + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); + + throw new AAIServiceException(responseCode, errorresponse); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("postPInterfaceData", exc); + throw new AAIServiceException(exc); + } finally { + try { + if(inputStream != null) + inputStream.close(); + } catch (Exception exc) { + + } + } + } + + @Override + public boolean deletePInterfaceData(String hostname, String interfaceName, String resourceVersion) throws AAIServiceException { + boolean response = false; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("p-interface"); + request.addRequestProperty("p-interface.interface-name", interfaceName); + request.addRequestProperty("pserver.hostname", hostname); + response = executor.delete(request, resourceVersion); + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("deletePInterfaceData", exc); + throw new AAIServiceException(exc); + } + return response; + } + //================== End of PInterface ================= + //==================== SitePairSet ====================== + @Override + public SitePairSet requestSitePairSetData(String sitePairSetId) throws AAIServiceException { + SitePairSet response = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("site-pair-set"); + request.addRequestProperty("site-pair-set.site-pair-set-id", sitePairSetId); + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, SitePairSet.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); + throw new AAIServiceException(exc); + } + return response; + } + + @Override + public boolean postSitePairSetData(String linkName, SitePairSet request) throws AAIServiceException { + InputStream inputStream = null; + + try { + + ObjectMapper mapper = getObjectMapper(); + String json_text = mapper.writeValueAsString(request); + + SSLSocketFactory sockFact = CTX.getSocketFactory(); + + String request_url = target_uri+site_pair_set_path; + String encoded_vnf = encodeQuery(linkName); + request_url = request_url.replace("{site-pair-set-id}", encoded_vnf) ; + URL http_req_url = new URL(request_url); + + HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.PUT); + + OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); + osw.write(json_text); + osw.flush(); + osw.close(); + + + LOGwriteFirstTrace("PUT", request_url); + LOGwriteDateTrace("link-name", linkName); + LOGwriteDateTrace("SitePairSet", json_text); + + // Check for errors + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + // Process the response + BufferedReader reader; + String line = null; + reader = new BufferedReader( new InputStreamReader( inputStream ) ); + + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + StringBuilder stringBuilder = new StringBuilder(); + + while( ( line = reader.readLine() ) != null ) { + stringBuilder.append( line ); + } + LOGwriteEndingTrace(responseCode, "SUCCESS", (stringBuilder != null) ? stringBuilder.toString() : "{no-data}"); + return true; + } else { + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); + + throw new AAIServiceException(responseCode, errorresponse); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("postSitePairSetData", exc); + throw new AAIServiceException(exc); + } finally { + try { + if(inputStream != null) + inputStream.close(); + } catch (Exception exc) { + + } + } + } + + @Override + public boolean deleteSitePairSetData(String linkName, String resourceVersion) throws AAIServiceException { + boolean response = false; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("site-pair-set"); + request.addRequestProperty("site-pair-set.site-pair-set-id", linkName); + response = executor.delete(request, resourceVersion); + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("deleteSitePairSetData", exc); + throw new AAIServiceException(exc); + } + + return response; + } + //================== End of SitePairSet ================= + //==================== Service ====================== + @Override + public Service requestServiceData(String serviceId) throws AAIServiceException { + Service response = null; + InputStream inputStream = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("service"); + request.addRequestProperty("service.service-id", serviceId); + + + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, Service.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestServiceData", exc); + throw new AAIServiceException(exc); + } + return response; + } + + @Override + public boolean postServiceData(String linkName, Service request) throws AAIServiceException { + InputStream inputStream = null; + + try { + + ObjectMapper mapper = getObjectMapper(); + String json_text = mapper.writeValueAsString(request); + + SSLSocketFactory sockFact = CTX.getSocketFactory(); + + String request_url = target_uri+service_path; + String encoded_vnf = encodeQuery(linkName); + request_url = request_url.replace("{service-id}", encoded_vnf) ; + URL http_req_url = new URL(request_url); + + HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.PUT); + + OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); + osw.write(json_text); + osw.flush(); + osw.close(); + + + LOGwriteFirstTrace("PUT", request_url); + LOGwriteDateTrace("service-id", linkName); + LOGwriteDateTrace("Service", json_text); + + // Check for errors + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + // Process the response + BufferedReader reader; + String line = null; + reader = new BufferedReader( new InputStreamReader( inputStream ) ); + + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + StringBuilder stringBuilder = new StringBuilder(); + + while( ( line = reader.readLine() ) != null ) { + stringBuilder.append( line ); + } + LOGwriteEndingTrace(responseCode, "SUCCESS", (stringBuilder != null) ? stringBuilder.toString() : "{no-data}"); + return true; + } else { + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); + + throw new AAIServiceException(responseCode, errorresponse); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("postServiceData", exc); + throw new AAIServiceException(exc); + } finally { + try { + if(inputStream != null) + inputStream.close(); + } catch (Exception exc) { + + } + } + } + + @Override + public boolean deleteServiceData(String service_id, String resourceVersion) throws AAIServiceException { + boolean response = false; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("service"); + request.addRequestProperty("service.service-id", service_id); + response = executor.delete(request, resourceVersion); + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("deleteServiceData", exc); + throw new AAIServiceException(exc); + } + + return response; + } + //================== End of Service ================= + + + + // 1507 - Request + @Override + public VServer dataChangeRequestVServerData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return this.getResource(url.toString(), VServer.class); + } + + @Override + public Pserver dataChangeRequestPServerData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return this.getResource(url.toString(), Pserver.class); + } + + @Override + public CtagPool dataChangeRequestCtagPoolData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return this.getResource(url.toString(), CtagPool.class); + } + + @Override + public VplsPe dataChangeRequestVplsPeData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return this.getResource(url.toString(), VplsPe.class); + } + + @Override + public Vpe dataChangeRequestVpeData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return this.getResource(url.toString(), Vpe.class); + } + + @Override + public DvsSwitch dataChangeRequestDvsSwitchData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return this.getResource(url.toString(), DvsSwitch.class); + } + + @Override + public OamNetwork dataChangeRequestOAMNetworkData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return this.getResource(url.toString(), OamNetwork.class); + } + + @Override + public AvailabilityZone dataChangeRequestAvailabilityZoneData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return this.getResource(url.toString(), AvailabilityZone.class); + } + + @Override + public Complex dataChangeRequestComplexData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return this.getResource(url.toString(), Complex.class); + } + + /* DELETE */ + public boolean dataChangeDeleteVServerData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); + } + + public boolean dataChangeDeleteCtagPoolData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); + } + + public boolean dataChangeDeleteVplsPeData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); + } + + public boolean dataChangeDeleteVpeData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); + } + + public boolean dataChangeDeleteDvsSwitchData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); + } + //OAM-Network: + public boolean dataChangeDeleteOAMNetworkData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); + } + //Availability-Zone: + public boolean dataChangeDeleteAvailabilityZoneData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); + } + //Complex: + public boolean dataChangeDeleteComplexData(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); + } + + private boolean deleteAAIEntity(URL url, String caller) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + boolean response = false; + InputStream inputStream = null; + + try { + URL http_req_url = url; + + HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.DELETE); + +// SSLSocketFactory sockFact = CTX.getSocketFactory(); +// con.setSSLSocketFactory( sockFact ); + + LOGwriteFirstTrace("DELETE", http_req_url.toString()); + + + // Check for errors + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + // Process the response + LOG.debug("HttpURLConnection result:" + responseCode); + if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); + BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); + String line = null; + + ObjectMapper mapper = getObjectMapper(); + + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + StringBuilder stringBuilder = new StringBuilder(); + + while( ( line = reader.readLine() ) != null ) { + stringBuilder.append( line ); + } + LOGwriteEndingTrace(responseCode, "SUCCESS", stringBuilder.toString()); + response = true; + } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) { + LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); + response = false; + } else { + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); + throw new AAIServiceException(responseCode, errorresponse); + } + + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn(caller, exc); + throw new AAIServiceException(exc); + } finally { + if(inputStream != null){ + try { + inputStream.close(); + } catch(Exception exc) { + + } + } + } + return response; + } + + /** + * Generic method to GET json data from an A&AI callback URL. + * Then convert that json to an Object. + * If successful the Object is attempted to be cast to the type parameter. + * + * @param key + * callback url for A&AI + * @param type + * the class of object that A&AI will return + * @return the object created from json or null if the response code is not 200 + * + * @throws AAIServiceException + * if empty or null key and or type or there's an error with processing + */ + public T dataChangeRequestAaiData(String key, Class type) throws AAIServiceException { + if (StringUtils.isEmpty(key) || type == null) { + throw new AAIServiceException("Key is empty or null and or type is null"); + } + + T response = null; + + SvcLogicContext ctx = new SvcLogicContext(); + if(!key.contains(" = ") && isValidURL(key)) { + key = String.format("selflink = '%s'", key); + } + HashMap nameValues = keyToHashMap(key, ctx); + + SelfLinkRequest request = new SelfLinkRequest(type); + request.processRequestPathValues(nameValues); + Object obj = this.getExecutor().query(request, type); + response = type.cast(obj); + + return response != null ? type.cast(response) : response; + } + + @Override + public Pserver requestPServerData(String hostname) throws AAIServiceException { + Pserver response = null; + InputStream inputStream = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("pserver"); + request.addRequestProperty("pserver.hostname", hostname); + + + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, Pserver.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestPServerData", exc); + throw new AAIServiceException(exc); + } + return response; + } + + @Override + public boolean postPServerData(String hostname, Pserver data) throws AAIServiceException { + try { + AAIRequest request = AAIRequest.getRequestFromResource("pserver"); + request.addRequestProperty("pserver.hostname", hostname); + request.setRequestObject(data); + Object response = executor.post(request); + return true; + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); + throw new AAIServiceException(exc); + } + } + + @Override + public boolean deletePServerData(String hostname, String resourceVersion) throws AAIServiceException { + boolean response = false; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("pserver"); + request.addRequestProperty("pserver.hostname", hostname); + response = executor.delete(request, resourceVersion); + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("deletePServerData", exc); + throw new AAIServiceException(exc); + } + + return response; + } + + + @Override + public L3Network requestL3NetworkData(String networkId) throws AAIServiceException { + L3Network response = null; + InputStream inputStream = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("l3-network"); + request.addRequestProperty("l3-network.network-id", networkId); + + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, L3Network.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestL3NetworkData", exc); + throw new AAIServiceException(exc); + } + return response; + } + + @Override + public L3Network requestL3NetworkQueryByName(String networkName) throws AAIServiceException { + L3Network response = null; + InputStream inputStream = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("l3-network"); + request.addRequestProperty("l3-network.network-name", networkName); + + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, L3Network.class); + } + + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestL3NetworkQueryByName", exc); + throw new AAIServiceException(exc); + } finally { + if(inputStream != null){ + try { + inputStream.close(); + } catch(Exception exc) { + + } + } + } + return response; + } + + @Override + public boolean postL3NetworkData(String networkId, L3Network data) throws AAIServiceException { + try { + AAIRequest request = AAIRequest.getRequestFromResource("l3-network"); + request.addRequestProperty("l3-network.network-id", networkId); + request.setRequestObject(data); + Object response = executor.post(request); + return true; + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); + throw new AAIServiceException(exc); + } + } + + @Override + public boolean deleteL3NetworkData(String networkId, String resourceVersion) throws AAIServiceException { + boolean response = false; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("l3-network"); + request.addRequestProperty("l3-network.network-id", networkId); + response = executor.delete(request, resourceVersion); + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("deleteL3NetworkData", exc); + throw new AAIServiceException(exc); + } + + return response; + } + + + @Override + public VpnBinding requestVpnBindingData(String vpnId) throws AAIServiceException { + VpnBinding response = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("vpn-binding"); + request.addRequestProperty("vpn-binding.vpn-id", vpnId); + + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, VpnBinding.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestVpnBindingData", exc); + throw new AAIServiceException(exc); + } + return response; + } + + @Override + public boolean deleteVpnBindingData(String vpnId, String resourceVersion) throws AAIServiceException { + boolean response = false; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("vpn-binding"); + request.addRequestProperty("vpn-binding.vpn-id", vpnId); + response = executor.delete(request, resourceVersion); + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("deleteVpnBindingData", exc); + throw new AAIServiceException(exc); + } + return response; + } + + + @Override + public VnfImage requestVnfImageData(String att_uuid) throws AAIServiceException { + VnfImage response = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("vnf-image"); + request.addRequestProperty("vnf-image.att-uuid", att_uuid); + + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, VnfImage.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestVnfImageData", exc); + throw new AAIServiceException(exc); + } + return response; + } + + @Override + public VnfImage requestVnfImageDataByVendorModel(String vendor, String model) throws AAIServiceException { + return requestVnfImageDataByVendorModelVersion(vendor, model, null); + } + + @Override + public VnfImage requestVnfImageDataByVendorModelVersion(String vendor, String model, String version) throws AAIServiceException + { + List responseList = new ArrayList(); + VnfImage response = null; + InputStream inputStream = null; + + try { + String request_url = target_uri+vnf_image_query_path + (version==null? "": "&application-version={application_version}"); + request_url = request_url.replace("{application_vendor}", encodeQuery(vendor)) ; + request_url = request_url.replace("{application_model}", encodeQuery(model)) ; + if(version != null) { + request_url = request_url.replace("{application_version}", encodeQuery(version)) ; + } + URL http_req_url = new URL(request_url); + + HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.GET); + + LOGwriteFirstTrace(HttpMethod.GET, http_req_url.toString()); + LOGwriteDateTrace("application_vendor", vendor); + LOGwriteDateTrace("application_model", model); + if(version != null) { + LOGwriteDateTrace("application_version", version); + } + + // Check for errors + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + // Process the response + LOG.debug("HttpURLConnection result:" + responseCode); + if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); + BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); + + ObjectMapper mapper = getObjectMapper(); + + if (responseCode == HttpURLConnection.HTTP_OK) { +// StringBuilder stringBuilder = new StringBuilder("\n"); +// String line = null; +// while( ( line = reader.readLine() ) != null ) { +// stringBuilder.append("\n").append( line ); +// } +// LOG.info(stringBuilder.toString()); + response = mapper.readValue(reader, VnfImage.class); + String original_buffer = mapper.writeValueAsString(response); + LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, "SUCCESS", original_buffer); + if(response.getApplicationVendor() == null /*&& response.getAdditionalProperties() != null && !response.getAdditionalProperties().isEmpty()*/){ + LOG.warn("A List of multiple VNF-IMAGE entries has been returned"); + VnfImages listOfObjects = mapper.readValue(original_buffer, VnfImages.class); + if(!listOfObjects.getVnfImage().isEmpty()) { + response = listOfObjects.getVnfImage().get(0); + } + } + } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) { + LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); + return response; + } else { + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); + throw new AAIServiceException(responseCode, errorresponse); + } + + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestVnfImageData", exc); + throw new AAIServiceException(exc); + } finally { + if(inputStream != null){ + try { + inputStream.close(); + } catch(Exception exc) { + + } + } + } + return response; + } + + + public boolean sendNotify(NotifyEvent event, String serviceInstanceId, String pathCode) throws AAIServiceException { + InputStream inputStream = null; + + try { + + String selfLink = selflink_fqdn; + if(SELFLINK_AVPN != null && SELFLINK_AVPN.equals(pathCode)) { + selfLink = selflink_avpn; + } + selfLink = selfLink.replace("{service-instance-id}", encodeQuery(serviceInstanceId)); + event.setSelflink(selfLink); + + ObjectMapper mapper = getObjectMapper(); + String json_text = mapper.writeValueAsString(event); + + SSLSocketFactory sockFact = CTX.getSocketFactory(); + + String request_url = target_uri+ubb_notify_path; + URL http_req_url = new URL(request_url); + + HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.PUT); + + OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); + osw.write(json_text); + osw.flush(); + osw.close(); + + + LOGwriteFirstTrace("PUT", request_url); + LOGwriteDateTrace("NotifyEvent", json_text); + + // Check for errors + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + // Process the response + BufferedReader reader; + String line = null; + reader = new BufferedReader( new InputStreamReader( inputStream ) ); + + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + StringBuilder stringBuilder = new StringBuilder(); + + while( ( line = reader.readLine() ) != null ) { + stringBuilder.append( line ); + } + LOGwriteEndingTrace(responseCode, "SUCCESS", (stringBuilder != null) ? stringBuilder.toString() : "{no-data}"); + return true; + } else { + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); + + throw new AAIServiceException(responseCode, errorresponse); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("sendNotify", exc); + throw new AAIServiceException(exc); + } finally { + try { + if(inputStream != null) + inputStream.close(); + } catch (Exception exc) { + + } + } + } + + @Override + public SearchResults requestNodeQuery(String node_type, String entityIdentifier, String entityName) throws AAIServiceException { + SearchResults response = null; + InputStream inputStream = null; + + try { + String request_url = target_uri+query_nodes_path; + request_url = request_url.replace("{node-type}", encodeQuery(node_type)) ; + request_url = request_url.replace("{entity-identifier}", entityIdentifier) ; + request_url = request_url.replace("{entity-name}", encodeQuery(entityName)) ; + URL http_req_url = new URL(request_url); + + HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.GET); + + LOGwriteFirstTrace(HttpMethod.GET, http_req_url.toString()); + LOGwriteDateTrace("node_type", node_type); + LOGwriteDateTrace("vnf_name", entityName); + + // Check for errors + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + // Process the response + LOG.debug("HttpURLConnection result:" + responseCode); + if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); + BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); + + ObjectMapper mapper = getObjectMapper(); + + if (responseCode == HttpURLConnection.HTTP_OK) { + response = mapper.readValue(reader, SearchResults.class); + LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, "SUCCESS", mapper.writeValueAsString(response)); + } else if (responseCode == HttpURLConnection.HTTP_NOT_FOUND) { + LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); + return response; + } else { + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); + throw new AAIServiceException(responseCode, errorresponse); + } + + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestNodeQuery", exc); + throw new AAIServiceException(exc); + } finally { + if(inputStream != null){ + try { + inputStream.close(); + } catch(Exception exc) { + + } + } + } + return response; + + } + + + @Override + public String requestDataByURL(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + String response = null; + InputStream inputStream = null; + + try { + URL http_req_url = url; + + HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.GET); + + LOGwriteFirstTrace(HttpMethod.GET, http_req_url.toString()); + + // Check for errors + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + // Process the response + LOG.debug("HttpURLConnection result:" + responseCode); + if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); + BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); + + ObjectMapper mapper = getObjectMapper(); + + if (responseCode == HttpURLConnection.HTTP_OK) { + StringBuilder stringBuilder = new StringBuilder("\n"); + String line = null; + while( ( line = reader.readLine() ) != null ) { + stringBuilder.append( line ); + } + LOG.info(stringBuilder.toString()); +// response = mapper.readValue(reader, String.class); + response = stringBuilder.toString(); + LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, "SUCCESS", mapper.writeValueAsString(response)); + } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) { + LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); + response = null; + } else { + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); + throw new AAIServiceException(responseCode, errorresponse); + } + + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestNetworkVceData", exc); + throw new AAIServiceException(exc); + } finally { + if(inputStream != null){ + try { + inputStream.close(); + } catch(Exception exc) { + + } + } + } + return response; + } + + + @Override + public GenericVnf requestGenericVnfeNodeQuery(String vnf_name) throws AAIServiceException { + + if(vnf_name == null) { + throw new NullPointerException(); + } + + GenericVnf entity = null; + SearchResults resp = this.requestNodeQuery("generic-vnf", "vnf-name", vnf_name); + + List resultDataList = resp.getResultData(); + + try { + for (ResultData datum : resultDataList) { + String data_type = datum.getResourceType(); + URL url = new URL(datum.getResourceLink()); + entity = this.getResource(url.toString(), GenericVnf.class); + } + } + catch (Exception e) + { + LOG.error("Caught exception", e); + } + return entity; + } + + @Override + public Vserver requestVServerDataByURL(URL url) throws AAIServiceException { + + if(url == null) { + throw new NullPointerException(); + } + + Vserver entity = null; + + try { + entity = this.getResource(url.toString(), Vserver.class); + } catch (AAIServiceException exc) { + throw exc; + } catch (Exception e) { + throw new AAIServiceException(e); + } + return entity; + } + + @Override + public URL requestVserverURLNodeQuery(String vserver_name) throws AAIServiceException { + + if(vserver_name == null) { + throw new NullPointerException(); + } + + URL entity = null; + SearchResults resp = this.requestNodeQuery("vserver", "vserver-name", vserver_name); + + List resultDataList = resp.getResultData(); + + try { + for (ResultData datum : resultDataList) { + String data_type = datum.getResourceType(); + entity = new URL(datum.getResourceLink()); + } + } catch (Exception e) { + throw new AAIServiceException(e); + } + return entity; + } + + class AAIRequestExecutor implements AAIExecutorInterface { + + @Override + public String get(AAIRequest request) throws AAIServiceException { + String response = null; + InputStream inputStream = null; + HttpURLConnection con = null; + URL requestUrl = null; + + String requestId = UUID.randomUUID().toString(); + + try { + + if(request.getRequestObject() != null) { + requestUrl = request.getRequestUrl(HttpMethod.POST, null); + requestUrl = appendDepth(requestUrl, request); + con = getConfiguredConnection(requestUrl, HttpMethod.POST); + String json_text = request.toJSONString(); + LOGwriteDateTrace("data", json_text); + logMetricRequest(requestId, "POST "+requestUrl.getPath(), json_text, requestUrl.getPath()); + OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); + osw.write(json_text); + osw.flush(); + } else { + requestUrl = request.getRequestUrl(HttpMethod.GET, null); + requestUrl = appendDepth(requestUrl, request); + con = getConfiguredConnection(requestUrl, HttpMethod.GET); + logMetricRequest(requestId, "GET "+requestUrl.getPath(), "", requestUrl.getPath()); + } + + // Check for errors + String responseMessage = con.getResponseMessage(); + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + // Process the response + LOG.debug("HttpURLConnection result:" + responseCode + " : " + responseMessage); + logMetricResponse(requestId, responseCode, responseMessage); + + if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); + BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); + + ObjectMapper mapper = getObjectMapper(); + + if (responseCode == HttpURLConnection.HTTP_OK) { + StringBuilder stringBuilder = new StringBuilder(); + String line = null; + while( ( line = reader.readLine() ) != null ) { + stringBuilder.append( line ); + } + response = stringBuilder.toString(); + try { + Object object = mapper.readValue(response, Object.class); + LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, responseMessage, mapper.writeValueAsString(object)); + } catch(Exception exc) { + LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, responseMessage, mapper.writeValueAsString(response)); + } + } else if (responseCode == HttpURLConnection.HTTP_NOT_FOUND) { + LOGwriteEndingTrace(responseCode, responseMessage, "Entry does not exist."); + ErrorResponse errorresponse = null; + try { + errorresponse = mapper.readValue(reader, ErrorResponse.class); + } catch(Exception exc) { + errorresponse = new ErrorResponse(); + RequestError requestError = new RequestError(); + ServiceException serviceException = new ServiceException(); + serviceException.setText("Entry does not exist."); + requestError.setServiceException(serviceException); + errorresponse.setRequestError(requestError ); + } + throw new AAIServiceException(responseCode, errorresponse); + } else if (responseCode == HttpURLConnection.HTTP_UNAUTHORIZED) { + StringBuilder stringBuilder = new StringBuilder(); + String line = null; + while( ( line = reader.readLine() ) != null ) { + stringBuilder.append( line ); + } + LOGwriteEndingTrace(responseCode, responseMessage, stringBuilder.toString()); + ServiceException serviceException = new ServiceException(); + serviceException.setMessageId("HTTP_UNAUTHORIZED"); + serviceException.setText(stringBuilder.toString()); + RequestError requestError = new RequestError(); + requestError.setServiceException(serviceException); + ErrorResponse errorresponse = new ErrorResponse(); + errorresponse.setRequestError(requestError); + throw new AAIServiceException(responseCode, errorresponse); + } else { +// +// StringBuilder stringBuilder = new StringBuilder("\n"); +// String line = null; +// while( ( line = reader.readLine() ) != null ) { +// stringBuilder.append("\n").append( line ); +// } +// LOG.info(stringBuilder.toString()); +// +// ErrorResponse errorresponse = mapper.readValue(stringBuilder.toString(), ErrorResponse.class); + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, responseMessage, mapper.writeValueAsString(errorresponse)); + throw new AAIServiceException(responseCode, errorresponse); + } + + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("GET", exc); + throw new AAIServiceException(exc); + } finally { + if(inputStream != null){ + try { + inputStream.close(); + } catch(Exception exc) { + + } + } + } + return response; + } + + private URL appendDepth(URL requestUrl, AAIRequest request) throws MalformedURLException { + + String depth = request.requestProperties.getProperty("depth", "1"); + String path = requestUrl.toString(); + if(path.contains("?depth=") || path.contains("&depth=")) { + return requestUrl; + } else { + if(path.contains("?")) { + path = String.format("%s&depth=%s", path, depth); + } else { + path = String.format("%s?depth=%s", path, depth); + } + return new URL(path); + } + } + + @Override + public String post(AAIRequest request) throws AAIServiceException { + InputStream inputStream = null; + String requestId = UUID.randomUUID().toString(); + + try { + String resourceVersion = null; + AAIDatum instance = request.getRequestObject(); + + Method getResourceVersionMethod = instance.getClass().getMethod("getResourceVersion"); + if(getResourceVersionMethod != null){ + try { + getResourceVersionMethod.setAccessible(true); + Object object = getResourceVersionMethod.invoke(instance); + if(object != null) + resourceVersion = object.toString(); + } catch (InvocationTargetException x) { + Throwable cause = x.getCause(); + } + } + + URL requestUrl = null; + HttpURLConnection con = getConfiguredConnection(requestUrl = request.getRequestUrl(HttpMethod.PUT, resourceVersion), HttpMethod.PUT); + ObjectMapper mapper = getObjectMapper(); + String json_text = request.toJSONString(); + + LOGwriteDateTrace("data", json_text); + logMetricRequest(requestId, "PUT "+requestUrl.getPath(), json_text, requestUrl.getPath()); + + OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); + osw.write(json_text); + osw.flush(); + + // Check for errors + String responseMessage = con.getResponseMessage(); + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + LOG.debug("HttpURLConnection result:" + responseCode + " : " + responseMessage); + logMetricResponse(requestId,responseCode, responseMessage); + + // Process the response + BufferedReader reader; + String line = null; + reader = new BufferedReader( new InputStreamReader( inputStream ) ); + mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); + + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + StringBuilder stringBuilder = new StringBuilder(); + + while( ( line = reader.readLine() ) != null ) { + stringBuilder.append( line ); + } + LOGwriteEndingTrace(responseCode, responseMessage, (stringBuilder != null) ? stringBuilder.toString() : "{no-data}"); + return stringBuilder.toString(); + } else { + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, responseMessage, mapper.writeValueAsString(errorresponse)); + + throw new AAIServiceException(responseCode, errorresponse); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("AAIRequestExecutor.post", exc); + throw new AAIServiceException(exc); + } finally { + try { + if(inputStream != null) + inputStream.close(); + } catch (Exception exc) { + + } + } + } + + @Override + public Boolean delete(AAIRequest request, String resourceVersion) throws AAIServiceException { + Boolean response = null; + InputStream inputStream = null; + String requestId = UUID.randomUUID().toString(); + + if(resourceVersion == null) { + throw new AAIServiceException("resource-version is required for DELETE request"); + } + + try { + URL requestUrl = null; + HttpURLConnection conn = getConfiguredConnection(requestUrl = request.getRequestUrl(HttpMethod.DELETE, resourceVersion), HttpMethod.DELETE); + logMetricRequest(requestId, "DELETE "+requestUrl.getPath(), "", requestUrl.getPath()); + conn.setDoOutput(true); +// if(request.isDeleteDataRequired()) { +// String json_text = request.toJSONString(); +// +// LOGwriteDateTrace("data", json_text); +// OutputStream os = con.getOutputStream(); +// OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); +// osw.write(json_text); +// osw.flush(); +// } + + // Check for errors + String responseMessage = conn.getResponseMessage(); + int responseCode = conn.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + inputStream = conn.getInputStream(); + } else { + inputStream = conn.getErrorStream(); + } + + // Process the response + LOG.debug("HttpURLConnection result:" + responseCode + " : " + responseMessage); + logMetricResponse(requestId,responseCode, responseMessage); + + if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); + BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); + String line = null; + + ObjectMapper mapper = getObjectMapper(); + + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + StringBuilder stringBuilder = new StringBuilder(); + + while( ( line = reader.readLine() ) != null ) { + stringBuilder.append( line ); + } + LOGwriteEndingTrace(responseCode, responseMessage, stringBuilder.toString()); + response = true; + } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) { + LOGwriteEndingTrace(responseCode, responseMessage, "Entry does not exist."); + response = false; + } else { + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, responseMessage, mapper.writeValueAsString(errorresponse)); + throw new AAIServiceException(responseCode, errorresponse); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("delete", exc); + throw new AAIServiceException(exc); + } finally { + if(inputStream != null){ + try { + inputStream.close(); + } catch(Exception exc) { + + } + } + } + return response; + } + + @Override + public Object query(AAIRequest request, Class clas) throws AAIServiceException { + Object response = null; + InputStream inputStream = null; + HttpURLConnection con = null; + URL requestUrl = null; + String requestId = UUID.randomUUID().toString(); + + try { + con = getConfiguredConnection(requestUrl = request.getRequestQueryUrl(HttpMethod.GET), HttpMethod.GET); + logMetricRequest(requestId, "GET "+requestUrl.getPath(), "", requestUrl.getPath()); + + // Check for errors + String responseMessage = con.getResponseMessage(); + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + logMetricResponse(requestId,responseCode, responseMessage); + ObjectMapper mapper = getObjectMapper(); + + if (responseCode == HttpURLConnection.HTTP_OK) { + // Process the response + BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); + response = mapper.readValue(reader, clas); + LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, "SUCCESS", mapper.writeValueAsString(response)); + } else if (responseCode == HttpURLConnection.HTTP_NOT_FOUND) { + LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); + return response; + } else { + BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); + throw new AAIServiceException(responseCode, errorresponse); + } + + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("GET", exc); + throw new AAIServiceException(exc); + } finally { + if(inputStream != null){ + try { + inputStream.close(); + } catch(Exception exc) { + + } + } + con = null; + } + return response; + } + + @Override + public Boolean patch(AAIRequest request, String resourceVersion) throws AAIServiceException { + InputStream inputStream = null; + String requestId = UUID.randomUUID().toString(); + + try { + AAIDatum instance = request.getRequestObject(); + if(instance instanceof ResourceVersion) { + resourceVersion = ((ResourceVersion)instance).getResourceVersion(); + } + + URL requestUrl = null; + HttpURLConnection con = getConfiguredConnection(requestUrl = request.getRequestUrl("PATCH", resourceVersion), "PATCH"); + ObjectMapper mapper = getObjectMapper(); + String json_text = request.toJSONString(); + + LOGwriteDateTrace("data", json_text); + logMetricRequest(requestId, "PATCH "+requestUrl.getPath(), json_text, requestUrl.getPath()); + + OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); + osw.write(json_text); + osw.flush(); + + // Check for errors + String responseMessage = con.getResponseMessage(); + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + LOG.info("HttpURLConnection result: " + responseCode + " : " + responseMessage); + logMetricResponse(requestId,responseCode, responseMessage); + + // Process the response + BufferedReader reader; + String line = null; + reader = new BufferedReader( new InputStreamReader( inputStream ) ); + mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); + + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + StringBuilder stringBuilder = new StringBuilder(); + + while( ( line = reader.readLine() ) != null ) { + stringBuilder.append( line ); + } + LOGwriteEndingTrace(responseCode, responseMessage, (stringBuilder != null) ? stringBuilder.toString() : "{no-data}"); + return true; + } else { + StringBuilder stringBuilder = new StringBuilder(); + + while( ( line = reader.readLine() ) != null ) { + stringBuilder.append("\n").append( line ); + } + LOG.info(stringBuilder.toString()); + + + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, responseMessage, mapper.writeValueAsString(errorresponse)); + + throw new AAIServiceException(responseCode, errorresponse); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("AAIRequestExecutor.patch", exc); + throw new AAIServiceException(exc); + } finally { + try { + if(inputStream != null) + inputStream.close(); + } catch (Exception exc) { + + } + } + } + } + + @Override + public Tenant requestTenantData(String tenant_id, String cloudOwner, String cloudRegionId) throws AAIServiceException { + Tenant response = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("tenant"); + request.addRequestProperty("tenant.tenant-id", tenant_id); + request.addRequestProperty("cloud-region.cloud-owner", cloudOwner); + request.addRequestProperty("cloud-region.cloud-region-id", cloudRegionId); + + String rv = executor.get(request); + if(rv != null) { + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(rv, Tenant.class); + } + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestTenantData", exc); + throw new AAIServiceException(exc); + } + + return response; + } + + @Override + public Tenant requestTenantDataByName(String tenant_name, String cloudOwner, String cloudRegionId) throws AAIServiceException { + Tenant response = null; + + try { + AAIRequest request = AAIRequest.getRequestFromResource("tenant"); + request.addRequestProperty("tenant.tenant-name", tenant_name); + request.addRequestProperty("cloud-region.cloud-owner", cloudOwner); + request.addRequestProperty("cloud-region.cloud-region-id", cloudRegionId); + Object rv = executor.query(request, Tenant.class); + if(rv == null) + return (Tenant)null; + else + response = (Tenant)rv; + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("requestTenantDataByName", exc); + throw new AAIServiceException(exc); + } + + return response; + } + + + @Override + public boolean postTenantData(String tenant_id, String cloudOwner, String cloudRegionId, Tenant tenannt) throws AAIServiceException { + try { + AAIRequest request = AAIRequest.getRequestFromResource("tenant"); + request.addRequestProperty("tenant.tenant-id", tenant_id); + request.addRequestProperty("cloud-region.cloud-owner", cloudOwner); + request.addRequestProperty("cloud-region.cloud-region-id", cloudRegionId); + request.setRequestObject(tenannt); + Object response = executor.post(request); + return true; + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("postTenantData", exc); + throw new AAIServiceException(exc); + } + } + + + @Override + public String getTenantIdFromVserverUrl(URL url) { + + String path = url.getPath(); + + String[] split = path.split("/tenants/tenant/"); + if(split.length > 1) { + split = split[1].split("/"); + return split[0]; + } else { + return null; + } + } + + @Override + public String getCloudOwnerFromVserverUrl(URL url) { + + String path = url.getPath(); + + String[] split = path.split("/cloud-regions/cloud-region/"); + if(split.length > 1) { + split = split[1].split("/"); + return split[0]; + } else { + return null; + } + } + + @Override + public String getCloudRegionFromVserverUrl(URL url) { + + String path = url.getPath(); + + String[] split = path.split("/cloud-regions/cloud-region/"); + if(split.length > 1) { + split = split[1].split("/"); + return split[1]; + } else { + return null; + } + } + + @Override + public String getVServerIdFromVserverUrl(URL url, String tenantId) { + String pattern = network_vserver_path; + pattern = pattern.replace("{tenant-id}", tenantId); + + int end = pattern.indexOf("{vserver-id}"); + String prefix = pattern.substring(0, end); + + String path = url.getPath(); + + if(path.startsWith(prefix)) { + path = path.substring(prefix.length()); + } + + return path; + } + + protected Logger getLogger(){ + return LOG; + } + + + @Override + public AAIRequestExecutor getExecutor() { + return executor; + } + + /** + * Creates a current time stamp in UTC i.e. 2016-03-08T22:15:13.343Z. + * If there are any parameters the values are appended to the time stamp. + * + * @param parameters + * values to be appended to current time stamp + * @param ctx + * used to set an attribute for a DG + * @throws SvcLogicException + */ + public void setStatusMethod(Map parameters, SvcLogicContext ctx) throws SvcLogicException { + if (ctx == null) { + throw new SvcLogicException("SvcLogicContext is null."); + } + + StringBuilder sb = new StringBuilder(); + sb.append(String.format("%tFT% entry : parameters.entrySet()) { + sb.append(entry.getValue()).append(" "); + } + + if (sb.length() > 0) { + sb.setLength(sb.length() - 2); + } + + ctx.setAttribute("aai-summary-status-message", sb.toString()); + LOG.info("aai-summary-status-message: " + sb.toString()); + } + + /** + * Generic method to GET json data from an A&AI using key structure. + * Then convert that json to an Object. + * If successful the Object is attempted to be cast to the type parameter. + * + * @param key + * key identifying the resource to be retrieved from AAI + * @param type + * the class of object that A&AI will return + * @return the object created from json or null if the response code is not 200 + * + * @throws AAIServiceException + * if empty or null key and or type or there's an error with processing + */ + + public T getResource(String key, Class type) throws AAIServiceException { + if (StringUtils.isEmpty(key) || type == null) { + throw new AAIServiceException("Key is empty or null and or type is null"); + } + + T response = null; + + SvcLogicContext ctx = new SvcLogicContext(); + if(!key.contains(" = ")) { + if(isValidURL(key)) { + key = String.format("selflink = '%s'", key); + } else { + return response; + } + } + + HashMap nameValues = keyToHashMap(key, ctx); + + AAIRequest request = new SelfLinkRequest(type); + if(nameValues.containsKey(PathRequest.RESOURCE_PATH.replaceAll("-", "_"))) { + request = new PathRequest(type); + } + + request.processRequestPathValues(nameValues); + Object obj = this.getExecutor().query(request, type); + response = type.cast(obj); + + return response != null ? type.cast(response) : response; + } + + public boolean isValidURL(String url) { + + URL u = null; + + try { + u = new URL(url); + } catch (MalformedURLException e) { + return false; + } + + try { + u.toURI(); + } catch (URISyntaxException e) { + return false; + } + + return true; + } + + @Override + protected boolean deleteRelationshipList(URL httpReqUrl, String json_text) throws AAIServiceException { + if(httpReqUrl == null) { + throw new NullPointerException(); + } + + boolean response = false; + InputStream inputStream = null; + + try { + HttpURLConnection con = getConfiguredConnection(httpReqUrl, HttpMethod.DELETE); + +// SSLSocketFactory sockFact = CTX.getSocketFactory(); +// con.setSSLSocketFactory( sockFact ); + OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); + osw.write(json_text); + osw.flush(); + osw.close(); + + + LOGwriteFirstTrace("DELETE", httpReqUrl.toString()); + LOGwriteDateTrace("data", json_text); + + // Check for errors + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + inputStream = con.getInputStream(); + } else { + inputStream = con.getErrorStream(); + } + + // Process the response + LOG.debug("HttpURLConnection result:" + responseCode); + if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); + BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); + String line = null; + + ObjectMapper mapper = getObjectMapper(); + + if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { + StringBuilder stringBuilder = new StringBuilder(); + + while( ( line = reader.readLine() ) != null ) { + stringBuilder.append( line ); + } + LOGwriteEndingTrace(responseCode, "SUCCESS", stringBuilder.toString()); + response = true; + } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) { + LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); + response = false; + } else { + ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); + LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); + throw new AAIServiceException(responseCode, errorresponse); + } + + } catch(AAIServiceException aaiexc) { + throw aaiexc; + } catch (Exception exc) { + LOG.warn("deleteRelationshipList", exc); + throw new AAIServiceException(exc); + } finally { + if(inputStream != null){ + try { + inputStream.close(); + } catch(Exception exc) { + + } + } + } + return response; + } + + public static ObjectMapper getObjectMapper() { + ObjectMapper mapper = new ObjectMapper(); + AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(TypeFactory.defaultInstance()); + AnnotationIntrospector secondary = new JacksonAnnotationIntrospector(); + mapper.setAnnotationIntrospector(AnnotationIntrospector.pair(introspector, secondary)); + mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); + mapper.setSerializationInclusion(Include.NON_NULL); + return mapper; + } + + public void logMetricRequest(String requestId, String targetServiceName, String msg, String path){ + String svcInstanceId = ""; + String svcName = null; + String partnerName = null; + String targetEntity = "A&AI"; + String targetVirtualEntity = null; + + targetServiceName = ""; + + ml.logRequest(svcInstanceId, svcName, partnerName, targetEntity, targetServiceName, targetVirtualEntity, msg); + } + + public void logMetricResponse(String requestId, int responseCode, String responseDescription){ + ml.logResponse(responseCode < 400 ? "SUCCESS" : "FAILURE", Integer.toString(responseCode), responseDescription); + } + + public void logKeyError(String keys){ + LOG.error("Atleast one of the keys [" + keys + "] should have been populated. This will cause a NPE."); + } + + + /** + * Retrofit code + */ + @Override + public QueryStatus save(String resource, boolean force, boolean localOnly, String key, Map params, String prefix, SvcLogicContext ctx) + throws SvcLogicException { + String normResource = resource.split(":")[0]; + + switch(normResource){ + case "formatted-query": + case "generic-query": + case "named-query": + case "nodes-query": + case "linterface": + case "l2-bridge-sbg": + case "l2-bridge-bgf": + case "echo": + case "test": + break; + + default: + if(!key.contains(String.format("%s.", normResource))) { + key = rewriteKey(resource, key, ctx); + } + } + return super.save(resource, force, localOnly, key, params, prefix, ctx); + } + + @Override + public QueryStatus query(String resource, boolean localOnly, String select, String key, String prefix, String orderBy, SvcLogicContext ctx) + throws SvcLogicException { + String normResource = resource.split(":")[0]; + + switch(normResource){ + case "formatted-query": + case "generic-query": + case "named-query": + case "nodes-query": + case "linterface": + case "l2-bridge-sbg": + case "l2-bridge-bgf": + case "echo": + case "test": + break; + + default: + if(!key.contains(String.format("%s.", normResource))) { + key = rewriteKey(resource, key, ctx); + } + } + + return super.query(resource, localOnly, select, key, prefix, orderBy, ctx); + } + + @Override + public QueryStatus delete(String resource, String key, SvcLogicContext ctx) throws SvcLogicException { + String normResource = resource.split(":")[0]; + + switch(normResource){ + case "formatted-query": + case "generic-query": + case "named-query": + case "nodes-query": + case "linterface": + case "l2-bridge-sbg": + case "l2-bridge-bgf": + case "echo": + case "test": + break; + + default: + if(!key.contains(String.format("%s.", normResource))) { + key = rewriteKey(resource, key, ctx); + } + } + + return super.delete(resource, key, ctx); + } + + @Override + public QueryStatus update(String resource, String key, Map params, String prefix, SvcLogicContext ctx) throws SvcLogicException { + String normResource = resource.split(":")[0]; + + switch(normResource){ + case "formatted-query": + case "generic-query": + case "named-query": + case "nodes-query": + case "linterface": + case "l2-bridge-sbg": + case "l2-bridge-bgf": + case "echo": + case "test": + break; + + default: + if(!key.contains(String.format("%s.", normResource))) { + key = rewriteKey(resource, key, ctx); + } + } + + return super.update(resource, key, params, prefix, ctx); + } + + private String rewriteKey(String resource, String key, SvcLogicContext ctx) { + LOG.info("AAI Deprecation - the format of request key is no longer supported. Please rewrite this key : " + key); + + String normResource = resource.split(":")[0]; + Class clazz = null; + try { + clazz = AAIRequest.getClassFromResource(normResource) ; + } catch (ClassNotFoundException e) { + LOG.warn("AAIRequest does not support class: " + e.getMessage()); + return key; + } + if(clazz == null) + return key; + + List fieldAnnotatedNames = new LinkedList(); + + Field[] fields = clazz.getDeclaredFields(); + for(Field field : fields) { + String fieldName = field.getName(); + XmlElement annotation = field.getAnnotation(XmlElement.class); + if(annotation == null) + continue; + String primaryId = annotation.name(); + if("##default".equals(primaryId)) { + primaryId = fieldName; + } + fieldAnnotatedNames.add(primaryId); + } + + HashMap nameValues = keyToHashMap(key, ctx); + Set keyset = nameValues.keySet(); + for(String keyName : keyset) { + if(keyName.contains(".")) + continue; + else { + String tmpKeyName = keyName.replaceAll("_", "-"); + if(fieldAnnotatedNames.contains(tmpKeyName)) { + key = key.replace(tmpKeyName, String.format("%s.%s", normResource, tmpKeyName)); + } + } + } + + + return key; + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIServiceActivator.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIServiceActivator.java new file mode 100644 index 00000000..45c3d3d2 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIServiceActivator.java @@ -0,0 +1,239 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FilenameFilter; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashSet; +import java.util.Properties; +import java.util.Set; + +import org.onap.ccsdk.sli.core.sli.ConfigurationException; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class AAIServiceActivator implements BundleActivator { + + private static final String DEFAULT_CONFIG_FILE_NAME = "aaiclient.config"; + private static final String DEFAULT_PROPERTY_FILE_NAME = "aaiclient.properties"; + private static final String DEFAULT_KEYWORD = "default"; + + private static final String SDNC_CONFIG_DIR = "SDNC_CONFIG_DIR"; + + private static final String BVC_PROPERTY_FILE = "/opt/bvc/controller/configuration/aaiclient.properties"; + private static final String DEFAULT_SDNC_PROPERTY_FILE = "/opt/sdnc/data/properties/aaiclient.properties"; + + private Set registrationSet = new HashSet(); + + private static final Logger LOG = LoggerFactory.getLogger(AAIServiceActivator.class); + + @Override + public void start(BundleContext ctx) throws Exception { + + System.setProperty("aaiclient.runtime", "OSGI"); + + String sdnConfigDirectory = System.getenv(SDNC_CONFIG_DIR); + + // check SDNC CONFIG DIR system property + if(sdnConfigDirectory == null ) { + LOG.error("System property SDNC_CONFIG_DIR is not defined."); + LOG.info("Defaulting SDNC_CONFIG_DIR to '/opt/sdnc/data/properties/'"); + sdnConfigDirectory = "/opt/sdnc/data/properties/"; + } + + LOG.debug("Configuration directory used : " + sdnConfigDirectory); + + // check existance of properties directory + File configDirectory = new File(sdnConfigDirectory); + if(!configDirectory.exists() || !configDirectory.isDirectory()){ + LOG.error("System property SDNC_CONFIG_DIR = '" + sdnConfigDirectory + "' does not point to a valid directory. AAIService will not be initialized."); + return; + } + + Properties properties = new Properties(); + InputStream input = null; + + // find aaiclient config file + File[] files = findFiles(configDirectory, DEFAULT_CONFIG_FILE_NAME); + + // read the aai config data + if(files != null && files.length > 0) { + LOG.debug("AAIService config file exists and it is named :" + files[0].getAbsolutePath() ); + try { + input = new FileInputStream(files[0]); + properties.load(input); + LOG.debug("Loaded AAI Client properties from " + files[0].getAbsolutePath()); + } catch (IOException exc) { + LOG.warn("Problem loading AAI Client properties from " + files[0].getAbsolutePath(), exc); + } finally { + if(input != null ) { + try { + input.close(); + } catch(Exception exc) { + // ignore + } + } + int size = properties.keySet().size() ; + if(size == 0) { + LOG.debug(files[0].getAbsolutePath() + " contained no entries. Adding the default entry"); + properties.put(DEFAULT_KEYWORD, DEFAULT_PROPERTY_FILE_NAME); + } + } + } else { + LOG.debug("No configuration entries were found. Adding the default entry"); + properties.put(DEFAULT_KEYWORD, DEFAULT_PROPERTY_FILE_NAME); + } + + Set entrySet = properties. stringPropertyNames(); + String value = null; + + // initialize AAI Service for each aai client property files + for(String entry : entrySet) { + value = properties.getProperty(entry); + if(value != null && !value.isEmpty()) { + + final String fileName = value; + + File[] propertyFileList = findFiles(configDirectory, fileName); + + for(File propertiesFile : propertyFileList) { + LOG.info(propertiesFile.getName()); + // Advertise AAI resource adaptor + AAIClient impl = null; + switch(entry) { + case DEFAULT_KEYWORD: + impl = new AAIService(propertiesFile.toURI().toURL()); + break; + case "trinity": + impl = new AAITrinityService(propertiesFile.toURI().toURL()); + break; + default: + LOG.error("Invalid configuration keyword '"+entry+"' detected in aaiclient.config. Aborting initialization"); + continue; + } + String regName = impl.getClass().getName(); + + LOG.debug("Registering AAIService service "+regName); + ServiceRegistration registration = ctx.registerService(regName, impl, null); + registrationSet.add(registration); + + } + } + } + } + +// @Override + @Deprecated + public void start1(BundleContext ctx) throws Exception { + + String sdnConfigDirectory = System.getenv(SDNC_CONFIG_DIR); + String propertiesPath = null; + + if (sdnConfigDirectory == null || sdnConfigDirectory.isEmpty()) { + String filename = DEFAULT_SDNC_PROPERTY_FILE; + File file = new File(filename); + if(file != null && file.exists()) { + propertiesPath = filename; + LOG.info("Using property file (1): " + propertiesPath); + } else { + filename = BVC_PROPERTY_FILE; + file = new File(filename); + if(file != null && file.exists()) { + propertiesPath = filename; + LOG.info("Using property file (1): " + propertiesPath); + } else { + throw new ConfigurationException("Cannot find config file - "+filename+" and "+SDNC_CONFIG_DIR+" is unset"); + } + } + } else { + propertiesPath = sdnConfigDirectory + "/aaiclient.properties"; + LOG.info("Environment variable " + SDNC_CONFIG_DIR + " set, - calculated path " + propertiesPath); + } + + File propFile = new File(propertiesPath); + if(!propFile.exists()) { + String filename = DEFAULT_SDNC_PROPERTY_FILE; + File file = new File(filename); + if(file != null && file.exists()) { + propertiesPath = filename; + LOG.info("Using property file (1): " + propertiesPath); + } else { + filename = BVC_PROPERTY_FILE; + file = new File(filename); + if(file != null && file.exists()) { + propertiesPath = filename; + LOG.info("Using property file (1): " + propertiesPath); + } else { + LOG.error("AnAI Service Property file " + propertiesPath + "does not exist."); + throw new ConfigurationException("Cannot find config file - "+propertiesPath+" and " + SDNC_CONFIG_DIR + " is unset."); + } + } + } + + // Advertise AAI resource adaptor + AAIClient impl = new AAIService(propFile.toURI().toURL()); + String regName = impl.getClass().getName(); + + LOG.debug("Registering AAIService service "+regName); + ServiceRegistration registration = ctx.registerService(regName, impl, null); + registrationSet.add(registration); + } + + @Override + public void stop(BundleContext ctx) throws Exception { + + Set localRegistrationSet = new HashSet(); + localRegistrationSet.addAll(registrationSet); + + for(ServiceRegistration registration : localRegistrationSet) { + if (registration != null) { + try { + AAIService aaiService = (AAIService)ctx.getService(registration.getReference()); + registration.unregister(); + registrationSet.remove(registration); + if(aaiService != null) { + aaiService.cleanUp(); + } + } catch(Exception exc) { + if(LOG.isDebugEnabled()) + LOG.debug(exc.getMessage()); + } + } + } + } + + private File[] findFiles(File configDirectory, final String filter) { + File[] files = configDirectory.listFiles(new FilenameFilter() { + public boolean accept(File dir, String name) { + return name.equalsIgnoreCase(filter); + } + }); + + return files; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIServiceException.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIServiceException.java new file mode 100644 index 00000000..8d57db43 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAIServiceException.java @@ -0,0 +1,77 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import org.onap.ccsdk.sli.adaptors.aai.data.ErrorResponse; + +public class AAIServiceException extends Exception { + + /** + * + */ + private static final long serialVersionUID = -9039257722542999522L; + + protected ErrorResponse errorResponse = null; + protected int returnCode = -1; + + public AAIServiceException() { + + } + + public AAIServiceException(String message) { + super(message); + } + + public AAIServiceException(Throwable cause) { + super(cause); + } + + public AAIServiceException(String message, Throwable cause) { + super(message, cause); + } + + public AAIServiceException(String message, Throwable cause, + boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } + + public AAIServiceException(int returnCode, ErrorResponse errorresponse) { + this.errorResponse = errorresponse; + this.returnCode = returnCode; + } + + public ErrorResponse getErrorResponse() { + return errorResponse; + } + + public int getReturnCode() { + return returnCode; + } + + public String getMessage() { + if(errorResponse != null) { + return errorResponse.getRequestError().getServiceException().getText(); + } else { + return super.getMessage(); + } + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAITrinityService.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAITrinityService.java new file mode 100644 index 00000000..6fffc6e8 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/AAITrinityService.java @@ -0,0 +1,38 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.net.URL; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class AAITrinityService extends AAIService { + + private static final Logger LOG = LoggerFactory.getLogger(AAITrinityService.class); + + public AAITrinityService(URL propURL) { + super(propURL); + LOG.info("Entered AAITrinityService.ctor"); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/CloudRegionRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/CloudRegionRequest.java new file mode 100644 index 00000000..0de0d2bd --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/CloudRegionRequest.java @@ -0,0 +1,135 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.CloudRegion; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.base.Joiner; + +public class CloudRegionRequest extends AAIRequest { + + public static final String CLOUD_REGION_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.cloud.region"; + + private final String cloud_region_path; + + public static final String CLOUD_REGION_CLOUD_OWNER = "cloud-region.cloud-owner"; + public static final String CLOUD_REGION_CLOUD_REGION_ID = "cloud-region.cloud-region-id"; + + + public CloudRegionRequest() { + cloud_region_path = configProperties.getProperty(CLOUD_REGION_PATH); + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return this.getRequestUrl(method, null); + } + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri+cloud_region_path; + + request_url = processPathData(request_url, requestProperties); + + Map query = new HashMap(); + if(requestProperties.containsKey(DEPTH)) { + query.put(DEPTH, requestProperties.getProperty(DEPTH)); + } + + if(resourceVersion != null) { +// request_url = request_url +"?resource-version="+resourceVersion; + query.put(RESOURCE_VERSION, resourceVersion); + } + + if(!query.isEmpty()) { + Joiner.MapJoiner mapJoiner = Joiner.on("&").withKeyValueSeparator("="); + String queryString = mapJoiner.join(query); + request_url = String.format("%s?%s", request_url, queryString); + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + + return http_req_url; + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + CloudRegion vnfc = (CloudRegion)requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(vnfc); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + @Override + public String[] getArgsList() { + String[] args = + { + CLOUD_REGION_CLOUD_OWNER, + CLOUD_REGION_CLOUD_REGION_ID, + DEPTH + }; + + return args; + } + + @Override + public Class getModelClass() { + return CloudRegion.class; + } + + public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + + if(!requestProperties.containsKey(CLOUD_REGION_CLOUD_OWNER) || !requestProperties.containsKey(CLOUD_REGION_CLOUD_REGION_ID)) { + aaiService.logKeyError(String.format("%s,%s", CLOUD_REGION_CLOUD_OWNER, CLOUD_REGION_CLOUD_REGION_ID)); + } + + String encoded_vnf = encodeQuery(requestProperties.getProperty(CLOUD_REGION_CLOUD_OWNER)); + request_url = request_url.replace("{cloud-owner}", encoded_vnf) ; + + encoded_vnf = encodeQuery(requestProperties.getProperty(CLOUD_REGION_CLOUD_REGION_ID)); + request_url = request_url.replace("{cloud-region-id}", encoded_vnf) ; + + aaiService.LOGwriteDateTrace("cloud-owner", requestProperties.getProperty(CLOUD_REGION_CLOUD_OWNER)); + aaiService.LOGwriteDateTrace("cloud-region-id", requestProperties.getProperty(CLOUD_REGION_CLOUD_REGION_ID)); + + return request_url; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/CustomQueryRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/CustomQueryRequest.java new file mode 100644 index 00000000..994f1b6b --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/CustomQueryRequest.java @@ -0,0 +1,134 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Properties; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.onap.ccsdk.sli.adaptors.aai.query.FormattedQueryRequestData; +import org.onap.ccsdk.sli.adaptors.aai.query.FormattedQueryResultList; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; + + +public class CustomQueryRequest extends AAIRequest { + + public static final String GENERIC_SEARCH_PATH = "org.onap.ccsdk.sli.adaptors.aai.query.generic"; + + private final String generic_search_path; + + public static final String FORMAT = "format"; + + + public CustomQueryRequest() { + String tmp_generic_search_path = configProperties.getProperty(GENERIC_SEARCH_PATH); + tmp_generic_search_path = tmp_generic_search_path.split("search")[0]; + generic_search_path = tmp_generic_search_path +"query"; + } + + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri+generic_search_path; + + request_url = processPathData(request_url, requestProperties); + + String formatQuery = requestProperties.getProperty(FORMAT); + + if(formatQuery != null) { + request_url = request_url +"?format="+formatQuery; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + + return http_req_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return getRequestUrl(method, null); + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + FormattedQueryRequestData tenant = (FormattedQueryRequestData)requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(tenant); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + + @Override + public String[] getArgsList() { + String[] args = {FORMAT}; + return args; + } + + + @Override + public Class getModelClass() { + return FormattedQueryRequestData.class; + } + + + public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + + String key = FORMAT; + + String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + request_url = request_url.replace("{identifier}", encoded_vnf) ; + aaiService.LOGwriteDateTrace("identifier", requestProperties.getProperty(key)); + + return request_url; + } + + public AAIDatum jsonStringToObject(String jsonData) throws JsonParseException, JsonMappingException, IOException { + if(jsonData == null) { + return null; + } + + AAIDatum response = null; + ObjectMapper mapper = getObjectMapper(); + response = mapper.readValue(jsonData, FormattedQueryResultList.class); + return response; + } + + protected boolean expectsDataFromPUTRequest() { + return true; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/EchoRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/EchoRequest.java new file mode 100644 index 00000000..86e2d5f5 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/EchoRequest.java @@ -0,0 +1,93 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.onap.ccsdk.sli.adaptors.aai.data.EchoResponse; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class EchoRequest extends AAIRequest { + + + + private final String echo_path; + + public EchoRequest() { + echo_path = "/aai/util/echo"; + } + + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri+echo_path; + + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + + return http_req_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return getRequestUrl(method, null); + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + EchoResponse tenant = (EchoResponse)requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(tenant); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + + @Override + public String[] getArgsList() { + String[] args = {}; + return args; + } + + + @Override + public Class getModelClass() { + return EchoResponse.class; + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/GenericQueryRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/GenericQueryRequest.java new file mode 100644 index 00000000..476aed94 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/GenericQueryRequest.java @@ -0,0 +1,144 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Properties; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.ResultData; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class GenericQueryRequest extends AAIRequest { + + public static final String GENERIC_SEARCH_PATH = "org.onap.ccsdk.sli.adaptors.aai.query.generic"; + + private final String generic_search_path; + + public static final String START_NODE_TYPE = "start-node-type"; + public static final String IDENTIFIER = "identifier"; + public static final String VALUE = "value"; + + + public GenericQueryRequest() { + generic_search_path = configProperties.getProperty(GENERIC_SEARCH_PATH); + } + + +// @Override +// public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { +// +// String request_url = target_uri+generic_search_path; +// String key = START_NODE_TYPE; +// +// String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); +// request_url = request_url.replace("{vnf-id}", encoded_vnf) ; +// +// if(resourceVersion != null) { +// request_url = request_url +"?resource-version="+resourceVersion; +// } +// URL http_req_url = new URL(request_url); +// +// aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); +// +// +// return http_req_url; +// } + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri+generic_search_path; + + request_url = processPathData(request_url, requestProperties); + + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + + return http_req_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return getRequestUrl(method, null); + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + ResultData tenant = (ResultData)requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(tenant); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + + @Override + public String[] getArgsList() { + String[] args = {START_NODE_TYPE, IDENTIFIER, VALUE}; + return args; + } + + + @Override + public Class getModelClass() { + return ResultData.class; + } + + + public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + + String key = IDENTIFIER; + + String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + request_url = request_url.replace("{identifier}", encoded_vnf) ; + aaiService.LOGwriteDateTrace("identifier", requestProperties.getProperty(key)); + + key = VALUE; + + encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + request_url = request_url.replace("{value}", encoded_vnf) ; + aaiService.LOGwriteDateTrace("value", requestProperties.getProperty(key)); + + key = START_NODE_TYPE; + + encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + request_url = request_url.replace("{start-node-type}", encoded_vnf) ; + aaiService.LOGwriteDateTrace("start-node-type", requestProperties.getProperty(key)); + + return request_url; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/GenericRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/GenericRequest.java new file mode 100644 index 00000000..427ea7e3 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/GenericRequest.java @@ -0,0 +1,319 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import javax.xml.bind.annotation.XmlElement; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.L3Network; +import org.openecomp.aai.inventory.v10.L3Networks; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.base.Joiner; + +public class GenericRequest extends AAIRequest { + + + protected Class model; + + public GenericRequest(Class clazz) { + model = clazz; + } + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = null; + String originalPath = null; + String pathSubstitute = null; + + request_url = target_uri + getRequestPath(); + + Map queryParams = new HashMap (); + if(resourceVersion != null) { + queryParams.put("resource-version",resourceVersion); + } + + Set uniqueResources = extractUniqueResourceSetFromKeys(requestProperties.stringPropertyNames()); + + String[] keys = requestProperties.keySet().toArray(new String[0]); + for(String key : keys) { + if("cloud-region.cloud-region-id".equals(key)) + continue; + if("entitlement.resource-uuid".equals(key)) + continue; + if("license.resource-uuid".equals(key)) + continue; + + + String value = requestProperties.getProperty(key); + if(key.contains(".")) { + String[] splitKey = key.split("\\."); + if("cloud-region".equals(splitKey[0])){ + String cloudRegionId = requestProperties.getProperty("cloud-region.cloud-region-id"); + aaiService.LOGwriteDateTrace("cloud-region-id", cloudRegionId); + String token = String.format("%s/{%s}/{cloud-region-id}", splitKey[0], splitKey[1] ); + String encoded_owner = encodeQuery(value); + String encoded_region = encodeQuery(cloudRegionId); + request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region)); + } else if("entitlement".equals(splitKey[0])){ + String cloudRegionId = requestProperties.getProperty("entitlement.resource-uuid"); + aaiService.LOGwriteDateTrace("resource-uuid", cloudRegionId); + String token = String.format("%s/{%s}/{resource-uuid}", splitKey[0], splitKey[1] ); + String encoded_owner = encodeQuery(value); + String encoded_region = encodeQuery(cloudRegionId); + request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region)); + } else if("license".equals(splitKey[0])){ + String cloudRegionId = requestProperties.getProperty("license.resource-uuid"); + aaiService.LOGwriteDateTrace("resource-uuid", cloudRegionId); + String token = String.format("%s/{%s}/{resource-uuid}", splitKey[0], splitKey[1] ); + String encoded_owner = encodeQuery(value); + String encoded_region = encodeQuery(cloudRegionId); + request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region)); + } else { + Class clazz = null; + try { + clazz = getClassFromResource(splitKey[0]); + } catch (ClassNotFoundException exc) { + LOG.warn("AAIRequest does not support class: " + exc.getMessage()); + return null; + } + + if(clazz != null) { + if(clazz == this.model) { + Field[] fields = this.model.getDeclaredFields(); + Field field = fields[0]; + String fieldName = field.getName(); + XmlElement annotation = field.getAnnotation(XmlElement.class); + String primaryId = annotation.name(); + if("##default".equals(primaryId)) { + primaryId = fieldName; + } + + String token = String.format("%s/{%s}", splitKey[0], primaryId); + + if(splitKey[1].equals(primaryId)) { + String encoded_vnf = encodeQuery(value); + request_url = request_url.replace(token, String.format("%s/%s", splitKey[0], encoded_vnf)); + } else { + queryParams.put(splitKey[1], encodeQuery(value)); + originalPath = token; + pathSubstitute = String.format("%s", splitKey[0]); + } + } else if(L3Networks.class == this.model) { + Field[] fields = L3Network.class.getDeclaredFields(); + Field field = fields[0]; + String fieldName = field.getName(); + XmlElement annotation = field.getAnnotation(XmlElement.class); + String primaryId = annotation.name(); + if("##default".equals(primaryId)) { + primaryId = fieldName; + } + + String token = String.format("%s/{%s}", splitKey[0], primaryId); + originalPath = token; + pathSubstitute = String.format(""); + + queryParams.put(splitKey[1], encodeQuery(value)); + } else { + String token = String.format("%s/{%s}", splitKey[0], splitKey[1]); + String encoded_vnf = encodeQuery(value); + request_url = request_url.replace(token, String.format("%s/%s", splitKey[0], encoded_vnf)); + } + } + + } + aaiService.LOGwriteDateTrace(splitKey[1], value); + } + } + + if(originalPath != null && pathSubstitute != null) + request_url = request_url.replace(originalPath, pathSubstitute); + + if(!queryParams.isEmpty()) { + Joiner.MapJoiner mapJoiner = Joiner.on("&").withKeyValueSeparator("="); + String queryString = mapJoiner.join(queryParams); + request_url = String.format("%s?%s", request_url, queryString); + } + + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + + + return http_req_url; + } + + + public URL OriginalgetRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = null; + + request_url = target_uri + getRequestPath(); + + Map keyValuepairs = new HashMap (); + Set uniqueResources = extractUniqueResourceSetFromKeys(requestProperties.stringPropertyNames()); + + String[] keys = requestProperties.keySet().toArray(new String[0]); + for(String key : keys) { + if("cloud-region.cloud-region-id".equals(key)) + continue; + if("entitlement.resource-uuid".equals(key)) + continue; + if("license.resource-uuid".equals(key)) + continue; + + + String value = requestProperties.getProperty(key); + if(key.contains(".")) { + String[] splitKey = key.split("\\."); + if("cloud-region".equals(splitKey[0])){ + String cloudRegionId = requestProperties.getProperty("cloud-region.cloud-region-id"); + aaiService.LOGwriteDateTrace("cloud-region-id", cloudRegionId); + String token = String.format("%s/{%s}/{cloud-region-id}", splitKey[0], splitKey[1] ); + String encoded_owner = encodeQuery(value); + String encoded_region = encodeQuery(cloudRegionId); + request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region)); + } else if("entitlement".equals(splitKey[0])){ + String cloudRegionId = requestProperties.getProperty("entitlement.resource-uuid"); + aaiService.LOGwriteDateTrace("resource-uuid", cloudRegionId); + String token = String.format("%s/{%s}/{resource-uuid}", splitKey[0], splitKey[1] ); + String encoded_owner = encodeQuery(value); + String encoded_region = encodeQuery(cloudRegionId); + request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region)); + } else if("license".equals(splitKey[0])){ + String cloudRegionId = requestProperties.getProperty("license.resource-uuid"); + aaiService.LOGwriteDateTrace("resource-uuid", cloudRegionId); + String token = String.format("%s/{%s}/{resource-uuid}", splitKey[0], splitKey[1] ); + String encoded_owner = encodeQuery(value); + String encoded_region = encodeQuery(cloudRegionId); + request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region)); + } else { + Class clazz = null; + try { + clazz = getClassFromResource(splitKey[0]); + } catch (ClassNotFoundException exc) { + LOG.warn("AAIRequest does not support class: " + exc.getMessage()); + return null; + } + + if(clazz != null) { + if(clazz == this.model) { + Field[] fields = this.model.getDeclaredFields(); + Field field = fields[0]; + String fieldName = field.getName(); + XmlElement annotation = field.getAnnotation(XmlElement.class); + String primaryId = annotation.name(); + if("##default".equals(primaryId)) { + primaryId = fieldName; + } + + String token = String.format("%s/{%s}", splitKey[0], primaryId); + + if(splitKey[1].equals(primaryId)) { + String encoded_vnf = encodeQuery(value); + request_url = request_url.replace(token, String.format("%s/%s", splitKey[0], encoded_vnf)); + } else { + String replacement = String.format("%s?%s=%s", splitKey[0], splitKey[1], encodeQuery(value)); + if(request_url.contains(token)) + request_url = request_url.replace(token, replacement); + } + } else { + String token = String.format("%s/{%s}", splitKey[0], splitKey[1]); + String encoded_vnf = encodeQuery(value); + request_url = request_url.replace(token, String.format("%s/%s", splitKey[0], encoded_vnf)); + } + } + + } + aaiService.LOGwriteDateTrace(splitKey[1], value); + } + } + + + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + + + return http_req_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return this.getRequestUrl(method, null); + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + + String json_text = null; + try { + json_text = mapper.writeValueAsString(requestDatum); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + @Override + public String[] getArgsList() { + String[] args = {}; + return args; + } + + @Override + public Class getModelClass() { + return model; + } + + public void processRequestPathValues(Map nameValues) { + // identify unique resources + Set uniqueResources = AAIRequest.extractUniqueResourceSetFromKeys(nameValues.keySet()); + + String[] arguments = nameValues.keySet().toArray(new String[0]); + for(String name : arguments) { + String tmpName = name.replaceAll("-", "_"); + String value = nameValues.get(tmpName); + if(value != null && !value.isEmpty()) { + value = value.trim().replace("'", "").replace("$", "").replace("'", ""); + tmpName = name.replaceAll("_", "-"); + this.addRequestProperty(tmpName, value); + } + } + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/GenericVnfRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/GenericVnfRequest.java new file mode 100644 index 00000000..3915940f --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/GenericVnfRequest.java @@ -0,0 +1,144 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Properties; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.GenericVnf; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class GenericVnfRequest extends AAIRequest { + + // tenant (1602) + public static final String GENERIC_VNF_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.generic.vnf"; + public static final String GENERIC_VNF_QUERY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.generic.vnf.query"; + + private final String generic_vnf_path; + private final String generic_vnf_query_path; + + public static final String GENERIC_VNF_ID = "generic_vnf.vnf_id"; + public static final String VNF_ID = "vnf_id"; + + + public GenericVnfRequest() { + generic_vnf_path = configProperties.getProperty(GENERIC_VNF_PATH); + generic_vnf_query_path = configProperties.getProperty(GENERIC_VNF_QUERY_PATH); + } + + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri+generic_vnf_path; + String key = VNF_ID; + if(requestProperties.containsKey(GENERIC_VNF_ID)) { + key = GENERIC_VNF_ID; + } + + if(!requestProperties.containsKey(key)) { + aaiService.logKeyError(String.format("%s,%s", VNF_ID, GENERIC_VNF_ID)); + } + + String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + request_url = request_url.replace("{vnf-id}", encoded_vnf) ; + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + aaiService.LOGwriteDateTrace("vnf-id", requestProperties.getProperty(key)); + + return http_req_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri+generic_vnf_path; + + String key = VNF_ID; + if(requestProperties.containsKey(GENERIC_VNF_ID)) { + key = GENERIC_VNF_ID; + } + + if(!requestProperties.containsKey(key)) { + aaiService.logKeyError(String.format("%s,%s", VNF_ID, GENERIC_VNF_ID)); + } + + String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + request_url = request_url.replace("{vnf-id}", encoded_vnf) ; + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + aaiService.LOGwriteDateTrace("vnf-id", requestProperties.getProperty(key)); + + return http_req_url; + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + GenericVnf tenant = (GenericVnf)requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(tenant); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + + @Override + public String[] getArgsList() { + String[] args = {VNF_ID, GENERIC_VNF_ID}; + return args; + } + + + @Override + public Class getModelClass() { + return GenericVnf.class; + } + + + public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + + String key = VNF_ID; + if(requestProperties.containsKey(GENERIC_VNF_ID)) { + key = GENERIC_VNF_ID; + } + String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + request_url = request_url.replace("{vnf-id}", encoded_vnf) ; + + return request_url; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/L3InterfaceIpv4AddressListRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/L3InterfaceIpv4AddressListRequest.java new file mode 100644 index 00000000..e1431bea --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/L3InterfaceIpv4AddressListRequest.java @@ -0,0 +1,212 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Properties; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.L3InterfaceIpv4AddressList; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class L3InterfaceIpv4AddressListRequest extends AAIRequest { + + /* + * Note: there are 3 possible paths: + * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/network/vpes/vpe/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/network/vpes/vpe/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/network/vpes/vpe/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/network/vpes/vpe/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + * aaiv7:inventory/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} + */ + + public static final String L3_INTERFACE_IPV4_ADDRESS_LIST_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.l3.interface.ipv4.address.list"; + public static final String VLAN_L3_INTERFACE_IPV4_ADDRESS_LIST_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.vlan.l3.interface.ipv4.address.list"; + + private final String l3_interface_ipv4_address_list_path; + private final String vlan_l3_interface_ipv4_address_list_path; + + public static final String L3_INTERFACE_IPV4_ADDRESS = "l3-interface-ipv4-address"; + public static final String LIST_L3_INTERFACE_IPV4_ADDRESS = "l3-interface-ipv4-address-list.l3-interface-ipv4-address"; + public static final String VLAN_INTERFACE = "vlan-interface"; + public static final String VLAN_VLAN_INTERFACE = "vlan.vlan-interface"; + + public L3InterfaceIpv4AddressListRequest() { + l3_interface_ipv4_address_list_path = configProperties.getProperty(L3_INTERFACE_IPV4_ADDRESS_LIST_PATH); + vlan_l3_interface_ipv4_address_list_path = configProperties.getProperty(VLAN_L3_INTERFACE_IPV4_ADDRESS_LIST_PATH); + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return this.getRequestUrl(method, null); + } + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri+l3_interface_ipv4_address_list_path; + + if(requestProperties.containsKey(VLAN_INTERFACE) || requestProperties.containsKey(VLAN_VLAN_INTERFACE)){ + request_url = target_uri+vlan_l3_interface_ipv4_address_list_path; + request_url = processVLanRequestPathData(request_url, requestProperties); + } + + request_url = processPathData(request_url, requestProperties); + request_url = LInterfaceRequest.processPathData(request_url, requestProperties); +// request_url = GenericVnfRequest.processPathData(request_url, requestProperties); + + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + + return http_req_url; + } + + public static String processVLanRequestPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + String key = null; + + if(requestProperties.containsKey(VLAN_VLAN_INTERFACE)) { + key = VLAN_VLAN_INTERFACE; + } else if(requestProperties.containsKey(VLAN_INTERFACE)) { + key = VLAN_INTERFACE; + } else { + aaiService.logKeyError(String.format("%s,%s", VLAN_INTERFACE, VLAN_VLAN_INTERFACE)); + } + + String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + + request_url = request_url.replace("{vlan-interface}", encoded_vnf) ; + aaiService.LOGwriteDateTrace("vlan-interface", requestProperties.getProperty(key)); + return request_url; + } + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + L3InterfaceIpv4AddressList vnfc = (L3InterfaceIpv4AddressList)requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(vnfc); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + @Override + public String[] getArgsList() { + String[] args = + { + L3_INTERFACE_IPV4_ADDRESS, + LIST_L3_INTERFACE_IPV4_ADDRESS, + VLAN_INTERFACE, + VLAN_VLAN_INTERFACE, + LInterfaceRequest.INTERFACE_NAME, + LInterfaceRequest.LINTERFACE_INTERFACE_NAME, + "generic-vnf.vnf-id" + }; + + return args; + } + + @Override + public Class getModelClass() { + return L3InterfaceIpv4AddressList.class; + } + + public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + String key = L3_INTERFACE_IPV4_ADDRESS; + if(requestProperties.containsKey(LIST_L3_INTERFACE_IPV4_ADDRESS)) { + key = LIST_L3_INTERFACE_IPV4_ADDRESS; + } + + if(!requestProperties.containsKey(key)) { + aaiService.logKeyError(String.format("%s,%s", L3_INTERFACE_IPV4_ADDRESS, LIST_L3_INTERFACE_IPV4_ADDRESS)); + } + + String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + + request_url = request_url.replace("{l3-interface-ipv4-address}", encoded_vnf) ; + + aaiService.LOGwriteDateTrace("l3-interface-ipv4-address", requestProperties.getProperty(key)); + return request_url; + } + + /* + * (non-Javadoc) + * @see org.onap.ccsdk.sli.adaptors.aai.PathConfigurator#configurePath(java.lang.String) + */ +// @Override +// public void processRequestPathValues(Map nameValues) { +// String[] paths = +// { +// "/aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}", +// "/aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}", +// "/aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}", +// "/aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}" +// }; +// +// Listkeys = new LinkedList(); +// keys.addAll(nameValues.keySet()); +// for(String key : keys) { +// if(key.contains(".")) { +// key = key.replaceAll("_", "-"); +// if(!LIST_L3_INTERFACE_IPV4_ADDRESS.equals(key)) { +// int index = key.indexOf("."); +// String resource = key.substring(0, index); +// AAIRequest rx = createRequest(resource, nameValues); +// if(rx != null) { +// pathElements.add(rx); +// } +// } +// } +// } +// super.processRequestPathValues(nameValues); +// } +// List pathElements = new LinkedList(); + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/L3InterfaceIpv6AddressListRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/L3InterfaceIpv6AddressListRequest.java new file mode 100644 index 00000000..5cdc0de6 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/L3InterfaceIpv6AddressListRequest.java @@ -0,0 +1,179 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Properties; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.L3InterfaceIpv6AddressList; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class L3InterfaceIpv6AddressListRequest extends AAIRequest { + + /* + * Note: there are 3 possible paths: + * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/network/vpes/vpe/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/network/vpes/vpe/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/network/vpes/vpe/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/network/vpes/vpe/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + * aaiv7:inventory/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} + */ + + public static final String L3_INTERFACE_IPV6_ADDRESS_LIST_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.l3.interface.ipv6.address.list"; + public static final String VLAN_L3_INTERFACE_IPV6_ADDRESS_LIST_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.vlan.l3.interface.ipv6.address.list"; + + private final String l3_interface_ipv6_address_list_path; + private final String vlan_l3_interface_ipv6_address_list_path; + + public static final String L3_INTERFACE_IPV6_ADDRESS = "l3-interface-ipv6-address"; + public static final String LIST_L3_INTERFACE_IPV6_ADDRESS = "l3-interface-ipv6-address-list.l3-interface-ipv6-address"; + public static final String VLAN_INTERFACE = "vlan-interface"; + public static final String VLAN_VLAN_INTERFACE = "vlan.vlan-interface"; + + public L3InterfaceIpv6AddressListRequest() { + l3_interface_ipv6_address_list_path = configProperties.getProperty(L3_INTERFACE_IPV6_ADDRESS_LIST_PATH); + vlan_l3_interface_ipv6_address_list_path = configProperties.getProperty(VLAN_L3_INTERFACE_IPV6_ADDRESS_LIST_PATH); + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return this.getRequestUrl(method, null); + } + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri+l3_interface_ipv6_address_list_path; + + if(requestProperties.containsKey(VLAN_INTERFACE) || requestProperties.containsKey(VLAN_VLAN_INTERFACE)){ + request_url = target_uri+vlan_l3_interface_ipv6_address_list_path; + request_url = processVLanRequestPathData(request_url, requestProperties); + } + + request_url = processPathData(request_url, requestProperties); + request_url = LInterfaceRequest.processPathData(request_url, requestProperties); +// request_url = GenericVnfRequest.processPathData(request_url, requestProperties); + + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + + return http_req_url; + } + + public static String processVLanRequestPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + String key = null; + + if(requestProperties.containsKey(VLAN_VLAN_INTERFACE)) { + key = VLAN_VLAN_INTERFACE; + } else if(requestProperties.containsKey(VLAN_INTERFACE)) { + key = VLAN_INTERFACE; + } else { + aaiService.logKeyError(String.format("%s,%s", VLAN_INTERFACE, VLAN_VLAN_INTERFACE)); + } + + String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + + request_url = request_url.replace("{vlan-interface}", encoded_vnf) ; + aaiService.LOGwriteDateTrace("vlan-interface", requestProperties.getProperty(key)); + return request_url; + } + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + L3InterfaceIpv6AddressList vnfc = (L3InterfaceIpv6AddressList)requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(vnfc); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + @Override + public String[] getArgsList() { + String[] args = + { + L3_INTERFACE_IPV6_ADDRESS, + LIST_L3_INTERFACE_IPV6_ADDRESS, + VLAN_INTERFACE, + VLAN_VLAN_INTERFACE, + LInterfaceRequest.INTERFACE_NAME, + LInterfaceRequest.LINTERFACE_INTERFACE_NAME, + "generic-vnf.vnf-id" + + }; + + return args; + } + + @Override + public Class getModelClass() { + return L3InterfaceIpv6AddressList.class; + } + + public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + String key = L3_INTERFACE_IPV6_ADDRESS; + if(requestProperties.containsKey(LIST_L3_INTERFACE_IPV6_ADDRESS)) { + key = LIST_L3_INTERFACE_IPV6_ADDRESS; + } + + if(!requestProperties.containsKey(key)) { + aaiService.logKeyError(String.format("%s,%s", L3_INTERFACE_IPV6_ADDRESS, LIST_L3_INTERFACE_IPV6_ADDRESS)); + } + + String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + + request_url = request_url.replace("{l3-interface-ipv6-address}", encoded_vnf) ; + + aaiService.LOGwriteDateTrace("l3-interface-ipv6-address", requestProperties.getProperty(key)); + return request_url; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/LInterfaceRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/LInterfaceRequest.java new file mode 100644 index 00000000..a9da4e45 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/LInterfaceRequest.java @@ -0,0 +1,244 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Properties; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.LInterface; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class LInterfaceRequest extends AAIRequest { + + // tenant (1602) + public static final String LAGINTERFACE_LINTERFACE_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.lag.interface.l.interface"; + public static final String LAGINTERFACE_LINTERFACE_QUERY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.lag.interface.l.interface.query"; + + public static final String P_INTERFACE_LINTERFACE_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.p.interface.l.interface"; + public static final String P_INTERFACE_LINTERFACE_QUERY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.p.interface.l.interface.query"; + + public static final String LAGINTERFACE_LINTERFACE_PNF_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.lag.interface.l.interface.pnf"; + public static final String P_INTERFACE_LINTERFACE_PNF_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.p.interface.l.interface.pnf"; + + private final String laginterface_linterface_path; + private final String laginterface_linterface_query_path; + private final String p_interface_linterface_path; + private final String p_interface_linterface_query_path; + + private final String laginterface_linterface_pnf_path; + private final String p_interface_linterface_pnf_path; + + public static final String INTERFACE_NAME = "interface-name"; + public static final String LINTERFACE_INTERFACE_NAME = "l-interface.interface-name"; + public static final String LAG_INTERFACE_INTERFACE_NAME = "lag-interface.interface-name"; + public static final String P_INTERFACE_INTERFACE_NAME = "p-interface.interface-name"; + public static final String PNF_PNF_NAME = "pnf.pnf-name"; + + public static final String ROUTER_NAME = "router-name"; + public static final String HOSTNAME = "hostname"; + + + public static enum TYPE { L2_BRIDGE_BGF, L2_BRIDGE_SBG}; + + private final TYPE type; + + public LInterfaceRequest(TYPE type) { + this.type = type; + + laginterface_linterface_path = configProperties.getProperty(LAGINTERFACE_LINTERFACE_PATH); + laginterface_linterface_query_path = configProperties.getProperty(LAGINTERFACE_LINTERFACE_QUERY_PATH); + + p_interface_linterface_path = configProperties.getProperty(P_INTERFACE_LINTERFACE_PATH); + p_interface_linterface_query_path = configProperties.getProperty(P_INTERFACE_LINTERFACE_QUERY_PATH); + + laginterface_linterface_pnf_path = configProperties.getProperty(LAGINTERFACE_LINTERFACE_PNF_PATH); + p_interface_linterface_pnf_path = configProperties.getProperty(P_INTERFACE_LINTERFACE_PNF_PATH); + } + + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = null; + String encoded_vnf = null; + String hostname = null; + String pnfname = null; + String interfaceName = null; + + if(type == TYPE.L2_BRIDGE_SBG) { + if(requestProperties.containsKey(PNF_PNF_NAME)) { + request_url = target_uri + laginterface_linterface_pnf_path; + } else { + request_url = target_uri + laginterface_linterface_path; + } + + if(requestProperties.containsKey(ROUTER_NAME)) { + hostname = requestProperties.getProperty(ROUTER_NAME); + encoded_vnf = encodeQuery(hostname); + request_url = request_url.replace("{hostname}", encoded_vnf); + } + + if(requestProperties.containsKey(HOSTNAME)) { + hostname = requestProperties.getProperty(HOSTNAME); + encoded_vnf = encodeQuery(hostname); + request_url = request_url.replace("{hostname}", encoded_vnf); + } + + if(requestProperties.containsKey(PNF_PNF_NAME)) { + pnfname = requestProperties.getProperty(PNF_PNF_NAME); + encoded_vnf = encodeQuery(pnfname); + request_url = request_url.replace("{pnf-name}", encoded_vnf); + } + + encoded_vnf = encodeQuery(requestProperties.getProperty(LAG_INTERFACE_INTERFACE_NAME)); + request_url = request_url.replace("{lag-interface.interface-name}", encoded_vnf) ; + + + interfaceName = requestProperties.getProperty(INTERFACE_NAME); + if(interfaceName == null || interfaceName.isEmpty()) { + interfaceName = requestProperties.getProperty(LINTERFACE_INTERFACE_NAME); + } + encoded_vnf = encodeQuery(interfaceName); + request_url = request_url.replace("{interface-name}", encoded_vnf) ; + + } + if(type == TYPE.L2_BRIDGE_BGF) { + if(requestProperties.containsKey(PNF_PNF_NAME)) { + request_url = target_uri + p_interface_linterface_pnf_path; + } else { + request_url = target_uri + p_interface_linterface_path; + } + + + if(requestProperties.containsKey(ROUTER_NAME)) { + hostname = requestProperties.getProperty(ROUTER_NAME); + encoded_vnf = encodeQuery(hostname); + request_url = request_url.replace("{hostname}", encoded_vnf); + } + + if(requestProperties.containsKey(HOSTNAME)) { + hostname = requestProperties.getProperty(HOSTNAME); + encoded_vnf = encodeQuery(hostname); + request_url = request_url.replace("{hostname}", encoded_vnf); + } + + if(requestProperties.containsKey(PNF_PNF_NAME)) { + pnfname = requestProperties.getProperty(PNF_PNF_NAME); + encoded_vnf = encodeQuery(pnfname); + request_url = request_url.replace("{pnf-name}", encoded_vnf); + } + + encoded_vnf = encodeQuery(requestProperties.getProperty(P_INTERFACE_INTERFACE_NAME)); + request_url = request_url.replace("{p-interface.interface-name}", encoded_vnf) ; + + + interfaceName = requestProperties.getProperty(INTERFACE_NAME); + if(interfaceName == null || interfaceName.isEmpty()) { + interfaceName = requestProperties.getProperty(LINTERFACE_INTERFACE_NAME); + } + encoded_vnf = encodeQuery(interfaceName); + request_url = request_url.replace("{interface-name}", encoded_vnf) ; + } + + + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + if(hostname != null) + aaiService.LOGwriteDateTrace("hostname", hostname); + if(pnfname != null) + aaiService.LOGwriteDateTrace("pnf-name", pnfname); + if(requestProperties.containsKey(LAG_INTERFACE_INTERFACE_NAME)) { + aaiService.LOGwriteDateTrace("lag-interface.interface-name", requestProperties.getProperty(LAG_INTERFACE_INTERFACE_NAME)); + } + if(requestProperties.containsKey(P_INTERFACE_INTERFACE_NAME)) { + aaiService.LOGwriteDateTrace("p-interface.interface-name", requestProperties.getProperty(P_INTERFACE_INTERFACE_NAME)); + } + aaiService.LOGwriteDateTrace("interface-name", interfaceName); + + return http_req_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return this.getRequestUrl(method, null); + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + LInterface vnfc = (LInterface)requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(vnfc); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + + @Override + public String[] getArgsList() { + String[] args = {}; + if(type == TYPE.L2_BRIDGE_SBG) { + String[] tmpArray = {INTERFACE_NAME, LINTERFACE_INTERFACE_NAME, LAG_INTERFACE_INTERFACE_NAME, HOSTNAME, ROUTER_NAME, PNF_PNF_NAME}; + args = tmpArray; + } + if(type == TYPE.L2_BRIDGE_BGF) { + String[] tmpArray = {INTERFACE_NAME, LINTERFACE_INTERFACE_NAME, P_INTERFACE_INTERFACE_NAME, HOSTNAME, ROUTER_NAME, PNF_PNF_NAME}; + args = tmpArray; + } + + return args; + } + + @Override + public Class getModelClass() { + return LInterface.class; + } + + @Override + public String getPrimaryResourceName(String resource) { + return "l-interface"; + } + + public static final String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + String interfaceName = requestProperties.getProperty(INTERFACE_NAME); + if(interfaceName == null || interfaceName.isEmpty()) { + interfaceName = requestProperties.getProperty(LINTERFACE_INTERFACE_NAME); + } + + request_url = request_url.replace("{interface-name}", encodeQuery(interfaceName)) ; + return request_url; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/LagInterfacePnfRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/LagInterfacePnfRequest.java new file mode 100644 index 00000000..5f84553d --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/LagInterfacePnfRequest.java @@ -0,0 +1,142 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Properties; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.LagInterface; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class LagInterfacePnfRequest extends AAIRequest { + + // tenant (1602) + public static final String LAG_INTERFACE_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface"; + public static final String LAG_INTERFACE_QUERY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface.query"; + public static final String PNF_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.pnf"; + + private final String lag_interface_path; + private final String lag_interface_query_path; + + public static final String INTERFACE_NAME = "interface-name"; + public static final String LAG_INTERFACE_INTERFACE_NAME = "lag-interface.interface-name"; + public static final String PNF_NAME = "pnf-name"; + public static final String PNF_PNF_NAME = "pnf.pnf-name"; + + + public LagInterfacePnfRequest() { + lag_interface_path = configProperties.getProperty(PNF_PATH) + "/lag-interfaces/lag-interface/{interface-name}"; + lag_interface_query_path = configProperties.getProperty(LAG_INTERFACE_QUERY_PATH); + LoggerFactory.getLogger(LagInterfacePnfRequest.class).debug("org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface=\t" + lag_interface_path); + LoggerFactory.getLogger(LagInterfacePnfRequest.class).debug("org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface.query=\t" + lag_interface_query_path); + if(lag_interface_path == null) { + LoggerFactory.getLogger(LagInterfacePnfRequest.class).warn("org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface PATH not found in aaiclient.properties"); + } + } + + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri + lag_interface_path; + String encoded_vnf = null; + + String interfaceName = null; + + if(requestProperties.containsKey(INTERFACE_NAME)) { + interfaceName = requestProperties.getProperty(INTERFACE_NAME); + } else + if(requestProperties.containsKey(LAG_INTERFACE_INTERFACE_NAME)) { + interfaceName = requestProperties.getProperty(LAG_INTERFACE_INTERFACE_NAME); + } + + encoded_vnf = encodeQuery(interfaceName); + request_url = request_url.replace("{interface-name}", encoded_vnf) ; + + request_url = processPnfRequestPathData(request_url,requestProperties); + + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + aaiService.LOGwriteDateTrace("interface-name", interfaceName); + + return http_req_url; + } + + public static String processPnfRequestPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + + String key = PNF_NAME; + if(requestProperties.containsKey(PNF_PNF_NAME)) { + key = PNF_PNF_NAME; + } + + if(!requestProperties.containsKey(key)) { + aaiService.logKeyError(String.format("%s,%s", PNF_NAME, PNF_PNF_NAME)); + } + + String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + request_url = request_url.replace("{pnf-name}", encoded_vnf) ; + + return request_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return this.getRequestUrl(method, null); + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + LagInterface vnfc = (LagInterface)requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(vnfc); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + @Override + public String[] getArgsList() { + String[] args = {INTERFACE_NAME, LAG_INTERFACE_INTERFACE_NAME, PNF_PNF_NAME}; + + return args; + } + + @Override + public Class getModelClass() { + return LagInterface.class; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/NamedQueryRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/NamedQueryRequest.java new file mode 100644 index 00000000..e1528a61 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/NamedQueryRequest.java @@ -0,0 +1,190 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Properties; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.InventoryResponseItems; + +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.AnnotationIntrospector; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.fasterxml.jackson.databind.type.TypeFactory; +import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector; + +public class NamedQueryRequest extends AAIRequest { + + public static final String NAMED_SEARCH_PATH = "org.onap.ccsdk.sli.adaptors.aai.query.named"; + + private final String named_search_path; + + public static final String NAMED_QUERY_UUID = "named-query-uuid"; + public static final String PREFIX = "prefix"; + + + public NamedQueryRequest() { + named_search_path = configProperties.getProperty(NAMED_SEARCH_PATH); + } + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri+named_search_path; + + request_url = processPathData(request_url, requestProperties); + + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + + return http_req_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return getRequestUrl(method, null); + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = AAIService.getObjectMapper(); + mapper.setSerializationInclusion(Include.NON_NULL); + mapper.setSerializationInclusion(Include.NON_EMPTY); + mapper.setSerializationInclusion(Include.NON_DEFAULT); + + AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(TypeFactory.defaultInstance()); + AnnotationIntrospector secondary = new JacksonAnnotationIntrospector(); + mapper.setAnnotationIntrospector(AnnotationIntrospector.pair(introspector, secondary)); + mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); + + AAIDatum tenant = (AAIDatum)requestDatum; + String json_text = null; + try { + ObjectNode node = mapper.valueToTree(tenant); + Iterator it = node.elements(); + while(it.hasNext()){ + JsonNode jn = it.next(); + JsonNode child = jn.get("instance-filter"); + if(child != null) { + child = child.get(0); + if(child.has("l3-network")) { + JsonNode innerChild = child.get("l3-network"); + if(innerChild != null) { + if(innerChild instanceof ObjectNode) { + ObjectNode on = ObjectNode.class.cast(innerChild); + List namesToDelete = new ArrayList(); + Iterator names = on.fieldNames(); + while(names.hasNext()) { + String name = names.next(); + if(name != null && name.startsWith("is-")) { + namesToDelete.add(name); + } + } + for(String nameToDelete : namesToDelete) { + on.remove(nameToDelete); + } + } + } + } else if(child.has("pnf")) { + JsonNode innerChild = child.get("pnf"); + if(innerChild != null) { + if(innerChild instanceof ObjectNode) { + ObjectNode on = ObjectNode.class.cast(innerChild); + List namesToDelete = new ArrayList(); + Iterator names = on.fieldNames(); + while(names.hasNext()) { + String name = names.next(); + if(name != null && name.startsWith("in-maint")) { + namesToDelete.add(name); + } + } + for(String nameToDelete : namesToDelete) { + on.remove(nameToDelete); + } + } + } + } + } + } + json_text = node.toString(); + if(json_text == null) + json_text = mapper.writeValueAsString(tenant); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + + @Override + public String[] getArgsList() { + String[] args = {NAMED_QUERY_UUID, PREFIX}; + return args; + } + + + @Override + public Class getModelClass() { + return InventoryResponseItems.class; + } + + + public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + + + String encoded_vnf ; + String key = NAMED_QUERY_UUID; + + if(requestProperties.containsKey(key)) { + encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + request_url = request_url.replace("{named-query-uuid}", encoded_vnf) ; + aaiService.LOGwriteDateTrace("named-query-uuid", requestProperties.getProperty(key)); + } + + key = PREFIX; + + if(requestProperties.containsKey(key)) { + encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + request_url = request_url.replace("{prefix}", encoded_vnf) ; + aaiService.LOGwriteDateTrace("prefix", requestProperties.getProperty(key)); + } + + return request_url; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/NodesQueryRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/NodesQueryRequest.java new file mode 100644 index 00000000..ba4da3d7 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/NodesQueryRequest.java @@ -0,0 +1,144 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Properties; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.SearchResults; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class NodesQueryRequest extends AAIRequest { + + public static final String NODES_SEARCH_PATH = "org.onap.ccsdk.sli.adaptors.aai.query.nodes"; + + private final String nodes_search_path; + + public static final String NODE_TYPE = "node-type"; + public static final String ENTITY_IDENTIFIER = "entity-identifier"; + public static final String ENTITY_VALUE = "entity-value"; + + + public NodesQueryRequest() { + nodes_search_path = configProperties.getProperty(NODES_SEARCH_PATH); + } + + +// @Override +// public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { +// +// String request_url = target_uri+generic_search_path; +// String key = START_NODE_TYPE; +// +// String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); +// request_url = request_url.replace("{vnf-id}", encoded_vnf) ; +// +// if(resourceVersion != null) { +// request_url = request_url +"?resource-version="+resourceVersion; +// } +// URL http_req_url = new URL(request_url); +// +// aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); +// +// +// return http_req_url; +// } + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri+nodes_search_path; + + request_url = processPathData(request_url, requestProperties); + + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + + return http_req_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return getRequestUrl(method, null); + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + SearchResults tenant = (SearchResults)requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(tenant); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + + @Override + public String[] getArgsList() { + String[] args = {NODE_TYPE, ENTITY_IDENTIFIER, ENTITY_VALUE}; + return args; + } + + + @Override + public Class getModelClass() { + return SearchResults.class; + } + + + public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + + String key = ENTITY_IDENTIFIER; + + String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + request_url = request_url.replace("{entity-identifier}", encoded_vnf) ; + aaiService.LOGwriteDateTrace("entity-identifier", requestProperties.getProperty(key)); + + key = ENTITY_VALUE; + + encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + request_url = request_url.replace("{entity-name}", encoded_vnf) ; + aaiService.LOGwriteDateTrace("entity-name", requestProperties.getProperty(key)); + + key = NODE_TYPE; + + encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + request_url = request_url.replace("{node-type}", encoded_vnf) ; + aaiService.LOGwriteDateTrace("node-type", requestProperties.getProperty(key)); + + return request_url; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PInterfacePnfRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PInterfacePnfRequest.java new file mode 100644 index 00000000..ea669f23 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PInterfacePnfRequest.java @@ -0,0 +1,142 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Properties; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.PInterface; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class PInterfacePnfRequest extends AAIRequest { + + // tenant (1602) + public static final String PINTERFACE_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface"; + public static final String PINTERFACE_QUERY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface.query"; + public static final String PNF_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.pnf"; + + private final String pinterface_path; + private final String pinterface_query_path; + + public static final String INTERFACE_NAME = "interface-name"; + public static final String PINTERFACE_INTERFACE_NAME = "p-interface.interface-name"; + public static final String PNF_NAME = "pnf-name"; + public static final String PNF_PNF_NAME = "pnf.pnf-name"; + + + public PInterfacePnfRequest() { + pinterface_path = configProperties.getProperty(PNF_PATH) + "/p-interfaces/p-interface/{interface-name}"; + pinterface_query_path = configProperties.getProperty(PINTERFACE_QUERY_PATH); + LoggerFactory.getLogger(PInterfacePnfRequest.class).debug("org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface=\t" + pinterface_path); + LoggerFactory.getLogger(PInterfacePnfRequest.class).debug("org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface.query=\t" + pinterface_query_path); + if(pinterface_path == null) { + LoggerFactory.getLogger(PInterfacePnfRequest.class).warn("org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface PATH not found in aaiclient.properties"); + } + } + + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri + pinterface_path; + String encoded_vnf = null; + + String interfaceName = null; + + if(requestProperties.containsKey(INTERFACE_NAME)) { + interfaceName = requestProperties.getProperty(INTERFACE_NAME); + } else + if(requestProperties.containsKey(PINTERFACE_INTERFACE_NAME)) { + interfaceName = requestProperties.getProperty(PINTERFACE_INTERFACE_NAME); + } + + encoded_vnf = encodeQuery(interfaceName); + request_url = request_url.replace("{interface-name}", encoded_vnf) ; + + request_url = processPnfRequestPathData(request_url,requestProperties); + + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + aaiService.LOGwriteDateTrace("interface-name", interfaceName); + + return http_req_url; + } + + public static String processPnfRequestPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + + String key = PNF_NAME; + if(requestProperties.containsKey(PNF_PNF_NAME)) { + key = PNF_PNF_NAME; + } + + if(!requestProperties.containsKey(key)) { + aaiService.logKeyError(String.format("%s,%s", PNF_NAME, PNF_PNF_NAME)); + } + + String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); + request_url = request_url.replace("{pnf-name}", encoded_vnf) ; + + return request_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return this.getRequestUrl(method, null); + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + PInterface vnfc = (PInterface)requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(vnfc); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + @Override + public String[] getArgsList() { + String[] args = {INTERFACE_NAME, PINTERFACE_INTERFACE_NAME, PNF_NAME, PNF_PNF_NAME}; + + return args; + } + + @Override + public Class getModelClass() { + return PInterface.class; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PInterfaceRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PInterfaceRequest.java new file mode 100644 index 00000000..378e125d --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PInterfaceRequest.java @@ -0,0 +1,132 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.PInterface; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class PInterfaceRequest extends AAIRequest { + + // tenant (1602) + public static final String PINTERFACE_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface"; + public static final String PINTERFACE_QUERY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface.query"; + + private final String pinterface_path; + private final String pinterface_query_path; + + public static final String HOSTNAME = "hostname"; + public static final String PSERVER_HOSTNAME = "pserver.hostname"; + public static final String INTERFACE_NAME = "interface-name"; + public static final String PINTERFACE_INTERFACE_NAME = "p-interface.interface-name"; + + + public PInterfaceRequest() { + pinterface_path = configProperties.getProperty(PINTERFACE_PATH); + pinterface_query_path = configProperties.getProperty(PINTERFACE_QUERY_PATH); + LoggerFactory.getLogger(PInterfaceRequest.class).debug("org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface=\t" + pinterface_path); + LoggerFactory.getLogger(PInterfaceRequest.class).debug("org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface.query=\t" + pinterface_query_path); + if(pinterface_path == null) { + LoggerFactory.getLogger(PInterfaceRequest.class).warn("org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface PATH not found in aaiclient.properties"); + } + } + + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri + pinterface_path; + String encoded_vnf = null; + + String hostname = null; + String interfaceName = null; + + if(requestProperties.containsKey(HOSTNAME)) { + hostname = requestProperties.getProperty(HOSTNAME); + } + if(requestProperties.containsKey(PSERVER_HOSTNAME)) { + hostname = requestProperties.getProperty(PSERVER_HOSTNAME); + } + + if(requestProperties.containsKey(INTERFACE_NAME)) { + interfaceName = requestProperties.getProperty(INTERFACE_NAME); + } + if(requestProperties.containsKey(PINTERFACE_INTERFACE_NAME)) { + interfaceName = requestProperties.getProperty(PINTERFACE_INTERFACE_NAME); + } + + encoded_vnf = encodeQuery(hostname); + request_url = request_url.replace("{hostname}", encoded_vnf) ; + + encoded_vnf = encodeQuery(interfaceName); + request_url = request_url.replace("{interface-name}", encoded_vnf) ; + + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + aaiService.LOGwriteDateTrace("hostname", hostname); + aaiService.LOGwriteDateTrace("interface-name", hostname); + + return http_req_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return this.getRequestUrl(method, null); + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + PInterface vnfc = (PInterface)requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(vnfc); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + @Override + public String[] getArgsList() { + String[] args = {HOSTNAME, PSERVER_HOSTNAME, INTERFACE_NAME, PINTERFACE_INTERFACE_NAME}; + return args; + } + + @Override + public Class getModelClass() { + return PInterface.class; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PathRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PathRequest.java new file mode 100644 index 00000000..a42e045b --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PathRequest.java @@ -0,0 +1,88 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class PathRequest extends AAIRequest { + + private final Class classType; + + public static final String RESOURCE_PATH = "resource-path"; + + public PathRequest(Class type) { + classType = (Class)type; + } + + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri + "{resource-path}"; + + String encoded_vnf = requestProperties.getProperty(RESOURCE_PATH); + request_url = request_url.replace("{resource-path}", encoded_vnf) ; + + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + + return http_req_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return this.getRequestUrl(method, null); + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + String json_text = null; + try { + json_text = mapper.writeValueAsString(classType); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + @Override + public String[] getArgsList() { + String[] args = {RESOURCE_PATH}; + return args; + } + + @Override + public Class getModelClass() { + return classType; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PhysicalLinkRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PhysicalLinkRequest.java new file mode 100644 index 00000000..4db95df1 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/PhysicalLinkRequest.java @@ -0,0 +1,112 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.PhysicalLink; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class PhysicalLinkRequest extends AAIRequest { + + // physical link + public static final String PHYSICAL_LINK_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.physical.link"; + public static final String PHYSICAL_LINK_QUERY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.physical.link.query"; + + private final String physical_link_path; + private final String physical_link_query_path; + + public static final String LINK_NAME = "link-name"; + public static final String PHYSICAL_LINK_NAME = "physical-link.link-name"; + + + public PhysicalLinkRequest() { + physical_link_path = configProperties.getProperty(PHYSICAL_LINK_PATH); + physical_link_query_path = configProperties.getProperty(PHYSICAL_LINK_QUERY_PATH); + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return this.getRequestUrl(method, null); + } + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri+physical_link_path; + + String linkName = null; + if(requestProperties.containsKey(LINK_NAME)) { + linkName = requestProperties.getProperty(LINK_NAME); + } + + if(requestProperties.containsKey(PHYSICAL_LINK_NAME)) { + linkName = requestProperties.getProperty(PHYSICAL_LINK_NAME); + } + + + String encoded_vnf = encodeQuery(linkName); + request_url = request_url.replace("{link-name}", encoded_vnf) ; + + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + aaiService.LOGwriteDateTrace("link-name", linkName); + + return http_req_url; + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + PhysicalLink vpe = (PhysicalLink)requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(vpe); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + @Override + public String[] getArgsList() { + String[] args = {LINK_NAME, PHYSICAL_LINK_NAME}; + + return args; + } + + @Override + public Class getModelClass() { + return PhysicalLink.class; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/RelationshipRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/RelationshipRequest.java new file mode 100644 index 00000000..8c3d107c --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/RelationshipRequest.java @@ -0,0 +1,126 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.RelationshipList; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class RelationshipRequest extends AAIRequest { + + // tenant (1602) + public static final String RELATIONSHIP_LIST_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.relationship.list"; + public static final String RELATIONSHIP_LIST_QUERY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.relationship.list.query"; + + private final String relationship_path; + private final String relationship_query_path; + + public static final String RELATED_TO = "related-to"; + public static final String RELATIONSHIP_KEY = "relationship-key"; + + public RelationshipRequest() { + relationship_path = configProperties.getProperty(RELATIONSHIP_LIST_PATH, "/relationship-list/relationship"); + relationship_query_path = configProperties.getProperty(RELATIONSHIP_LIST_QUERY_PATH); + } + + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + AAIRequest masterRequest = (AAIRequest)requestProperties.get(MASTER_REQUEST); + URL masterURL = masterRequest.getRequestUrl(method, null); + + String request_url = masterURL.toString(); + request_url = request_url + relationship_path; + + if(request_url.contains("//")) { + request_url = request_url.replaceAll("//", "/"); + } + + if(requestProperties.containsKey(RELATED_TO)) { + String encoded_vnf = encodeQuery(requestProperties.getProperty(RELATED_TO)); + request_url = request_url.replace("{related-to}", encoded_vnf) ; + } + +// if(resourceVersion != null) { +// request_url = request_url +"?resource-version="+resourceVersion; +// } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + aaiService.LOGwriteDateTrace("related-to", requestProperties.getProperty(RELATED_TO)); + + return http_req_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = target_uri+relationship_query_path; + String encoded_vnf = encodeQuery(requestProperties.getProperty(RELATIONSHIP_KEY)); + request_url = request_url.replace("{tenant-name}", encoded_vnf) ; + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + aaiService.LOGwriteDateTrace("tenant_name", requestProperties.getProperty(RELATIONSHIP_KEY)); + + return http_req_url; + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + Object tenant = requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(tenant); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + + @Override + public String[] getArgsList() { + String[] args = {RELATED_TO, RELATIONSHIP_KEY}; + return args; + } + + + @Override + public Class getModelClass() { + return RelationshipList.class; + } + + public boolean isDeleteDataRequired() { + return true; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/SelfLinkRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/SelfLinkRequest.java new file mode 100644 index 00000000..e4fd3d93 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/SelfLinkRequest.java @@ -0,0 +1,98 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.base.Joiner; + +public class SelfLinkRequest extends AAIRequest { + + private final Class classType; + + public static final String SELFLINK = "selflink"; + + public SelfLinkRequest(Class type) { + classType = (Class)type; + } + + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = null; + + request_url = requestProperties.getProperty(SELFLINK); + + String query = null; + + if(request_url.contains("?")) { + query = request_url.substring(request_url.indexOf("?")); + Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("="); +// String queryString = mapJoiner.join(query); + } else { + request_url = request_url + "?depth=1"; + } + + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + + return http_req_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return this.getRequestUrl(method, null); + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + String json_text = null; + try { + json_text = mapper.writeValueAsString(classType); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + @Override + public String[] getArgsList() { + String[] args = {SELFLINK}; + return args; + } + + @Override + public Class getModelClass() { + return classType; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/SubInterfaceRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/SubInterfaceRequest.java new file mode 100644 index 00000000..3cbe187c --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/SubInterfaceRequest.java @@ -0,0 +1,184 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Properties; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.LInterface; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class SubInterfaceRequest extends AAIRequest { + + // tenant (1602) + public static final String PNF_LAGINTERFACE_SUBINTERFACE_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.pnf.lag.interface.subinterface"; + public static final String PNF_LAGINTERFACE_SUBINTERFACE_QUERY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.pnf.lag.interface.subinterface.query"; + + public static final String PNF_P_INTERFACE_SUBINTERFACE_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.pnf.p.interface.l.interface"; + public static final String PNF_P_INTERFACE_SUBINTERFACE_QUERY_PATH = "org.onap.ccsdk.sli.adaptors.aai.path.pnf.p.interface.l.interface.query"; + + private final String pnf_laginterface_subinterface_path; + private final String pnf_laginterface_subinterface_query_path; + private final String pnf_p_interface_subinterface_path; + private final String pnf_p_interface_subinterface_query_path; + + public static final String SUBINTERFACE_INTERFACE_NAME = "l-interface.interface-name"; + public static final String LAG_INTERFACE_INTERFACE_NAME = "lag-interface.interface-name"; + public static final String PNF_PNF_NAME = "pnf.pnf-name"; + public static enum TYPE { L2_BRIDGE_BGF, L2_BRIDGE_SBG}; + + private final TYPE type; + + public SubInterfaceRequest(TYPE type) { + this.type = type; + + pnf_laginterface_subinterface_path = configProperties.getProperty(PNF_LAGINTERFACE_SUBINTERFACE_PATH); + pnf_laginterface_subinterface_query_path = configProperties.getProperty(PNF_LAGINTERFACE_SUBINTERFACE_QUERY_PATH); + + pnf_p_interface_subinterface_path = configProperties.getProperty(PNF_P_INTERFACE_SUBINTERFACE_PATH); + pnf_p_interface_subinterface_query_path = configProperties.getProperty(PNF_P_INTERFACE_SUBINTERFACE_QUERY_PATH); + } + + + @Override + public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { + + String request_url = null; + String encoded_vnf = null; + + String pnfname = null; + String interfaceName = null; + + if(type == TYPE.L2_BRIDGE_SBG) { + request_url = target_uri + pnf_laginterface_subinterface_path; + + if(requestProperties.containsKey(PNF_PNF_NAME)) { + pnfname = requestProperties.getProperty(PNF_PNF_NAME); + encoded_vnf = encodeQuery(pnfname); + request_url = request_url.replace("{pnf-name}", encoded_vnf); + } + + encoded_vnf = encodeQuery(requestProperties.getProperty(LAG_INTERFACE_INTERFACE_NAME)); + request_url = request_url.replace("{lag-interface.interface-name}", encoded_vnf) ; + + + interfaceName = requestProperties.getProperty(SUBINTERFACE_INTERFACE_NAME); + encoded_vnf = encodeQuery(interfaceName); + request_url = request_url.replace("{interface-name}", encoded_vnf) ; + + } + if(type == TYPE.L2_BRIDGE_BGF) { + request_url = target_uri + pnf_p_interface_subinterface_path; + + if(requestProperties.containsKey(PNF_PNF_NAME)) { + pnfname = requestProperties.getProperty(PNF_PNF_NAME); + encoded_vnf = encodeQuery(pnfname); + request_url = request_url.replace("{pnf-name}", encoded_vnf); + } + + encoded_vnf = encodeQuery(requestProperties.getProperty(PInterfaceRequest.PINTERFACE_INTERFACE_NAME)); + request_url = request_url.replace("{p-interface.interface-name}", encoded_vnf) ; + + + interfaceName = requestProperties.getProperty(SUBINTERFACE_INTERFACE_NAME); + encoded_vnf = encodeQuery(interfaceName); + request_url = request_url.replace("{interface-name}", encoded_vnf) ; + } + + + if(resourceVersion != null) { + request_url = request_url +"?resource-version="+resourceVersion; + } + URL http_req_url = new URL(request_url); + + aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); + + if(pnfname != null) + aaiService.LOGwriteDateTrace("pnf-name", pnfname); + if(requestProperties.containsKey(LAG_INTERFACE_INTERFACE_NAME)) { + aaiService.LOGwriteDateTrace("lag-interface.interface-name", requestProperties.getProperty(LAG_INTERFACE_INTERFACE_NAME)); + } + if(requestProperties.containsKey(PInterfaceRequest.PINTERFACE_INTERFACE_NAME)) { + aaiService.LOGwriteDateTrace("p-interface.interface-name", requestProperties.getProperty(PInterfaceRequest.PINTERFACE_INTERFACE_NAME)); + } + aaiService.LOGwriteDateTrace("interface-name", interfaceName); + + return http_req_url; + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return this.getRequestUrl(method, null); + } + + + @Override + public String toJSONString() { + ObjectMapper mapper = getObjectMapper(); + LInterface vnfc = (LInterface)requestDatum; + String json_text = null; + try { + json_text = mapper.writeValueAsString(vnfc); + } catch (JsonProcessingException exc) { + handleException(this, exc); + return null; + } + return json_text; + } + + + @Override + public String[] getArgsList() { + String[] args = {}; + if(type == TYPE.L2_BRIDGE_SBG) { + String[] tmpArray = {SUBINTERFACE_INTERFACE_NAME, LAG_INTERFACE_INTERFACE_NAME, PNF_PNF_NAME}; + args = tmpArray; + } + if(type == TYPE.L2_BRIDGE_BGF) { + String[] tmpArray = {SUBINTERFACE_INTERFACE_NAME, PInterfaceRequest.PINTERFACE_INTERFACE_NAME, PNF_PNF_NAME}; + args = tmpArray; + } + + return args; + } + + @Override + public Class getModelClass() { + return LInterface.class; + } + + @Override + public String getPrimaryResourceName(String resource) { + return "sub-interface"; + } + + public static final String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + String interfaceName = requestProperties.getProperty(SUBINTERFACE_INTERFACE_NAME); + request_url = request_url.replace("{interface-name}", encodeQuery(interfaceName)) ; + return request_url; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/UpdateRequest.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/UpdateRequest.java new file mode 100644 index 00000000..705f53d2 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/UpdateRequest.java @@ -0,0 +1,106 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Map; +import java.util.Properties; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class UpdateRequest extends AAIRequest { + + private AAIRequest request; + private Map params; + + public UpdateRequest(AAIRequest request, Map parms) { + this.request = request; + this.params = parms; + } + + @Override + public URL getRequestUrl(String method, String resourceVersion) + throws UnsupportedEncodingException, MalformedURLException { + return request.getRequestUrl(method, resourceVersion); + } + + @Override + public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { + return request.getRequestQueryUrl(method); + } + + @Override + public String toJSONString() { + ObjectMapper mapper = AAIService.getObjectMapper(); + String json = null; + + try { + json = mapper.writeValueAsString(params); + } catch (JsonProcessingException e) { + LOG.error("Could not convert parameters of " + request.getRequestObject().getClass().getName(), e); + } + + return json; + } + + @Override + public String[] getArgsList() { + return request.getArgsList(); + } + + @Override + public Class getModelClass() { + return request.getModelClass(); + } + + @Override + public void addRequestProperty(String key, String value) { + request.requestProperties.put(key, value); + } + + public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { + +// if(request != null) { +// Class clazz = request.getClass(); +// Method function = null; +// try { +// function = clazz.getMethod("processPathData", request_url.getClass(), requestProperties.getClass()); +// request_url = (String) function.invoke(null, request_url, requestProperties); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } + +// request.processPathData(request_url, requestProperties); + return request_url; + } + + public void processRequestPathValues(Map nameValues) { + request.processRequestPathValues(nameValues); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/AAIDatum.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/AAIDatum.java new file mode 100644 index 00000000..84323176 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/AAIDatum.java @@ -0,0 +1,26 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data; + +public interface AAIDatum { + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/EchoResponse.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/EchoResponse.java new file mode 100644 index 00000000..576c1570 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/EchoResponse.java @@ -0,0 +1,76 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "responseMessages" +}) +public class EchoResponse implements AAIDatum { + + @JsonProperty("responseMessages") + private ResponseMessages responseMessages; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The responseMessages + */ + @JsonProperty("responseMessages") + public ResponseMessages getResponseMessages() { + return responseMessages; + } + + /** + * + * @param responseMessages + * The responseMessages + */ + @JsonProperty("responseMessages") + public void setResponseMessages(ResponseMessages responseMessages) { + this.responseMessages = responseMessages; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ErrorResponse.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ErrorResponse.java new file mode 100644 index 00000000..6a255fcf --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ErrorResponse.java @@ -0,0 +1,78 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Generated; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "requestError" +}) +public class ErrorResponse { + + @JsonProperty("requestError") + private RequestError requestError; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The requestError + */ + @JsonProperty("requestError") + public RequestError getRequestError() { + return requestError; + } + + /** + * + * @param requestError + * The requestError + */ + @JsonProperty("requestError") + public void setRequestError(RequestError requestError) { + this.requestError = requestError; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/RequestError.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/RequestError.java new file mode 100644 index 00000000..9bbca18f --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/RequestError.java @@ -0,0 +1,78 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Generated; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "serviceException" +}) +public class RequestError { + + @JsonProperty("serviceException") + private ServiceException serviceException; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The serviceException + */ + @JsonProperty("serviceException") + public ServiceException getServiceException() { + return serviceException; + } + + /** + * + * @param serviceException + * The serviceException + */ + @JsonProperty("serviceException") + public void setServiceException(ServiceException serviceException) { + this.serviceException = serviceException; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ResourceVersion.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ResourceVersion.java new file mode 100644 index 00000000..f5901a8b --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ResourceVersion.java @@ -0,0 +1,28 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data; + +public interface ResourceVersion { + + public String getResourceVersion(); + public void setResourceVersion(String resourceVersion); +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ResponseMessage.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ResponseMessage.java new file mode 100644 index 00000000..db377879 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ResponseMessage.java @@ -0,0 +1,122 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "messageId", + "text", + "variables" +}) +public class ResponseMessage { + + @JsonProperty("messageId") + private String messageId; + @JsonProperty("text") + private String text; + @JsonProperty("variables") + private Variables variables; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The messageId + */ + @JsonProperty("messageId") + public String getMessageId() { + return messageId; + } + + /** + * + * @param messageId + * The messageId + */ + @JsonProperty("messageId") + public void setMessageId(String messageId) { + this.messageId = messageId; + } + + /** + * + * @return + * The text + */ + @JsonProperty("text") + public String getText() { + return text; + } + + /** + * + * @param text + * The text + */ + @JsonProperty("text") + public void setText(String text) { + this.text = text; + } + + /** + * + * @return + * The variables + */ + @JsonProperty("variables") + public Variables getVariables() { + return variables; + } + + /** + * + * @param variables + * The variables + */ + @JsonProperty("variables") + public void setVariables(Variables variables) { + this.variables = variables; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ResponseMessages.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ResponseMessages.java new file mode 100644 index 00000000..a2387808 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ResponseMessages.java @@ -0,0 +1,78 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "responseMessage" +}) +public class ResponseMessages { + + @JsonProperty("responseMessage") + private List responseMessage = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The responseMessage + */ + @JsonProperty("responseMessage") + public List getResponseMessage() { + return responseMessage; + } + + /** + * + * @param responseMessage + * The responseMessage + */ + @JsonProperty("responseMessage") + public void setResponseMessage(List responseMessage) { + this.responseMessage = responseMessage; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ServiceException.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ServiceException.java new file mode 100644 index 00000000..b98d3d8f --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/ServiceException.java @@ -0,0 +1,126 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Generated; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "messageId", + "text", + "variables" +}) +public class ServiceException { + + @JsonProperty("messageId") + private String messageId; + @JsonProperty("text") + private String text; + @JsonProperty("variables") + private List variables = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The messageId + */ + @JsonProperty("messageId") + public String getMessageId() { + return messageId; + } + + /** + * + * @param messageId + * The messageId + */ + @JsonProperty("messageId") + public void setMessageId(String messageId) { + this.messageId = messageId; + } + + /** + * + * @return + * The text + */ + @JsonProperty("text") + public String getText() { + return text; + } + + /** + * + * @param text + * The text + */ + @JsonProperty("text") + public void setText(String text) { + this.text = text; + } + + /** + * + * @return + * The variables + */ + @JsonProperty("variables") + public List getVariables() { + return variables; + } + + /** + * + * @param variables + * The variables + */ + @JsonProperty("variables") + public void setVariables(List variables) { + this.variables = variables; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/SubInterface.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/SubInterface.java new file mode 100644 index 00000000..f1550780 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/SubInterface.java @@ -0,0 +1,171 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +import org.openecomp.aai.inventory.v10.RelationshipList; +import org.openecomp.aai.inventory.v10.Vlans; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "interface-name", + "interface-role", + "resource-version", + "vlans", + "relationshipList" +}) +public class SubInterface implements AAIDatum { + + @JsonProperty("interface-name") + private String interfaceName; + @JsonProperty("interface-role") + private String interfaceRole; + @JsonProperty("resource-version") + private String resourceVersion; + @JsonProperty("vlans") + private Vlans vlans; + @JsonProperty("relationshipList") + private RelationshipList relationshipList; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The interfaceName + */ + @JsonProperty("interface-name") + public String getInterfaceName() { + return interfaceName; + } + + /** + * + * @param interfaceName + * The interface-name + */ + @JsonProperty("interface-name") + public void setInterfaceName(String interfaceName) { + this.interfaceName = interfaceName; + } + + /** + * + * @return + * The interfaceRole + */ + @JsonProperty("interface-role") + public String getInterfaceRole() { + return interfaceRole; + } + + /** + * + * @param interfaceRole + * The interface-role + */ + @JsonProperty("interface-role") + public void setInterfaceRole(String interfaceRole) { + this.interfaceRole = interfaceRole; + } + + /** + * + * @return + * The resourceVersion + */ + @JsonProperty("resource-version") + public String getResourceVersion() { + return resourceVersion; + } + + /** + * + * @param resourceVersion + * The resource-version + */ + @JsonProperty("resource-version") + public void setResourceVersion(String resourceVersion) { + this.resourceVersion = resourceVersion; + } + + /** + * + * @return + * The vlans + */ + @JsonProperty("vlans") + public Vlans getVlans() { + return vlans; + } + + /** + * + * @param vlans + * The vlans + */ + @JsonProperty("vlans") + public void setVlans(Vlans vlans) { + this.vlans = vlans; + } + + /** + * + * @return + * The relationshipList + */ + @JsonProperty("relationshipList") + public RelationshipList getRelationshipList() { + return relationshipList; + } + + /** + * + * @param relationshipList + * The relationshipList + */ + @JsonProperty("relationshipList") + public void setRelationshipList(RelationshipList relationshipList) { + this.relationshipList = relationshipList; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/Variables.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/Variables.java new file mode 100644 index 00000000..3b03ba47 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/Variables.java @@ -0,0 +1,78 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "variable" +}) +public class Variables { + + @JsonProperty("variable") + private List variable = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The variable + */ + @JsonProperty("variable") + public List getVariable() { + return variable; + } + + /** + * + * @param variable + * The variable + */ + @JsonProperty("variable") + public void setVariable(List variable) { + this.variable = variable; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/notify/KeyDatum.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/notify/KeyDatum.java new file mode 100644 index 00000000..641a8abd --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/notify/KeyDatum.java @@ -0,0 +1,99 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data.notify; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "key-name", + "key-value" +}) +public class KeyDatum { + + @JsonProperty("key-name") + private String keyName; + @JsonProperty("key-value") + private String keyValue; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The keyName + */ + @JsonProperty("key-name") + public String getKeyName() { + return keyName; + } + + /** + * + * @param keyName + * The key-name + */ + @JsonProperty("key-name") + public void setKeyName(String keyName) { + this.keyName = keyName; + } + + /** + * + * @return + * The keyValue + */ + @JsonProperty("key-value") + public String getKeyValue() { + return keyValue; + } + + /** + * + * @param keyValue + * The key-value + */ + @JsonProperty("key-value") + public void setKeyValue(String keyValue) { + this.keyValue = keyValue; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/notify/NotifyEvent.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/notify/NotifyEvent.java new file mode 100644 index 00000000..d97b3523 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/notify/NotifyEvent.java @@ -0,0 +1,170 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data.notify; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "event-id", + "event-trigger", + "key-data", + "node-type", + "selflink" +}) +public class NotifyEvent { + + @JsonProperty("event-id") + private String eventId; + @JsonProperty("event-trigger") + private String eventTrigger; + @JsonProperty("key-data") + private List keyData = new ArrayList(); + @JsonProperty("node-type") + private String nodeType; + @JsonProperty("selflink") + private String selflink; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The eventId + */ + @JsonProperty("event-id") + public String getEventId() { + return eventId; + } + + /** + * + * @param eventId + * The event-id + */ + @JsonProperty("event-id") + public void setEventId(String eventId) { + this.eventId = eventId; + } + + /** + * + * @return + * The eventTrigger + */ + @JsonProperty("event-trigger") + public String getEventTrigger() { + return eventTrigger; + } + + /** + * + * @param eventTrigger + * The event-trigger + */ + @JsonProperty("event-trigger") + public void setEventTrigger(String eventTrigger) { + this.eventTrigger = eventTrigger; + } + + /** + * + * @return + * The keyData + */ + @JsonProperty("key-data") + public List getKeyData() { + return keyData; + } + + /** + * + * @param keyData + * The key-data + */ + @JsonProperty("key-data") + public void setKeyData(List keyData) { + this.keyData = keyData; + } + + /** + * + * @return + * The nodeType + */ + @JsonProperty("node-type") + public String getNodeType() { + return nodeType; + } + + /** + * + * @param nodeType + * The node-type + */ + @JsonProperty("node-type") + public void setNodeType(String nodeType) { + this.nodeType = nodeType; + } + + /** + * + * @return + * The selflink + */ + @JsonProperty("selflink") + public String getSelflink() { + return selflink; + } + + /** + * + * @param selflink + * The selflink + */ + @JsonProperty("selflink") + public void setSelflink(String selflink) { + this.selflink = selflink; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Flavor.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Flavor.java new file mode 100644 index 00000000..6ffc30c4 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Flavor.java @@ -0,0 +1,122 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data.v1507; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "flavorId", + "flavorName", + "flavorLink" +}) +public class Flavor { + + @JsonProperty("flavorId") + private String flavorId; + @JsonProperty("flavorName") + private String flavorName; + @JsonProperty("flavorLink") + private String flavorLink; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The flavorId + */ + @JsonProperty("flavorId") + public String getFlavorId() { + return flavorId; + } + + /** + * + * @param flavorId + * The flavorId + */ + @JsonProperty("flavorId") + public void setFlavorId(String flavorId) { + this.flavorId = flavorId; + } + + /** + * + * @return + * The flavorName + */ + @JsonProperty("flavorName") + public String getFlavorName() { + return flavorName; + } + + /** + * + * @param flavorName + * The flavorName + */ + @JsonProperty("flavorName") + public void setFlavorName(String flavorName) { + this.flavorName = flavorName; + } + + /** + * + * @return + * The flavorLink + */ + @JsonProperty("flavorLink") + public String getFlavorLink() { + return flavorLink; + } + + /** + * + * @param flavorLink + * The flavorLink + */ + @JsonProperty("flavorLink") + public void setFlavorLink(String flavorLink) { + this.flavorLink = flavorLink; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Host.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Host.java new file mode 100644 index 00000000..7c171ebd --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Host.java @@ -0,0 +1,122 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data.v1507; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "hostId", + "hostname", + "hostLoc" +}) +public class Host { + + @JsonProperty("hostId") + private String hostId; + @JsonProperty("hostname") + private String hostname; + @JsonProperty("hostLoc") + private String hostLoc; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The hostId + */ + @JsonProperty("hostId") + public String getHostId() { + return hostId; + } + + /** + * + * @param hostId + * The hostId + */ + @JsonProperty("hostId") + public void setHostId(String hostId) { + this.hostId = hostId; + } + + /** + * + * @return + * The hostname + */ + @JsonProperty("hostname") + public String getHostname() { + return hostname; + } + + /** + * + * @param hostname + * The hostname + */ + @JsonProperty("hostname") + public void setHostname(String hostname) { + this.hostname = hostname; + } + + /** + * + * @return + * The hostLoc + */ + @JsonProperty("hostLoc") + public String getHostLoc() { + return hostLoc; + } + + /** + * + * @param hostLoc + * The hostLoc + */ + @JsonProperty("hostLoc") + public void setHostLoc(String hostLoc) { + this.hostLoc = hostLoc; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Image.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Image.java new file mode 100644 index 00000000..0e27c541 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Image.java @@ -0,0 +1,237 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data.v1507; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "imageId", + "imageName", + "osType", + "osVersion", + "application", + "applicationVersion", + "applicationVendor", + "imageLink" +}) +public class Image { + + @JsonProperty("imageId") + private String imageId; + @JsonProperty("imageName") + private String imageName; + @JsonProperty("osType") + private String osType; + @JsonProperty("osVersion") + private String osVersion; + @JsonProperty("application") + private String application; + @JsonProperty("applicationVersion") + private String applicationVersion; + @JsonProperty("applicationVendor") + private String applicationVendor; + @JsonProperty("imageLink") + private String imageLink; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The imageId + */ + @JsonProperty("imageId") + public String getImageId() { + return imageId; + } + + /** + * + * @param imageId + * The imageId + */ + @JsonProperty("imageId") + public void setImageId(String imageId) { + this.imageId = imageId; + } + + /** + * + * @return + * The imageName + */ + @JsonProperty("imageName") + public String getImageName() { + return imageName; + } + + /** + * + * @param imageName + * The imageName + */ + @JsonProperty("imageName") + public void setImageName(String imageName) { + this.imageName = imageName; + } + + /** + * + * @return + * The osType + */ + @JsonProperty("osType") + public String getOsType() { + return osType; + } + + /** + * + * @param osType + * The osType + */ + @JsonProperty("osType") + public void setOsType(String osType) { + this.osType = osType; + } + + /** + * + * @return + * The osVersion + */ + @JsonProperty("osVersion") + public String getOsVersion() { + return osVersion; + } + + /** + * + * @param osVersion + * The osVersion + */ + @JsonProperty("osVersion") + public void setOsVersion(String osVersion) { + this.osVersion = osVersion; + } + + /** + * + * @return + * The application + */ + @JsonProperty("application") + public String getApplication() { + return application; + } + + /** + * + * @param application + * The application + */ + @JsonProperty("application") + public void setApplication(String application) { + this.application = application; + } + + /** + * + * @return + * The applicationVersion + */ + @JsonProperty("applicationVersion") + public String getApplicationVersion() { + return applicationVersion; + } + + /** + * + * @param applicationVersion + * The applicationVersion + */ + @JsonProperty("applicationVersion") + public void setApplicationVersion(String applicationVersion) { + this.applicationVersion = applicationVersion; + } + + /** + * + * @return + * The applicationVendor + */ + @JsonProperty("applicationVendor") + public String getApplicationVendor() { + return applicationVendor; + } + + /** + * + * @param applicationVendor + * The applicationVendor + */ + @JsonProperty("applicationVendor") + public void setApplicationVendor(String applicationVendor) { + this.applicationVendor = applicationVendor; + } + + /** + * + * @return + * The imageLink + */ + @JsonProperty("imageLink") + public String getImageLink() { + return imageLink; + } + + /** + * + * @param imageLink + * The imageLink + */ + @JsonProperty("imageLink") + public void setImageLink(String imageLink) { + this.imageLink = imageLink; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/IpAddress.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/IpAddress.java new file mode 100644 index 00000000..19a9bf6a --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/IpAddress.java @@ -0,0 +1,168 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data.v1507; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "addrId", + "addr", + "version", + "type", + "networkName" +}) +public class IpAddress { + + @JsonProperty("addrId") + private String addrId; + @JsonProperty("addr") + private String addr; + @JsonProperty("version") + private String version; + @JsonProperty("type") + private String type; + @JsonProperty("networkName") + private String networkName; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The addrId + */ + @JsonProperty("addrId") + public String getAddrId() { + return addrId; + } + + /** + * + * @param addrId + * The addrId + */ + @JsonProperty("addrId") + public void setAddrId(String addrId) { + this.addrId = addrId; + } + + /** + * + * @return + * The addr + */ + @JsonProperty("addr") + public String getAddr() { + return addr; + } + + /** + * + * @param addr + * The addr + */ + @JsonProperty("addr") + public void setAddr(String addr) { + this.addr = addr; + } + + /** + * + * @return + * The version + */ + @JsonProperty("version") + public String getVersion() { + return version; + } + + /** + * + * @param version + * The version + */ + @JsonProperty("version") + public void setVersion(String version) { + this.version = version; + } + + /** + * + * @return + * The type + */ + @JsonProperty("type") + public String getType() { + return type; + } + + /** + * + * @param type + * The type + */ + @JsonProperty("type") + public void setType(String type) { + this.type = type; + } + + /** + * + * @return + * The networkName + */ + @JsonProperty("networkName") + public String getNetworkName() { + return networkName; + } + + /** + * + * @param networkName + * The networkName + */ + @JsonProperty("networkName") + public void setNetworkName(String networkName) { + this.networkName = networkName; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Relationship.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Relationship.java new file mode 100644 index 00000000..8e04e35f --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/Relationship.java @@ -0,0 +1,147 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data.v1507; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "relatedTo", + "relatedLink", + "relationshipData", + "any" +}) +public class Relationship { + + @JsonProperty("relatedTo") + private String relatedTo; + @JsonProperty("relatedLink") + private String relatedLink; + @JsonProperty("relationshipData") + private List relationshipData = new ArrayList(); + @JsonProperty("any") + private List any = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The relatedTo + */ + @JsonProperty("relatedTo") + public String getRelatedTo() { + return relatedTo; + } + + /** + * + * @param relatedTo + * The relatedTo + */ + @JsonProperty("relatedTo") + public void setRelatedTo(String relatedTo) { + this.relatedTo = relatedTo; + } + + /** + * + * @return + * The relatedLink + */ + @JsonProperty("relatedLink") + public String getRelatedLink() { + return relatedLink; + } + + /** + * + * @param relatedLink + * The relatedLink + */ + @JsonProperty("relatedLink") + public void setRelatedLink(String relatedLink) { + this.relatedLink = relatedLink; + } + + /** + * + * @return + * The relationshipData + */ + @JsonProperty("relationshipData") + public List getRelationshipData() { + return relationshipData; + } + + /** + * + * @param relationshipData + * The relationshipData + */ + @JsonProperty("relationshipData") + public void setRelationshipData(List relationshipData) { + this.relationshipData = relationshipData; + } + + /** + * + * @return + * The any + */ + @JsonProperty("any") + public List getAny() { + return any; + } + + /** + * + * @param any + * The any + */ + @JsonProperty("any") + public void setAny(List any) { + this.any = any; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/RelationshipDatum.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/RelationshipDatum.java new file mode 100644 index 00000000..1ac21640 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/RelationshipDatum.java @@ -0,0 +1,124 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data.v1507; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "relationshipKey", + "relationshipValue", + "any" +}) +public class RelationshipDatum { + + @JsonProperty("relationshipKey") + private String relationshipKey; + @JsonProperty("relationshipValue") + private String relationshipValue; + @JsonProperty("any") + private List any = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The relationshipKey + */ + @JsonProperty("relationshipKey") + public String getRelationshipKey() { + return relationshipKey; + } + + /** + * + * @param relationshipKey + * The relationshipKey + */ + @JsonProperty("relationshipKey") + public void setRelationshipKey(String relationshipKey) { + this.relationshipKey = relationshipKey; + } + + /** + * + * @return + * The relationshipValue + */ + @JsonProperty("relationshipValue") + public String getRelationshipValue() { + return relationshipValue; + } + + /** + * + * @param relationshipValue + * The relationshipValue + */ + @JsonProperty("relationshipValue") + public void setRelationshipValue(String relationshipValue) { + this.relationshipValue = relationshipValue; + } + + /** + * + * @return + * The any + */ + @JsonProperty("any") + public List getAny() { + return any; + } + + /** + * + * @param any + * The any + */ + @JsonProperty("any") + public void setAny(List any) { + this.any = any; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/RelationshipList.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/RelationshipList.java new file mode 100644 index 00000000..3c46d21b --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/RelationshipList.java @@ -0,0 +1,101 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data.v1507; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "relationship", + "any" +}) +public class RelationshipList { + + @JsonProperty("relationship") + private List relationship = new ArrayList(); + @JsonProperty("any") + private List any = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The relationship + */ + @JsonProperty("relationship") + public List getRelationship() { + return relationship; + } + + /** + * + * @param relationship + * The relationship + */ + @JsonProperty("relationship") + public void setRelationship(List relationship) { + this.relationship = relationship; + } + + /** + * + * @return + * The any + */ + @JsonProperty("any") + public List getAny() { + return any; + } + + /** + * + * @param any + * The any + */ + @JsonProperty("any") + public void setAny(List any) { + this.any = any; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/VServer.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/VServer.java new file mode 100644 index 00000000..45d72553 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/data/v1507/VServer.java @@ -0,0 +1,262 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.data.v1507; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "vmId", + "vmName", + "vmName2", + "host", + "image", + "flavor", + "ipAddresses", + "vserverLink", + "relationshipList" +}) +public class VServer { + + @JsonProperty("vmId") + private String vmId; + @JsonProperty("vmName") + private String vmName; + @JsonProperty("vmName2") + private String vmName2; + @JsonProperty("host") + private Host host; + @JsonProperty("image") + private Image image; + @JsonProperty("flavor") + private Flavor flavor; + @JsonProperty("ipAddresses") + private List ipAddresses = new ArrayList(); + @JsonProperty("vserverLink") + private String vserverLink; + @JsonProperty("relationshipList") + private RelationshipList relationshipList; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The vmId + */ + @JsonProperty("vmId") + public String getVmId() { + return vmId; + } + + /** + * + * @param vmId + * The vmId + */ + @JsonProperty("vmId") + public void setVmId(String vmId) { + this.vmId = vmId; + } + + /** + * + * @return + * The vmName + */ + @JsonProperty("vmName") + public String getVmName() { + return vmName; + } + + /** + * + * @param vmName + * The vmName + */ + @JsonProperty("vmName") + public void setVmName(String vmName) { + this.vmName = vmName; + } + + /** + * + * @return + * The vmName2 + */ + @JsonProperty("vmName2") + public String getVmName2() { + return vmName2; + } + + /** + * + * @param vmName2 + * The vmName2 + */ + @JsonProperty("vmName2") + public void setVmName2(String vmName2) { + this.vmName2 = vmName2; + } + + /** + * + * @return + * The host + */ + @JsonProperty("host") + public Host getHost() { + return host; + } + + /** + * + * @param host + * The host + */ + @JsonProperty("host") + public void setHost(Host host) { + this.host = host; + } + + /** + * + * @return + * The image + */ + @JsonProperty("image") + public Image getImage() { + return image; + } + + /** + * + * @param image + * The image + */ + @JsonProperty("image") + public void setImage(Image image) { + this.image = image; + } + + /** + * + * @return + * The flavor + */ + @JsonProperty("flavor") + public Flavor getFlavor() { + return flavor; + } + + /** + * + * @param flavor + * The flavor + */ + @JsonProperty("flavor") + public void setFlavor(Flavor flavor) { + this.flavor = flavor; + } + + /** + * + * @return + * The ipAddresses + */ + @JsonProperty("ipAddresses") + public List getIpAddresses() { + return ipAddresses; + } + + /** + * + * @param ipAddresses + * The ipAddresses + */ + @JsonProperty("ipAddresses") + public void setIpAddresses(List ipAddresses) { + this.ipAddresses = ipAddresses; + } + + /** + * + * @return + * The vserverLink + */ + @JsonProperty("vserverLink") + public String getVserverLink() { + return vserverLink; + } + + /** + * + * @param vserverLink + * The vserverLink + */ + @JsonProperty("vserverLink") + public void setVserverLink(String vserverLink) { + this.vserverLink = vserverLink; + } + + /** + * + * @return + * The relationshipList + */ + @JsonProperty("relationshipList") + public RelationshipList getRelationshipList() { + return relationshipList; + } + + /** + * + * @param relationshipList + * The relationshipList + */ + @JsonProperty("relationshipList") + public void setRelationshipList(RelationshipList relationshipList) { + this.relationshipList = relationshipList; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/FormattedQueryRequestData.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/FormattedQueryRequestData.java new file mode 100644 index 00000000..e533a164 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/FormattedQueryRequestData.java @@ -0,0 +1,83 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.query; + +import java.util.List; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; + +import com.fasterxml.jackson.annotation.JsonProperty; + +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "start", + "query" +}) +@XmlRootElement(name = "query-request") +public class FormattedQueryRequestData implements AAIDatum { + + @JsonProperty("start") + protected List start; + + @JsonProperty("query") + private String query; + + @JsonProperty("start") + public List getStart () + { + return start; + } + + @JsonProperty("start") + public void setStart (List start) + { + this.start = start; + } + + @JsonProperty("query") + public String getQuery () + { + return query; + } + + @JsonProperty("query") + public void setQuery (String query) + { + this.query = query; + } + + @Override + public String toString() + { + return " [start = "+start+", query = "+query+"]"; + } + + public String getResourceVersion() { + return null; + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/FormattedQueryResultList.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/FormattedQueryResultList.java new file mode 100644 index 00000000..248cd959 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/FormattedQueryResultList.java @@ -0,0 +1,59 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.query; + +import java.util.List; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; + +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "results" +}) +@XmlRootElement(name = "result-list") +public class FormattedQueryResultList implements AAIDatum { + + @XmlElement(name = "results") + private List results; + @XmlElement(name = "results") + public List getResults () + { + return results; + } + @XmlElement(name = "results") + public void setResults (List results) + { + this.results = results; + } + + @Override + public String toString() + { + return "ClassPojo [results = "+results+"]"; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/InstanceFilter.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/InstanceFilter.java new file mode 100644 index 00000000..ccd63729 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/InstanceFilter.java @@ -0,0 +1,133 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.query; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Generated; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +import org.openecomp.aai.inventory.v10.L3Network; +import org.openecomp.aai.inventory.v10.Pnf; +import org.openecomp.aai.inventory.v10.LogicalLink; +import org.openecomp.aai.inventory.v10.ServiceInstance; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "logical-link", + "pnf", + "l3-network", + "service-instance" +}) +public class InstanceFilter { + + @JsonProperty("logical-link") + private LogicalLink logicalLink; + @JsonProperty("pnf") + private Pnf pnf; + @JsonProperty("l3-network") + private L3Network l3Network; + @JsonProperty("service-instance") + private ServiceInstance serviceInstance; + + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The logicalLink + */ + @JsonProperty("logical-link") + public LogicalLink getLogicalLink() { + return logicalLink; + } + + /** + * + * @param logicalLink + * The logical-link + */ + @JsonProperty("logical-link") + public void setLogicalLink(LogicalLink logicalLink) { + this.logicalLink = logicalLink; + } + + /** + * + * @return + * The pnf + */ + @JsonProperty("pnf") + public Pnf getPnf() { + return pnf; + } + + /** + * + * @param pnf + * The pnf + */ + @JsonProperty("pnf") + public void setPnf(Pnf pnf) { + this.pnf = pnf; + } + + @JsonProperty("l3-network") + public L3Network getL3Network() { + return l3Network; + } + + @JsonProperty("l3-network") + public void setL3Network(L3Network l3Network) { + this.l3Network = l3Network; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + + @JsonProperty("service-instance") + public ServiceInstance getServiceInstance() { + return serviceInstance; + } + + @JsonProperty("service-instance") + public void setServiceInstance(ServiceInstance serviceInstance) { + this.serviceInstance = serviceInstance; + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/InstanceFilters.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/InstanceFilters.java new file mode 100644 index 00000000..265c1866 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/InstanceFilters.java @@ -0,0 +1,78 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.query; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "instance-filter" +}) +public class InstanceFilters { + + @JsonProperty("instance-filter") + private List instanceFilter = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The instanceFilter + */ + @JsonProperty("instance-filter") + public List getInstanceFilter() { + return instanceFilter; + } + + /** + * + * @param instanceFilter + * The instance-filter + */ + @JsonProperty("instance-filter") + public void setInstanceFilter(List instanceFilter) { + this.instanceFilter = instanceFilter; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/NamedQuery.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/NamedQuery.java new file mode 100644 index 00000000..65350c23 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/NamedQuery.java @@ -0,0 +1,76 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.query; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "named-query-uuid" +}) +public class NamedQuery { + + @JsonProperty("named-query-uuid") + private String namedQueryUuid; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The namedQueryUuid + */ + @JsonProperty("named-query-uuid") + public String getNamedQueryUuid() { + return namedQueryUuid; + } + + /** + * + * @param namedQueryUuid + * The named-query-uuid + */ + @JsonProperty("named-query-uuid") + public void setNamedQueryUuid(String namedQueryUuid) { + this.namedQueryUuid = namedQueryUuid; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/NamedQueryData.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/NamedQueryData.java new file mode 100644 index 00000000..8188acf2 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/NamedQueryData.java @@ -0,0 +1,102 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.query; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Generated; + +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "query-parameters", + "instance-filters" +}) +public class NamedQueryData implements AAIDatum { + + @JsonProperty("query-parameters") + private QueryParameters queryParameters; + @JsonProperty("instance-filters") + private InstanceFilters instanceFilters; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The queryParameters + */ + @JsonProperty("query-parameters") + public QueryParameters getQueryParameters() { + return queryParameters; + } + + /** + * + * @param queryParameters + * The query-parameters + */ + @JsonProperty("query-parameters") + public void setQueryParameters(QueryParameters queryParameters) { + this.queryParameters = queryParameters; + } + + /** + * + * @return + * The instanceFilters + */ + @JsonProperty("instance-filters") + public InstanceFilters getInstanceFilters() { + return instanceFilters; + } + + /** + * + * @param instanceFilters + * The instance-filters + */ + @JsonProperty("instance-filters") + public void setInstanceFilters(InstanceFilters instanceFilters) { + this.instanceFilters = instanceFilters; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/QueryParameters.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/QueryParameters.java new file mode 100644 index 00000000..c6ddbcbc --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/QueryParameters.java @@ -0,0 +1,76 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.query; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "named-query" +}) +public class QueryParameters { + + @JsonProperty("named-query") + private NamedQuery namedQuery; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The namedQuery + */ + @JsonProperty("named-query") + public NamedQuery getNamedQuery() { + return namedQuery; + } + + /** + * + * @param namedQuery + * The named-query + */ + @JsonProperty("named-query") + public void setNamedQuery(NamedQuery namedQuery) { + this.namedQuery = namedQuery; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/Results.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/Results.java new file mode 100644 index 00000000..ff2269a4 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/query/Results.java @@ -0,0 +1,84 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.query; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import org.openecomp.aai.inventory.v10.*; + + +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "genericVnf", + "pserver", + "complex" +}) +@XmlRootElement(name = "results") +public class Results { + + @XmlElement(name = "generic-vnf") + private GenericVnf genericVnf; + + @XmlElement(name = "complex") + private Complex complex; + + @XmlElement(name = "pserver") + private Pserver pserver; + + + @XmlElement(name = "generic-vnf") + public GenericVnf getGenericVnf () + { + return genericVnf; + } + @XmlElement(name = "generic-vnf") + public void setGenericVnf (GenericVnf genericVnf) + { + this.genericVnf = genericVnf; + } + + @Override + public String toString() + { + return " [generic-vnf = "+genericVnf+"]"; + } + @XmlElement(name = "complex") + public Complex getComplex() { + return complex; + } + @XmlElement(name = "complex") + public void setComplex(Complex complex) { + this.complex = complex; + } + @XmlElement(name = "pserver") + public Pserver getPserver() { + return pserver; + } + @XmlElement(name = "pserver") + public void setPserver(Pserver pserver) { + this.pserver = pserver; + } +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/Action.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/Action.java new file mode 100644 index 00000000..f3d50998 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/Action.java @@ -0,0 +1,101 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.update; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "action-data", + "action-type" +}) +public class Action { + + @JsonProperty("action-data") + private List actionData = new ArrayList(); + @JsonProperty("action-type") + private String actionType; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The actionData + */ + @JsonProperty("action-data") + public List getActionData() { + return actionData; + } + + /** + * + * @param actionData + * The action-data + */ + @JsonProperty("action-data") + public void setActionData(List actionData) { + this.actionData = actionData; + } + + /** + * + * @return + * The actionType + */ + @JsonProperty("action-type") + public String getActionType() { + return actionType; + } + + /** + * + * @param actionType + * The action-type + */ + @JsonProperty("action-type") + public void setActionType(String actionType) { + this.actionType = actionType; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/ActionDatum.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/ActionDatum.java new file mode 100644 index 00000000..0cd70012 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/ActionDatum.java @@ -0,0 +1,99 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.update; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "property-name", + "property-value" +}) +public class ActionDatum { + + @JsonProperty("property-name") + private String propertyName; + @JsonProperty("property-value") + private String propertyValue; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The propertyName + */ + @JsonProperty("property-name") + public String getPropertyName() { + return propertyName; + } + + /** + * + * @param propertyName + * The property-name + */ + @JsonProperty("property-name") + public void setPropertyName(String propertyName) { + this.propertyName = propertyName; + } + + /** + * + * @return + * The propertyValue + */ + @JsonProperty("property-value") + public String getPropertyValue() { + return propertyValue; + } + + /** + * + * @param propertyValue + * The property-value + */ + @JsonProperty("property-value") + public void setPropertyValue(String propertyValue) { + this.propertyValue = propertyValue; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/Update.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/Update.java new file mode 100644 index 00000000..43f912df --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/Update.java @@ -0,0 +1,124 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.update; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "update-node-type", + "update-node-key", + "action" +}) +public class Update { + + @JsonProperty("update-node-type") + private String updateNodeType; + @JsonProperty("action") + private List action = new ArrayList(); + @JsonProperty("update-node-key") + private List updateNodeKey = new ArrayList(); + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The updateNodeType + */ + @JsonProperty("update-node-type") + public String getUpdateNodeType() { + return updateNodeType; + } + + /** + * + * @param updateNodeType + * The update-node-type + */ + @JsonProperty("update-node-type") + public void setUpdateNodeType(String updateNodeType) { + this.updateNodeType = updateNodeType; + } + + /** + * + * @return + * The action + */ + @JsonProperty("action") + public List getAction() { + return action; + } + + /** + * + * @param action + * The action + */ + @JsonProperty("action") + public void setAction(List action) { + this.action = action; + } + + /** + * + * @return + * The updateNodeKey + */ + @JsonProperty("update-node-key") + public List getUpdateNodeKey() { + return updateNodeKey; + } + + /** + * + * @param updateNodeKey + * The update-node-key + */ + @JsonProperty("update-node-key") + public void setUpdateNodeKey(List updateNodeKey) { + this.updateNodeKey = updateNodeKey; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/UpdateNodeKey.java b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/UpdateNodeKey.java new file mode 100644 index 00000000..caa1de45 --- /dev/null +++ b/aai-service/provider/src/main/java/org/onap/sli/adaptors/aai/update/UpdateNodeKey.java @@ -0,0 +1,99 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.update; + +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("org.jsonschema2pojo") +@JsonPropertyOrder({ + "key-name", + "key-value" +}) +public class UpdateNodeKey { + + @JsonProperty("key-name") + private String keyName; + @JsonProperty("key-value") + private String keyValue; + @JsonIgnore + private Map additionalProperties = new HashMap(); + + /** + * + * @return + * The keyName + */ + @JsonProperty("key-name") + public String getKeyName() { + return keyName; + } + + /** + * + * @param keyName + * The key-name + */ + @JsonProperty("key-name") + public void setKeyName(String keyName) { + this.keyName = keyName; + } + + /** + * + * @return + * The keyValue + */ + @JsonProperty("key-value") + public String getKeyValue() { + return keyValue; + } + + /** + * + * @param keyValue + * The key-value + */ + @JsonProperty("key-value") + public void setKeyValue(String keyValue) { + this.keyValue = keyValue; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } + +} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIClient.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIClient.java deleted file mode 100644 index 05921203..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIClient.java +++ /dev/null @@ -1,220 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.IOException; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; - -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicException; -import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin; -import org.onap.ccsdk.sli.core.sli.SvcLogicResource; -import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; -import org.openecomp.aai.inventory.v10.AvailabilityZone; -import org.openecomp.aai.inventory.v10.Complex; -import org.openecomp.aai.inventory.v10.CtagPool; -import org.openecomp.aai.inventory.v10.DvsSwitch; -import org.openecomp.aai.inventory.v10.GenericVnf; -import org.openecomp.aai.inventory.v10.L3Network; -import org.openecomp.aai.inventory.v10.OamNetwork; -import org.openecomp.aai.inventory.v10.PInterface; -import org.openecomp.aai.inventory.v10.PhysicalLink; -import org.openecomp.aai.inventory.v10.Pserver; -import org.openecomp.aai.inventory.v10.SearchResults; -import org.openecomp.aai.inventory.v10.Service; -import org.openecomp.aai.inventory.v10.ServiceInstance; -import org.openecomp.aai.inventory.v10.SitePairSet; -import org.openecomp.aai.inventory.v10.Tenant; -import org.openecomp.aai.inventory.v10.Vce; -import org.openecomp.aai.inventory.v10.VnfImage; -import org.openecomp.aai.inventory.v10.Vpe; -import org.openecomp.aai.inventory.v10.VplsPe; -import org.openecomp.aai.inventory.v10.VpnBinding; -import org.openecomp.aai.inventory.v10.Vserver; -import org.openecomp.sdnc.sli.aai.data.notify.NotifyEvent; -import org.openecomp.sdnc.sli.aai.data.v1507.VServer; - -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.JsonMappingException; - -public interface AAIClient extends SvcLogicResource, SvcLogicJavaPlugin { - - // VCE - public boolean postNetworkVceData(String vnf_id, Vce request) throws AAIServiceException; - public Vce requestNetworkVceData(String vnf_id) throws AAIServiceException; - public boolean deleteNetworkVceData(String vnf_id, String resourceVersion) throws AAIServiceException; - - // Service Inteface - public ServiceInstance requestServiceInterfaceData(String customer_id, String service_type, String svc_instance_id) throws AAIServiceException; - public boolean postServiceInterfaceData(String customer_id, String service_type, String svc_instance_id, ServiceInstance request) throws AAIServiceException; - public SearchResults requestServiceInstanceURL(String svc_instance_id) throws AAIServiceException; - - // VPE -// public Vpes requestNetworkVpeList() throws AAIServiceException; - public Vpe requestNetworkVpeData(String vnf_id) throws AAIServiceException; - public boolean postNetworkVpeData(String vnf_id, Vpe request) throws AAIServiceException; - public boolean deleteNetworkVpeData(String vnf_id, String resourceVersion) throws AAIServiceException; - - // VServers - public Vserver requestVServerData(String tenant_id, String vserver_id, String cloudOwner, String cloudRegionId) throws AAIServiceException; - public boolean postVServerData(String tenantId, String vserverId, String cloudOwner, String cloudRegionId, Vserver request) throws AAIServiceException; - public boolean deleteVServerData(String tenant_id, String vserver_id, String cloudOwner, String cloudRegionId, String resourceVersion) throws AAIServiceException; - - public URL requestVserverURLNodeQuery(String vserver_name) throws AAIServiceException; - public String getTenantIdFromVserverUrl(URL url); - public String getCloudOwnerFromVserverUrl(URL url); - public String getCloudRegionFromVserverUrl(URL url); - public String getVServerIdFromVserverUrl(URL url, String tennantId); - public Vserver requestVServerDataByURL(URL url) throws AAIServiceException; - - // VPLS-PE - public VplsPe requestNetworkVplsPeData(String equipment_name) throws AAIServiceException; - public boolean postNetworkVplsPeData(String vnf_id, VplsPe request) throws AAIServiceException; - public boolean deleteNetworkVplsPeData(String vnf_id, String resourceVersion) throws AAIServiceException; - - - // Complexes - public Complex requestNetworkComplexData(String vnf_id) throws AAIServiceException; - public boolean postNetworkComplexData(String vnf_id, Complex request) throws AAIServiceException; - public boolean deleteNetworkComplexData(String vnf_id, String resourceVersion) throws AAIServiceException; - - // CTag Pool - public CtagPool requestCtagPoolData(String physical_location_id, String target_pe, String availability_zone_name) throws AAIServiceException; - - // --------------------------------- 1507 --------------------------- - // Data Change - public VServer dataChangeRequestVServerData(URL url) throws AAIServiceException; - - public CtagPool dataChangeRequestCtagPoolData(URL url) throws AAIServiceException; - - public VplsPe dataChangeRequestVplsPeData(URL url) throws AAIServiceException; - - public Vpe dataChangeRequestVpeData(URL url) throws AAIServiceException; - - public DvsSwitch dataChangeRequestDvsSwitchData(URL url) throws AAIServiceException; - - public Pserver dataChangeRequestPServerData(URL url) throws AAIServiceException; - - //OAM-Network: - public OamNetwork dataChangeRequestOAMNetworkData(URL url) throws AAIServiceException; - //Availability-Zone: - public AvailabilityZone dataChangeRequestAvailabilityZoneData(URL url) throws AAIServiceException; - //Complex: - public Complex dataChangeRequestComplexData(URL url) throws AAIServiceException; - - - /* DELETE */ - public boolean dataChangeDeleteVServerData(URL url) throws AAIServiceException; - - public boolean dataChangeDeleteCtagPoolData(URL url) throws AAIServiceException; - - public boolean dataChangeDeleteVplsPeData(URL url) throws AAIServiceException; - - public boolean dataChangeDeleteVpeData(URL url) throws AAIServiceException; - - public boolean dataChangeDeleteDvsSwitchData(URL url) throws AAIServiceException; - //OAM-Network: - public boolean dataChangeDeleteOAMNetworkData(URL url) throws AAIServiceException; - //Availability-Zone: - public boolean dataChangeDeleteAvailabilityZoneData(URL url) throws AAIServiceException; - //Complex: - public boolean dataChangeDeleteComplexData(URL url) throws AAIServiceException; - - // ----------------- Release 1510 ---------------------- - // // GenericVNF - public GenericVnf requestGenericVnfData(String vnf_id) throws AAIServiceException; - public boolean postGenericVnfData(String vnf_id, GenericVnf request) throws AAIServiceException; - public boolean deleteGenericVnfData(String vnf_id, String resourceVersion) throws AAIServiceException; - - // DvsSwitch - public DvsSwitch requestDvsSwitchData(String vnf_id) throws AAIServiceException; - public boolean postDvsSwitchData(String vnf_id, DvsSwitch request) throws AAIServiceException; - public boolean deleteDvsSwitchData(String vnf_id, String resourceVersion) throws AAIServiceException; - - // PInterface - public PInterface requestPInterfaceData(String hostname, String interfaceName) throws AAIServiceException; - public boolean postPInterfaceData(String hostname, String interfaceName, PInterface request) throws AAIServiceException; - public boolean deletePInterfaceData(String hostname, String interfaceName, String resourceVersion) throws AAIServiceException; - - // Physical Link - public PhysicalLink requestPhysicalLinkData(String vnf_id) throws AAIServiceException; - public boolean postPhysicalLinkData(String vnf_id, PhysicalLink request) throws AAIServiceException; - public boolean deletePhysicalLinkData(String vnf_id, String resourceVersion) throws AAIServiceException; - - // PServers - public Pserver requestPServerData(String hostname) throws AAIServiceException; - public boolean postPServerData(String hostname, Pserver server) throws AAIServiceException; - public boolean deletePServerData(String hostname, String resourceVersion) throws AAIServiceException; - - // L3Networks - public L3Network requestL3NetworkData(String networkId) throws AAIServiceException; - public L3Network requestL3NetworkQueryByName(String networkId) throws AAIServiceException; - public boolean postL3NetworkData(String networkId, L3Network request) throws AAIServiceException; - public boolean deleteL3NetworkData(String networkId, String resourceVersion) throws AAIServiceException; - - // Vpn Bindings - public VpnBinding requestVpnBindingData(String vpnId) throws AAIServiceException; -// public boolean postVpnBindingData(String vpnId, VpnBinding request) throws AAIServiceException; - public boolean deleteVpnBindingData(String vpnId, String resourceVersion) throws AAIServiceException; - - //VnfImage - public VnfImage requestVnfImageData(String vpnId) throws AAIServiceException; - public VnfImage requestVnfImageDataByVendorModel(String vendor, String model) throws AAIServiceException; - public VnfImage requestVnfImageDataByVendorModelVersion(String vendor, String model, String version) throws AAIServiceException; - - // UBB Notify - public boolean sendNotify(NotifyEvent event, String serviceInstanceId, String pathCode) throws AAIServiceException; - - // 1512 - // Site Pair Site - public SitePairSet requestSitePairSetData(String sitePairSetId) throws AAIServiceException; - public boolean postSitePairSetData(String sitePairSetId, SitePairSet request) throws AAIServiceException; - public boolean deleteSitePairSetData(String sitePairSetId, String resourceVersion) throws AAIServiceException; - - // Services - public Service requestServiceData(String serviceId) throws AAIServiceException; - public boolean postServiceData(String serviceId, Service request) throws AAIServiceException; - public boolean deleteServiceData(String serviceId, String resourceVersion) throws AAIServiceException; - - // Node Query - 1602 - public SearchResults requestNodeQuery(String type, String entityIdentifier, String entityName) throws AAIServiceException; - public String requestDataByURL(URL url) throws AAIServiceException; -// public Object requestDataInstanceNodeQuery(String type, String vnf_name) throws AAIServiceException; - public GenericVnf requestGenericVnfeNodeQuery(String vnf_name) throws AAIServiceException; - - // // tenant - public Tenant requestTenantData(String tenant_id, String cloudOwner, String cloudRegionId) throws AAIServiceException; - public Tenant requestTenantDataByName(String tenant_name, String cloudOwner, String cloudRegionId) throws AAIServiceException; - public boolean postTenantData(String tenant_id, String cloudOwner, String cloudRegionId, Tenant request) throws AAIServiceException; -// public boolean deleteGenericVnfData(String vnf_id, String resourceVersion) throws AAIServiceException; - - - public QueryStatus backup(Map params, SvcLogicContext ctx) throws SvcLogicException; - public QueryStatus restore(Map params, SvcLogicContext ctx) throws SvcLogicException; - - public void logKeyError(String keys); - - public QueryStatus processResponseData(String rv, String resource, AAIRequest request, String prefix, SvcLogicContext ctx, HashMap nameValues, String modifier) throws JsonParseException, JsonMappingException, IOException, AAIServiceException ; - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIDeclarations.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIDeclarations.java deleted file mode 100644 index cee0847b..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIDeclarations.java +++ /dev/null @@ -1,2045 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLDecoder; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.SortedSet; -import java.util.TreeSet; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import javax.xml.bind.annotation.XmlType; - -import org.apache.commons.lang.StringUtils; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicException; -import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; -import org.openecomp.aai.inventory.v10.GenericVnf; -import org.openecomp.aai.inventory.v10.InventoryResponseItem; -import org.openecomp.aai.inventory.v10.InventoryResponseItems; -import org.openecomp.aai.inventory.v10.L3Network; -import org.openecomp.aai.inventory.v10.LogicalLink; -import org.openecomp.aai.inventory.v10.Metadata; -import org.openecomp.aai.inventory.v10.Metadatum; -import org.openecomp.aai.inventory.v10.Pnf; -import org.openecomp.aai.inventory.v10.Relationship; -import org.openecomp.aai.inventory.v10.RelationshipData; -import org.openecomp.aai.inventory.v10.RelationshipList; -import org.openecomp.aai.inventory.v10.ResultData; -import org.openecomp.aai.inventory.v10.SearchResults; -import org.openecomp.aai.inventory.v10.ServiceInstance; -import org.openecomp.aai.inventory.v10.Vlan; -import org.openecomp.aai.inventory.v10.Vlans; -import org.openecomp.aai.inventory.v10.Vserver; -import org.openecomp.sdnc.sli.aai.AAIService.AAIRequestExecutor; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; -import org.openecomp.sdnc.sli.aai.query.FormattedQueryResultList; -import org.openecomp.sdnc.sli.aai.query.InstanceFilter; -import org.openecomp.sdnc.sli.aai.query.InstanceFilters; -import org.openecomp.sdnc.sli.aai.query.NamedQuery; -import org.openecomp.sdnc.sli.aai.query.NamedQueryData; -import org.openecomp.sdnc.sli.aai.query.QueryParameters; -import org.openecomp.sdnc.sli.aai.query.Results; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; - - -public abstract class AAIDeclarations implements AAIClient { - - public static final String TRUSTSTORE_PATH = "org.openecomp.sdnc.sli.aai.ssl.trust"; - public static final String TRUSTSTORE_PSSWD = "org.openecomp.sdnc.sli.aai.ssl.trust.psswd"; - public static final String KEYSTORE_PATH = "org.openecomp.sdnc.sli.aai.ssl.key"; - public static final String KEYSTORE_PSSWD = "org.openecomp.sdnc.sli.aai.ssl.key.psswd"; - - public static final String APPLICATION_ID = "org.openecomp.sdnc.sli.aai.application"; - - public static final String CLIENT_NAME = "org.openecomp.sdnc.sli.aai.client.name"; - public static final String CLIENT_PWWD = "org.openecomp.sdnc.sli.aai.client.psswd"; - - - public static final String CONNECTION_TIMEOUT = "connection.timeout"; - public static final String READ_TIMEOUT = "read.timeout"; - - public static final String TARGET_URI = "org.openecomp.sdnc.sli.aai.uri"; - - // Availability zones query - public static final String QUERY_PATH = "org.openecomp.sdnc.sli.aai.path.query"; - - // Update - public static final String UPDATE_PATH = "org.openecomp.sdnc.sli.aai.update"; - - // Service instance - public static final String SVC_INSTANCE_PATH = "org.openecomp.sdnc.sli.aai.path.svcinst"; - public static final String SVC_INST_QRY_PATH = "org.openecomp.sdnc.sli.aai.path.svcinst.query"; - - // VServer - public static final String NETWORK_VSERVER_PATH = "org.openecomp.sdnc.sli.aai.path.vserver"; - - public static final String VNF_IMAGE_QUERY_PATH = "org.openecomp.sdnc.sli.aai.path.vnf.image.query"; - - public static final String PARAM_SERVICE_TYPE = "org.openecomp.sdnc.sli.aai.param.service.type"; - public static final String CERTIFICATE_HOST_ERROR = "org.openecomp.sdnc.sli.aai.host.certificate.ignore"; - - // UBB Notify - public static final String UBB_NOTIFY_PATH = "org.openecomp.sdnc.sli.aai.path.notify"; - public static final String SELFLINK_AVPN = "org.openecomp.sdnc.sli.aai.notify.selflink.avpn"; - public static final String SELFLINK_FQDN = "org.openecomp.sdnc.sli.aai.notify.selflink.fqdn"; - - //Service - public static final String SERVICE_PATH = "org.openecomp.sdnc.sli.aai.path.service"; - - // P-Interfaces - public static final String P_INTERFACE_PATH = "org.openecomp.sdnc.sli.aai.path.pserver.pinterface"; - - // site-pair-sets - public static final String SITE_PAIR_SET_PATH = "org.openecomp.sdnc.sli.aai.path.site.pair.set"; - - // node query (1602) - public static final String QUERY_NODES_PATH = "org.openecomp.sdnc.sli.aai.query.nodes"; - - - protected abstract Logger getLogger(); - public abstract AAIRequestExecutor getExecutor(); - - - @Override - public QueryStatus query(String resource, boolean localOnly, String select, String key, String prefix, String orderBy, SvcLogicContext ctx) - throws SvcLogicException { - - getLogger().debug("AAIService.query \tresource = "+resource); - - String vnfId = null; - String vnfName = null; - HashMap nameValues = keyToHashMap(key, ctx); - getLogger().debug("key = "+ nameValues.toString()); - - if(!checkOldFormat(resource, nameValues)) { - ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported. Key string contains invaid identifiers", resource)); - return QueryStatus.FAILURE; - } - - if(resource == null || resource.isEmpty() || AAIRequest.createRequest(resource, nameValues) == null) { - ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported", resource)); - return QueryStatus.FAILURE; - } - - // process data using new model - boolean useNewModelProcessing = true; - // process server query by name the old way - if(("vserver".equals(resource) || "vserver2".equals(resource))){ - if(nameValues.containsKey("vserver_name") || nameValues.containsKey("vserver-name") || nameValues.containsKey("vserver.vserver_name") || nameValues.containsKey("vserver.vserver-name")) - useNewModelProcessing = false; - } - if("generic-vnf".equals(resource)){ - if(nameValues.containsKey("vnf_name") || nameValues.containsKey("vnf-name") || nameValues.containsKey("generic_vnf.vnf_name") || nameValues.containsKey("generic-vnf.vnf-name")) - useNewModelProcessing = false; - } - - // process data using new model - if(useNewModelProcessing && AAIRequest.createRequest(resource, nameValues) != null) { - - try { - return newModelQuery(resource, localOnly, select, key, prefix, orderBy, ctx); - } catch (Exception exc) { - getLogger().warn("Failed query - returning FAILURE", exc); - return QueryStatus.FAILURE; - } - } - - ObjectMapper mapper = AAIService.getObjectMapper(); - Map attributes = new HashMap(); - - String modifier = null; - - if(resource.contains(":")) { - String[] tokens = resource.split(":"); - resource = tokens[0]; - if(tokens.length > 1) { - modifier = tokens[1]; - } - } - - resource = resource.toLowerCase().replace("-", "_"); - - try { - - switch(resource) { - case "generic_vnf": - vnfId = nameValues.get("vnf_id"); - if(nameValues.containsKey("vnf_id")) - vnfId = nameValues.get("vnf_id"); - else if(nameValues.containsKey("generic_vnf.vnf_name")) - vnfId = nameValues.get("generic_vnf.vserver_name"); - - if(nameValues.containsKey("vnf_name")) - vnfName = nameValues.get("vnf_name"); - else if(nameValues.containsKey("generic_vnf.vnf_name")) - vnfName = nameValues.get("generic_vnf.vnf_name"); - - if(vnfId != null && !vnfId.isEmpty()) { - // at this point of the project this part should not be executed - vnfId = vnfId.trim().replace("'", "").replace("$", "").replace("'", ""); - GenericVnf vnf = this.requestGenericVnfData(vnfId); - if(vnf == null) { - return QueryStatus.NOT_FOUND; - } - - attributes = mapper.convertValue(vnf, attributes.getClass()); - } else if(vnfName != null && !vnfName.isEmpty()) { - try { - vnfName = vnfName.trim().replace("'", "").replace("$", "").replace("'", ""); - GenericVnf vnf = this.requestGenericVnfeNodeQuery(vnfName); - if(vnf == null) { - return QueryStatus.NOT_FOUND; - } - vnfId=vnf.getVnfId(); - nameValues.put("vnf_id", vnfId); - attributes = mapper.convertValue(vnf, attributes.getClass()); - } catch (AAIServiceException exc) { - int errorCode = exc.getReturnCode(); - switch(errorCode) { - case 400: - case 404: - case 412: - break; - default: - getLogger().warn("Caught exception trying to refresh generic VNF", exc); - } - ctx.setAttribute(prefix + ".error.message", exc.getMessage()); - if(errorCode >= 300) { - ctx.setAttribute(prefix + ".error.http.response-code", "" + exc.getReturnCode()); - } - return QueryStatus.FAILURE; - } - } else { - getLogger().warn("No arguments are available to process generic VNF"); - return QueryStatus.FAILURE; - } - break; - case "vserver": - case "vserver2": - String vserverName = null; - if(nameValues.containsKey("vserver_name")) - vserverName = nameValues.get("vserver_name"); - else if(nameValues.containsKey("vserver.vserver_name")) - vserverName = nameValues.get("vserver.vserver_name"); - - String vserverId = null; - if(nameValues.containsKey("vserver_id")) - vserverId = nameValues.get("vserver_id"); - if(nameValues.containsKey("vserver.vserver_id")) - vserverId = nameValues.get("vserver.vserver_id"); - String tenantId = nameValues.get("teannt_id"); - - if(vserverName != null) vserverName = vserverName.trim().replace("'", "").replace("$", "").replace("'", ""); - if(vserverId != null) vserverId = vserverId.trim().replace("'", "").replace("$", "").replace("'", ""); - if(tenantId != null) tenantId = tenantId.trim().replace("'", "").replace("$", "").replace("'", ""); - - if (vserverName != null) { - URL vserverUrl = null; - try { - vserverUrl = this.requestVserverURLNodeQuery(vserverName); - } catch (AAIServiceException aaiexc) { - ctx.setAttribute(prefix + ".error.message", aaiexc.getMessage()); - if (aaiexc.getReturnCode() >= 300) { - ctx.setAttribute(prefix + ".error.http.response-code", "" + aaiexc.getReturnCode()); - } - - if (aaiexc.getReturnCode() == 404) - return QueryStatus.NOT_FOUND; - else - return QueryStatus.FAILURE; - } - if (vserverUrl == null) { - return QueryStatus.NOT_FOUND; - } - - tenantId = getTenantIdFromVserverUrl(vserverUrl); - String cloudOwner = getCloudOwnerFromVserverUrl(vserverUrl); - String cloudRegionId = getCloudRegionFromVserverUrl(vserverUrl); - - Vserver vserver = null; - try { - vserver = this.requestVServerDataByURL(vserverUrl); - } catch (AAIServiceException aaiexc) { - ctx.setAttribute(prefix + ".error.message", aaiexc.getMessage()); - if (aaiexc.getReturnCode() >= 300) { - ctx.setAttribute(prefix + ".error.http.response-code", "" + aaiexc.getReturnCode()); - } - - if (aaiexc.getReturnCode() == 404) - return QueryStatus.NOT_FOUND; - else - return QueryStatus.FAILURE; - } - if (vserver == null) { - return QueryStatus.NOT_FOUND; - } - attributes = mapper.convertValue(vserver, attributes.getClass()); - if (!attributes.containsKey("tenant-id") && tenantId != null) { - attributes.put("tenant-id", tenantId); - } - if (!attributes.containsKey("cloud-owner") && cloudOwner != null) { - attributes.put("cloud-owner", cloudOwner); - } - if (!attributes.containsKey("cloud-region-id") && cloudRegionId != null) { - attributes.put("cloud-region-id", cloudRegionId); - } - } else if (vserverId != null && tenantId != null) { - Vserver vserver = this.requestVServerData(tenantId, vserverId, "att-aic", "AAIAIC25"); - if(vserver == null) { - return QueryStatus.NOT_FOUND; - } - attributes = mapper.convertValue(vserver, attributes.getClass()); - if(!attributes.containsKey("tenant-id") && tenantId != null){ - attributes.put("tenant-id", tenantId); - } - } else { - return QueryStatus.FAILURE; - } - break; - - default: - return QueryStatus.FAILURE; - } - - QueryStatus retval = QueryStatus.SUCCESS; - - if (attributes == null || attributes.isEmpty()) { - retval = QueryStatus.NOT_FOUND; - getLogger().debug("No data found"); - } else { - if (ctx != null) { - if (prefix != null) { - ArrayList keys = new ArrayList(attributes.keySet()); - - int numCols = keys.size(); - - for (int i = 0; i < numCols; i++) { - String colValue = null; - String colName = keys.get(i); - Object object = attributes.get(colName); - - if(object != null && object instanceof String) { - colValue = (String)object; - - if (prefix != null) { - getLogger().debug("Setting "+prefix + "." + colName.replaceAll("_", "-")+" = "+ colValue); - ctx.setAttribute(prefix + "." + colName.replaceAll("_", "-"), colValue); - } else { - getLogger().debug("Setting " + colValue.replaceAll("_", "-")+" = "+colValue); - ctx.setAttribute(colValue.replaceAll("_", "-"), colValue); - } - } else if(object != null && object instanceof Map) { - if(colName.equals(modifier) || colName.equals("relationship-list")){ - String localNodifier = modifier; - if(localNodifier == null) - localNodifier = "relationship-list"; - Map properties = (Map)object; - writeMap(properties, prefix+"."+localNodifier, ctx); - } - } - } - } - } - } - getLogger().debug("Query - returning " + retval); - return (retval); - - } catch (Exception exc) { - getLogger().warn("Failed query - returning FAILURE", exc); - return QueryStatus.FAILURE; - } - -// return QueryStatus.SUCCESS; - } - - private boolean checkOldFormat(String resource, HashMap nameValues) { - - switch(resource){ - case "formatted-query": - case "generic-query": - case "named-query": - case "nodes-query": - case "linterface": - case "l2-bridge-sbg": - case "l2-bridge-bgf": - case "echo": - case "test": - return true; - } - if(resource.contains(":")) { - resource = resource.substring(0, resource.indexOf(":")); - } - - Set keys = nameValues.keySet(); - for(String key : keys) { - if(!key.contains(".")) { - if("depth".equals(key) || "related-to".equals(key) || "related_to".equals(key)) - continue; - else { - getLogger().warn(String.format("key %s is incompatible with resource type '%s'", key, resource)); - return false; - } - } - } - return true; - } - - public void writeMap(Map properties, String prefix, SvcLogicContext ctx) { - Set mapKeys = properties.keySet(); - - for(String mapKey : mapKeys) { - Object entity = properties.get(mapKey); - if(entity instanceof ArrayList) { - writeList((ArrayList)entity, prefix + "." + mapKey, ctx); - } else - if(entity instanceof String || entity instanceof Long || entity instanceof Integer || entity instanceof Boolean) { - ctx.setAttribute(prefix + "." + mapKey, entity.toString()); - getLogger().debug(prefix + "." + mapKey + " : " + entity.toString()); - } else if(entity instanceof Map) { - String localPrefix = prefix; - if(mapKey != null) { - localPrefix = String.format("%s.%s", prefix, mapKey); - } - writeMap( (Map)entity, localPrefix, ctx); - } - } - } - - private void writeList(ArrayList list, String prefix, SvcLogicContext ctx) { - for(int i = 0; i < list.size(); i++ ) { - Object entity = list.get(i); - if(entity instanceof Map) { - writeMap( (Map)entity, prefix + "[" + i + "]", ctx); - } else - if(entity instanceof String || entity instanceof Long || entity instanceof Integer || entity instanceof Boolean) { - ctx.setAttribute(prefix, entity.toString()); - getLogger().debug(prefix + " : " + entity.toString()); - } - } - - if(list.size() > 0) { - ctx.setAttribute(prefix + "_length", Integer.toString(list.size())); - getLogger().debug(prefix + "_length" + " : " + Integer.toString(list.size())); - } - } - - @Override - public QueryStatus save(String resource, boolean force, boolean localOnly, String key, Map params, String prefix, SvcLogicContext ctx) - throws SvcLogicException { - - getLogger().debug("AAIService.save\tresource="+resource); - HashMap nameValues = keyToHashMap(key, ctx); - - if(!checkOldFormat(resource, nameValues)) { - ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported. Key string contains invaid identifiers", resource)); - return QueryStatus.FAILURE; - } - - if(resource == null || resource.isEmpty() || AAIRequest.createRequest(resource, nameValues) == null) { - getLogger().warn("AAIService.save has unspecified resource"); - ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported", resource)); - return QueryStatus.FAILURE; - } - // keys passed - getLogger().debug("key = "+ Arrays.toString(nameValues.entrySet().toArray())); - - // process params - if(params.containsKey("prefix")) { - Map tmpParams = ctxGetBeginsWith(ctx, params.get("prefix")); - if(!tmpParams.isEmpty()) { - params.putAll(tmpParams); -// params.remove("prefix"); - } - } - // params passed - getLogger().debug("parms = "+ Arrays.toString(params.entrySet().toArray())); - - boolean useNewModelProcessing = true; - // process server query by name the old way - if(("vserver".equals(resource) || "vserver2".equals(resource))){ - if(nameValues.containsKey("vserver-name")) { - useNewModelProcessing = false; - } - - if(!params.containsKey("vserver-selflink")) { - - AAIRequest request = AAIRequest.createRequest(resource, nameValues); - URL path = null; - try { - request.processRequestPathValues(nameValues); - path = request.getRequestUrl("GET", null); - params.put("vserver-selflink", path.toString()); - } catch (UnsupportedEncodingException | MalformedURLException e) { - // TODO : Fix this - params.put("vserver-selflink", "/vserver"); - } - } - } - - // process data using new model - if(useNewModelProcessing && AAIRequest.createRequest(resource, nameValues) != null) { - - try { - if(!resource.contains(":")){ - return newModelSave(resource, force, key, params, prefix, ctx); - } else { - String[] tokens = resource.split(":"); - String localResource = tokens[0]; - String dependency = tokens[1]; - - AAIDatum instance = newModelObjectRequest( localResource, nameValues, prefix, ctx); - if(instance == null) { - return QueryStatus.NOT_FOUND; - } - - switch(dependency){ - case "relationship-list": - newModelProcessRelationshipList(instance, params, prefix, ctx); - break; - } - // create a method to update relationship-list - AAIRequest request = AAIRequest.createRequest(localResource, nameValues); - request.setRequestObject(instance); - request.processRequestPathValues(nameValues); - - getExecutor().post(request); - getLogger().debug("Save relationship list - returning SUCCESS"); - return QueryStatus.SUCCESS; - } - } catch (Exception exc) { - ctx.setAttribute(prefix + ".error.message", exc.getMessage()); - if(exc instanceof AAIServiceException) { - AAIServiceException aaiexc = (AAIServiceException)exc; - if(aaiexc.getReturnCode() >= 300) { - ctx.setAttribute(prefix + ".error.http.response-code", "" + aaiexc.getReturnCode()); - } - - if(aaiexc.getReturnCode() == 404) { - return QueryStatus.NOT_FOUND; - } - } - getLogger().warn("Failed save() - returning FAILURE", exc); - return QueryStatus.FAILURE; - } - } else { - String reSource = resource.toLowerCase().replace("-", "_"); - String vnfId = null; - - try { - switch(reSource) { - case "generic_vnf": - case "generic-vnf": - vnfId = nameValues.get("vnf_id"); - if(vnfId == null) { - getLogger().debug("Save(generic-vnf) with no vnf-id specified. Returning FAILURE"); - return QueryStatus.FAILURE; - } - vnfId = vnfId.trim().replace("'", "").replace("$", "").replace("'", ""); - GenericVnf vnf = this.requestGenericVnfData(vnfId); - String status = params.get("prov-status"); - boolean updated = false; - if(status != null && !status.isEmpty()) { - vnf.setProvStatus(status); - } - if(updated) { - this.postGenericVnfData(vnfId, vnf); - } - break; - case "vpe": - return update( resource, key, params, prefix, ctx) ; - - default: - getLogger().debug("Save() executing default path - returning FAILURE"); - return QueryStatus.FAILURE; - } - } catch (Exception exc) { - getLogger().warn("Failed save - returning FAILURE", exc); - ctx.setAttribute(prefix + ".error.message", exc.getMessage()); - return QueryStatus.FAILURE; - } - } - - getLogger().debug("Save - returning SUCCESS"); - return QueryStatus.SUCCESS; - } - - @Override - public QueryStatus update(String resource, String key, Map params, String prefix, SvcLogicContext ctx) throws SvcLogicException { - - resource = resource.toLowerCase(); - HashMap nameValues = keyToHashMap(key, ctx); - getLogger().debug("key = "+ Arrays.toString(nameValues.entrySet().toArray())); - if(!checkOldFormat(resource, nameValues)) { - ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported. Key string contains invaid identifiers", resource)); - return QueryStatus.FAILURE; - } - - if(resource == null || resource.isEmpty() || AAIRequest.createRequest(resource, nameValues) == null) { - ctx.setAttribute(String.format("%s.error.message", prefix), String.format("Resource %s is not supported", resource)); - return QueryStatus.FAILURE; - } - - getLogger().debug("parms = "+ Arrays.toString(params.entrySet().toArray())); - - AAIRequest request = AAIRequest.createRequest(resource, nameValues); - request = new UpdateRequest(request, params); - - String[] arguments = request.getArgsList(); - for(String name : arguments) { - String modifiedKey = name.replaceAll("-", "_"); - if(nameValues.containsKey(modifiedKey)) { - String argValue = nameValues.get(modifiedKey); - if(argValue != null) argValue = argValue.trim().replace("'", "").replace("$", "").replace("'", ""); - request.addRequestProperty(name, argValue); - } - } - - try { - QueryStatus retval = QueryStatus.SUCCESS; - - retval = newModelQuery(resource, false, null, key, "tmpDelete", null, ctx); - - if(retval == null || retval != QueryStatus.SUCCESS) { - return retval; - } - - String resourceVersion = ctx.getAttribute("tmpDelete.resource-version"); - if(resourceVersion == null) { - return QueryStatus.NOT_FOUND; - } - params.put("resource-version", resourceVersion); - - request.processRequestPathValues(nameValues); - getExecutor().patch(request, resourceVersion); - } catch(AAIServiceException aaiexc) { - if(aaiexc.getReturnCode() == 404) - return QueryStatus.NOT_FOUND; - else - return QueryStatus.FAILURE; - } catch (Exception exc) { - getLogger().warn("Failed update - returning FAILURE", exc); - return QueryStatus.FAILURE; - } - - getLogger().debug("Update - returning SUCCESS"); - return QueryStatus.SUCCESS; - } - - @Override - public QueryStatus delete(String resource, String key, SvcLogicContext ctx) throws SvcLogicException { - getLogger().debug("AAIService.delete\tresource="+resource); - HashMap nameValues = keyToHashMap(key, ctx); - getLogger().debug("key = "+ Arrays.toString(nameValues.entrySet().toArray())); - - if(!checkOldFormat(resource, nameValues)) { - ctx.setAttribute(String.format("%s.error.message", "aaiData"), String.format("Resource %s is not supported. Key string contains invaid identifiers", resource)); - return QueryStatus.FAILURE; - } - - if(resource == null || resource.isEmpty() || AAIRequest.createRequest(resource, nameValues) == null) { - ctx.setAttribute(String.format("%s.error.message", "tmpDelete"), String.format("Resource %s is not supported", resource)); - return QueryStatus.FAILURE; - } - - if(AAIRequest.createRequest(resource, nameValues) != null) { - if(resource.contains(":")) { - return processDeleteRelationshipList(resource, key, ctx, nameValues); - } - - - try { - QueryStatus retval = QueryStatus.SUCCESS; - - retval = newModelQuery(resource, false, null, key, "tmpDelete", null, ctx); - - if(retval == null || retval != QueryStatus.SUCCESS) { - return retval; - } - - String resourceVersion = ctx.getAttribute("tmpDelete.resource-version"); - if(resourceVersion == null) { - return QueryStatus.NOT_FOUND; - } - - try { - AAIRequest request = AAIRequest.createRequest(resource, nameValues); - if(request == null) { - return QueryStatus.FAILURE; - } - - request.processRequestPathValues(nameValues); - - if(getExecutor().delete(request, resourceVersion)) { - return QueryStatus.SUCCESS; - } - } catch(AAIServiceException aaiexc) { - if(aaiexc.getReturnCode() == 404) - return QueryStatus.NOT_FOUND; - else - return QueryStatus.FAILURE; - - } catch (Exception exc) { - getLogger().warn("requestGenericVnfData", exc); - return QueryStatus.FAILURE; - } - - } catch (Exception exc) { - getLogger().warn("Failed delete - returning FAILURE", exc); - return QueryStatus.FAILURE; - } - } else { - String resoourceName = resource; - String identifier = null; - - if(resoourceName == null) - return QueryStatus.FAILURE; - - if(resoourceName.contains(":")) { - String[] tokens = resoourceName.split(":"); - if(tokens != null && tokens.length > 0) { - resoourceName = tokens[0]; - identifier = tokens[1]; - } - } - if("relationship-list".equals(identifier) || "relationshipList".equals(identifier)) { -// RelationshipRequest relationshipRequest = new RelationshipRequest(); - if("generic-vnf".equals(resoourceName)){ - String vnfId = nameValues.get("vnf_id"); - String relatedTo = nameValues.get("related_to"); - vnfId = vnfId.trim().replace("'", "").replace("$", "").replace("'", ""); - relatedTo = relatedTo.trim().replace("'", "").replace("$", "").replace("'", ""); - - GenericVnf vnf; - try { - vnf = this.requestGenericVnfData(vnfId); - if(vnf == null) - return QueryStatus.NOT_FOUND; - } catch (AAIServiceException exc) { - getLogger().warn("Failed delete - returning NOT_FOUND", exc); - return QueryStatus.NOT_FOUND; - } - boolean itemRemoved = false; - RelationshipList relationshipList = vnf.getRelationshipList(); - List relationships = relationshipList.getRelationship(); - List iterableList = new LinkedList(relationships); - for(Relationship relationship : iterableList) { - if(relationship.getRelatedTo().equals(relatedTo)) { - relationships.remove(relationship); - itemRemoved = true; - } - } - - if(!itemRemoved) - return QueryStatus.NOT_FOUND; - -// AAIRequest masterRequest = new GenericVnfRequest(); -// masterRequest.addRequestProperty(GenericVnfRequest.VNF_ID, vnfId); -// relationshipRequest.addMasterRequest(masterRequest); -// Map attributes = objectToProperties(vnf); -// try { -// Boolean result = getExecutor().delete(relationshipRequest, attributes.get(AAIRequest.RESOURCE_VERSION)); -// } catch (AAIServiceException e) { -// return QueryStatus.FAILURE; -// } - - try { - this.postGenericVnfData(vnf.getVnfId(), vnf); - } catch (AAIServiceException exc) { - if(exc.getReturnCode() == 404){ - return QueryStatus.NOT_FOUND; - } else { - getLogger().warn("Failed delete - returning FAILURE", exc); - return QueryStatus.FAILURE; - } - } - return QueryStatus.SUCCESS; - } - } - } - return QueryStatus.FAILURE; - } - - @Override - public QueryStatus exists(String resource, String key, String prefix, SvcLogicContext ctx) throws SvcLogicException { - return query(resource, false, null, key, prefix, null, ctx); - } - - @Override - public QueryStatus isAvailable(String arg0, String arg1, String arg2, SvcLogicContext arg3) - throws SvcLogicException { - // TODO Auto-generated method stub - throw new SvcLogicException("Method AAIService.isAvailable() has not been implemented yet"); - } - - @Override - public QueryStatus notify(String resource, String action, String key, SvcLogicContext ctx) throws SvcLogicException { - // TODO Auto-generated method stub - throw new SvcLogicException("Method AAIService.notify() has not been implemented yet"); - } - -// @Override - public QueryStatus newModelQuery(String resource, boolean localOnly, String select, String key, String prefix, String orderBy, SvcLogicContext ctx) { - - Object response = null; - QueryStatus retval = QueryStatus.SUCCESS; - String modifier = null; - - HashMap nameValues = keyToHashMap(key, ctx); - if(resource.contains(":")) { - modifier = resource.split(":")[1]; - } - - try { - AAIRequest request = AAIRequest.createRequest(resource, nameValues); - if(request == null) { - return QueryStatus.FAILURE; - } - - Map params = new HashMap(); - - request.processRequestPathValues(nameValues); - if(nameValues.containsKey("prefix")){ - Map tmpParams = ctxGetBeginsWith(ctx, nameValues.get("prefix")); - if(!tmpParams.isEmpty()) { - params.putAll(tmpParams); - } - if("named-query".equals(resource)) - request.setRequestObject(extractNamedQueryDataFromQueryPrefix(nameValues, params)); - } - String rv = getExecutor().get(request); - - retval = processResponseData(rv, resource, request, prefix, ctx, nameValues, modifier); - - } catch(AAIServiceException aaiexc) { - int errorCode = aaiexc.getReturnCode(); - ctx.setAttribute(prefix + ".error.message", aaiexc.getMessage()); - if(errorCode >= 300) { - ctx.setAttribute(prefix + ".error.http.response-code", "" + aaiexc.getReturnCode()); - } - - if(aaiexc.getReturnCode() == 404) - return QueryStatus.NOT_FOUND; - - return QueryStatus.FAILURE; - } catch (Exception exc) { - getLogger().warn("requestGenericVnfData", exc); - ctx.setAttribute(prefix + ".error.message", exc.getMessage()); - return QueryStatus.FAILURE; - } - - return retval; - } - - public QueryStatus processResponseData(String rv, String resource, AAIRequest request, String prefix, SvcLogicContext ctx, HashMap nameValues, String modifier) throws JsonParseException, JsonMappingException, IOException, AAIServiceException - { - Object response = null; - - if(rv == null) { - return QueryStatus.NOT_FOUND; - } - - response = request.jsonStringToObject(rv); - if(response == null) { - return QueryStatus.NOT_FOUND; - } - - if("generic-query".equals(resource)) { - SearchResults rd = SearchResults.class.cast(response); - List rdList = rd.getResultData(); - if(rdList == null || rdList.isEmpty()) { - return QueryStatus.NOT_FOUND; - } - ResultData rDatum = rdList.get(0); - nameValues.put("selflink", rDatum.getResourceLink()); - AAIRequest req2 = AAIRequest.createRequest(rDatum.getResourceType(), nameValues); - req2.processRequestPathValues(nameValues); - rv = getExecutor().get(req2); - if(rv == null) { - return QueryStatus.NOT_FOUND; - } - - response = req2.jsonStringToObject(rv); - if(response == null) { - return QueryStatus.NOT_FOUND; - } - } - - if("named-query".equals(resource)) { - InventoryResponseItems rd = InventoryResponseItems.class.cast(response); - List iRIlist = rd.getInventoryResponseItem(); - if(iRIlist == null || iRIlist.isEmpty()) { - return QueryStatus.NOT_FOUND; - } - } - - if("nodes-query".equals(resource)) { - SearchResults rd = SearchResults.class.cast(response); - List rdList = rd.getResultData(); - if(rdList == null || rdList.isEmpty()) { - return QueryStatus.NOT_FOUND; - } - ResultData rDatum = rdList.get(0); - response = rDatum; - } - - if("formatted-query".equals(resource)) { - FormattedQueryResultList rd = FormattedQueryResultList.class.cast(response); - List iRIlist = rd.getResults(); - if(iRIlist == null || iRIlist.isEmpty()) { - return QueryStatus.NOT_FOUND; - } - } - - String preFix = null; - if(prefix == null || prefix.isEmpty()) { - preFix = ""; - } else { - preFix = prefix + "."; - } - - Map props = objectToProperties(response); - Set keys = props.keySet(); - for(String theKey: keys) { - if(getLogger().isTraceEnabled()) - getLogger().trace(theKey); - - Object value = props.get(theKey); - if(value == null) - continue; - Object type = value.getClass(); - if(value instanceof String) { - ctx.setAttribute(preFix + theKey, value.toString()); - continue; - } - if(value instanceof Boolean) { - ctx.setAttribute(preFix + theKey, value.toString()); - continue; - } - if(value instanceof Integer) { - ctx.setAttribute(preFix + theKey, value.toString()); - continue; - } - if(value instanceof Long) { - ctx.setAttribute(preFix + theKey, value.toString()); - continue; - } - - if(value instanceof ArrayList) { - ArrayList array = ArrayList.class.cast(value); - for(int i = 0; i < array.size(); i++) { -// ctx.setAttribute(String.format("%s%s[%d]", preFix, theKey, i), array.get(i).toString()); - writeList(array, String.format("%s.%s", prefix, theKey), ctx); - } - continue; - } - - if("relationship-list".equals(theKey)){ - Map relationshipList = (Map)value; - // we are interested in seeing just the selected relationship - if(theKey.equals(modifier)) { - List relationships = (List)relationshipList.get("relationship"); - if(relationships != null && !relationships.isEmpty()) { - - List newRelationships = new LinkedList(); - newRelationships.addAll(relationships); - - for(Object obj : newRelationships){ - if(obj instanceof Map) { - Map relProperties = (Map)obj; - if(relProperties.containsKey("related-to")) { - Object relPropsRelatedTo = relProperties.get("related-to"); - - String relatedTo = nameValues.get("related_to"); - if(relatedTo != null) { - relatedTo = relatedTo.trim().replace("'", "").replace("$", "").replace("'", ""); - if(!relatedTo.equals(relPropsRelatedTo)) { - relationships.remove(relProperties); - } - continue; - } else { - continue; - } - } - } - } - } - } - writeMap(relationshipList, String.format("%s.%s", prefix, theKey), ctx); - continue; - } - - if(value instanceof Map) { - Map subnetsList = (Map)value; - writeMap(subnetsList, String.format("%s.%s", prefix, theKey), ctx); - continue; - } - - } - return QueryStatus.SUCCESS; - } - - - public QueryStatus newModelBackupRequest(String resource, Map params, String prefix, SvcLogicContext ctx) { - - QueryStatus retval = QueryStatus.SUCCESS; - HashMap nameValues = new HashMap(); - - try { - AAIRequest request = AAIRequest.createRequest(resource, nameValues); - if(request == null) { - return QueryStatus.FAILURE; - } - - boolean argsFound = false; - String[] arguments = request.getArgsList(); - for(String name : arguments) { - String tmpName = name.replaceAll("-", "_"); - String value = params.get(tmpName); - if(value != null && !value.isEmpty()) { - value = value.trim().replace("'", "").replace("$", "").replace("'", ""); - request.addRequestProperty(name, value); - argsFound = true; - } - } - if(!argsFound) { - getLogger().warn("No arguments were found. Terminating backup request."); - return QueryStatus.FAILURE; - } - - String rv = getExecutor().get(request); - ctx.setAttribute(prefix, rv); - } catch(AAIServiceException aaiexc) { - if(aaiexc.getReturnCode() == 404) - return QueryStatus.NOT_FOUND; - - return QueryStatus.FAILURE; - } catch (Exception exc) { - getLogger().warn("newModelBackupRequest", exc); - return QueryStatus.FAILURE; - } - - return retval; - } - - public AAIDatum newModelObjectRequest(String resource, Map params, String prefix, SvcLogicContext ctx) - throws AAIServiceException { - - AAIDatum response = null; - - try { - AAIRequest request = AAIRequest.createRequest(resource, params); - if(request == null) { - return null; - } - - request.processRequestPathValues(params); - String rv = getExecutor().get(request); - response = request.jsonStringToObject(rv); - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - getLogger().warn("newModelBackupRequest", exc); - throw new AAIServiceException(exc); - } - - return response; - } - - - @Override - public QueryStatus release(String arg0, String arg1, SvcLogicContext arg2) throws SvcLogicException { - // TODO Auto-generated method stub - throw new SvcLogicException("Method AAIService.release() has not been implemented yet"); - } - - @Override - public QueryStatus reserve(String arg0, String arg1, String arg2, String arg3, SvcLogicContext arg4) - throws SvcLogicException { - // TODO Auto-generated method stub - throw new SvcLogicException("Method AAIService.reserve() has not been implemented yet"); - } - - private QueryStatus newModelSave(String resource, boolean force, String key, Map parms, String prefix, SvcLogicContext ctx) { - getLogger().debug("Executing newModelSave for resource : " + resource); - HashMap nameValues = keyToHashMap(key, ctx); - - try { - ArrayList subResources = new ArrayList(); - Set set = parms.keySet(); - Map setters = new HashMap(); - Map getters = new HashMap(); - - // 1. find class - AAIRequest request = AAIRequest.createRequest(resource, nameValues); - Class resourceClass = request.getModelClass(); - getLogger().debug(resourceClass.getName()); - AAIDatum instance = resourceClass.newInstance(); - - { - Annotation[] annotations = resourceClass.getAnnotations(); - for(Annotation annotation : annotations) { - Class anotationType = annotation.annotationType(); - String annotationName = anotationType.getName(); -// if("com.fasterxml.jackson.annotation.JsonPropertyOrder".equals(annotationName)){ - - // 2. find string property setters and getters for the lists - if("javax.xml.bind.annotation.XmlType".equals(annotationName)){ - XmlType order = (XmlType)annotation; - String[] values = order.propOrder(); - for(String value : values) { - String id = camelCaseToDashedString(value); - Field field = resourceClass.getDeclaredField(value); - Class type = field.getType(); - Method setter = null; - try { - setter = resourceClass.getMethod("set"+StringUtils.capitalize(value), type); - if(type.getName().startsWith("java.lang") || "boolean".equals(type.getName()) || "long".equals(type.getName())) { - try { - setter.setAccessible(true); - Object arglist[] = new Object[1]; - arglist[0] = parms.get(id); - - if(arglist[0] != null) { - if(!type.getName().equals("java.lang.String")) { -// getLogger().debug(String.format("Processing %s with parameter %s", types[0].getName(), value)); - if("boolean".equals(type.getName())) { - arglist[0] = valueOf(Boolean.class, parms.get(id)); - } else if("long".equals(type.getName())) { - arglist[0] = valueOf(Long.class, parms.get(id)); - } else { - arglist[0] = valueOf(type, parms.get(id)); - } - } - Object o = setter.invoke(instance, arglist); - } - set.remove(id); - - } catch (Exception x) { - Throwable cause = x.getCause(); - getLogger().warn("Failed process for " + resourceClass.getName(), x); - } - } else if(type.getName().equals("java.util.List")) { - List newValues = new ArrayList(); - String length = id+"_length"; - if(!parms.isEmpty() && parms.containsKey(length)) { - String tmp = parms.get(length).toString(); - int count = Integer.valueOf(tmp); - for(int i=0; i relationshipKeys = new TreeSet(); - Set vlansKeys = new TreeSet(); - Set metadataKeys = new TreeSet(); - - for(String attribute : set) { - String value = parms.get(attribute); - if(attribute.startsWith("relationship-list")) { - relationshipKeys.add(attribute); - } else if(attribute.startsWith("vlans")) { - vlansKeys.add(attribute); - } else if(attribute.startsWith("metadata")) { - metadataKeys.add(attribute); - } - } - // 3. find list property getters - for(String attribute : set) { - String value = parms.get(attribute); - Method method = getters.get(attribute); - if(method != null) { - try { - method.setAccessible(true); - Object arglist[] = new Object[0]; -// arglist[0] = value; - Class[] types = method.getParameterTypes(); - if(types.length == 0){ - Object o = method.invoke(instance, arglist); - if(o instanceof ArrayList) { - ArrayList values = (ArrayList)o; -// getLogger().debug(String.format("Processing %s with parameter %s", types[0].getName(), value)); - value = value.replace("[", "").replace("]", ""); - List items = Arrays.asList(value.split("\\s*,\\s*")); - for(String s : items) { - values.add(s.trim()); - } - } - } - } catch (Exception x) { - Throwable cause = x.getCause(); - getLogger().warn("Failed process for " + resourceClass.getName(), x); - } - } - } - // 4. Process Relationships - // add relationship list - if( (subResources.contains("relationship-list") || subResources.contains("relationshipList")) && !relationshipKeys.isEmpty()) { - RelationshipList relationshipList = null; - Object obj = null; - Method getRelationshipListMethod = resourceClass.getMethod("getRelationshipList"); - if(getRelationshipListMethod != null){ - try { - getRelationshipListMethod.setAccessible(true); - obj = getRelationshipListMethod.invoke(instance); - } catch (InvocationTargetException x) { - Throwable cause = x.getCause(); - } - } - if(obj != null && obj instanceof RelationshipList){ - relationshipList = (RelationshipList)obj; - } else { - relationshipList = new RelationshipList(); - Method setRelationshipListMethod = resourceClass.getMethod("setRelationshipList", RelationshipList.class); - if(setRelationshipListMethod != null){ - try { - setRelationshipListMethod.setAccessible(true); - Object arglist[] = new Object[1]; - arglist[0] = relationshipList; - - obj = setRelationshipListMethod.invoke(instance, arglist); - } catch (InvocationTargetException x) { - Throwable cause = x.getCause(); - } - } - } - - List relationships = relationshipList.getRelationship(); - - int i = 0; - while(true){ - int j = 0; - String searchKey = "relationship-list.relationship[" + i + "].related-to"; - if(!parms.containsKey(searchKey)) - break; - Relationship relationship = new Relationship(); - relationships.add(relationship); - - String relatedTo = parms.get(searchKey); - relationship.setRelatedTo(relatedTo); - - List relData = relationship.getRelationshipData(); -// if(relData == null) { -// relData = new LinkedList(); -// relationship.setRelationshipData(relData); -// } - - while(true) { - String searchRelationshipKey = "relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-key"; - String searchRelationshipValue = "relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-value"; - if(!parms.containsKey(searchRelationshipKey)) - break; - - RelationshipData relDatum = new RelationshipData(); - relDatum.setRelationshipKey(parms.get(searchRelationshipKey)); - relDatum.setRelationshipValue(parms.get(searchRelationshipValue)); - relData.add(relDatum); - j++; - } - - i++; - } - } - - // 4. vlans - if(subResources.contains("vlans") && !vlansKeys.isEmpty()) { - Object obj = null; - Vlans vlanList = null; - Method getVLansMethod = resourceClass.getMethod("getVlans"); - if(getVLansMethod != null){ - try { - getVLansMethod.setAccessible(true); - obj = getVLansMethod.invoke(instance); - } catch (InvocationTargetException x) { - Throwable cause = x.getCause(); - } - } - if(obj != null && obj instanceof Vlans){ - vlanList = (Vlans)obj; - } else { - vlanList = new Vlans(); - Method setVlansMethod = resourceClass.getMethod("setVlans", Vlans.class); - if(setVlansMethod != null){ - try { - setVlansMethod.setAccessible(true); - Object arglist[] = new Object[1]; - arglist[0] = vlanList; - - obj = setVlansMethod.invoke(instance, arglist); - } catch (InvocationTargetException x) { - Throwable cause = x.getCause(); - } - } - } - - int i = 0; - while(true){ - String searchKey = "vlans.vlan[" + i + "].vlan-interface"; - if(!parms.containsKey(searchKey)) - break; - - String vlanInterface = parms.get("vlans.vlan[" + i + "].vlan-interface"); - String vlanIdInner = parms.get("vlans.vlan[" + i + "].vlan-id-inner"); - String vlanIdOute = parms.get("vlans.vlan[" + i + "].vlan-id-outer"); - String speedValue = parms.get("vlans.vlan[" + i + "].speed-value"); - String speedUnits = parms.get("vlans.vlan[" + i + "].speed-units"); - - Vlan vlan = new Vlan(); - vlan.setVlanInterface(vlanInterface); - - if(vlanIdInner != null) { - Long iVlanIdInner = Long.parseLong(vlanIdInner); - vlan.setVlanIdInner(iVlanIdInner); - } - - if(vlanIdOute != null) { - Long iVlanIdOuter = Long.parseLong(vlanIdOute); - vlan.setVlanIdOuter(iVlanIdOuter); - } - - if(speedValue != null) { - vlan.setSpeedValue(speedValue); - vlan.setSpeedUnits(speedUnits); - } - - vlanList.getVlan().add(vlan); - i++; - } - } - - // 5. metadata - if(subResources.contains("metadata") && !metadataKeys.isEmpty()) { - Object obj = null; - Metadata metadataList = null; - Method getMetadataMethod = resourceClass.getMethod("getMetadata"); - if(getMetadataMethod != null){ - try { - getMetadataMethod.setAccessible(true); - obj = getMetadataMethod.invoke(instance); - } catch (InvocationTargetException x) { - Throwable cause = x.getCause(); - } - } - if(obj != null && obj instanceof Metadata){ - metadataList = (Metadata)obj; - } else { - metadataList = new Metadata(); - Method setMetadataMethod = resourceClass.getMethod("setMetadata", Metadata.class); - if(setMetadataMethod != null){ - try { - setMetadataMethod.setAccessible(true); - Object arglist[] = new Object[1]; - arglist[0] = metadataList; - - obj = setMetadataMethod.invoke(instance, arglist); - } catch (InvocationTargetException x) { - Throwable cause = x.getCause(); - } - } - } - - if(metadataList.getMetadatum() == null) { -// metadataList.setMetadatum(new ArrayList()); - } - - // process data - int i = 0; - while(true){ - String metaKey = "metadata.metadatum[" + i + "].meta-key"; - if(!parms.containsKey(metaKey)) - break; - - String metaValue = parms.get("metadata.metadatum[" + i + "].meta-value"); - - Metadatum vlan = new Metadatum(); - vlan.setMetaname(metaKey); - vlan.setMetaval(metaValue); - - metadataList.getMetadatum().add(vlan); - i++; - } - - } - - - // 6. Prepare AAI request - String[] args = request.getArgsList(); - for(String arg : args) { - String modifiedKey = arg.replaceAll("-", "_"); - if(nameValues.containsKey(modifiedKey)) { - String argValue = nameValues.get(modifiedKey); - if(argValue != null) argValue = argValue.trim().replace("'", "").replace("$", "").replace("'", ""); - request.addRequestProperty(arg, argValue); - } - } - - request.processRequestPathValues(nameValues); - request.setRequestObject(instance); - Object response = getExecutor().post(request); - if(request.expectsDataFromPUTRequest()){ - if(response != null && response instanceof String) { - String rv = response.toString(); - QueryStatus retval = processResponseData(rv, resource, request, prefix, ctx, nameValues, null); - getLogger().debug("newModelSave - returning " + retval.toString()); - return retval; - } - } - - } catch(AAIServiceException exc){ - ctx.setAttribute(prefix + ".error.message", exc.getMessage()); - int returnCode = exc.getReturnCode(); - if(returnCode >= 300) { - ctx.setAttribute(prefix + ".error.http.response-code", "" + exc.getReturnCode()); - } - - if(returnCode == 400 || returnCode == 412) - return QueryStatus.FAILURE; - else if(returnCode == 404) - return QueryStatus.NOT_FOUND; - else { - getLogger().warn("Failed newModelSave - returning FAILURE", exc); - return QueryStatus.FAILURE; - } - } catch(Exception exc){ - getLogger().warn("Failed newModelSave - returning FAILURE", exc); - ctx.setAttribute(prefix + ".error.message", exc.getMessage()); - return QueryStatus.FAILURE; - } - - getLogger().debug("newModelSave - returning SUCCESS"); - return QueryStatus.SUCCESS; - } - - private static final String regex = "([A-Z][a-z,0-9]+)"; - private static final String replacement = "-$1"; - - private String camelCaseToDashedString(String propOrder) { - return propOrder.replaceAll(regex, replacement).toLowerCase(); - } - - private QueryStatus newModelProcessRelationshipList(Object instance, Map params, String prefix, SvcLogicContext ctx) throws Exception { - - Class resourceClass = instance.getClass(); - - Set relationshipKeys = new TreeSet(); - - Set set = params.keySet(); - - for(String attribute : set) { - String value = params.get(attribute); - - if(attribute.startsWith("relationship-list")) { - relationshipKeys.add(attribute); - } - } - - // 3. Process Relationships - // add relationship list - if(!relationshipKeys.isEmpty()) { - RelationshipList relationshipList = null; - Object obj = null; - Method getRelationshipListMethod = resourceClass.getMethod("getRelationshipList"); - if(getRelationshipListMethod != null){ - try { - getRelationshipListMethod.setAccessible(true); - obj = getRelationshipListMethod.invoke(instance); - } catch (InvocationTargetException x) { - Throwable cause = x.getCause(); - } - } - if(obj != null && obj instanceof RelationshipList){ - relationshipList = (RelationshipList)obj; - } else { - relationshipList = new RelationshipList(); - Method setRelationshipListMethod = resourceClass.getMethod("setRelationshipList", RelationshipList.class); - if(setRelationshipListMethod != null){ - try { - setRelationshipListMethod.setAccessible(true); - Object arglist[] = new Object[1]; - arglist[0] = relationshipList; - - obj = setRelationshipListMethod.invoke(instance, arglist); - } catch (InvocationTargetException x) { - Throwable cause = x.getCause(); - } - } - } - - boolean createdNewRelationships = false; - List relationships = relationshipList.getRelationship(); - if(relationships == null) { - relationships = new ArrayList(); - createdNewRelationships = true; - } - - int i = 0; - int j = 0; - while(true){ - String searchKey = "relationship-list.relationship[" + i + "].related-to"; - if(!params.containsKey(searchKey)) - break; - - j = 0; - String relatedTo = params.get(searchKey); - String relatedLinkKey = "relationship-list.relationship[" + i + "].related-link"; - String relatedLink = null; - if(params.containsKey(relatedLinkKey)) { - relatedLink = params.get(relatedLinkKey); - } - - Relationship relationship = new Relationship(); - relationships.add(relationship); - relationship.setRelatedTo(relatedTo); - if(relatedLink != null) { - relationship.setRelatedLink(relatedLink); - } else { - List relData = relationship.getRelationshipData(); - - while(true) { - String searchRelationshipKey = "relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-key"; - String searchRelationshipValue = "relationship-list.relationship[" + i + "].relationship-data[" + j + "].relationship-value"; - if(!params.containsKey(searchRelationshipKey)) - break; - - RelationshipData relDatum = new RelationshipData(); - relDatum.setRelationshipKey(params.get(searchRelationshipKey)); - relDatum.setRelationshipValue(params.get(searchRelationshipValue)); - relData.add(relDatum); - j++; - } - } - - - i++; - } - } - - return QueryStatus.SUCCESS; - } - - private Relationship findRelationship(List relationships, String relatedTo) { - if(relatedTo == null) - return null; - - for(Relationship relationship : relationships) { - if(relationship.getRelatedTo().equals(relatedTo)){ - return relationship; - } - } - return null; - } - - protected HashMap keyToHashMap(String key, SvcLogicContext ctx) { - if (key == null) { - return (null); - } - - getLogger().debug("Converting key [" + key + "] to where clause"); - - if (key.startsWith("'") && key.endsWith("'")) { - key = key.substring(1, key.length() - 1); - - getLogger().debug("Stripped outer single quotes - key is now [" + key + "]"); - } - - String[] keyTerms = key.split("\\s+"); - - StringBuffer whereBuff = new StringBuffer(); - String term1 = null; - String op = null; - String term2 = null; - HashMap results = new HashMap(); - - for (int i = 0; i < keyTerms.length; i++) { - if (term1 == null) { - if ("and".equalsIgnoreCase(keyTerms[i]) - || "or".equalsIgnoreCase(keyTerms[i])) { - // Skip over ADD/OR - } else { - term1 = resolveTerm(keyTerms[i], ctx); - } - } else if (op == null) { - if ("==".equals(keyTerms[i])) { - op = "="; - } else { - op = keyTerms[i]; - } - } else { - term2 = resolveTerm(keyTerms[i], ctx); - term2 = term2.trim().replace("'", "").replace("$", "").replace("'", ""); - results.put(term1, term2); - - term1 = null; - op = null; - term2 = null; - } - } - - return (results); - } - - private String resolveTerm(String term, SvcLogicContext ctx) { - if (term == null) { - return (null); - } - - getLogger().debug("resolveTerm: term is " + term); - - if (term.startsWith("$") && (ctx != null)) { - // Resolve any index variables. - - return ("'" + resolveCtxVariable(term.substring(1), ctx) + "'"); - } else if (term.startsWith("'") || term.startsWith("\"")) { - return (term); - } else { - return (term.replaceAll("-", "_")); - - } - - } - - private String resolveCtxVariable(String ctxVarName, SvcLogicContext ctx) { - - if (ctxVarName.indexOf('[') == -1) { - // Ctx variable contains no arrays - return (ctx.getAttribute(ctxVarName)); - } - - // Resolve any array references - StringBuffer sbuff = new StringBuffer(); - String[] ctxVarParts = ctxVarName.split("\\["); - sbuff.append(ctxVarParts[0]); - for (int i = 1; i < ctxVarParts.length; i++) { - if (ctxVarParts[i].startsWith("$")) { - int endBracketLoc = ctxVarParts[i].indexOf("]"); - if (endBracketLoc == -1) { - // Missing end bracket ... give up parsing - getLogger().warn("Variable reference " + ctxVarName - + " seems to be missing a ']'"); - return (ctx.getAttribute(ctxVarName)); - } - - String idxVarName = ctxVarParts[i].substring(1, endBracketLoc); - String remainder = ctxVarParts[i].substring(endBracketLoc); - - sbuff.append("["); - sbuff.append(ctx.getAttribute(idxVarName)); - sbuff.append(remainder); - - } else { - // Index is not a variable reference - sbuff.append("["); - sbuff.append(ctxVarParts[i]); - } - } - - return (ctx.getAttribute(sbuff.toString())); - } - - - public QueryStatus backup(Map params, SvcLogicContext ctx) throws SvcLogicException { - String resource = params.get("resource").toLowerCase(); - String prefix = params.get("data-key"); - - HashMap nameValues = new HashMap(); - if(AAIRequest.createRequest(resource, nameValues) != null) { - - try { - return newModelBackupRequest(resource, params, prefix, ctx); - } catch (Exception exc) { - getLogger().warn("Failed backup - returning FAILURE", exc); - return QueryStatus.FAILURE; - } - } - - return QueryStatus.NOT_FOUND; - } - - @Override - public QueryStatus restore(Map params, SvcLogicContext ctx) throws SvcLogicException { - - QueryStatus retval = QueryStatus.SUCCESS; - String resource = params.get("resource").toLowerCase(); - String prefix = params.get("data-key"); - - HashMap nameValues = new HashMap(); - if(AAIRequest.createRequest(resource, nameValues) != null) { - - try { - retval = newModelBackupRequest(resource, params, "tmpRestore", ctx); - if(retval == QueryStatus.SUCCESS) { - String current_json = ctx.getAttribute("tmpRestore"); - ctx. setAttribute("tmpRestore", null); - - String snapshot_json = ctx.getAttribute(prefix); - } - } catch (Exception exc) { - getLogger().warn("Failed restore - returning FAILURE", exc); - return QueryStatus.FAILURE; - } - } - - return QueryStatus.NOT_FOUND; - } - - protected Map objectToProperties(Object object) { - ObjectMapper mapper = AAIService.getObjectMapper(); - return mapper.convertValue(object, Map.class); - } - - static T valueOf(Class klazz, String arg) { - Exception cause = null; - T ret = null; - try { - ret = klazz.cast(klazz.getDeclaredMethod("valueOf", String.class).invoke(null, arg)); - } catch (NoSuchMethodException exc) { - LoggerFactory.getLogger(AAIService.class).warn("Wrong data type", exc); - ret = klazz.cast(arg); - } catch (IllegalAccessException e) { - cause = e; - } catch (InvocationTargetException e) { - cause = e; - } - if (cause == null) { - return ret; - } else { - throw new IllegalArgumentException(cause); - } - } - - private QueryStatus processDeleteRelationshipList(String resource, String key, SvcLogicContext ctx, HashMap nameValues) { - try { - AAIRequest request = AAIRequest.createRequest(resource, nameValues); - if(request == null) { - return QueryStatus.FAILURE; - } - - request.processRequestPathValues(nameValues); - URL url = request.getRequestUrl("GET", null); - - Class resourceClass = request.getModelClass(); - Object instance = getResource(url.toString(), resourceClass); - if(instance == null) - return QueryStatus.NOT_FOUND; - - // get resource version - String resourceVersion = null; - Method getResourceVersionMethod = resourceClass.getMethod("getResourceVersion"); - if(getResourceVersionMethod != null){ - try { - getResourceVersionMethod.setAccessible(true); - Object object = getResourceVersionMethod.invoke(instance); - if(object != null) - resourceVersion = object.toString(); - } catch (InvocationTargetException x) { - Throwable cause = x.getCause(); - } - } - - RelationshipList relationshipList = null; - Object obj = null; - Method getRelationshipListMethod = resourceClass.getMethod("getRelationshipList"); - if(getRelationshipListMethod != null){ - try { - getRelationshipListMethod.setAccessible(true); - obj = getRelationshipListMethod.invoke(instance); - } catch (InvocationTargetException x) { - Throwable cause = x.getCause(); - } - } - if(obj != null && obj instanceof RelationshipList){ - relationshipList = (RelationshipList)obj; - } else { - getLogger().debug("No relationships found to process."); - return QueryStatus.NOT_FOUND; - } - - if(relationshipList.getRelationship() == null || relationshipList.getRelationship().isEmpty()) { - return QueryStatus.NOT_FOUND; - } - String relatedTo = nameValues.get("related_to"); - if(relatedTo == null) { - return QueryStatus.FAILURE; - } - - relatedTo = relatedTo.replaceAll("_", "-"); - - String relatedLink = nameValues.get("relationship.related_link"); - if(relatedLink != null) { - relatedLink = URLDecoder.decode(relatedLink, "UTF-8"); - } - - List relationships = relationshipList.getRelationship(); - List relationshipsToDelete = new LinkedList(); - - for(Relationship relationship : relationships) { - if(relatedTo.equals(relationship.getRelatedTo())) { - if(relatedLink != null) { - if(relationship.getRelatedLink() != null ) { - String localRelatedLink = relationship.getRelatedLink(); - localRelatedLink = URLDecoder.decode(localRelatedLink, "UTF-8"); - if(localRelatedLink.endsWith(relatedLink)) { - getLogger().debug(String.format("Found relationship of '%s' to keyword '%s'", relationship.getRelatedTo(), relatedTo)); - relationshipsToDelete.add(relationship); - } - } - } else { - getLogger().debug(String.format("Found relationship of '%s' to keyword '%s'", relationship.getRelatedTo(), relatedTo)); - relationshipsToDelete.add(relationship); - } - } - } - if(relationshipsToDelete == null || relationshipsToDelete.isEmpty()) { - getLogger().info(String.format("Relationship has not been found for %s", key)); - return QueryStatus.NOT_FOUND; - } - - String path = url.toString(); - path = path + "/relationship-list/relationship"; - URL deleteUrl = new URL(path); - - ObjectMapper mapper = AAIService.getObjectMapper(); - - boolean cumulativeResponse = true; - - for(Relationship targetRelationship : relationshipsToDelete) { - String json_text = mapper.writeValueAsString(targetRelationship); - boolean response = deleteRelationshipList(deleteUrl, json_text); - if(!response) - cumulativeResponse = response; - - } - - if(!cumulativeResponse) - return QueryStatus.FAILURE; - - return QueryStatus.SUCCESS; - - } catch(Exception exc) { - getLogger().warn("processDelete", exc); - return QueryStatus.FAILURE; - } - } - - static final Map ctxGetBeginsWith( SvcLogicContext ctx, String prefix ) { - Map tmpPrefixMap = new HashMap(); - - if(prefix == null || prefix.isEmpty()){ - return tmpPrefixMap; - } - - for( String key : ctx.getAttributeKeySet() ) { - if( key.startsWith(prefix) ) { - String tmpKey = key.substring(prefix.length() + 1); - tmpPrefixMap.put( tmpKey, ctx.getAttribute(key)); - } - } - - Map prefixMap = new HashMap(); - Pattern p = Pattern.compile(".*\\[\\d\\]"); - - SortedSet keys = new TreeSet(tmpPrefixMap.keySet () ); - for(String key : keys) { - Matcher m = p.matcher(key); - if(m.matches()) { - continue; - } else if(key.endsWith("_length")) { - String listKey = key.substring(0, key.indexOf("_length")); - int max = Integer.parseInt(tmpPrefixMap.get(key)); - - ArrayList data = new ArrayList(); - for(int x = 0; x < max; x++){ - String tmpKey = String.format("%s[%d]", listKey, x); - String tmpValue = tmpPrefixMap.get(tmpKey); - if(tmpValue != null && !tmpValue.isEmpty()) { - data.add(tmpValue); - } - } - if(!data.isEmpty()) { - prefixMap.put(listKey, data.toString()); - } else { - prefixMap.put(key, tmpPrefixMap.get(key)); - } - } else { - prefixMap.put(key, tmpPrefixMap.get(key)); - } - } - - return prefixMap; - } - - /** - */ - protected NamedQueryData extractNamedQueryDataFromQueryPrefix(HashMap nameValues, Map parms) { - if(parms.isEmpty()) { - return null; - } - - NamedQueryData data = new NamedQueryData(); - - // query parameters - if(data.getQueryParameters() == null) { - data.setQueryParameters(new QueryParameters()); - } - String namedQueryUuid = nameValues.get("named-query-uuid".replaceAll("-", "_")); - if(namedQueryUuid == null) { - namedQueryUuid = parms.get("query-parameters.named-query.named-query-uuid"); - } - NamedQuery namedQuery = new NamedQuery(); - namedQuery.setNamedQueryUuid(namedQueryUuid); - data.getQueryParameters().setNamedQuery(namedQuery); - - // instance filters - if(data.getInstanceFilters() == null) { - data.setInstanceFilters(new InstanceFilters()); - } - - - String quantity = parms.get("instance-filters.instance-filter_length"); - if(quantity != null && StringUtils.isNumeric(quantity)) { - int max = Integer.parseInt(quantity); - for(int i = 0; i < max; i++) { - String keyPattern = String.format("instance-filters.instance-filter[%d].", i); - Set keys = parms.keySet(); - for(String key: keys) { - if(key.startsWith(keyPattern)){ - String value = parms.get(key); - String remainder = key.substring(keyPattern.length()); - String[] split = remainder.split("\\."); - getLogger().debug(String.format("%s", remainder)); - if("logical-link".equals(split[0])) { - InstanceFilter insf = null; - if(data.getInstanceFilters().getInstanceFilter().isEmpty()) { - insf = new InstanceFilter(); - data.getInstanceFilters().getInstanceFilter().add(insf); - } else { - insf = data.getInstanceFilters().getInstanceFilter().get(0); - } - LogicalLink logicalLink = insf.getLogicalLink(); - if(logicalLink == null) { - logicalLink = new LogicalLink(); - insf.setLogicalLink(logicalLink); - } - - switch(split[1]) { - case "link-name": - logicalLink.setLinkName(value); - break; - case "link-type": - logicalLink.setLinkType(value); - break; - case "operational-state": - logicalLink.setOperationalStatus(value); - break; - } - - } else if("pnf".equals(split[0])) { - Pnf pnf = new Pnf(); - pnf.setPnfName(value); - - InstanceFilter insf = new InstanceFilter(); - insf.setPnf(pnf); - data.getInstanceFilters().getInstanceFilter().add(insf); - - } else if("service-instance".equals(split[0])) { - ServiceInstance serviceInstance = new ServiceInstance(); - serviceInstance.setServiceInstanceId(value); - - InstanceFilter insf = new InstanceFilter(); - insf.setServiceInstance(serviceInstance); - data.getInstanceFilters().getInstanceFilter().add(insf); - - } else if("l3-network".equals(split[0])) { - L3Network l3Network = new L3Network(); - if("network-role".equals(split[1])) { - l3Network.setNetworkRole(value); - } - - InstanceFilter insf = new InstanceFilter(); - insf.setL3Network(l3Network); - data.getInstanceFilters().getInstanceFilter().add(insf); - } - } - } - } - } - - return data; - } - - public abstract T getResource(String key, Class type) throws AAIServiceException ; - protected abstract boolean deleteRelationshipList(URL url, String caller) throws AAIServiceException; -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIExecutorInterface.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIExecutorInterface.java deleted file mode 100644 index 5b94f258..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIExecutorInterface.java +++ /dev/null @@ -1,30 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -public interface AAIExecutorInterface { - public Object get(AAIRequest request) throws AAIServiceException; - public Object post(AAIRequest request) throws AAIServiceException; - public Boolean delete(AAIRequest request, String resourceVersion) throws AAIServiceException; - public Object query(AAIRequest request, Class clas) throws AAIServiceException; - public Boolean patch(AAIRequest request, String resourceVersion) throws AAIServiceException; -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIRequest.java deleted file mode 100644 index f806ef4e..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIRequest.java +++ /dev/null @@ -1,420 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.UnsupportedEncodingException; -import java.lang.reflect.Method; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLDecoder; -import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.BitSet; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Set; -import java.util.TreeSet; - -import org.apache.commons.lang.StringUtils; -import org.openecomp.aai.inventory.v10.GenericVnf; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.osgi.framework.FrameworkUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public abstract class AAIRequest { - protected static final Logger LOG = LoggerFactory.getLogger(AAIRequest.class); - - protected static final String TARGET_URI = "org.openecomp.sdnc.sli.aai.uri"; - - protected static final String MASTER_REQUEST = "master-request"; - - public static final String RESOURCE_VERSION = "resource-version"; - - public static final String DEPTH = "depth"; - - protected static Properties configProperties; - protected final String target_uri; - protected static AAIService aaiService; - - protected AAIDatum requestDatum; - - protected final Properties requestProperties = new Properties(); - - - public static AAIRequest createRequest(String resoourceName, Map nameValues){ - - String resoource = resoourceName; - - if(resoource == null) - return null; - - if(resoource.contains(":")) { - String[] tokens = resoource.split(":"); - if(tokens != null && tokens.length > 0) { - resoource = tokens[0]; - } - } - - if(nameValues.containsKey("selflink")){ - Class clazz = null; - try { - clazz = getClassFromResource(resoource) ; - } catch (ClassNotFoundException e) { - LOG.warn("AAIRequest does not support class: " + e.getMessage()); - return null; - } - - if(clazz != null) - return new SelfLinkRequest(clazz); - else - return null; - } - - switch(resoource){ - case "generic-query": - return new GenericQueryRequest(); - case "named-query": - return new NamedQueryRequest(); - case "nodes-query": - return new NodesQueryRequest(); - case "custom-query": - return new CustomQueryRequest(); - case "linterface": - return new LInterfaceRequest(LInterfaceRequest.TYPE.L2_BRIDGE_SBG); - case "l2-bridge-sbg": - return new SubInterfaceRequest(SubInterfaceRequest.TYPE.L2_BRIDGE_SBG); - case "l2-bridge-bgf": - return new SubInterfaceRequest(SubInterfaceRequest.TYPE.L2_BRIDGE_BGF); - case "echo": - case "test": - return new EchoRequest(); - - default: - { - AAIRequest request = getRequestFromResource(resoource); - if(request == null) { - return null; - } - return request; - } - } - } - - - /** - * Map containing resource tag to its bit position in bitset mapping - */ - private static Map tagValues = new LinkedHashMap(); - /** - * Map containing bitset value of the path to its path mapping - */ - private static Map bitsetPaths = new LinkedHashMap(); - - - public static void setProperties(Properties props, AAIService aaiService) { - AAIRequest.configProperties = props; - AAIRequest.aaiService = aaiService; - - try - { - URL url = null; - Bundle bundle = FrameworkUtil.getBundle(AAIServiceActivator.class); - if(bundle != null) { - BundleContext ctx = bundle.getBundleContext(); - if(ctx == null) - return; - - url = ctx.getBundle().getResource(AAIService.PATH_PROPERTIES); - } else { - url = aaiService.getClass().getResource("/aai-path.properties"); - } - - InputStream in = url.openStream(); - Reader reader = new InputStreamReader(in, "UTF-8"); - - Properties properties = new Properties(); - properties.load(reader); - LOG.info("loaded " + properties.size()); - - Set keys = properties.stringPropertyNames(); - - int index = 0; - Set resourceNames = new TreeSet(); - - for(String key : keys) { - String[] tags = key.split("\\|"); - for(String tag : tags) { - if(!resourceNames.contains(tag)) { - resourceNames.add(tag); - tagValues.put(tag, Integer.toString(++index)); - } - } - BitSet bs = new BitSet(256); - for(String tag : tags) { - String value = tagValues.get(tag); - Integer bitIndex = Integer.parseInt(value) ; - bs.set(bitIndex); - } - String path = properties.getProperty(key); - LOG.info(String.format("bitset %s\t\t%s", bs.toString(), path)); - bitsetPaths.put(bs, path); - } - LOG.info("loaded " + resourceNames.toString()); - } - catch (Exception e) - { - LOG.error("Caught exception", e); - } - } - - public AAIRequest() { - target_uri = configProperties.getProperty(TARGET_URI); - } - - public void addRequestProperty(String key, String value) { - requestProperties.put(key, value); - } - - public final void setRequestObject(AAIDatum value) { - requestDatum = value; - } - - public final AAIDatum getRequestObject() { - return requestDatum; - } - - public final void addMasterRequest(AAIRequest masterRequest) { - requestProperties.put(MASTER_REQUEST, masterRequest); - } - - protected static String encodeQuery(String param) throws UnsupportedEncodingException { - return URLEncoder.encode(param, "UTF-8").replace("+", "%20"); - } - - protected void handleException(AAIRequest lInterfaceRequest, JsonProcessingException exc) { - aaiService.getLogger().warn("Could not deserialize object of type " + lInterfaceRequest.getClass().getSimpleName(), exc) ; - } - -// public abstract URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException; - - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = null; - - request_url = target_uri + getRequestPath(); - - Set uniqueResources = extractUniqueResourceSetFromKeys(requestProperties.stringPropertyNames()); - -// request_url = processPathData(request_url, requestProperties); - - for(String resoourceName:uniqueResources) { - AAIRequest locRequest = AAIRequest.createRequest(resoourceName, new HashMap()); - if(locRequest != null) { - Class clazz = locRequest.getClass(); - Method function = null; - try { - function = clazz.getMethod("processPathData", request_url.getClass(), requestProperties.getClass()); - request_url = (String) function.invoke(null, request_url, requestProperties); - } catch (Exception e) { - e.printStackTrace(); - } -// request_url = locRequest.processPathData(request_url, requestProperties); - } - } - - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - - - return http_req_url; - } - - - protected String getRequestPath() throws MalformedURLException { - Set uniqueResources = extractUniqueResourceSetFromKeys(requestProperties.stringPropertyNames()); - BitSet bitset = new BitSet(); - for(String key : uniqueResources) { - if(tagValues.containsKey(key)) { - Object tmpValue = tagValues.get(key); - if(tmpValue != null) { - String value = tmpValue.toString(); - int bitIndex = Integer.parseInt(value); - bitset.set(bitIndex); - } - } - } - - String path = bitsetPaths.get(bitset); - if(path == null) { - throw new MalformedURLException("PATH not found for key string containing valies :" +requestProperties.toString()); - } - return path; - } - - public abstract URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException; - - public abstract String toJSONString(); - - public abstract String[] getArgsList(); - - public abstract Class getModelClass() ; - - public String getPrimaryResourceName(String resource) { - return resource; - } - - public String formatKey(String argument) { - return argument; - } - - public AAIDatum jsonStringToObject(String jsonData) throws JsonParseException, JsonMappingException, IOException { - if(jsonData == null) { - return null; - } - - AAIDatum response = null; - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(jsonData, getModelClass()); - return response; - } - - protected static Set extractUniqueResourceSetFromKeys(Set keySet) { - Set uniqueResources = new TreeSet(); - List keys = new ArrayList(keySet); - for(String resource : keys) { - if(resource.contains(".")) { - String [] split = resource.split("\\."); - uniqueResources.add(split[0].replaceAll("_", "-")); - } - } - return uniqueResources; - } - - public void processRequestPathValues(Map nameValues) { - Set uniqueResources = extractUniqueResourceSetFromKeys(nameValues.keySet()); - - Set tokens = new TreeSet(); - tokens.add(DEPTH); - tokens.addAll(Arrays.asList(this.getArgsList())); - - for(String resoourceName:uniqueResources) { - AAIRequest locRequest = AAIRequest.createRequest(resoourceName, nameValues); - if(locRequest != null) - tokens.addAll(Arrays.asList(locRequest.getArgsList())); - } - - String[] arguments = tokens.toArray(new String[0]); - for(String name : arguments) { - String tmpName = name.replaceAll("-", "_"); - String value = nameValues.get(tmpName); - if(value != null && !value.isEmpty()) { - value = value.trim().replace("'", "").replace("$", "").replace("'", ""); - this.addRequestProperty(name, value); - } - } - } - - public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - return request_url; - } - - public boolean isDeleteDataRequired() { - return false; - } - - ObjectMapper getObjectMapper() { - return AAIService.getObjectMapper(); - } - - protected static Class getClassFromResource(String resoourceName) throws ClassNotFoundException { - String className = GenericVnf.class.getName(); - String[] split = resoourceName.split("-"); - for(int i = 0; i < split.length; i++) { - split[i] = StringUtils.capitalize(split[i]); - } - - String caps = StringUtils.join(split); - className = className.replace("GenericVnf", caps); - Class clazz = null; - try { - clazz = (Class)Class.forName(className); - } catch (ClassNotFoundException e) { - LOG.warn("AAIRequest does not support class: " + e.getMessage()); - return null; - } - - return clazz; - } - - protected static AAIRequest getRequestFromResource(String resoourceName) { - - Class clazz = null; - try { - clazz = getClassFromResource(resoourceName); - } catch (ClassNotFoundException e) { - LOG.warn("AAIRequest does not support class: " + e.getMessage()); - return null; - } - if(clazz == null) { - return null; - } - GenericRequest request = new GenericRequest(clazz); - return request; - } - - public static Map splitQuery(String query) throws UnsupportedEncodingException { - Map query_pairs = new LinkedHashMap(); - - if(query != null && !query.isEmpty()) { - String[] pairs = query.split("&"); - for (String pair : pairs) { - int idx = pair.indexOf("="); - query_pairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8")); - } - } - return query_pairs; - } - - protected boolean expectsDataFromPUTRequest() { - return false; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIService.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIService.java deleted file mode 100644 index 3f62374a..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIService.java +++ /dev/null @@ -1,3278 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - - -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.UnsupportedEncodingException; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URISyntaxException; -import java.net.URL; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.security.KeyManagementException; -import java.security.KeyStore; -import java.security.NoSuchAlgorithmException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Properties; -import java.util.Set; -import java.util.TimeZone; -import java.util.UUID; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSession; -import javax.net.ssl.SSLSocketFactory; -import javax.ws.rs.HttpMethod; -import javax.xml.bind.annotation.XmlElement; - -import org.apache.commons.codec.binary.Base64; -import org.apache.commons.lang3.StringUtils; -import org.onap.ccsdk.sli.core.sli.ConfigurationException; -import org.onap.ccsdk.sli.core.sli.MetricLogger; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicException; -import org.onap.ccsdk.sli.core.sli.SvcLogicResource; -import org.openecomp.aai.inventory.v10.AvailabilityZone; -import org.openecomp.aai.inventory.v10.Complex; -import org.openecomp.aai.inventory.v10.CtagPool; -import org.openecomp.aai.inventory.v10.DvsSwitch; -import org.openecomp.aai.inventory.v10.GenericVnf; -import org.openecomp.aai.inventory.v10.L3Network; -import org.openecomp.aai.inventory.v10.OamNetwork; -import org.openecomp.aai.inventory.v10.PInterface; -import org.openecomp.aai.inventory.v10.PhysicalLink; -import org.openecomp.aai.inventory.v10.Pserver; -import org.openecomp.aai.inventory.v10.ResultData; -import org.openecomp.aai.inventory.v10.SearchResults; -import org.openecomp.aai.inventory.v10.Service; -import org.openecomp.aai.inventory.v10.ServiceInstance; -import org.openecomp.aai.inventory.v10.SitePairSet; -import org.openecomp.aai.inventory.v10.Tenant; -import org.openecomp.aai.inventory.v10.Vce; -import org.openecomp.aai.inventory.v10.VnfImage; -import org.openecomp.aai.inventory.v10.VnfImages; -import org.openecomp.aai.inventory.v10.Vpe; -import org.openecomp.aai.inventory.v10.VplsPe; -import org.openecomp.aai.inventory.v10.VpnBinding; -import org.openecomp.aai.inventory.v10.Vserver; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; -import org.openecomp.sdnc.sli.aai.data.ErrorResponse; -import org.openecomp.sdnc.sli.aai.data.RequestError; -import org.openecomp.sdnc.sli.aai.data.ResourceVersion; -import org.openecomp.sdnc.sli.aai.data.ServiceException; -import org.openecomp.sdnc.sli.aai.data.notify.NotifyEvent; -import org.openecomp.sdnc.sli.aai.data.v1507.VServer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.databind.AnnotationIntrospector; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector; -import com.fasterxml.jackson.databind.type.TypeFactory; -import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector; -import com.sun.jersey.api.client.config.DefaultClientConfig; -import com.sun.jersey.client.urlconnection.HTTPSProperties; - - -public class AAIService extends AAIDeclarations implements AAIClient, SvcLogicResource { - - public static final String AAICLIENT_PROPERTIES = "/aaiclient.properties"; - public static final String PATH_PROPERTIES = "/aai-path.properties"; - - private static final Logger LOG = LoggerFactory.getLogger(AAIService.class); - - private final String truststore_path; - private final String truststore_password; - private final String keystore_path; - private final String keystore_password; - private final Boolean ignore_certificate_host_error; - - private final String target_uri; - private final String query_path; // = "sdn-zone-query"; - - private final String network_vserver_path; - - private final String svc_instance_path; - private final String svc_inst_qry_path; - - private final String vnf_image_query_path; - - private final String param_service_type; //= "service-type"; - - private final String ubb_notify_path; - private final String selflink_avpn; - private final String selflink_fqdn; - - private final String p_interface_path; - - private final String service_path; - private final String site_pair_set_path; - - private final int connection_timeout; - private final int read_timeout; - - // 1602 - private final String query_nodes_path; - private final String update_path; - - private final String application_id; - - // authentication credentials - private String user_name; - private String user_password; - - // runtime - private final boolean runtimeOSGI; - - private SSLContext CTX; - - private final MetricLogger ml = new MetricLogger(); - - private final AAIRequestExecutor executor; - - public AAIService(URL propURL) { - LOG.info("Entered AAIService.ctor"); - - String runtime = System.getProperty("aaiclient.runtime"); - if(runtime != null && runtime.equals("OSGI")) { - runtimeOSGI = true; - } else { - runtimeOSGI = false; - } - - Properties props = null; - try { - props = initialize(propURL); - AAIRequest.setProperties(props, this); - - } catch(Exception exc){ - LOG.error("AicAAIResource.static", exc); - } - - executor = new AAIRequestExecutor(); - - user_name = props.getProperty(CLIENT_NAME); - user_password = props.getProperty(CLIENT_PWWD); - - if(user_name == null || user_name.isEmpty()){ - LOG.debug("Basic user name is not set"); - } - if(user_password == null || user_password.isEmpty()) { - LOG.debug("Basic password is not set"); - } - - truststore_path = props.getProperty(TRUSTSTORE_PATH); - truststore_password = props.getProperty(TRUSTSTORE_PSSWD); - keystore_path = props.getProperty(KEYSTORE_PATH); - keystore_password = props.getProperty(KEYSTORE_PSSWD); - - target_uri = props.getProperty(TARGET_URI); - query_path = props.getProperty(QUERY_PATH); - update_path = props.getProperty(UPDATE_PATH); - - String applicationId =props.getProperty(APPLICATION_ID); - if(applicationId == null || applicationId.isEmpty()) { - applicationId = "SDNC"; - } - application_id = applicationId; - - // connection timeout - int tmpConnectionTimeout = 30000; - int tmpReadTimeout = 30000; - - try { - String tmpValue = null; - tmpValue = props.getProperty(CONNECTION_TIMEOUT, "30000"); - tmpConnectionTimeout = Integer.parseInt(tmpValue); - tmpValue = props.getProperty(READ_TIMEOUT, "30000"); - tmpReadTimeout = Integer.parseInt(tmpValue); - } catch(Exception exc) { - LOG.error("Failed setting connection timeout", exc); - tmpConnectionTimeout = 30000; - tmpReadTimeout = 30000; - } - connection_timeout = tmpConnectionTimeout; - read_timeout = tmpReadTimeout; - - network_vserver_path =props.getProperty(NETWORK_VSERVER_PATH); - - svc_instance_path = props.getProperty(SVC_INSTANCE_PATH); // "/aai/v1/business/customers/customer/{customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances"); -// "/aai/v1/business/customers/customer/ma9181-203-customerid/service-subscriptions/service-subscription/ma9181%20Hosted%20Voice/service-instances"; - -// svc_inst_qry_path = props.getProperty(SVC_INST_QRY_PATH, "/aai/v1/search/generic-query?key=service-instance.service-instance-id:ma9181-204-instance&start-node-type=service-instance&include=service-instance"); - svc_inst_qry_path = props.getProperty(SVC_INST_QRY_PATH); // "/aai/v1/search/generic-query?key=service-instance.service-instance-id:{svc-instance-id}&start-node-type=service-instance&include=service-instance"); - - - param_service_type = props.getProperty(PARAM_SERVICE_TYPE, "service-type"); - - // P-Interfaces - p_interface_path = props.getProperty(P_INTERFACE_PATH); - - vnf_image_query_path = props.getProperty(VNF_IMAGE_QUERY_PATH); - - ubb_notify_path = props.getProperty(UBB_NOTIFY_PATH); - selflink_avpn = props.getProperty(SELFLINK_AVPN); - selflink_fqdn = props.getProperty(SELFLINK_FQDN); - - service_path = props.getProperty(SERVICE_PATH); - - site_pair_set_path = props.getProperty(SITE_PAIR_SET_PATH); - - query_nodes_path = props.getProperty(QUERY_NODES_PATH); - - String iche = props.getProperty(CERTIFICATE_HOST_ERROR); - boolean host_error = false; - if(iche != null && !iche.isEmpty()) { - host_error = Boolean.valueOf(iche); - } - - ignore_certificate_host_error = host_error; - - HttpsURLConnection.setDefaultHostnameVerifier( new HostnameVerifier(){ - public boolean verify(String string,SSLSession ssls) { - return ignore_certificate_host_error; - } - }); - - if(truststore_path != null && truststore_password != null && (new File(truststore_path)).exists()) { - System.setProperty("javax.net.ssl.trustStore", truststore_path); - System.setProperty("javax.net.ssl.trustStorePassword", truststore_password); - } - - if(keystore_path != null && keystore_password != null && (new File(keystore_path)).exists()) - { - DefaultClientConfig config = new DefaultClientConfig(); - //both jersey and HttpURLConnection can use this - SSLContext ctx = null; - try { - ctx = SSLContext.getInstance("TLS"); - - KeyManagerFactory kmf = null; - try { - String def = "SunX509"; - String storeType = "PKCS12"; - def = KeyStore.getDefaultType(); - kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - FileInputStream fin = new FileInputStream(keystore_path); -// KeyStore ks = KeyStore.getInstance("PKCS12"); - - String extension = keystore_path.substring(keystore_path.lastIndexOf(".") + 1); - - if(extension != null && !extension.isEmpty() && extension.equalsIgnoreCase("JKS")) { - storeType = "JKS"; - } - KeyStore ks = KeyStore.getInstance(storeType); - - char[] pwd = keystore_password.toCharArray(); - ks.load(fin, pwd); - kmf.init(ks, pwd); - } catch (Exception ex) { - LOG.error("AAIResource", ex); - } - - ctx.init(kmf.getKeyManagers(), null, null); - config.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties( new HostnameVerifier() { - @Override - public boolean verify( String s, SSLSession sslSession ) { - return ignore_certificate_host_error; - } - }, ctx)); - - CTX = ctx; - LOG.debug("SSLContext created"); - - } catch (KeyManagementException | NoSuchAlgorithmException exc) { - LOG.error("AAIResource", exc); - } - } - - LOG.info("AAIResource.ctor initialized."); - - try { - Field methodsField = HttpURLConnection.class.getDeclaredField("methods"); - methodsField.setAccessible(true); - // get the methods field modifiers - Field modifiersField = Field.class.getDeclaredField("modifiers"); - // bypass the "private" modifier - modifiersField.setAccessible(true); - - // remove the "final" modifier - modifiersField.setInt(methodsField, methodsField.getModifiers() & ~Modifier.FINAL); - - /* valid HTTP methods */ - String[] methods = { - "GET", "POST", "HEAD", "OPTIONS", "PUT", "DELETE", "TRACE", "PATCH" - }; - // set the new methods - including patch - methodsField.set(null, methods); - - } catch (SecurityException | IllegalArgumentException | IllegalAccessException | NoSuchFieldException e) { - e.printStackTrace(); - } - - } - - public void cleanUp() { - - } - - /** - * - * @param http_req_url - * @param method - * @return - * @throws Exception - */ - protected HttpURLConnection getConfiguredConnection(URL http_req_url, String method) throws Exception { - HttpURLConnection con = (HttpURLConnection) http_req_url.openConnection(); - - // Set up the connection properties - con.setRequestProperty( "Connection", "close" ); - con.setDoInput(true); - con.setDoOutput(true); - con.setUseCaches(false); - con.setConnectTimeout( connection_timeout ); - con.setReadTimeout( read_timeout ); - con.setRequestMethod( method ); - con.setRequestProperty( "Accept", "application/json" ); - con.setRequestProperty( "Content-Type", "PATCH".equalsIgnoreCase(method) ? "application/merge-patch+json" : "application/json" ); - con.setRequestProperty("X-FromAppId", application_id); - con.setRequestProperty("X-TransactionId",TransactionIdTracker.getNextTransactionId()); - con.setRequestProperty(MetricLogger.REQUEST_ID, ml.getRequestID()); - - if(user_name != null && !user_name.isEmpty() && user_password != null && !user_password.isEmpty()) { - String basicAuth = "Basic " + new String(Base64.encodeBase64((user_name + ":" + user_password).getBytes())); - con.setRequestProperty ("Authorization", basicAuth); - } - - if(con instanceof HttpsURLConnection && CTX != null) { - SSLSocketFactory sockFact = CTX.getSocketFactory(); - HttpsURLConnection.class.cast(con).setSSLSocketFactory( sockFact ); - } - return con; - } - - - @Override - public GenericVnf requestGenericVnfData(String vnf_id) throws AAIServiceException { - GenericVnf response = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("generic-vnf"); - request.addRequestProperty("generic-vnf.vnf-id", vnf_id); - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, GenericVnf.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); - throw new AAIServiceException(exc); - } - - return response; - - } - - @Override - public boolean postGenericVnfData(String vnf_id, GenericVnf data) throws AAIServiceException { - try { - AAIRequest request = AAIRequest.getRequestFromResource("generic-vnf"); - request.addRequestProperty("generic-vnf.vnf-id", vnf_id); - request.setRequestObject(data); - Object response = executor.post(request); - return true; - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestGenericVnfData", exc); - throw new AAIServiceException(exc); - } - } - - @Override - public boolean deleteGenericVnfData(String vnf_id, String resourceVersion) throws AAIServiceException { - boolean response = false; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("generic-vnf"); - request.addRequestProperty("generic-vnf.vnf-id", vnf_id); - response = executor.delete(request, resourceVersion); - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("deleteGenericVnfData", exc); - throw new AAIServiceException(exc); - } - return response; - } - - /* (non-Javadoc) - * @see org.openecomp.sdnc.sli.resource.aic.AnAIClient#requestSdnZoneQuery(java.lang.String, java.lang.String, java.lang.String) - */ - @Override - public Vce requestNetworkVceData(String vnf_id) throws AAIServiceException { - Vce response = null; - try { - AAIRequest request = AAIRequest.getRequestFromResource("vce"); - request.addRequestProperty("vce.vnf-id", vnf_id); - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, Vce.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); - throw new AAIServiceException(exc); - } - - return response; - } - - - /* (non-Javadoc) - * @see org.openecomp.sdnc.sli.resource.aic.AnAIClient#requestSdnZoneQuery(java.lang.String, java.lang.String, java.lang.String) - */ - @Override - public boolean deleteNetworkVceData(String vnf_id, String resourceVersion) throws AAIServiceException { - boolean response = false; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("vce"); - request.addRequestProperty("vce.vnf-id", vnf_id); - response = executor.delete(request, resourceVersion); - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("deleteNetworkVceData", exc); - throw new AAIServiceException(exc); - } - return response; - } - - /* (non-Javadoc) - * @see org.openecomp.sdnc.sli.resource.aic.AnAIClient#postNetworkVceData(java.lang.String, org.openecomp.sdnc.sli.resource.aic.aai.VCERequest) - */ - @Override - public boolean postNetworkVceData(String vnf_id, Vce data) throws AAIServiceException { - try { - AAIRequest request = AAIRequest.getRequestFromResource("vce"); - request.addRequestProperty("vce.vnf-id", vnf_id); - request.setRequestObject(data); - Object response = executor.post(request); - return true; - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestGenericVnfData", exc); - throw new AAIServiceException(exc); - } - } - - - @Override - public SearchResults requestServiceInstanceURL(String svc_instance_id) throws AAIServiceException { - SearchResults response = null; - InputStream inputStream = null; - - try { - String path = svc_inst_qry_path; - path = path.replace("{svc-instance-id}", encodeQuery(svc_instance_id)); - - String request_url = target_uri+path; - URL http_req_url = new URL(request_url); - - HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.GET); - - LOGwriteFirstTrace(HttpMethod.GET, http_req_url.toString()); - LOGwriteDateTrace("svc_instance_id", svc_instance_id); - - // Check for errors - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - // Process the response - LOG.debug("HttpURLConnection result:" + responseCode); - if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); - BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); - - ObjectMapper mapper = getObjectMapper(); - - if (responseCode == HttpURLConnection.HTTP_OK) { -// StringBuilder stringBuilder = new StringBuilder("\n"); -// String line = null; -// while( ( line = reader.readLine() ) != null ) { -// stringBuilder.append("\n").append( line ); -// } -// LOG.info(stringBuilder.toString()); - response = mapper.readValue(reader, SearchResults.class); - LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, "SUCCESS", mapper.writeValueAsString(response)); - } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) { - LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); - return response; - } else { - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); - throw new AAIServiceException(responseCode, errorresponse); - } - - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestServiceInstanceURL", exc); - throw new AAIServiceException(exc); - } finally { - if(inputStream != null){ - try { - inputStream.close(); - } catch(Exception exc) { - - } - } - } - return response; - } - - @Override - public ServiceInstance requestServiceInterfaceData(String customer_id, String service_type, String svc_instance_id) throws AAIServiceException { - ServiceInstance response = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("service-instance"); - request.addRequestProperty("customer.global-customer-id", customer_id); - request.addRequestProperty("ervice-subscription.service-type", service_type); - request.addRequestProperty("service-instance.service-instance-id", svc_instance_id); - - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, ServiceInstance.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestServiceInterfaceData", exc); - throw new AAIServiceException(exc); - } - return response; - } - - @Override - public boolean postServiceInterfaceData(String customer_id, String service_type, String svc_instance_id, ServiceInstance data) throws AAIServiceException { - try { - AAIRequest request = AAIRequest.getRequestFromResource("service-instance"); - request.addRequestProperty("customer.customer-id", customer_id); - request.addRequestProperty("service-subscription.service-type", service_type); - request.addRequestProperty("service-instance.service-instance-id", svc_instance_id); - request.setRequestObject(data); - Object response = executor.post(request); - return true; - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestGenericVnfData", exc); - throw new AAIServiceException(exc); - } - } - - - private static Properties initialize(URL url ) throws ConfigurationException { - - if(url == null) { - throw new NullPointerException(); - } - - InputStream is = null; - Properties props = new Properties(); - - try { - if(LOG.isDebugEnabled()) - LOG.info("Property file is: " + url.toString()); - - is = url.openStream(); - - props.load(is); - if(LOG.isDebugEnabled()) { - LOG.info("Properties loaded: " + props.size()); - Enumeration en = props.keys(); - - while(en.hasMoreElements()) { - String key = (String)en.nextElement(); - String property = props.getProperty(key); - LOG.debug(key + " : " + property); - } - } - } catch (Exception e) { - throw new ConfigurationException("Could not load properties file.", e); - } - return props; - } - - static class TransactionIdTracker { -// protected static AtomicLong tracker = new AtomicLong(); - - public static String getNextTransactionId() { -// long id = tracker.getAndIncrement(); -// String transactionId = String.format("N%016X", id); - String transactionId = UUID.randomUUID().toString(); - return transactionId; - } - - } - - protected void LOGwriteFirstTrace(String method, String url) { - String time = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").format(System.currentTimeMillis()); - LOG.info("A&AI transaction :"); - LOG.info("Request Time : " + time + ", Method : " + method); - LOG.info("Request URL : "+ url); - } - - protected void LOGwriteDateTrace(String name, String data) { - LOG.info("Input - " + name + " : " + data); - } - - protected void LOGwriteEndingTrace(int response_code, String comment, String data) { - LOG.info("Response code : " + response_code +", " + comment); - LOG.info(String.format("Response data : %s", data)); - } - - protected String encodeQuery(String param) throws UnsupportedEncodingException { - return URLEncoder.encode(param, "UTF-8").replace("+", "%20"); - } - - private String encodeCustomerURL(final String selection) - { - String encrypted_url = selection; - String apnpattern = - "/aai/v10/business/customers/customer/(.+)/service-subscriptions/service-subscription/(.+)/service-instances/service-instance/(.+)/"; - Pattern pattern = Pattern.compile(apnpattern); - - try { - URL url = new URL(selection); - String path = url.getPath(); - - LOG.info("Trying to match apn to <" + path + ">"); - - Matcher matcher = pattern.matcher(path); - - while(matcher.find()) { - String customer = matcher.group(1); - String subscription = matcher.group(2); - String service = matcher.group(3); - - encrypted_url = selection.replace(customer, encodeQuery(customer)); - encrypted_url = encrypted_url.replace(subscription, encodeQuery(subscription)); - encrypted_url = encrypted_url.replace(service, encodeQuery(service)); - } - } catch (Exception e) { - LOG.warn("", e); - } - - return encrypted_url; - } - - @Override - public Vpe requestNetworkVpeData(String vnf_id) throws AAIServiceException { - Vpe response = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("vpe"); - request.addRequestProperty("vpe.vnf-id", vnf_id); - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, Vpe.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); - throw new AAIServiceException(exc); - } - return response; - } - - @Override - public boolean postNetworkVpeData(String vnf_id, Vpe data) throws AAIServiceException { - try { - AAIRequest request = AAIRequest.getRequestFromResource("vpe"); - request.addRequestProperty("vpe.vnf-id", vnf_id); - request.setRequestObject(data); - Object response = executor.post(request); - return true; - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); - throw new AAIServiceException(exc); - } - } - - @Override - public boolean deleteNetworkVpeData(String vnf_id, String resourceVersion) throws AAIServiceException { - boolean response = false; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("vpe"); - request.addRequestProperty("vpe.vnf-id", vnf_id); - response = executor.delete(request, resourceVersion); - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); - throw new AAIServiceException(exc); - } - return response; - } - - @Override - public VplsPe requestNetworkVplsPeData(String equipment_name)throws AAIServiceException { - VplsPe response = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("vpls-pe"); - request.addRequestProperty("vpls-pe.equipment-name", equipment_name); - - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, VplsPe.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); - throw new AAIServiceException(exc); - } - return response; - } - - @Override - public boolean postNetworkVplsPeData(String equipment_name, VplsPe data) throws AAIServiceException { - try { - AAIRequest request = AAIRequest.getRequestFromResource("vpls-pe"); - request.addRequestProperty("vpls-pe.equipment-name", equipment_name); - request.setRequestObject(data); - Object response = executor.post(request); - return true; - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestGenericVnfData", exc); - throw new AAIServiceException(exc); - } - } - - @Override - public boolean deleteNetworkVplsPeData(String vnf_id, String resourceVersion) throws AAIServiceException { - boolean response = false; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("vpls-pe"); - request.addRequestProperty("vpls-pe.equipment-name", vnf_id); - response = executor.delete(request, resourceVersion); - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("deleteNetworkVplsPeData", exc); - throw new AAIServiceException(exc); - } - return response; - } - - @Override - public Complex requestNetworkComplexData(String pLocId) throws AAIServiceException { - Complex response = null; - InputStream inputStream = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("complex"); - request.addRequestProperty("complex.physical-location-id", pLocId); - - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, Complex.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestNetworkComplexData", exc); - throw new AAIServiceException(exc); - } finally { - if(inputStream != null){ - try { - inputStream.close(); - } catch(Exception exc) { - - } - } - } - return response; - } - - @Override - public boolean postNetworkComplexData(String vnf_id, Complex data) throws AAIServiceException { - try { - AAIRequest request = AAIRequest.getRequestFromResource("complex"); - request.addRequestProperty("complex.physical-location-id", vnf_id); - request.setRequestObject(data); - Object response = executor.post(request); - return true; - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("postNetworkComplexData", exc); - throw new AAIServiceException(exc); - } - } - - @Override - public boolean deleteNetworkComplexData(String pLocId, String resourceVersion) throws AAIServiceException { - boolean response = false; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("complex"); - request.addRequestProperty("complex.physical-location-id", pLocId); - - response = executor.delete(request, resourceVersion); - - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("deleteNetworkComplexData", exc); - throw new AAIServiceException(exc); - } - return response; - } - - /* - * (non-Javadoc) - * @see org.openecomp.sdnct.sli.aai.AAIClient#requestVServersData(java.lang.String, java.lang.String) - */ - @Override - public Vserver requestVServerData(String tenantId, String vserverId, String cloudOwner, String cloudRegionId) throws AAIServiceException { - Vserver response = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("vserver"); - request.addRequestProperty("cloud-region.cloud-owner", cloudOwner); - request.addRequestProperty("cloud-region.cloud-region-id", cloudRegionId); - request.addRequestProperty("tenant.tenant-id", tenantId); - request.addRequestProperty("vserver.vserver-id", vserverId); - - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, Vserver.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); - throw new AAIServiceException(exc); - } - return response; - } - - - @Override - public boolean postVServerData(String tenantId, String vserverId, String cloudOwner, String cloudRegionId, Vserver data) throws AAIServiceException { - try { - AAIRequest request = AAIRequest.getRequestFromResource("vserver"); - request.addRequestProperty("cloud-region.cloud-owner", cloudOwner); - request.addRequestProperty("cloud-region.cloud-region-id", cloudRegionId); - request.addRequestProperty("tenant.tenant-id", tenantId); - request.addRequestProperty("vserver.vserver-id", vserverId); - request.setRequestObject(data); - Object response = executor.post(request); - return true; - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("postNetworkComplexData", exc); - throw new AAIServiceException(exc); - } - } - - @Override - public boolean deleteVServerData(String tenant_id, String vserver_id, String cloudOwner, String cloudRegionId, String resourceVersion) throws AAIServiceException { - boolean response = false; - InputStream inputStream = null; - - try { - String local_network_complexes_path = network_vserver_path.replace("{tenant-id}", encodeQuery(tenant_id)); - local_network_complexes_path = local_network_complexes_path.replace("{vserver-id}", encodeQuery(vserver_id)); - local_network_complexes_path = local_network_complexes_path.replace("{cloud-owner}", encodeQuery(cloudOwner)); - local_network_complexes_path = local_network_complexes_path.replace("{cloud-region-id}", encodeQuery(cloudRegionId)); - - String request_url = target_uri+local_network_complexes_path; - if(resourceVersion!=null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.DELETE); - - LOGwriteFirstTrace(HttpMethod.DELETE, http_req_url.toString()); - LOGwriteDateTrace("tenant_id", tenant_id); - LOGwriteDateTrace("vserver_id", vserver_id); - LOGwriteDateTrace("cloud-owner", cloudOwner); - LOGwriteDateTrace("cloud-region-id", cloudRegionId); - - // Check for errors - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - // Process the response - LOG.debug("HttpURLConnection result:" + responseCode); - if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); - BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); - String line = null; - - ObjectMapper mapper = getObjectMapper(); - - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - StringBuilder stringBuilder = new StringBuilder(); - - while( ( line = reader.readLine() ) != null ) { - stringBuilder.append( line ); - } - LOGwriteEndingTrace(responseCode, "SUCCESS", stringBuilder.toString()); - response = true; - } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) { - LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); - response = false; - } else { - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); - throw new AAIServiceException(responseCode, errorresponse); - } - - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("deleteVServerData", exc); - throw new AAIServiceException(exc); - } finally { - if(inputStream != null){ - try { - inputStream.close(); - } catch(Exception exc) { - - } - } - } - return response; - } - - - /* - * (non-Javadoc) - * @see org.openecomp.sdnc.sli.aai.AAIClient#requestCtagPoolData(String) - */ - @Override - public CtagPool requestCtagPoolData(String physical_location_id, String target_pe, String availability_zone_name) throws AAIServiceException { - CtagPool response = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("ctag-pool"); - - request.addRequestProperty("ctag-pool.target-pe", target_pe); - request.addRequestProperty("ctag-pool.availability-zone-name", availability_zone_name); - request.addRequestProperty("complex.physical-location-id", physical_location_id); - - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, CtagPool.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestNetworkVceData", exc); - throw new AAIServiceException(exc); - } - return response; - } - - //==================== DvsSwitch ====================== - @Override - public DvsSwitch requestDvsSwitchData(String vnf_id) throws AAIServiceException { - DvsSwitch response = null; - InputStream inputStream = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("dvs-switch"); - request.addRequestProperty("dvs-switch.switch-name", vnf_id); - - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, DvsSwitch.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestDvsSwitchData", exc); - throw new AAIServiceException(exc); - } finally { - if(inputStream != null){ - try { - inputStream.close(); - } catch(Exception exc) { - - } - } - } - return response; - } - - @Override - public boolean postDvsSwitchData(String switch_name, DvsSwitch data) throws AAIServiceException { - try { - AAIRequest request = AAIRequest.getRequestFromResource("dvs-switch"); - request.addRequestProperty("dvs-switch.switch-name", switch_name); - request.setRequestObject(data); - Object response = executor.post(request); - return true; - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); - throw new AAIServiceException(exc); - } - } - - @Override - public boolean deleteDvsSwitchData(String vnf_id, String resourceVersion) throws AAIServiceException { - boolean response = false; - InputStream inputStream = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("dvs-switch"); - request.addRequestProperty("dvs-switch.switch-name", vnf_id); - response = executor.delete(request, resourceVersion); - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("deleteDvsSwitchData", exc); - throw new AAIServiceException(exc); - } - return response; - } - //================== End of DvsSwitch ================= - //==================== PhysicalLink ====================== - @Override - public PhysicalLink requestPhysicalLinkData(String linkName) throws AAIServiceException { - PhysicalLink response = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("physical-link"); - request.addRequestProperty("physical-link.link-name", linkName); - - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, PhysicalLink.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestPhysicalLinkData", exc); - throw new AAIServiceException(exc); - } - return response; - } - - @Override - public boolean postPhysicalLinkData(String linkName, PhysicalLink data) throws AAIServiceException { - try { - AAIRequest request = AAIRequest.getRequestFromResource("physical-link"); - request.addRequestProperty("physical-link.link-name", linkName); - request.setRequestObject(data); - Object response = executor.post(request); - return true; - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); - throw new AAIServiceException(exc); - } - } - - @Override - public boolean deletePhysicalLinkData(String linkName, String resourceVersion) throws AAIServiceException { - boolean response = false; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("physical-link"); - request.addRequestProperty("physical-link.link-name", linkName); - response = executor.delete(request, resourceVersion); - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("deletePhysicalLinkData", exc); - throw new AAIServiceException(exc); - } - return response; - } - //================== End of PhysicalLink ================= - //==================== PInterface ====================== - @Override - public PInterface requestPInterfaceData(String hostname, String interfaceName) throws AAIServiceException { - PInterface response = null; - - try { - AAIRequest request = new PInterfaceRequest(); - request.addRequestProperty(PInterfaceRequest.PINTERFACE_INTERFACE_NAME, interfaceName); - request.addRequestProperty(PInterfaceRequest.PSERVER_HOSTNAME, hostname); - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, PInterface.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); - throw new AAIServiceException(exc); - } - return response; - } - - @Override - public boolean postPInterfaceData(String hostname, String interfaceName, PInterface request) throws AAIServiceException { - InputStream inputStream = null; - - try { - - ObjectMapper mapper = getObjectMapper(); - String json_text = mapper.writeValueAsString(request); - - SSLSocketFactory sockFact = CTX.getSocketFactory(); - - String request_url = target_uri+p_interface_path; - String encoded_vnf = encodeQuery(hostname); - request_url = request_url.replace("{hostname}", encoded_vnf) ; - encoded_vnf = encodeQuery(interfaceName); - request_url = request_url.replace("{interface-name}", encoded_vnf) ; - URL http_req_url = new URL(request_url); - - HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.PUT); - - OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); - osw.write(json_text); - osw.flush(); - osw.close(); - - - LOGwriteFirstTrace("PUT", request_url); - LOGwriteDateTrace("hostname", hostname); - LOGwriteDateTrace("interface-name", interfaceName); - LOGwriteDateTrace("PInterface", json_text); - - // Check for errors - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - // Process the response - BufferedReader reader; - String line = null; - reader = new BufferedReader( new InputStreamReader( inputStream ) ); - - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - StringBuilder stringBuilder = new StringBuilder(); - - while( ( line = reader.readLine() ) != null ) { - stringBuilder.append( line ); - } - LOGwriteEndingTrace(responseCode, "SUCCESS", (stringBuilder != null) ? stringBuilder.toString() : "{no-data}"); - return true; - } else { - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); - - throw new AAIServiceException(responseCode, errorresponse); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("postPInterfaceData", exc); - throw new AAIServiceException(exc); - } finally { - try { - if(inputStream != null) - inputStream.close(); - } catch (Exception exc) { - - } - } - } - - @Override - public boolean deletePInterfaceData(String hostname, String interfaceName, String resourceVersion) throws AAIServiceException { - boolean response = false; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("p-interface"); - request.addRequestProperty("p-interface.interface-name", interfaceName); - request.addRequestProperty("pserver.hostname", hostname); - response = executor.delete(request, resourceVersion); - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("deletePInterfaceData", exc); - throw new AAIServiceException(exc); - } - return response; - } - //================== End of PInterface ================= - //==================== SitePairSet ====================== - @Override - public SitePairSet requestSitePairSetData(String sitePairSetId) throws AAIServiceException { - SitePairSet response = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("site-pair-set"); - request.addRequestProperty("site-pair-set.site-pair-set-id", sitePairSetId); - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, SitePairSet.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); - throw new AAIServiceException(exc); - } - return response; - } - - @Override - public boolean postSitePairSetData(String linkName, SitePairSet request) throws AAIServiceException { - InputStream inputStream = null; - - try { - - ObjectMapper mapper = getObjectMapper(); - String json_text = mapper.writeValueAsString(request); - - SSLSocketFactory sockFact = CTX.getSocketFactory(); - - String request_url = target_uri+site_pair_set_path; - String encoded_vnf = encodeQuery(linkName); - request_url = request_url.replace("{site-pair-set-id}", encoded_vnf) ; - URL http_req_url = new URL(request_url); - - HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.PUT); - - OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); - osw.write(json_text); - osw.flush(); - osw.close(); - - - LOGwriteFirstTrace("PUT", request_url); - LOGwriteDateTrace("link-name", linkName); - LOGwriteDateTrace("SitePairSet", json_text); - - // Check for errors - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - // Process the response - BufferedReader reader; - String line = null; - reader = new BufferedReader( new InputStreamReader( inputStream ) ); - - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - StringBuilder stringBuilder = new StringBuilder(); - - while( ( line = reader.readLine() ) != null ) { - stringBuilder.append( line ); - } - LOGwriteEndingTrace(responseCode, "SUCCESS", (stringBuilder != null) ? stringBuilder.toString() : "{no-data}"); - return true; - } else { - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); - - throw new AAIServiceException(responseCode, errorresponse); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("postSitePairSetData", exc); - throw new AAIServiceException(exc); - } finally { - try { - if(inputStream != null) - inputStream.close(); - } catch (Exception exc) { - - } - } - } - - @Override - public boolean deleteSitePairSetData(String linkName, String resourceVersion) throws AAIServiceException { - boolean response = false; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("site-pair-set"); - request.addRequestProperty("site-pair-set.site-pair-set-id", linkName); - response = executor.delete(request, resourceVersion); - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("deleteSitePairSetData", exc); - throw new AAIServiceException(exc); - } - - return response; - } - //================== End of SitePairSet ================= - //==================== Service ====================== - @Override - public Service requestServiceData(String serviceId) throws AAIServiceException { - Service response = null; - InputStream inputStream = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("service"); - request.addRequestProperty("service.service-id", serviceId); - - - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, Service.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestServiceData", exc); - throw new AAIServiceException(exc); - } - return response; - } - - @Override - public boolean postServiceData(String linkName, Service request) throws AAIServiceException { - InputStream inputStream = null; - - try { - - ObjectMapper mapper = getObjectMapper(); - String json_text = mapper.writeValueAsString(request); - - SSLSocketFactory sockFact = CTX.getSocketFactory(); - - String request_url = target_uri+service_path; - String encoded_vnf = encodeQuery(linkName); - request_url = request_url.replace("{service-id}", encoded_vnf) ; - URL http_req_url = new URL(request_url); - - HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.PUT); - - OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); - osw.write(json_text); - osw.flush(); - osw.close(); - - - LOGwriteFirstTrace("PUT", request_url); - LOGwriteDateTrace("service-id", linkName); - LOGwriteDateTrace("Service", json_text); - - // Check for errors - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - // Process the response - BufferedReader reader; - String line = null; - reader = new BufferedReader( new InputStreamReader( inputStream ) ); - - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - StringBuilder stringBuilder = new StringBuilder(); - - while( ( line = reader.readLine() ) != null ) { - stringBuilder.append( line ); - } - LOGwriteEndingTrace(responseCode, "SUCCESS", (stringBuilder != null) ? stringBuilder.toString() : "{no-data}"); - return true; - } else { - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); - - throw new AAIServiceException(responseCode, errorresponse); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("postServiceData", exc); - throw new AAIServiceException(exc); - } finally { - try { - if(inputStream != null) - inputStream.close(); - } catch (Exception exc) { - - } - } - } - - @Override - public boolean deleteServiceData(String service_id, String resourceVersion) throws AAIServiceException { - boolean response = false; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("service"); - request.addRequestProperty("service.service-id", service_id); - response = executor.delete(request, resourceVersion); - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("deleteServiceData", exc); - throw new AAIServiceException(exc); - } - - return response; - } - //================== End of Service ================= - - - - // 1507 - Request - @Override - public VServer dataChangeRequestVServerData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return this.getResource(url.toString(), VServer.class); - } - - @Override - public Pserver dataChangeRequestPServerData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return this.getResource(url.toString(), Pserver.class); - } - - @Override - public CtagPool dataChangeRequestCtagPoolData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return this.getResource(url.toString(), CtagPool.class); - } - - @Override - public VplsPe dataChangeRequestVplsPeData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return this.getResource(url.toString(), VplsPe.class); - } - - @Override - public Vpe dataChangeRequestVpeData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return this.getResource(url.toString(), Vpe.class); - } - - @Override - public DvsSwitch dataChangeRequestDvsSwitchData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return this.getResource(url.toString(), DvsSwitch.class); - } - - @Override - public OamNetwork dataChangeRequestOAMNetworkData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return this.getResource(url.toString(), OamNetwork.class); - } - - @Override - public AvailabilityZone dataChangeRequestAvailabilityZoneData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return this.getResource(url.toString(), AvailabilityZone.class); - } - - @Override - public Complex dataChangeRequestComplexData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return this.getResource(url.toString(), Complex.class); - } - - /* DELETE */ - public boolean dataChangeDeleteVServerData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); - } - - public boolean dataChangeDeleteCtagPoolData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); - } - - public boolean dataChangeDeleteVplsPeData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); - } - - public boolean dataChangeDeleteVpeData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); - } - - public boolean dataChangeDeleteDvsSwitchData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); - } - //OAM-Network: - public boolean dataChangeDeleteOAMNetworkData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); - } - //Availability-Zone: - public boolean dataChangeDeleteAvailabilityZoneData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); - } - //Complex: - public boolean dataChangeDeleteComplexData(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - return deleteAAIEntity(url, new Object(){}.getClass().getEnclosingMethod().getName()); - } - - private boolean deleteAAIEntity(URL url, String caller) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - boolean response = false; - InputStream inputStream = null; - - try { - URL http_req_url = url; - - HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.DELETE); - -// SSLSocketFactory sockFact = CTX.getSocketFactory(); -// con.setSSLSocketFactory( sockFact ); - - LOGwriteFirstTrace("DELETE", http_req_url.toString()); - - - // Check for errors - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - // Process the response - LOG.debug("HttpURLConnection result:" + responseCode); - if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); - BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); - String line = null; - - ObjectMapper mapper = getObjectMapper(); - - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - StringBuilder stringBuilder = new StringBuilder(); - - while( ( line = reader.readLine() ) != null ) { - stringBuilder.append( line ); - } - LOGwriteEndingTrace(responseCode, "SUCCESS", stringBuilder.toString()); - response = true; - } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) { - LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); - response = false; - } else { - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); - throw new AAIServiceException(responseCode, errorresponse); - } - - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn(caller, exc); - throw new AAIServiceException(exc); - } finally { - if(inputStream != null){ - try { - inputStream.close(); - } catch(Exception exc) { - - } - } - } - return response; - } - - /** - * Generic method to GET json data from an A&AI callback URL. - * Then convert that json to an Object. - * If successful the Object is attempted to be cast to the type parameter. - * - * @param key - * callback url for A&AI - * @param type - * the class of object that A&AI will return - * @return the object created from json or null if the response code is not 200 - * - * @throws AAIServiceException - * if empty or null key and or type or there's an error with processing - */ - public T dataChangeRequestAaiData(String key, Class type) throws AAIServiceException { - if (StringUtils.isEmpty(key) || type == null) { - throw new AAIServiceException("Key is empty or null and or type is null"); - } - - T response = null; - - SvcLogicContext ctx = new SvcLogicContext(); - if(!key.contains(" = ") && isValidURL(key)) { - key = String.format("selflink = '%s'", key); - } - HashMap nameValues = keyToHashMap(key, ctx); - - SelfLinkRequest request = new SelfLinkRequest(type); - request.processRequestPathValues(nameValues); - Object obj = this.getExecutor().query(request, type); - response = type.cast(obj); - - return response != null ? type.cast(response) : response; - } - - @Override - public Pserver requestPServerData(String hostname) throws AAIServiceException { - Pserver response = null; - InputStream inputStream = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("pserver"); - request.addRequestProperty("pserver.hostname", hostname); - - - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, Pserver.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestPServerData", exc); - throw new AAIServiceException(exc); - } - return response; - } - - @Override - public boolean postPServerData(String hostname, Pserver data) throws AAIServiceException { - try { - AAIRequest request = AAIRequest.getRequestFromResource("pserver"); - request.addRequestProperty("pserver.hostname", hostname); - request.setRequestObject(data); - Object response = executor.post(request); - return true; - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); - throw new AAIServiceException(exc); - } - } - - @Override - public boolean deletePServerData(String hostname, String resourceVersion) throws AAIServiceException { - boolean response = false; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("pserver"); - request.addRequestProperty("pserver.hostname", hostname); - response = executor.delete(request, resourceVersion); - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("deletePServerData", exc); - throw new AAIServiceException(exc); - } - - return response; - } - - - @Override - public L3Network requestL3NetworkData(String networkId) throws AAIServiceException { - L3Network response = null; - InputStream inputStream = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("l3-network"); - request.addRequestProperty("l3-network.network-id", networkId); - - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, L3Network.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestL3NetworkData", exc); - throw new AAIServiceException(exc); - } - return response; - } - - @Override - public L3Network requestL3NetworkQueryByName(String networkName) throws AAIServiceException { - L3Network response = null; - InputStream inputStream = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("l3-network"); - request.addRequestProperty("l3-network.network-name", networkName); - - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, L3Network.class); - } - - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestL3NetworkQueryByName", exc); - throw new AAIServiceException(exc); - } finally { - if(inputStream != null){ - try { - inputStream.close(); - } catch(Exception exc) { - - } - } - } - return response; - } - - @Override - public boolean postL3NetworkData(String networkId, L3Network data) throws AAIServiceException { - try { - AAIRequest request = AAIRequest.getRequestFromResource("l3-network"); - request.addRequestProperty("l3-network.network-id", networkId); - request.setRequestObject(data); - Object response = executor.post(request); - return true; - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn(new Object(){}.getClass().getEnclosingMethod().getName(), exc); - throw new AAIServiceException(exc); - } - } - - @Override - public boolean deleteL3NetworkData(String networkId, String resourceVersion) throws AAIServiceException { - boolean response = false; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("l3-network"); - request.addRequestProperty("l3-network.network-id", networkId); - response = executor.delete(request, resourceVersion); - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("deleteL3NetworkData", exc); - throw new AAIServiceException(exc); - } - - return response; - } - - - @Override - public VpnBinding requestVpnBindingData(String vpnId) throws AAIServiceException { - VpnBinding response = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("vpn-binding"); - request.addRequestProperty("vpn-binding.vpn-id", vpnId); - - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, VpnBinding.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestVpnBindingData", exc); - throw new AAIServiceException(exc); - } - return response; - } - - @Override - public boolean deleteVpnBindingData(String vpnId, String resourceVersion) throws AAIServiceException { - boolean response = false; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("vpn-binding"); - request.addRequestProperty("vpn-binding.vpn-id", vpnId); - response = executor.delete(request, resourceVersion); - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("deleteVpnBindingData", exc); - throw new AAIServiceException(exc); - } - return response; - } - - - @Override - public VnfImage requestVnfImageData(String att_uuid) throws AAIServiceException { - VnfImage response = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("vnf-image"); - request.addRequestProperty("vnf-image.att-uuid", att_uuid); - - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, VnfImage.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestVnfImageData", exc); - throw new AAIServiceException(exc); - } - return response; - } - - @Override - public VnfImage requestVnfImageDataByVendorModel(String vendor, String model) throws AAIServiceException { - return requestVnfImageDataByVendorModelVersion(vendor, model, null); - } - - @Override - public VnfImage requestVnfImageDataByVendorModelVersion(String vendor, String model, String version) throws AAIServiceException - { - List responseList = new ArrayList(); - VnfImage response = null; - InputStream inputStream = null; - - try { - String request_url = target_uri+vnf_image_query_path + (version==null? "": "&application-version={application_version}"); - request_url = request_url.replace("{application_vendor}", encodeQuery(vendor)) ; - request_url = request_url.replace("{application_model}", encodeQuery(model)) ; - if(version != null) { - request_url = request_url.replace("{application_version}", encodeQuery(version)) ; - } - URL http_req_url = new URL(request_url); - - HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.GET); - - LOGwriteFirstTrace(HttpMethod.GET, http_req_url.toString()); - LOGwriteDateTrace("application_vendor", vendor); - LOGwriteDateTrace("application_model", model); - if(version != null) { - LOGwriteDateTrace("application_version", version); - } - - // Check for errors - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - // Process the response - LOG.debug("HttpURLConnection result:" + responseCode); - if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); - BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); - - ObjectMapper mapper = getObjectMapper(); - - if (responseCode == HttpURLConnection.HTTP_OK) { -// StringBuilder stringBuilder = new StringBuilder("\n"); -// String line = null; -// while( ( line = reader.readLine() ) != null ) { -// stringBuilder.append("\n").append( line ); -// } -// LOG.info(stringBuilder.toString()); - response = mapper.readValue(reader, VnfImage.class); - String original_buffer = mapper.writeValueAsString(response); - LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, "SUCCESS", original_buffer); - if(response.getApplicationVendor() == null /*&& response.getAdditionalProperties() != null && !response.getAdditionalProperties().isEmpty()*/){ - LOG.warn("A List of multiple VNF-IMAGE entries has been returned"); - VnfImages listOfObjects = mapper.readValue(original_buffer, VnfImages.class); - if(!listOfObjects.getVnfImage().isEmpty()) { - response = listOfObjects.getVnfImage().get(0); - } - } - } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) { - LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); - return response; - } else { - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); - throw new AAIServiceException(responseCode, errorresponse); - } - - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestVnfImageData", exc); - throw new AAIServiceException(exc); - } finally { - if(inputStream != null){ - try { - inputStream.close(); - } catch(Exception exc) { - - } - } - } - return response; - } - - - public boolean sendNotify(NotifyEvent event, String serviceInstanceId, String pathCode) throws AAIServiceException { - InputStream inputStream = null; - - try { - - String selfLink = selflink_fqdn; - if(SELFLINK_AVPN != null && SELFLINK_AVPN.equals(pathCode)) { - selfLink = selflink_avpn; - } - selfLink = selfLink.replace("{service-instance-id}", encodeQuery(serviceInstanceId)); - event.setSelflink(selfLink); - - ObjectMapper mapper = getObjectMapper(); - String json_text = mapper.writeValueAsString(event); - - SSLSocketFactory sockFact = CTX.getSocketFactory(); - - String request_url = target_uri+ubb_notify_path; - URL http_req_url = new URL(request_url); - - HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.PUT); - - OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); - osw.write(json_text); - osw.flush(); - osw.close(); - - - LOGwriteFirstTrace("PUT", request_url); - LOGwriteDateTrace("NotifyEvent", json_text); - - // Check for errors - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - // Process the response - BufferedReader reader; - String line = null; - reader = new BufferedReader( new InputStreamReader( inputStream ) ); - - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - StringBuilder stringBuilder = new StringBuilder(); - - while( ( line = reader.readLine() ) != null ) { - stringBuilder.append( line ); - } - LOGwriteEndingTrace(responseCode, "SUCCESS", (stringBuilder != null) ? stringBuilder.toString() : "{no-data}"); - return true; - } else { - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); - - throw new AAIServiceException(responseCode, errorresponse); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("sendNotify", exc); - throw new AAIServiceException(exc); - } finally { - try { - if(inputStream != null) - inputStream.close(); - } catch (Exception exc) { - - } - } - } - - @Override - public SearchResults requestNodeQuery(String node_type, String entityIdentifier, String entityName) throws AAIServiceException { - SearchResults response = null; - InputStream inputStream = null; - - try { - String request_url = target_uri+query_nodes_path; - request_url = request_url.replace("{node-type}", encodeQuery(node_type)) ; - request_url = request_url.replace("{entity-identifier}", entityIdentifier) ; - request_url = request_url.replace("{entity-name}", encodeQuery(entityName)) ; - URL http_req_url = new URL(request_url); - - HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.GET); - - LOGwriteFirstTrace(HttpMethod.GET, http_req_url.toString()); - LOGwriteDateTrace("node_type", node_type); - LOGwriteDateTrace("vnf_name", entityName); - - // Check for errors - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - // Process the response - LOG.debug("HttpURLConnection result:" + responseCode); - if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); - BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); - - ObjectMapper mapper = getObjectMapper(); - - if (responseCode == HttpURLConnection.HTTP_OK) { - response = mapper.readValue(reader, SearchResults.class); - LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, "SUCCESS", mapper.writeValueAsString(response)); - } else if (responseCode == HttpURLConnection.HTTP_NOT_FOUND) { - LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); - return response; - } else { - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); - throw new AAIServiceException(responseCode, errorresponse); - } - - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestNodeQuery", exc); - throw new AAIServiceException(exc); - } finally { - if(inputStream != null){ - try { - inputStream.close(); - } catch(Exception exc) { - - } - } - } - return response; - - } - - - @Override - public String requestDataByURL(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - String response = null; - InputStream inputStream = null; - - try { - URL http_req_url = url; - - HttpURLConnection con = getConfiguredConnection(http_req_url, HttpMethod.GET); - - LOGwriteFirstTrace(HttpMethod.GET, http_req_url.toString()); - - // Check for errors - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - // Process the response - LOG.debug("HttpURLConnection result:" + responseCode); - if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); - BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); - - ObjectMapper mapper = getObjectMapper(); - - if (responseCode == HttpURLConnection.HTTP_OK) { - StringBuilder stringBuilder = new StringBuilder("\n"); - String line = null; - while( ( line = reader.readLine() ) != null ) { - stringBuilder.append( line ); - } - LOG.info(stringBuilder.toString()); -// response = mapper.readValue(reader, String.class); - response = stringBuilder.toString(); - LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, "SUCCESS", mapper.writeValueAsString(response)); - } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) { - LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); - response = null; - } else { - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); - throw new AAIServiceException(responseCode, errorresponse); - } - - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestNetworkVceData", exc); - throw new AAIServiceException(exc); - } finally { - if(inputStream != null){ - try { - inputStream.close(); - } catch(Exception exc) { - - } - } - } - return response; - } - - - @Override - public GenericVnf requestGenericVnfeNodeQuery(String vnf_name) throws AAIServiceException { - - if(vnf_name == null) { - throw new NullPointerException(); - } - - GenericVnf entity = null; - SearchResults resp = this.requestNodeQuery("generic-vnf", "vnf-name", vnf_name); - - List resultDataList = resp.getResultData(); - - try { - for (ResultData datum : resultDataList) { - String data_type = datum.getResourceType(); - URL url = new URL(datum.getResourceLink()); - entity = this.getResource(url.toString(), GenericVnf.class); - } - } - catch (Exception e) - { - LOG.error("Caught exception", e); - } - return entity; - } - - @Override - public Vserver requestVServerDataByURL(URL url) throws AAIServiceException { - - if(url == null) { - throw new NullPointerException(); - } - - Vserver entity = null; - - try { - entity = this.getResource(url.toString(), Vserver.class); - } catch (AAIServiceException exc) { - throw exc; - } catch (Exception e) { - throw new AAIServiceException(e); - } - return entity; - } - - @Override - public URL requestVserverURLNodeQuery(String vserver_name) throws AAIServiceException { - - if(vserver_name == null) { - throw new NullPointerException(); - } - - URL entity = null; - SearchResults resp = this.requestNodeQuery("vserver", "vserver-name", vserver_name); - - List resultDataList = resp.getResultData(); - - try { - for (ResultData datum : resultDataList) { - String data_type = datum.getResourceType(); - entity = new URL(datum.getResourceLink()); - } - } catch (Exception e) { - throw new AAIServiceException(e); - } - return entity; - } - - class AAIRequestExecutor implements AAIExecutorInterface { - - @Override - public String get(AAIRequest request) throws AAIServiceException { - String response = null; - InputStream inputStream = null; - HttpURLConnection con = null; - URL requestUrl = null; - - String requestId = UUID.randomUUID().toString(); - - try { - - if(request.getRequestObject() != null) { - requestUrl = request.getRequestUrl(HttpMethod.POST, null); - requestUrl = appendDepth(requestUrl, request); - con = getConfiguredConnection(requestUrl, HttpMethod.POST); - String json_text = request.toJSONString(); - LOGwriteDateTrace("data", json_text); - logMetricRequest(requestId, "POST "+requestUrl.getPath(), json_text, requestUrl.getPath()); - OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); - osw.write(json_text); - osw.flush(); - } else { - requestUrl = request.getRequestUrl(HttpMethod.GET, null); - requestUrl = appendDepth(requestUrl, request); - con = getConfiguredConnection(requestUrl, HttpMethod.GET); - logMetricRequest(requestId, "GET "+requestUrl.getPath(), "", requestUrl.getPath()); - } - - // Check for errors - String responseMessage = con.getResponseMessage(); - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - // Process the response - LOG.debug("HttpURLConnection result:" + responseCode + " : " + responseMessage); - logMetricResponse(requestId, responseCode, responseMessage); - - if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); - BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); - - ObjectMapper mapper = getObjectMapper(); - - if (responseCode == HttpURLConnection.HTTP_OK) { - StringBuilder stringBuilder = new StringBuilder(); - String line = null; - while( ( line = reader.readLine() ) != null ) { - stringBuilder.append( line ); - } - response = stringBuilder.toString(); - try { - Object object = mapper.readValue(response, Object.class); - LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, responseMessage, mapper.writeValueAsString(object)); - } catch(Exception exc) { - LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, responseMessage, mapper.writeValueAsString(response)); - } - } else if (responseCode == HttpURLConnection.HTTP_NOT_FOUND) { - LOGwriteEndingTrace(responseCode, responseMessage, "Entry does not exist."); - ErrorResponse errorresponse = null; - try { - errorresponse = mapper.readValue(reader, ErrorResponse.class); - } catch(Exception exc) { - errorresponse = new ErrorResponse(); - RequestError requestError = new RequestError(); - ServiceException serviceException = new ServiceException(); - serviceException.setText("Entry does not exist."); - requestError.setServiceException(serviceException); - errorresponse.setRequestError(requestError ); - } - throw new AAIServiceException(responseCode, errorresponse); - } else if (responseCode == HttpURLConnection.HTTP_UNAUTHORIZED) { - StringBuilder stringBuilder = new StringBuilder(); - String line = null; - while( ( line = reader.readLine() ) != null ) { - stringBuilder.append( line ); - } - LOGwriteEndingTrace(responseCode, responseMessage, stringBuilder.toString()); - ServiceException serviceException = new ServiceException(); - serviceException.setMessageId("HTTP_UNAUTHORIZED"); - serviceException.setText(stringBuilder.toString()); - RequestError requestError = new RequestError(); - requestError.setServiceException(serviceException); - ErrorResponse errorresponse = new ErrorResponse(); - errorresponse.setRequestError(requestError); - throw new AAIServiceException(responseCode, errorresponse); - } else { -// -// StringBuilder stringBuilder = new StringBuilder("\n"); -// String line = null; -// while( ( line = reader.readLine() ) != null ) { -// stringBuilder.append("\n").append( line ); -// } -// LOG.info(stringBuilder.toString()); -// -// ErrorResponse errorresponse = mapper.readValue(stringBuilder.toString(), ErrorResponse.class); - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, responseMessage, mapper.writeValueAsString(errorresponse)); - throw new AAIServiceException(responseCode, errorresponse); - } - - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("GET", exc); - throw new AAIServiceException(exc); - } finally { - if(inputStream != null){ - try { - inputStream.close(); - } catch(Exception exc) { - - } - } - } - return response; - } - - private URL appendDepth(URL requestUrl, AAIRequest request) throws MalformedURLException { - - String depth = request.requestProperties.getProperty("depth", "1"); - String path = requestUrl.toString(); - if(path.contains("?depth=") || path.contains("&depth=")) { - return requestUrl; - } else { - if(path.contains("?")) { - path = String.format("%s&depth=%s", path, depth); - } else { - path = String.format("%s?depth=%s", path, depth); - } - return new URL(path); - } - } - - @Override - public String post(AAIRequest request) throws AAIServiceException { - InputStream inputStream = null; - String requestId = UUID.randomUUID().toString(); - - try { - String resourceVersion = null; - AAIDatum instance = request.getRequestObject(); - - Method getResourceVersionMethod = instance.getClass().getMethod("getResourceVersion"); - if(getResourceVersionMethod != null){ - try { - getResourceVersionMethod.setAccessible(true); - Object object = getResourceVersionMethod.invoke(instance); - if(object != null) - resourceVersion = object.toString(); - } catch (InvocationTargetException x) { - Throwable cause = x.getCause(); - } - } - - URL requestUrl = null; - HttpURLConnection con = getConfiguredConnection(requestUrl = request.getRequestUrl(HttpMethod.PUT, resourceVersion), HttpMethod.PUT); - ObjectMapper mapper = getObjectMapper(); - String json_text = request.toJSONString(); - - LOGwriteDateTrace("data", json_text); - logMetricRequest(requestId, "PUT "+requestUrl.getPath(), json_text, requestUrl.getPath()); - - OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); - osw.write(json_text); - osw.flush(); - - // Check for errors - String responseMessage = con.getResponseMessage(); - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - LOG.debug("HttpURLConnection result:" + responseCode + " : " + responseMessage); - logMetricResponse(requestId,responseCode, responseMessage); - - // Process the response - BufferedReader reader; - String line = null; - reader = new BufferedReader( new InputStreamReader( inputStream ) ); - mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); - - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - StringBuilder stringBuilder = new StringBuilder(); - - while( ( line = reader.readLine() ) != null ) { - stringBuilder.append( line ); - } - LOGwriteEndingTrace(responseCode, responseMessage, (stringBuilder != null) ? stringBuilder.toString() : "{no-data}"); - return stringBuilder.toString(); - } else { - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, responseMessage, mapper.writeValueAsString(errorresponse)); - - throw new AAIServiceException(responseCode, errorresponse); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("AAIRequestExecutor.post", exc); - throw new AAIServiceException(exc); - } finally { - try { - if(inputStream != null) - inputStream.close(); - } catch (Exception exc) { - - } - } - } - - @Override - public Boolean delete(AAIRequest request, String resourceVersion) throws AAIServiceException { - Boolean response = null; - InputStream inputStream = null; - String requestId = UUID.randomUUID().toString(); - - if(resourceVersion == null) { - throw new AAIServiceException("resource-version is required for DELETE request"); - } - - try { - URL requestUrl = null; - HttpURLConnection conn = getConfiguredConnection(requestUrl = request.getRequestUrl(HttpMethod.DELETE, resourceVersion), HttpMethod.DELETE); - logMetricRequest(requestId, "DELETE "+requestUrl.getPath(), "", requestUrl.getPath()); - conn.setDoOutput(true); -// if(request.isDeleteDataRequired()) { -// String json_text = request.toJSONString(); -// -// LOGwriteDateTrace("data", json_text); -// OutputStream os = con.getOutputStream(); -// OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); -// osw.write(json_text); -// osw.flush(); -// } - - // Check for errors - String responseMessage = conn.getResponseMessage(); - int responseCode = conn.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - inputStream = conn.getInputStream(); - } else { - inputStream = conn.getErrorStream(); - } - - // Process the response - LOG.debug("HttpURLConnection result:" + responseCode + " : " + responseMessage); - logMetricResponse(requestId,responseCode, responseMessage); - - if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); - BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); - String line = null; - - ObjectMapper mapper = getObjectMapper(); - - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - StringBuilder stringBuilder = new StringBuilder(); - - while( ( line = reader.readLine() ) != null ) { - stringBuilder.append( line ); - } - LOGwriteEndingTrace(responseCode, responseMessage, stringBuilder.toString()); - response = true; - } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) { - LOGwriteEndingTrace(responseCode, responseMessage, "Entry does not exist."); - response = false; - } else { - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, responseMessage, mapper.writeValueAsString(errorresponse)); - throw new AAIServiceException(responseCode, errorresponse); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("delete", exc); - throw new AAIServiceException(exc); - } finally { - if(inputStream != null){ - try { - inputStream.close(); - } catch(Exception exc) { - - } - } - } - return response; - } - - @Override - public Object query(AAIRequest request, Class clas) throws AAIServiceException { - Object response = null; - InputStream inputStream = null; - HttpURLConnection con = null; - URL requestUrl = null; - String requestId = UUID.randomUUID().toString(); - - try { - con = getConfiguredConnection(requestUrl = request.getRequestQueryUrl(HttpMethod.GET), HttpMethod.GET); - logMetricRequest(requestId, "GET "+requestUrl.getPath(), "", requestUrl.getPath()); - - // Check for errors - String responseMessage = con.getResponseMessage(); - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - logMetricResponse(requestId,responseCode, responseMessage); - ObjectMapper mapper = getObjectMapper(); - - if (responseCode == HttpURLConnection.HTTP_OK) { - // Process the response - BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); - response = mapper.readValue(reader, clas); - LOGwriteEndingTrace(HttpURLConnection.HTTP_OK, "SUCCESS", mapper.writeValueAsString(response)); - } else if (responseCode == HttpURLConnection.HTTP_NOT_FOUND) { - LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); - return response; - } else { - BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); - throw new AAIServiceException(responseCode, errorresponse); - } - - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("GET", exc); - throw new AAIServiceException(exc); - } finally { - if(inputStream != null){ - try { - inputStream.close(); - } catch(Exception exc) { - - } - } - con = null; - } - return response; - } - - @Override - public Boolean patch(AAIRequest request, String resourceVersion) throws AAIServiceException { - InputStream inputStream = null; - String requestId = UUID.randomUUID().toString(); - - try { - AAIDatum instance = request.getRequestObject(); - if(instance instanceof ResourceVersion) { - resourceVersion = ((ResourceVersion)instance).getResourceVersion(); - } - - URL requestUrl = null; - HttpURLConnection con = getConfiguredConnection(requestUrl = request.getRequestUrl("PATCH", resourceVersion), "PATCH"); - ObjectMapper mapper = getObjectMapper(); - String json_text = request.toJSONString(); - - LOGwriteDateTrace("data", json_text); - logMetricRequest(requestId, "PATCH "+requestUrl.getPath(), json_text, requestUrl.getPath()); - - OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); - osw.write(json_text); - osw.flush(); - - // Check for errors - String responseMessage = con.getResponseMessage(); - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - LOG.info("HttpURLConnection result: " + responseCode + " : " + responseMessage); - logMetricResponse(requestId,responseCode, responseMessage); - - // Process the response - BufferedReader reader; - String line = null; - reader = new BufferedReader( new InputStreamReader( inputStream ) ); - mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); - - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == HttpURLConnection.HTTP_ACCEPTED || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - StringBuilder stringBuilder = new StringBuilder(); - - while( ( line = reader.readLine() ) != null ) { - stringBuilder.append( line ); - } - LOGwriteEndingTrace(responseCode, responseMessage, (stringBuilder != null) ? stringBuilder.toString() : "{no-data}"); - return true; - } else { - StringBuilder stringBuilder = new StringBuilder(); - - while( ( line = reader.readLine() ) != null ) { - stringBuilder.append("\n").append( line ); - } - LOG.info(stringBuilder.toString()); - - - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, responseMessage, mapper.writeValueAsString(errorresponse)); - - throw new AAIServiceException(responseCode, errorresponse); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("AAIRequestExecutor.patch", exc); - throw new AAIServiceException(exc); - } finally { - try { - if(inputStream != null) - inputStream.close(); - } catch (Exception exc) { - - } - } - } - } - - @Override - public Tenant requestTenantData(String tenant_id, String cloudOwner, String cloudRegionId) throws AAIServiceException { - Tenant response = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("tenant"); - request.addRequestProperty("tenant.tenant-id", tenant_id); - request.addRequestProperty("cloud-region.cloud-owner", cloudOwner); - request.addRequestProperty("cloud-region.cloud-region-id", cloudRegionId); - - String rv = executor.get(request); - if(rv != null) { - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(rv, Tenant.class); - } - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestTenantData", exc); - throw new AAIServiceException(exc); - } - - return response; - } - - @Override - public Tenant requestTenantDataByName(String tenant_name, String cloudOwner, String cloudRegionId) throws AAIServiceException { - Tenant response = null; - - try { - AAIRequest request = AAIRequest.getRequestFromResource("tenant"); - request.addRequestProperty("tenant.tenant-name", tenant_name); - request.addRequestProperty("cloud-region.cloud-owner", cloudOwner); - request.addRequestProperty("cloud-region.cloud-region-id", cloudRegionId); - Object rv = executor.query(request, Tenant.class); - if(rv == null) - return (Tenant)null; - else - response = (Tenant)rv; - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("requestTenantDataByName", exc); - throw new AAIServiceException(exc); - } - - return response; - } - - - @Override - public boolean postTenantData(String tenant_id, String cloudOwner, String cloudRegionId, Tenant tenannt) throws AAIServiceException { - try { - AAIRequest request = AAIRequest.getRequestFromResource("tenant"); - request.addRequestProperty("tenant.tenant-id", tenant_id); - request.addRequestProperty("cloud-region.cloud-owner", cloudOwner); - request.addRequestProperty("cloud-region.cloud-region-id", cloudRegionId); - request.setRequestObject(tenannt); - Object response = executor.post(request); - return true; - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("postTenantData", exc); - throw new AAIServiceException(exc); - } - } - - - @Override - public String getTenantIdFromVserverUrl(URL url) { - - String path = url.getPath(); - - String[] split = path.split("/tenants/tenant/"); - if(split.length > 1) { - split = split[1].split("/"); - return split[0]; - } else { - return null; - } - } - - @Override - public String getCloudOwnerFromVserverUrl(URL url) { - - String path = url.getPath(); - - String[] split = path.split("/cloud-regions/cloud-region/"); - if(split.length > 1) { - split = split[1].split("/"); - return split[0]; - } else { - return null; - } - } - - @Override - public String getCloudRegionFromVserverUrl(URL url) { - - String path = url.getPath(); - - String[] split = path.split("/cloud-regions/cloud-region/"); - if(split.length > 1) { - split = split[1].split("/"); - return split[1]; - } else { - return null; - } - } - - @Override - public String getVServerIdFromVserverUrl(URL url, String tenantId) { - String pattern = network_vserver_path; - pattern = pattern.replace("{tenant-id}", tenantId); - - int end = pattern.indexOf("{vserver-id}"); - String prefix = pattern.substring(0, end); - - String path = url.getPath(); - - if(path.startsWith(prefix)) { - path = path.substring(prefix.length()); - } - - return path; - } - - protected Logger getLogger(){ - return LOG; - } - - - @Override - public AAIRequestExecutor getExecutor() { - return executor; - } - - /** - * Creates a current time stamp in UTC i.e. 2016-03-08T22:15:13.343Z. - * If there are any parameters the values are appended to the time stamp. - * - * @param parameters - * values to be appended to current time stamp - * @param ctx - * used to set an attribute for a DG - * @throws SvcLogicException - */ - public void setStatusMethod(Map parameters, SvcLogicContext ctx) throws SvcLogicException { - if (ctx == null) { - throw new SvcLogicException("SvcLogicContext is null."); - } - - StringBuilder sb = new StringBuilder(); - sb.append(String.format("%tFT% entry : parameters.entrySet()) { - sb.append(entry.getValue()).append(" "); - } - - if (sb.length() > 0) { - sb.setLength(sb.length() - 2); - } - - ctx.setAttribute("aai-summary-status-message", sb.toString()); - LOG.info("aai-summary-status-message: " + sb.toString()); - } - - /** - * Generic method to GET json data from an A&AI using key structure. - * Then convert that json to an Object. - * If successful the Object is attempted to be cast to the type parameter. - * - * @param key - * key identifying the resource to be retrieved from AAI - * @param type - * the class of object that A&AI will return - * @return the object created from json or null if the response code is not 200 - * - * @throws AAIServiceException - * if empty or null key and or type or there's an error with processing - */ - - public T getResource(String key, Class type) throws AAIServiceException { - if (StringUtils.isEmpty(key) || type == null) { - throw new AAIServiceException("Key is empty or null and or type is null"); - } - - T response = null; - - SvcLogicContext ctx = new SvcLogicContext(); - if(!key.contains(" = ")) { - if(isValidURL(key)) { - key = String.format("selflink = '%s'", key); - } else { - return response; - } - } - - HashMap nameValues = keyToHashMap(key, ctx); - - AAIRequest request = new SelfLinkRequest(type); - if(nameValues.containsKey(PathRequest.RESOURCE_PATH.replaceAll("-", "_"))) { - request = new PathRequest(type); - } - - request.processRequestPathValues(nameValues); - Object obj = this.getExecutor().query(request, type); - response = type.cast(obj); - - return response != null ? type.cast(response) : response; - } - - public boolean isValidURL(String url) { - - URL u = null; - - try { - u = new URL(url); - } catch (MalformedURLException e) { - return false; - } - - try { - u.toURI(); - } catch (URISyntaxException e) { - return false; - } - - return true; - } - - @Override - protected boolean deleteRelationshipList(URL httpReqUrl, String json_text) throws AAIServiceException { - if(httpReqUrl == null) { - throw new NullPointerException(); - } - - boolean response = false; - InputStream inputStream = null; - - try { - HttpURLConnection con = getConfiguredConnection(httpReqUrl, HttpMethod.DELETE); - -// SSLSocketFactory sockFact = CTX.getSocketFactory(); -// con.setSSLSocketFactory( sockFact ); - OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream()); - osw.write(json_text); - osw.flush(); - osw.close(); - - - LOGwriteFirstTrace("DELETE", httpReqUrl.toString()); - LOGwriteDateTrace("data", json_text); - - // Check for errors - int responseCode = con.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - inputStream = con.getInputStream(); - } else { - inputStream = con.getErrorStream(); - } - - // Process the response - LOG.debug("HttpURLConnection result:" + responseCode); - if(inputStream == null) inputStream = new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)); - BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream ) ); - String line = null; - - ObjectMapper mapper = getObjectMapper(); - - if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { - StringBuilder stringBuilder = new StringBuilder(); - - while( ( line = reader.readLine() ) != null ) { - stringBuilder.append( line ); - } - LOGwriteEndingTrace(responseCode, "SUCCESS", stringBuilder.toString()); - response = true; - } else if(responseCode == HttpURLConnection.HTTP_NOT_FOUND ) { - LOGwriteEndingTrace(responseCode, "HTTP_NOT_FOUND", "Entry does not exist."); - response = false; - } else { - ErrorResponse errorresponse = mapper.readValue(reader, ErrorResponse.class); - LOGwriteEndingTrace(responseCode, "FAILURE", mapper.writeValueAsString(errorresponse)); - throw new AAIServiceException(responseCode, errorresponse); - } - - } catch(AAIServiceException aaiexc) { - throw aaiexc; - } catch (Exception exc) { - LOG.warn("deleteRelationshipList", exc); - throw new AAIServiceException(exc); - } finally { - if(inputStream != null){ - try { - inputStream.close(); - } catch(Exception exc) { - - } - } - } - return response; - } - - public static ObjectMapper getObjectMapper() { - ObjectMapper mapper = new ObjectMapper(); - AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(TypeFactory.defaultInstance()); - AnnotationIntrospector secondary = new JacksonAnnotationIntrospector(); - mapper.setAnnotationIntrospector(AnnotationIntrospector.pair(introspector, secondary)); - mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); - mapper.setSerializationInclusion(Include.NON_NULL); - return mapper; - } - - public void logMetricRequest(String requestId, String targetServiceName, String msg, String path){ - String svcInstanceId = ""; - String svcName = null; - String partnerName = null; - String targetEntity = "A&AI"; - String targetVirtualEntity = null; - - targetServiceName = ""; - - ml.logRequest(svcInstanceId, svcName, partnerName, targetEntity, targetServiceName, targetVirtualEntity, msg); - } - - public void logMetricResponse(String requestId, int responseCode, String responseDescription){ - ml.logResponse(responseCode < 400 ? "SUCCESS" : "FAILURE", Integer.toString(responseCode), responseDescription); - } - - public void logKeyError(String keys){ - LOG.error("Atleast one of the keys [" + keys + "] should have been populated. This will cause a NPE."); - } - - - /** - * Retrofit code - */ - @Override - public QueryStatus save(String resource, boolean force, boolean localOnly, String key, Map params, String prefix, SvcLogicContext ctx) - throws SvcLogicException { - String normResource = resource.split(":")[0]; - - switch(normResource){ - case "formatted-query": - case "generic-query": - case "named-query": - case "nodes-query": - case "linterface": - case "l2-bridge-sbg": - case "l2-bridge-bgf": - case "echo": - case "test": - break; - - default: - if(!key.contains(String.format("%s.", normResource))) { - key = rewriteKey(resource, key, ctx); - } - } - return super.save(resource, force, localOnly, key, params, prefix, ctx); - } - - @Override - public QueryStatus query(String resource, boolean localOnly, String select, String key, String prefix, String orderBy, SvcLogicContext ctx) - throws SvcLogicException { - String normResource = resource.split(":")[0]; - - switch(normResource){ - case "formatted-query": - case "generic-query": - case "named-query": - case "nodes-query": - case "linterface": - case "l2-bridge-sbg": - case "l2-bridge-bgf": - case "echo": - case "test": - break; - - default: - if(!key.contains(String.format("%s.", normResource))) { - key = rewriteKey(resource, key, ctx); - } - } - - return super.query(resource, localOnly, select, key, prefix, orderBy, ctx); - } - - @Override - public QueryStatus delete(String resource, String key, SvcLogicContext ctx) throws SvcLogicException { - String normResource = resource.split(":")[0]; - - switch(normResource){ - case "formatted-query": - case "generic-query": - case "named-query": - case "nodes-query": - case "linterface": - case "l2-bridge-sbg": - case "l2-bridge-bgf": - case "echo": - case "test": - break; - - default: - if(!key.contains(String.format("%s.", normResource))) { - key = rewriteKey(resource, key, ctx); - } - } - - return super.delete(resource, key, ctx); - } - - @Override - public QueryStatus update(String resource, String key, Map params, String prefix, SvcLogicContext ctx) throws SvcLogicException { - String normResource = resource.split(":")[0]; - - switch(normResource){ - case "formatted-query": - case "generic-query": - case "named-query": - case "nodes-query": - case "linterface": - case "l2-bridge-sbg": - case "l2-bridge-bgf": - case "echo": - case "test": - break; - - default: - if(!key.contains(String.format("%s.", normResource))) { - key = rewriteKey(resource, key, ctx); - } - } - - return super.update(resource, key, params, prefix, ctx); - } - - private String rewriteKey(String resource, String key, SvcLogicContext ctx) { - LOG.info("AAI Deprecation - the format of request key is no longer supported. Please rewrite this key : " + key); - - String normResource = resource.split(":")[0]; - Class clazz = null; - try { - clazz = AAIRequest.getClassFromResource(normResource) ; - } catch (ClassNotFoundException e) { - LOG.warn("AAIRequest does not support class: " + e.getMessage()); - return key; - } - if(clazz == null) - return key; - - List fieldAnnotatedNames = new LinkedList(); - - Field[] fields = clazz.getDeclaredFields(); - for(Field field : fields) { - String fieldName = field.getName(); - XmlElement annotation = field.getAnnotation(XmlElement.class); - if(annotation == null) - continue; - String primaryId = annotation.name(); - if("##default".equals(primaryId)) { - primaryId = fieldName; - } - fieldAnnotatedNames.add(primaryId); - } - - HashMap nameValues = keyToHashMap(key, ctx); - Set keyset = nameValues.keySet(); - for(String keyName : keyset) { - if(keyName.contains(".")) - continue; - else { - String tmpKeyName = keyName.replaceAll("_", "-"); - if(fieldAnnotatedNames.contains(tmpKeyName)) { - key = key.replace(tmpKeyName, String.format("%s.%s", normResource, tmpKeyName)); - } - } - } - - - return key; - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIServiceActivator.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIServiceActivator.java deleted file mode 100644 index 28887738..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIServiceActivator.java +++ /dev/null @@ -1,239 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FilenameFilter; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashSet; -import java.util.Properties; -import java.util.Set; - -import org.onap.ccsdk.sli.core.sli.ConfigurationException; -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceRegistration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class AAIServiceActivator implements BundleActivator { - - private static final String DEFAULT_CONFIG_FILE_NAME = "aaiclient.config"; - private static final String DEFAULT_PROPERTY_FILE_NAME = "aaiclient.properties"; - private static final String DEFAULT_KEYWORD = "default"; - - private static final String SDNC_CONFIG_DIR = "SDNC_CONFIG_DIR"; - - private static final String BVC_PROPERTY_FILE = "/opt/bvc/controller/configuration/aaiclient.properties"; - private static final String DEFAULT_SDNC_PROPERTY_FILE = "/opt/sdnc/data/properties/aaiclient.properties"; - - private Set registrationSet = new HashSet(); - - private static final Logger LOG = LoggerFactory.getLogger(AAIServiceActivator.class); - - @Override - public void start(BundleContext ctx) throws Exception { - - System.setProperty("aaiclient.runtime", "OSGI"); - - String sdnConfigDirectory = System.getenv(SDNC_CONFIG_DIR); - - // check SDNC CONFIG DIR system property - if(sdnConfigDirectory == null ) { - LOG.error("System property SDNC_CONFIG_DIR is not defined."); - LOG.info("Defaulting SDNC_CONFIG_DIR to '/opt/sdnc/data/properties/'"); - sdnConfigDirectory = "/opt/sdnc/data/properties/"; - } - - LOG.debug("Configuration directory used : " + sdnConfigDirectory); - - // check existance of properties directory - File configDirectory = new File(sdnConfigDirectory); - if(!configDirectory.exists() || !configDirectory.isDirectory()){ - LOG.error("System property SDNC_CONFIG_DIR = '" + sdnConfigDirectory + "' does not point to a valid directory. AAIService will not be initialized."); - return; - } - - Properties properties = new Properties(); - InputStream input = null; - - // find aaiclient config file - File[] files = findFiles(configDirectory, DEFAULT_CONFIG_FILE_NAME); - - // read the aai config data - if(files != null && files.length > 0) { - LOG.debug("AAIService config file exists and it is named :" + files[0].getAbsolutePath() ); - try { - input = new FileInputStream(files[0]); - properties.load(input); - LOG.debug("Loaded AAI Client properties from " + files[0].getAbsolutePath()); - } catch (IOException exc) { - LOG.warn("Problem loading AAI Client properties from " + files[0].getAbsolutePath(), exc); - } finally { - if(input != null ) { - try { - input.close(); - } catch(Exception exc) { - // ignore - } - } - int size = properties.keySet().size() ; - if(size == 0) { - LOG.debug(files[0].getAbsolutePath() + " contained no entries. Adding the default entry"); - properties.put(DEFAULT_KEYWORD, DEFAULT_PROPERTY_FILE_NAME); - } - } - } else { - LOG.debug("No configuration entries were found. Adding the default entry"); - properties.put(DEFAULT_KEYWORD, DEFAULT_PROPERTY_FILE_NAME); - } - - Set entrySet = properties. stringPropertyNames(); - String value = null; - - // initialize AAI Service for each aai client property files - for(String entry : entrySet) { - value = properties.getProperty(entry); - if(value != null && !value.isEmpty()) { - - final String fileName = value; - - File[] propertyFileList = findFiles(configDirectory, fileName); - - for(File propertiesFile : propertyFileList) { - LOG.info(propertiesFile.getName()); - // Advertise AAI resource adaptor - AAIClient impl = null; - switch(entry) { - case DEFAULT_KEYWORD: - impl = new AAIService(propertiesFile.toURI().toURL()); - break; - case "trinity": - impl = new AAITrinityService(propertiesFile.toURI().toURL()); - break; - default: - LOG.error("Invalid configuration keyword '"+entry+"' detected in aaiclient.config. Aborting initialization"); - continue; - } - String regName = impl.getClass().getName(); - - LOG.debug("Registering AAIService service "+regName); - ServiceRegistration registration = ctx.registerService(regName, impl, null); - registrationSet.add(registration); - - } - } - } - } - -// @Override - @Deprecated - public void start1(BundleContext ctx) throws Exception { - - String sdnConfigDirectory = System.getenv(SDNC_CONFIG_DIR); - String propertiesPath = null; - - if (sdnConfigDirectory == null || sdnConfigDirectory.isEmpty()) { - String filename = DEFAULT_SDNC_PROPERTY_FILE; - File file = new File(filename); - if(file != null && file.exists()) { - propertiesPath = filename; - LOG.info("Using property file (1): " + propertiesPath); - } else { - filename = BVC_PROPERTY_FILE; - file = new File(filename); - if(file != null && file.exists()) { - propertiesPath = filename; - LOG.info("Using property file (1): " + propertiesPath); - } else { - throw new ConfigurationException("Cannot find config file - "+filename+" and "+SDNC_CONFIG_DIR+" is unset"); - } - } - } else { - propertiesPath = sdnConfigDirectory + "/aaiclient.properties"; - LOG.info("Environment variable " + SDNC_CONFIG_DIR + " set, - calculated path " + propertiesPath); - } - - File propFile = new File(propertiesPath); - if(!propFile.exists()) { - String filename = DEFAULT_SDNC_PROPERTY_FILE; - File file = new File(filename); - if(file != null && file.exists()) { - propertiesPath = filename; - LOG.info("Using property file (1): " + propertiesPath); - } else { - filename = BVC_PROPERTY_FILE; - file = new File(filename); - if(file != null && file.exists()) { - propertiesPath = filename; - LOG.info("Using property file (1): " + propertiesPath); - } else { - LOG.error("AnAI Service Property file " + propertiesPath + "does not exist."); - throw new ConfigurationException("Cannot find config file - "+propertiesPath+" and " + SDNC_CONFIG_DIR + " is unset."); - } - } - } - - // Advertise AAI resource adaptor - AAIClient impl = new AAIService(propFile.toURI().toURL()); - String regName = impl.getClass().getName(); - - LOG.debug("Registering AAIService service "+regName); - ServiceRegistration registration = ctx.registerService(regName, impl, null); - registrationSet.add(registration); - } - - @Override - public void stop(BundleContext ctx) throws Exception { - - Set localRegistrationSet = new HashSet(); - localRegistrationSet.addAll(registrationSet); - - for(ServiceRegistration registration : localRegistrationSet) { - if (registration != null) { - try { - AAIService aaiService = (AAIService)ctx.getService(registration.getReference()); - registration.unregister(); - registrationSet.remove(registration); - if(aaiService != null) { - aaiService.cleanUp(); - } - } catch(Exception exc) { - if(LOG.isDebugEnabled()) - LOG.debug(exc.getMessage()); - } - } - } - } - - private File[] findFiles(File configDirectory, final String filter) { - File[] files = configDirectory.listFiles(new FilenameFilter() { - public boolean accept(File dir, String name) { - return name.equalsIgnoreCase(filter); - } - }); - - return files; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIServiceException.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIServiceException.java deleted file mode 100644 index cda60a8c..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAIServiceException.java +++ /dev/null @@ -1,77 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import org.openecomp.sdnc.sli.aai.data.ErrorResponse; - -public class AAIServiceException extends Exception { - - /** - * - */ - private static final long serialVersionUID = -9039257722542999522L; - - protected ErrorResponse errorResponse = null; - protected int returnCode = -1; - - public AAIServiceException() { - - } - - public AAIServiceException(String message) { - super(message); - } - - public AAIServiceException(Throwable cause) { - super(cause); - } - - public AAIServiceException(String message, Throwable cause) { - super(message, cause); - } - - public AAIServiceException(String message, Throwable cause, - boolean enableSuppression, boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); - } - - public AAIServiceException(int returnCode, ErrorResponse errorresponse) { - this.errorResponse = errorresponse; - this.returnCode = returnCode; - } - - public ErrorResponse getErrorResponse() { - return errorResponse; - } - - public int getReturnCode() { - return returnCode; - } - - public String getMessage() { - if(errorResponse != null) { - return errorResponse.getRequestError().getServiceException().getText(); - } else { - return super.getMessage(); - } - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAITrinityService.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAITrinityService.java deleted file mode 100644 index ed5295cf..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/AAITrinityService.java +++ /dev/null @@ -1,38 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.net.URL; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class AAITrinityService extends AAIService { - - private static final Logger LOG = LoggerFactory.getLogger(AAITrinityService.class); - - public AAITrinityService(URL propURL) { - super(propURL); - LOG.info("Entered AAITrinityService.ctor"); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/CloudRegionRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/CloudRegionRequest.java deleted file mode 100644 index 08c86a27..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/CloudRegionRequest.java +++ /dev/null @@ -1,135 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; - -import org.openecomp.aai.inventory.v10.CloudRegion; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Joiner; - -public class CloudRegionRequest extends AAIRequest { - - public static final String CLOUD_REGION_PATH = "org.openecomp.sdnc.sli.aai.path.cloud.region"; - - private final String cloud_region_path; - - public static final String CLOUD_REGION_CLOUD_OWNER = "cloud-region.cloud-owner"; - public static final String CLOUD_REGION_CLOUD_REGION_ID = "cloud-region.cloud-region-id"; - - - public CloudRegionRequest() { - cloud_region_path = configProperties.getProperty(CLOUD_REGION_PATH); - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return this.getRequestUrl(method, null); - } - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri+cloud_region_path; - - request_url = processPathData(request_url, requestProperties); - - Map query = new HashMap(); - if(requestProperties.containsKey(DEPTH)) { - query.put(DEPTH, requestProperties.getProperty(DEPTH)); - } - - if(resourceVersion != null) { -// request_url = request_url +"?resource-version="+resourceVersion; - query.put(RESOURCE_VERSION, resourceVersion); - } - - if(!query.isEmpty()) { - Joiner.MapJoiner mapJoiner = Joiner.on("&").withKeyValueSeparator("="); - String queryString = mapJoiner.join(query); - request_url = String.format("%s?%s", request_url, queryString); - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - - return http_req_url; - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - CloudRegion vnfc = (CloudRegion)requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(vnfc); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - @Override - public String[] getArgsList() { - String[] args = - { - CLOUD_REGION_CLOUD_OWNER, - CLOUD_REGION_CLOUD_REGION_ID, - DEPTH - }; - - return args; - } - - @Override - public Class getModelClass() { - return CloudRegion.class; - } - - public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - - if(!requestProperties.containsKey(CLOUD_REGION_CLOUD_OWNER) || !requestProperties.containsKey(CLOUD_REGION_CLOUD_REGION_ID)) { - aaiService.logKeyError(String.format("%s,%s", CLOUD_REGION_CLOUD_OWNER, CLOUD_REGION_CLOUD_REGION_ID)); - } - - String encoded_vnf = encodeQuery(requestProperties.getProperty(CLOUD_REGION_CLOUD_OWNER)); - request_url = request_url.replace("{cloud-owner}", encoded_vnf) ; - - encoded_vnf = encodeQuery(requestProperties.getProperty(CLOUD_REGION_CLOUD_REGION_ID)); - request_url = request_url.replace("{cloud-region-id}", encoded_vnf) ; - - aaiService.LOGwriteDateTrace("cloud-owner", requestProperties.getProperty(CLOUD_REGION_CLOUD_OWNER)); - aaiService.LOGwriteDateTrace("cloud-region-id", requestProperties.getProperty(CLOUD_REGION_CLOUD_REGION_ID)); - - return request_url; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/CustomQueryRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/CustomQueryRequest.java deleted file mode 100644 index d61a4ea8..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/CustomQueryRequest.java +++ /dev/null @@ -1,134 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Properties; - -import org.openecomp.sdnc.sli.aai.data.AAIDatum; -import org.openecomp.sdnc.sli.aai.query.FormattedQueryRequestData; -import org.openecomp.sdnc.sli.aai.query.FormattedQueryResultList; - -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; - - -public class CustomQueryRequest extends AAIRequest { - - public static final String GENERIC_SEARCH_PATH = "org.openecomp.sdnc.sli.aai.query.generic"; - - private final String generic_search_path; - - public static final String FORMAT = "format"; - - - public CustomQueryRequest() { - String tmp_generic_search_path = configProperties.getProperty(GENERIC_SEARCH_PATH); - tmp_generic_search_path = tmp_generic_search_path.split("search")[0]; - generic_search_path = tmp_generic_search_path +"query"; - } - - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri+generic_search_path; - - request_url = processPathData(request_url, requestProperties); - - String formatQuery = requestProperties.getProperty(FORMAT); - - if(formatQuery != null) { - request_url = request_url +"?format="+formatQuery; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - - return http_req_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return getRequestUrl(method, null); - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - FormattedQueryRequestData tenant = (FormattedQueryRequestData)requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(tenant); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - - @Override - public String[] getArgsList() { - String[] args = {FORMAT}; - return args; - } - - - @Override - public Class getModelClass() { - return FormattedQueryRequestData.class; - } - - - public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - - String key = FORMAT; - - String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - request_url = request_url.replace("{identifier}", encoded_vnf) ; - aaiService.LOGwriteDateTrace("identifier", requestProperties.getProperty(key)); - - return request_url; - } - - public AAIDatum jsonStringToObject(String jsonData) throws JsonParseException, JsonMappingException, IOException { - if(jsonData == null) { - return null; - } - - AAIDatum response = null; - ObjectMapper mapper = getObjectMapper(); - response = mapper.readValue(jsonData, FormattedQueryResultList.class); - return response; - } - - protected boolean expectsDataFromPUTRequest() { - return true; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/EchoRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/EchoRequest.java deleted file mode 100644 index 7352c402..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/EchoRequest.java +++ /dev/null @@ -1,93 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; - -import org.openecomp.sdnc.sli.aai.data.AAIDatum; -import org.openecomp.sdnc.sli.aai.data.EchoResponse; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class EchoRequest extends AAIRequest { - - - - private final String echo_path; - - public EchoRequest() { - echo_path = "/aai/util/echo"; - } - - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri+echo_path; - - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - - return http_req_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return getRequestUrl(method, null); - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - EchoResponse tenant = (EchoResponse)requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(tenant); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - - @Override - public String[] getArgsList() { - String[] args = {}; - return args; - } - - - @Override - public Class getModelClass() { - return EchoResponse.class; - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/GenericQueryRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/GenericQueryRequest.java deleted file mode 100644 index 0f1dda0e..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/GenericQueryRequest.java +++ /dev/null @@ -1,144 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Properties; - -import org.openecomp.aai.inventory.v10.ResultData; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class GenericQueryRequest extends AAIRequest { - - public static final String GENERIC_SEARCH_PATH = "org.openecomp.sdnc.sli.aai.query.generic"; - - private final String generic_search_path; - - public static final String START_NODE_TYPE = "start-node-type"; - public static final String IDENTIFIER = "identifier"; - public static final String VALUE = "value"; - - - public GenericQueryRequest() { - generic_search_path = configProperties.getProperty(GENERIC_SEARCH_PATH); - } - - -// @Override -// public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { -// -// String request_url = target_uri+generic_search_path; -// String key = START_NODE_TYPE; -// -// String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); -// request_url = request_url.replace("{vnf-id}", encoded_vnf) ; -// -// if(resourceVersion != null) { -// request_url = request_url +"?resource-version="+resourceVersion; -// } -// URL http_req_url = new URL(request_url); -// -// aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); -// -// -// return http_req_url; -// } - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri+generic_search_path; - - request_url = processPathData(request_url, requestProperties); - - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - - return http_req_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return getRequestUrl(method, null); - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - ResultData tenant = (ResultData)requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(tenant); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - - @Override - public String[] getArgsList() { - String[] args = {START_NODE_TYPE, IDENTIFIER, VALUE}; - return args; - } - - - @Override - public Class getModelClass() { - return ResultData.class; - } - - - public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - - String key = IDENTIFIER; - - String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - request_url = request_url.replace("{identifier}", encoded_vnf) ; - aaiService.LOGwriteDateTrace("identifier", requestProperties.getProperty(key)); - - key = VALUE; - - encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - request_url = request_url.replace("{value}", encoded_vnf) ; - aaiService.LOGwriteDateTrace("value", requestProperties.getProperty(key)); - - key = START_NODE_TYPE; - - encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - request_url = request_url.replace("{start-node-type}", encoded_vnf) ; - aaiService.LOGwriteDateTrace("start-node-type", requestProperties.getProperty(key)); - - return request_url; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/GenericRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/GenericRequest.java deleted file mode 100644 index 0da40abe..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/GenericRequest.java +++ /dev/null @@ -1,319 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.lang.reflect.Field; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import javax.xml.bind.annotation.XmlElement; - -import org.openecomp.aai.inventory.v10.L3Network; -import org.openecomp.aai.inventory.v10.L3Networks; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Joiner; - -public class GenericRequest extends AAIRequest { - - - protected Class model; - - public GenericRequest(Class clazz) { - model = clazz; - } - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = null; - String originalPath = null; - String pathSubstitute = null; - - request_url = target_uri + getRequestPath(); - - Map queryParams = new HashMap (); - if(resourceVersion != null) { - queryParams.put("resource-version",resourceVersion); - } - - Set uniqueResources = extractUniqueResourceSetFromKeys(requestProperties.stringPropertyNames()); - - String[] keys = requestProperties.keySet().toArray(new String[0]); - for(String key : keys) { - if("cloud-region.cloud-region-id".equals(key)) - continue; - if("entitlement.resource-uuid".equals(key)) - continue; - if("license.resource-uuid".equals(key)) - continue; - - - String value = requestProperties.getProperty(key); - if(key.contains(".")) { - String[] splitKey = key.split("\\."); - if("cloud-region".equals(splitKey[0])){ - String cloudRegionId = requestProperties.getProperty("cloud-region.cloud-region-id"); - aaiService.LOGwriteDateTrace("cloud-region-id", cloudRegionId); - String token = String.format("%s/{%s}/{cloud-region-id}", splitKey[0], splitKey[1] ); - String encoded_owner = encodeQuery(value); - String encoded_region = encodeQuery(cloudRegionId); - request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region)); - } else if("entitlement".equals(splitKey[0])){ - String cloudRegionId = requestProperties.getProperty("entitlement.resource-uuid"); - aaiService.LOGwriteDateTrace("resource-uuid", cloudRegionId); - String token = String.format("%s/{%s}/{resource-uuid}", splitKey[0], splitKey[1] ); - String encoded_owner = encodeQuery(value); - String encoded_region = encodeQuery(cloudRegionId); - request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region)); - } else if("license".equals(splitKey[0])){ - String cloudRegionId = requestProperties.getProperty("license.resource-uuid"); - aaiService.LOGwriteDateTrace("resource-uuid", cloudRegionId); - String token = String.format("%s/{%s}/{resource-uuid}", splitKey[0], splitKey[1] ); - String encoded_owner = encodeQuery(value); - String encoded_region = encodeQuery(cloudRegionId); - request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region)); - } else { - Class clazz = null; - try { - clazz = getClassFromResource(splitKey[0]); - } catch (ClassNotFoundException exc) { - LOG.warn("AAIRequest does not support class: " + exc.getMessage()); - return null; - } - - if(clazz != null) { - if(clazz == this.model) { - Field[] fields = this.model.getDeclaredFields(); - Field field = fields[0]; - String fieldName = field.getName(); - XmlElement annotation = field.getAnnotation(XmlElement.class); - String primaryId = annotation.name(); - if("##default".equals(primaryId)) { - primaryId = fieldName; - } - - String token = String.format("%s/{%s}", splitKey[0], primaryId); - - if(splitKey[1].equals(primaryId)) { - String encoded_vnf = encodeQuery(value); - request_url = request_url.replace(token, String.format("%s/%s", splitKey[0], encoded_vnf)); - } else { - queryParams.put(splitKey[1], encodeQuery(value)); - originalPath = token; - pathSubstitute = String.format("%s", splitKey[0]); - } - } else if(L3Networks.class == this.model) { - Field[] fields = L3Network.class.getDeclaredFields(); - Field field = fields[0]; - String fieldName = field.getName(); - XmlElement annotation = field.getAnnotation(XmlElement.class); - String primaryId = annotation.name(); - if("##default".equals(primaryId)) { - primaryId = fieldName; - } - - String token = String.format("%s/{%s}", splitKey[0], primaryId); - originalPath = token; - pathSubstitute = String.format(""); - - queryParams.put(splitKey[1], encodeQuery(value)); - } else { - String token = String.format("%s/{%s}", splitKey[0], splitKey[1]); - String encoded_vnf = encodeQuery(value); - request_url = request_url.replace(token, String.format("%s/%s", splitKey[0], encoded_vnf)); - } - } - - } - aaiService.LOGwriteDateTrace(splitKey[1], value); - } - } - - if(originalPath != null && pathSubstitute != null) - request_url = request_url.replace(originalPath, pathSubstitute); - - if(!queryParams.isEmpty()) { - Joiner.MapJoiner mapJoiner = Joiner.on("&").withKeyValueSeparator("="); - String queryString = mapJoiner.join(queryParams); - request_url = String.format("%s?%s", request_url, queryString); - } - - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - - - return http_req_url; - } - - - public URL OriginalgetRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = null; - - request_url = target_uri + getRequestPath(); - - Map keyValuepairs = new HashMap (); - Set uniqueResources = extractUniqueResourceSetFromKeys(requestProperties.stringPropertyNames()); - - String[] keys = requestProperties.keySet().toArray(new String[0]); - for(String key : keys) { - if("cloud-region.cloud-region-id".equals(key)) - continue; - if("entitlement.resource-uuid".equals(key)) - continue; - if("license.resource-uuid".equals(key)) - continue; - - - String value = requestProperties.getProperty(key); - if(key.contains(".")) { - String[] splitKey = key.split("\\."); - if("cloud-region".equals(splitKey[0])){ - String cloudRegionId = requestProperties.getProperty("cloud-region.cloud-region-id"); - aaiService.LOGwriteDateTrace("cloud-region-id", cloudRegionId); - String token = String.format("%s/{%s}/{cloud-region-id}", splitKey[0], splitKey[1] ); - String encoded_owner = encodeQuery(value); - String encoded_region = encodeQuery(cloudRegionId); - request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region)); - } else if("entitlement".equals(splitKey[0])){ - String cloudRegionId = requestProperties.getProperty("entitlement.resource-uuid"); - aaiService.LOGwriteDateTrace("resource-uuid", cloudRegionId); - String token = String.format("%s/{%s}/{resource-uuid}", splitKey[0], splitKey[1] ); - String encoded_owner = encodeQuery(value); - String encoded_region = encodeQuery(cloudRegionId); - request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region)); - } else if("license".equals(splitKey[0])){ - String cloudRegionId = requestProperties.getProperty("license.resource-uuid"); - aaiService.LOGwriteDateTrace("resource-uuid", cloudRegionId); - String token = String.format("%s/{%s}/{resource-uuid}", splitKey[0], splitKey[1] ); - String encoded_owner = encodeQuery(value); - String encoded_region = encodeQuery(cloudRegionId); - request_url = request_url.replace(token, String.format("%s/%s/%s", splitKey[0], encoded_owner, encoded_region)); - } else { - Class clazz = null; - try { - clazz = getClassFromResource(splitKey[0]); - } catch (ClassNotFoundException exc) { - LOG.warn("AAIRequest does not support class: " + exc.getMessage()); - return null; - } - - if(clazz != null) { - if(clazz == this.model) { - Field[] fields = this.model.getDeclaredFields(); - Field field = fields[0]; - String fieldName = field.getName(); - XmlElement annotation = field.getAnnotation(XmlElement.class); - String primaryId = annotation.name(); - if("##default".equals(primaryId)) { - primaryId = fieldName; - } - - String token = String.format("%s/{%s}", splitKey[0], primaryId); - - if(splitKey[1].equals(primaryId)) { - String encoded_vnf = encodeQuery(value); - request_url = request_url.replace(token, String.format("%s/%s", splitKey[0], encoded_vnf)); - } else { - String replacement = String.format("%s?%s=%s", splitKey[0], splitKey[1], encodeQuery(value)); - if(request_url.contains(token)) - request_url = request_url.replace(token, replacement); - } - } else { - String token = String.format("%s/{%s}", splitKey[0], splitKey[1]); - String encoded_vnf = encodeQuery(value); - request_url = request_url.replace(token, String.format("%s/%s", splitKey[0], encoded_vnf)); - } - } - - } - aaiService.LOGwriteDateTrace(splitKey[1], value); - } - } - - - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - - - return http_req_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return this.getRequestUrl(method, null); - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - - String json_text = null; - try { - json_text = mapper.writeValueAsString(requestDatum); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - @Override - public String[] getArgsList() { - String[] args = {}; - return args; - } - - @Override - public Class getModelClass() { - return model; - } - - public void processRequestPathValues(Map nameValues) { - // identify unique resources - Set uniqueResources = AAIRequest.extractUniqueResourceSetFromKeys(nameValues.keySet()); - - String[] arguments = nameValues.keySet().toArray(new String[0]); - for(String name : arguments) { - String tmpName = name.replaceAll("-", "_"); - String value = nameValues.get(tmpName); - if(value != null && !value.isEmpty()) { - value = value.trim().replace("'", "").replace("$", "").replace("'", ""); - tmpName = name.replaceAll("_", "-"); - this.addRequestProperty(tmpName, value); - } - } - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/GenericVnfRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/GenericVnfRequest.java deleted file mode 100644 index f8c9a18b..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/GenericVnfRequest.java +++ /dev/null @@ -1,144 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Properties; - -import org.openecomp.aai.inventory.v10.GenericVnf; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class GenericVnfRequest extends AAIRequest { - - // tenant (1602) - public static final String GENERIC_VNF_PATH = "org.openecomp.sdnc.sli.aai.path.generic.vnf"; - public static final String GENERIC_VNF_QUERY_PATH = "org.openecomp.sdnc.sli.aai.path.generic.vnf.query"; - - private final String generic_vnf_path; - private final String generic_vnf_query_path; - - public static final String GENERIC_VNF_ID = "generic_vnf.vnf_id"; - public static final String VNF_ID = "vnf_id"; - - - public GenericVnfRequest() { - generic_vnf_path = configProperties.getProperty(GENERIC_VNF_PATH); - generic_vnf_query_path = configProperties.getProperty(GENERIC_VNF_QUERY_PATH); - } - - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri+generic_vnf_path; - String key = VNF_ID; - if(requestProperties.containsKey(GENERIC_VNF_ID)) { - key = GENERIC_VNF_ID; - } - - if(!requestProperties.containsKey(key)) { - aaiService.logKeyError(String.format("%s,%s", VNF_ID, GENERIC_VNF_ID)); - } - - String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - request_url = request_url.replace("{vnf-id}", encoded_vnf) ; - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - aaiService.LOGwriteDateTrace("vnf-id", requestProperties.getProperty(key)); - - return http_req_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri+generic_vnf_path; - - String key = VNF_ID; - if(requestProperties.containsKey(GENERIC_VNF_ID)) { - key = GENERIC_VNF_ID; - } - - if(!requestProperties.containsKey(key)) { - aaiService.logKeyError(String.format("%s,%s", VNF_ID, GENERIC_VNF_ID)); - } - - String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - request_url = request_url.replace("{vnf-id}", encoded_vnf) ; - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - aaiService.LOGwriteDateTrace("vnf-id", requestProperties.getProperty(key)); - - return http_req_url; - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - GenericVnf tenant = (GenericVnf)requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(tenant); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - - @Override - public String[] getArgsList() { - String[] args = {VNF_ID, GENERIC_VNF_ID}; - return args; - } - - - @Override - public Class getModelClass() { - return GenericVnf.class; - } - - - public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - - String key = VNF_ID; - if(requestProperties.containsKey(GENERIC_VNF_ID)) { - key = GENERIC_VNF_ID; - } - String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - request_url = request_url.replace("{vnf-id}", encoded_vnf) ; - - return request_url; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/L3InterfaceIpv4AddressListRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/L3InterfaceIpv4AddressListRequest.java deleted file mode 100644 index 762d43bb..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/L3InterfaceIpv4AddressListRequest.java +++ /dev/null @@ -1,212 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Properties; - -import org.openecomp.aai.inventory.v10.L3InterfaceIpv4AddressList; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class L3InterfaceIpv4AddressListRequest extends AAIRequest { - - /* - * Note: there are 3 possible paths: - * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/network/vpes/vpe/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/network/vpes/vpe/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/network/vpes/vpe/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/network/vpes/vpe/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - * aaiv7:inventory/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} - */ - - public static final String L3_INTERFACE_IPV4_ADDRESS_LIST_PATH = "org.openecomp.sdnc.sli.aai.path.l3.interface.ipv4.address.list"; - public static final String VLAN_L3_INTERFACE_IPV4_ADDRESS_LIST_PATH = "org.openecomp.sdnc.sli.aai.path.vlan.l3.interface.ipv4.address.list"; - - private final String l3_interface_ipv4_address_list_path; - private final String vlan_l3_interface_ipv4_address_list_path; - - public static final String L3_INTERFACE_IPV4_ADDRESS = "l3-interface-ipv4-address"; - public static final String LIST_L3_INTERFACE_IPV4_ADDRESS = "l3-interface-ipv4-address-list.l3-interface-ipv4-address"; - public static final String VLAN_INTERFACE = "vlan-interface"; - public static final String VLAN_VLAN_INTERFACE = "vlan.vlan-interface"; - - public L3InterfaceIpv4AddressListRequest() { - l3_interface_ipv4_address_list_path = configProperties.getProperty(L3_INTERFACE_IPV4_ADDRESS_LIST_PATH); - vlan_l3_interface_ipv4_address_list_path = configProperties.getProperty(VLAN_L3_INTERFACE_IPV4_ADDRESS_LIST_PATH); - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return this.getRequestUrl(method, null); - } - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri+l3_interface_ipv4_address_list_path; - - if(requestProperties.containsKey(VLAN_INTERFACE) || requestProperties.containsKey(VLAN_VLAN_INTERFACE)){ - request_url = target_uri+vlan_l3_interface_ipv4_address_list_path; - request_url = processVLanRequestPathData(request_url, requestProperties); - } - - request_url = processPathData(request_url, requestProperties); - request_url = LInterfaceRequest.processPathData(request_url, requestProperties); -// request_url = GenericVnfRequest.processPathData(request_url, requestProperties); - - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - - return http_req_url; - } - - public static String processVLanRequestPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - String key = null; - - if(requestProperties.containsKey(VLAN_VLAN_INTERFACE)) { - key = VLAN_VLAN_INTERFACE; - } else if(requestProperties.containsKey(VLAN_INTERFACE)) { - key = VLAN_INTERFACE; - } else { - aaiService.logKeyError(String.format("%s,%s", VLAN_INTERFACE, VLAN_VLAN_INTERFACE)); - } - - String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - - request_url = request_url.replace("{vlan-interface}", encoded_vnf) ; - aaiService.LOGwriteDateTrace("vlan-interface", requestProperties.getProperty(key)); - return request_url; - } - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - L3InterfaceIpv4AddressList vnfc = (L3InterfaceIpv4AddressList)requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(vnfc); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - @Override - public String[] getArgsList() { - String[] args = - { - L3_INTERFACE_IPV4_ADDRESS, - LIST_L3_INTERFACE_IPV4_ADDRESS, - VLAN_INTERFACE, - VLAN_VLAN_INTERFACE, - LInterfaceRequest.INTERFACE_NAME, - LInterfaceRequest.LINTERFACE_INTERFACE_NAME, - "generic-vnf.vnf-id" - }; - - return args; - } - - @Override - public Class getModelClass() { - return L3InterfaceIpv4AddressList.class; - } - - public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - String key = L3_INTERFACE_IPV4_ADDRESS; - if(requestProperties.containsKey(LIST_L3_INTERFACE_IPV4_ADDRESS)) { - key = LIST_L3_INTERFACE_IPV4_ADDRESS; - } - - if(!requestProperties.containsKey(key)) { - aaiService.logKeyError(String.format("%s,%s", L3_INTERFACE_IPV4_ADDRESS, LIST_L3_INTERFACE_IPV4_ADDRESS)); - } - - String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - - request_url = request_url.replace("{l3-interface-ipv4-address}", encoded_vnf) ; - - aaiService.LOGwriteDateTrace("l3-interface-ipv4-address", requestProperties.getProperty(key)); - return request_url; - } - - /* - * (non-Javadoc) - * @see org.openecomp.sdnc.sli.aai.PathConfigurator#configurePath(java.lang.String) - */ -// @Override -// public void processRequestPathValues(Map nameValues) { -// String[] paths = -// { -// "/aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}", -// "/aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}", -// "/aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}", -// "/aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}" -// }; -// -// Listkeys = new LinkedList(); -// keys.addAll(nameValues.keySet()); -// for(String key : keys) { -// if(key.contains(".")) { -// key = key.replaceAll("_", "-"); -// if(!LIST_L3_INTERFACE_IPV4_ADDRESS.equals(key)) { -// int index = key.indexOf("."); -// String resource = key.substring(0, index); -// AAIRequest rx = createRequest(resource, nameValues); -// if(rx != null) { -// pathElements.add(rx); -// } -// } -// } -// } -// super.processRequestPathValues(nameValues); -// } -// List pathElements = new LinkedList(); - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/L3InterfaceIpv6AddressListRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/L3InterfaceIpv6AddressListRequest.java deleted file mode 100644 index b87f4079..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/L3InterfaceIpv6AddressListRequest.java +++ /dev/null @@ -1,179 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Properties; - -import org.openecomp.aai.inventory.v10.L3InterfaceIpv6AddressList; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class L3InterfaceIpv6AddressListRequest extends AAIRequest { - - /* - * Note: there are 3 possible paths: - * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/network/vpes/vpe/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/network/vpes/vpe/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/network/vpes/vpe/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/network/vpes/vpe/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - * aaiv7:inventory/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} - */ - - public static final String L3_INTERFACE_IPV6_ADDRESS_LIST_PATH = "org.openecomp.sdnc.sli.aai.path.l3.interface.ipv6.address.list"; - public static final String VLAN_L3_INTERFACE_IPV6_ADDRESS_LIST_PATH = "org.openecomp.sdnc.sli.aai.path.vlan.l3.interface.ipv6.address.list"; - - private final String l3_interface_ipv6_address_list_path; - private final String vlan_l3_interface_ipv6_address_list_path; - - public static final String L3_INTERFACE_IPV6_ADDRESS = "l3-interface-ipv6-address"; - public static final String LIST_L3_INTERFACE_IPV6_ADDRESS = "l3-interface-ipv6-address-list.l3-interface-ipv6-address"; - public static final String VLAN_INTERFACE = "vlan-interface"; - public static final String VLAN_VLAN_INTERFACE = "vlan.vlan-interface"; - - public L3InterfaceIpv6AddressListRequest() { - l3_interface_ipv6_address_list_path = configProperties.getProperty(L3_INTERFACE_IPV6_ADDRESS_LIST_PATH); - vlan_l3_interface_ipv6_address_list_path = configProperties.getProperty(VLAN_L3_INTERFACE_IPV6_ADDRESS_LIST_PATH); - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return this.getRequestUrl(method, null); - } - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri+l3_interface_ipv6_address_list_path; - - if(requestProperties.containsKey(VLAN_INTERFACE) || requestProperties.containsKey(VLAN_VLAN_INTERFACE)){ - request_url = target_uri+vlan_l3_interface_ipv6_address_list_path; - request_url = processVLanRequestPathData(request_url, requestProperties); - } - - request_url = processPathData(request_url, requestProperties); - request_url = LInterfaceRequest.processPathData(request_url, requestProperties); -// request_url = GenericVnfRequest.processPathData(request_url, requestProperties); - - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - - return http_req_url; - } - - public static String processVLanRequestPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - String key = null; - - if(requestProperties.containsKey(VLAN_VLAN_INTERFACE)) { - key = VLAN_VLAN_INTERFACE; - } else if(requestProperties.containsKey(VLAN_INTERFACE)) { - key = VLAN_INTERFACE; - } else { - aaiService.logKeyError(String.format("%s,%s", VLAN_INTERFACE, VLAN_VLAN_INTERFACE)); - } - - String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - - request_url = request_url.replace("{vlan-interface}", encoded_vnf) ; - aaiService.LOGwriteDateTrace("vlan-interface", requestProperties.getProperty(key)); - return request_url; - } - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - L3InterfaceIpv6AddressList vnfc = (L3InterfaceIpv6AddressList)requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(vnfc); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - @Override - public String[] getArgsList() { - String[] args = - { - L3_INTERFACE_IPV6_ADDRESS, - LIST_L3_INTERFACE_IPV6_ADDRESS, - VLAN_INTERFACE, - VLAN_VLAN_INTERFACE, - LInterfaceRequest.INTERFACE_NAME, - LInterfaceRequest.LINTERFACE_INTERFACE_NAME, - "generic-vnf.vnf-id" - - }; - - return args; - } - - @Override - public Class getModelClass() { - return L3InterfaceIpv6AddressList.class; - } - - public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - String key = L3_INTERFACE_IPV6_ADDRESS; - if(requestProperties.containsKey(LIST_L3_INTERFACE_IPV6_ADDRESS)) { - key = LIST_L3_INTERFACE_IPV6_ADDRESS; - } - - if(!requestProperties.containsKey(key)) { - aaiService.logKeyError(String.format("%s,%s", L3_INTERFACE_IPV6_ADDRESS, LIST_L3_INTERFACE_IPV6_ADDRESS)); - } - - String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - - request_url = request_url.replace("{l3-interface-ipv6-address}", encoded_vnf) ; - - aaiService.LOGwriteDateTrace("l3-interface-ipv6-address", requestProperties.getProperty(key)); - return request_url; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/LInterfaceRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/LInterfaceRequest.java deleted file mode 100644 index 2553037d..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/LInterfaceRequest.java +++ /dev/null @@ -1,244 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Properties; - -import org.openecomp.aai.inventory.v10.LInterface; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class LInterfaceRequest extends AAIRequest { - - // tenant (1602) - public static final String LAGINTERFACE_LINTERFACE_PATH = "org.openecomp.sdnc.sli.aai.path.lag.interface.l.interface"; - public static final String LAGINTERFACE_LINTERFACE_QUERY_PATH = "org.openecomp.sdnc.sli.aai.path.lag.interface.l.interface.query"; - - public static final String P_INTERFACE_LINTERFACE_PATH = "org.openecomp.sdnc.sli.aai.path.p.interface.l.interface"; - public static final String P_INTERFACE_LINTERFACE_QUERY_PATH = "org.openecomp.sdnc.sli.aai.path.p.interface.l.interface.query"; - - public static final String LAGINTERFACE_LINTERFACE_PNF_PATH = "org.openecomp.sdnc.sli.aai.path.lag.interface.l.interface.pnf"; - public static final String P_INTERFACE_LINTERFACE_PNF_PATH = "org.openecomp.sdnc.sli.aai.path.p.interface.l.interface.pnf"; - - private final String laginterface_linterface_path; - private final String laginterface_linterface_query_path; - private final String p_interface_linterface_path; - private final String p_interface_linterface_query_path; - - private final String laginterface_linterface_pnf_path; - private final String p_interface_linterface_pnf_path; - - public static final String INTERFACE_NAME = "interface-name"; - public static final String LINTERFACE_INTERFACE_NAME = "l-interface.interface-name"; - public static final String LAG_INTERFACE_INTERFACE_NAME = "lag-interface.interface-name"; - public static final String P_INTERFACE_INTERFACE_NAME = "p-interface.interface-name"; - public static final String PNF_PNF_NAME = "pnf.pnf-name"; - - public static final String ROUTER_NAME = "router-name"; - public static final String HOSTNAME = "hostname"; - - - public static enum TYPE { L2_BRIDGE_BGF, L2_BRIDGE_SBG}; - - private final TYPE type; - - public LInterfaceRequest(TYPE type) { - this.type = type; - - laginterface_linterface_path = configProperties.getProperty(LAGINTERFACE_LINTERFACE_PATH); - laginterface_linterface_query_path = configProperties.getProperty(LAGINTERFACE_LINTERFACE_QUERY_PATH); - - p_interface_linterface_path = configProperties.getProperty(P_INTERFACE_LINTERFACE_PATH); - p_interface_linterface_query_path = configProperties.getProperty(P_INTERFACE_LINTERFACE_QUERY_PATH); - - laginterface_linterface_pnf_path = configProperties.getProperty(LAGINTERFACE_LINTERFACE_PNF_PATH); - p_interface_linterface_pnf_path = configProperties.getProperty(P_INTERFACE_LINTERFACE_PNF_PATH); - } - - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = null; - String encoded_vnf = null; - String hostname = null; - String pnfname = null; - String interfaceName = null; - - if(type == TYPE.L2_BRIDGE_SBG) { - if(requestProperties.containsKey(PNF_PNF_NAME)) { - request_url = target_uri + laginterface_linterface_pnf_path; - } else { - request_url = target_uri + laginterface_linterface_path; - } - - if(requestProperties.containsKey(ROUTER_NAME)) { - hostname = requestProperties.getProperty(ROUTER_NAME); - encoded_vnf = encodeQuery(hostname); - request_url = request_url.replace("{hostname}", encoded_vnf); - } - - if(requestProperties.containsKey(HOSTNAME)) { - hostname = requestProperties.getProperty(HOSTNAME); - encoded_vnf = encodeQuery(hostname); - request_url = request_url.replace("{hostname}", encoded_vnf); - } - - if(requestProperties.containsKey(PNF_PNF_NAME)) { - pnfname = requestProperties.getProperty(PNF_PNF_NAME); - encoded_vnf = encodeQuery(pnfname); - request_url = request_url.replace("{pnf-name}", encoded_vnf); - } - - encoded_vnf = encodeQuery(requestProperties.getProperty(LAG_INTERFACE_INTERFACE_NAME)); - request_url = request_url.replace("{lag-interface.interface-name}", encoded_vnf) ; - - - interfaceName = requestProperties.getProperty(INTERFACE_NAME); - if(interfaceName == null || interfaceName.isEmpty()) { - interfaceName = requestProperties.getProperty(LINTERFACE_INTERFACE_NAME); - } - encoded_vnf = encodeQuery(interfaceName); - request_url = request_url.replace("{interface-name}", encoded_vnf) ; - - } - if(type == TYPE.L2_BRIDGE_BGF) { - if(requestProperties.containsKey(PNF_PNF_NAME)) { - request_url = target_uri + p_interface_linterface_pnf_path; - } else { - request_url = target_uri + p_interface_linterface_path; - } - - - if(requestProperties.containsKey(ROUTER_NAME)) { - hostname = requestProperties.getProperty(ROUTER_NAME); - encoded_vnf = encodeQuery(hostname); - request_url = request_url.replace("{hostname}", encoded_vnf); - } - - if(requestProperties.containsKey(HOSTNAME)) { - hostname = requestProperties.getProperty(HOSTNAME); - encoded_vnf = encodeQuery(hostname); - request_url = request_url.replace("{hostname}", encoded_vnf); - } - - if(requestProperties.containsKey(PNF_PNF_NAME)) { - pnfname = requestProperties.getProperty(PNF_PNF_NAME); - encoded_vnf = encodeQuery(pnfname); - request_url = request_url.replace("{pnf-name}", encoded_vnf); - } - - encoded_vnf = encodeQuery(requestProperties.getProperty(P_INTERFACE_INTERFACE_NAME)); - request_url = request_url.replace("{p-interface.interface-name}", encoded_vnf) ; - - - interfaceName = requestProperties.getProperty(INTERFACE_NAME); - if(interfaceName == null || interfaceName.isEmpty()) { - interfaceName = requestProperties.getProperty(LINTERFACE_INTERFACE_NAME); - } - encoded_vnf = encodeQuery(interfaceName); - request_url = request_url.replace("{interface-name}", encoded_vnf) ; - } - - - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - if(hostname != null) - aaiService.LOGwriteDateTrace("hostname", hostname); - if(pnfname != null) - aaiService.LOGwriteDateTrace("pnf-name", pnfname); - if(requestProperties.containsKey(LAG_INTERFACE_INTERFACE_NAME)) { - aaiService.LOGwriteDateTrace("lag-interface.interface-name", requestProperties.getProperty(LAG_INTERFACE_INTERFACE_NAME)); - } - if(requestProperties.containsKey(P_INTERFACE_INTERFACE_NAME)) { - aaiService.LOGwriteDateTrace("p-interface.interface-name", requestProperties.getProperty(P_INTERFACE_INTERFACE_NAME)); - } - aaiService.LOGwriteDateTrace("interface-name", interfaceName); - - return http_req_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return this.getRequestUrl(method, null); - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - LInterface vnfc = (LInterface)requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(vnfc); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - - @Override - public String[] getArgsList() { - String[] args = {}; - if(type == TYPE.L2_BRIDGE_SBG) { - String[] tmpArray = {INTERFACE_NAME, LINTERFACE_INTERFACE_NAME, LAG_INTERFACE_INTERFACE_NAME, HOSTNAME, ROUTER_NAME, PNF_PNF_NAME}; - args = tmpArray; - } - if(type == TYPE.L2_BRIDGE_BGF) { - String[] tmpArray = {INTERFACE_NAME, LINTERFACE_INTERFACE_NAME, P_INTERFACE_INTERFACE_NAME, HOSTNAME, ROUTER_NAME, PNF_PNF_NAME}; - args = tmpArray; - } - - return args; - } - - @Override - public Class getModelClass() { - return LInterface.class; - } - - @Override - public String getPrimaryResourceName(String resource) { - return "l-interface"; - } - - public static final String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - String interfaceName = requestProperties.getProperty(INTERFACE_NAME); - if(interfaceName == null || interfaceName.isEmpty()) { - interfaceName = requestProperties.getProperty(LINTERFACE_INTERFACE_NAME); - } - - request_url = request_url.replace("{interface-name}", encodeQuery(interfaceName)) ; - return request_url; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/LagInterfacePnfRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/LagInterfacePnfRequest.java deleted file mode 100644 index 2c103623..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/LagInterfacePnfRequest.java +++ /dev/null @@ -1,142 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Properties; - -import org.openecomp.aai.inventory.v10.LagInterface; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class LagInterfacePnfRequest extends AAIRequest { - - // tenant (1602) - public static final String LAG_INTERFACE_PATH = "org.openecomp.sdnc.sli.aai.path.pserver.pinterface"; - public static final String LAG_INTERFACE_QUERY_PATH = "org.openecomp.sdnc.sli.aai.path.pserver.pinterface.query"; - public static final String PNF_PATH = "org.openecomp.sdnc.sli.aai.path.pnf"; - - private final String lag_interface_path; - private final String lag_interface_query_path; - - public static final String INTERFACE_NAME = "interface-name"; - public static final String LAG_INTERFACE_INTERFACE_NAME = "lag-interface.interface-name"; - public static final String PNF_NAME = "pnf-name"; - public static final String PNF_PNF_NAME = "pnf.pnf-name"; - - - public LagInterfacePnfRequest() { - lag_interface_path = configProperties.getProperty(PNF_PATH) + "/lag-interfaces/lag-interface/{interface-name}"; - lag_interface_query_path = configProperties.getProperty(LAG_INTERFACE_QUERY_PATH); - LoggerFactory.getLogger(LagInterfacePnfRequest.class).debug("org.openecomp.sdnc.sli.aai.path.pserver.pinterface=\t" + lag_interface_path); - LoggerFactory.getLogger(LagInterfacePnfRequest.class).debug("org.openecomp.sdnc.sli.aai.path.pserver.pinterface.query=\t" + lag_interface_query_path); - if(lag_interface_path == null) { - LoggerFactory.getLogger(LagInterfacePnfRequest.class).warn("org.openecomp.sdnc.sli.aai.path.pserver.pinterface PATH not found in aaiclient.properties"); - } - } - - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri + lag_interface_path; - String encoded_vnf = null; - - String interfaceName = null; - - if(requestProperties.containsKey(INTERFACE_NAME)) { - interfaceName = requestProperties.getProperty(INTERFACE_NAME); - } else - if(requestProperties.containsKey(LAG_INTERFACE_INTERFACE_NAME)) { - interfaceName = requestProperties.getProperty(LAG_INTERFACE_INTERFACE_NAME); - } - - encoded_vnf = encodeQuery(interfaceName); - request_url = request_url.replace("{interface-name}", encoded_vnf) ; - - request_url = processPnfRequestPathData(request_url,requestProperties); - - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - aaiService.LOGwriteDateTrace("interface-name", interfaceName); - - return http_req_url; - } - - public static String processPnfRequestPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - - String key = PNF_NAME; - if(requestProperties.containsKey(PNF_PNF_NAME)) { - key = PNF_PNF_NAME; - } - - if(!requestProperties.containsKey(key)) { - aaiService.logKeyError(String.format("%s,%s", PNF_NAME, PNF_PNF_NAME)); - } - - String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - request_url = request_url.replace("{pnf-name}", encoded_vnf) ; - - return request_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return this.getRequestUrl(method, null); - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - LagInterface vnfc = (LagInterface)requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(vnfc); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - @Override - public String[] getArgsList() { - String[] args = {INTERFACE_NAME, LAG_INTERFACE_INTERFACE_NAME, PNF_PNF_NAME}; - - return args; - } - - @Override - public Class getModelClass() { - return LagInterface.class; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/NamedQueryRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/NamedQueryRequest.java deleted file mode 100644 index 4ee51745..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/NamedQueryRequest.java +++ /dev/null @@ -1,190 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Properties; - -import org.openecomp.aai.inventory.v10.InventoryResponseItems; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.AnnotationIntrospector; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.fasterxml.jackson.databind.type.TypeFactory; -import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector; - -public class NamedQueryRequest extends AAIRequest { - - public static final String NAMED_SEARCH_PATH = "org.openecomp.sdnc.sli.aai.query.named"; - - private final String named_search_path; - - public static final String NAMED_QUERY_UUID = "named-query-uuid"; - public static final String PREFIX = "prefix"; - - - public NamedQueryRequest() { - named_search_path = configProperties.getProperty(NAMED_SEARCH_PATH); - } - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri+named_search_path; - - request_url = processPathData(request_url, requestProperties); - - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - - return http_req_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return getRequestUrl(method, null); - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = AAIService.getObjectMapper(); - mapper.setSerializationInclusion(Include.NON_NULL); - mapper.setSerializationInclusion(Include.NON_EMPTY); - mapper.setSerializationInclusion(Include.NON_DEFAULT); - - AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(TypeFactory.defaultInstance()); - AnnotationIntrospector secondary = new JacksonAnnotationIntrospector(); - mapper.setAnnotationIntrospector(AnnotationIntrospector.pair(introspector, secondary)); - mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); - - AAIDatum tenant = (AAIDatum)requestDatum; - String json_text = null; - try { - ObjectNode node = mapper.valueToTree(tenant); - Iterator it = node.elements(); - while(it.hasNext()){ - JsonNode jn = it.next(); - JsonNode child = jn.get("instance-filter"); - if(child != null) { - child = child.get(0); - if(child.has("l3-network")) { - JsonNode innerChild = child.get("l3-network"); - if(innerChild != null) { - if(innerChild instanceof ObjectNode) { - ObjectNode on = ObjectNode.class.cast(innerChild); - List namesToDelete = new ArrayList(); - Iterator names = on.fieldNames(); - while(names.hasNext()) { - String name = names.next(); - if(name != null && name.startsWith("is-")) { - namesToDelete.add(name); - } - } - for(String nameToDelete : namesToDelete) { - on.remove(nameToDelete); - } - } - } - } else if(child.has("pnf")) { - JsonNode innerChild = child.get("pnf"); - if(innerChild != null) { - if(innerChild instanceof ObjectNode) { - ObjectNode on = ObjectNode.class.cast(innerChild); - List namesToDelete = new ArrayList(); - Iterator names = on.fieldNames(); - while(names.hasNext()) { - String name = names.next(); - if(name != null && name.startsWith("in-maint")) { - namesToDelete.add(name); - } - } - for(String nameToDelete : namesToDelete) { - on.remove(nameToDelete); - } - } - } - } - } - } - json_text = node.toString(); - if(json_text == null) - json_text = mapper.writeValueAsString(tenant); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - - @Override - public String[] getArgsList() { - String[] args = {NAMED_QUERY_UUID, PREFIX}; - return args; - } - - - @Override - public Class getModelClass() { - return InventoryResponseItems.class; - } - - - public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - - - String encoded_vnf ; - String key = NAMED_QUERY_UUID; - - if(requestProperties.containsKey(key)) { - encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - request_url = request_url.replace("{named-query-uuid}", encoded_vnf) ; - aaiService.LOGwriteDateTrace("named-query-uuid", requestProperties.getProperty(key)); - } - - key = PREFIX; - - if(requestProperties.containsKey(key)) { - encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - request_url = request_url.replace("{prefix}", encoded_vnf) ; - aaiService.LOGwriteDateTrace("prefix", requestProperties.getProperty(key)); - } - - return request_url; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/NodesQueryRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/NodesQueryRequest.java deleted file mode 100644 index c4141876..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/NodesQueryRequest.java +++ /dev/null @@ -1,144 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Properties; - -import org.openecomp.aai.inventory.v10.SearchResults; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class NodesQueryRequest extends AAIRequest { - - public static final String NODES_SEARCH_PATH = "org.openecomp.sdnc.sli.aai.query.nodes"; - - private final String nodes_search_path; - - public static final String NODE_TYPE = "node-type"; - public static final String ENTITY_IDENTIFIER = "entity-identifier"; - public static final String ENTITY_VALUE = "entity-value"; - - - public NodesQueryRequest() { - nodes_search_path = configProperties.getProperty(NODES_SEARCH_PATH); - } - - -// @Override -// public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { -// -// String request_url = target_uri+generic_search_path; -// String key = START_NODE_TYPE; -// -// String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); -// request_url = request_url.replace("{vnf-id}", encoded_vnf) ; -// -// if(resourceVersion != null) { -// request_url = request_url +"?resource-version="+resourceVersion; -// } -// URL http_req_url = new URL(request_url); -// -// aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); -// -// -// return http_req_url; -// } - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri+nodes_search_path; - - request_url = processPathData(request_url, requestProperties); - - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - - return http_req_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return getRequestUrl(method, null); - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - SearchResults tenant = (SearchResults)requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(tenant); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - - @Override - public String[] getArgsList() { - String[] args = {NODE_TYPE, ENTITY_IDENTIFIER, ENTITY_VALUE}; - return args; - } - - - @Override - public Class getModelClass() { - return SearchResults.class; - } - - - public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - - String key = ENTITY_IDENTIFIER; - - String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - request_url = request_url.replace("{entity-identifier}", encoded_vnf) ; - aaiService.LOGwriteDateTrace("entity-identifier", requestProperties.getProperty(key)); - - key = ENTITY_VALUE; - - encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - request_url = request_url.replace("{entity-name}", encoded_vnf) ; - aaiService.LOGwriteDateTrace("entity-name", requestProperties.getProperty(key)); - - key = NODE_TYPE; - - encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - request_url = request_url.replace("{node-type}", encoded_vnf) ; - aaiService.LOGwriteDateTrace("node-type", requestProperties.getProperty(key)); - - return request_url; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PInterfacePnfRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PInterfacePnfRequest.java deleted file mode 100644 index 99bce9d1..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PInterfacePnfRequest.java +++ /dev/null @@ -1,142 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Properties; - -import org.openecomp.aai.inventory.v10.PInterface; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class PInterfacePnfRequest extends AAIRequest { - - // tenant (1602) - public static final String PINTERFACE_PATH = "org.openecomp.sdnc.sli.aai.path.pserver.pinterface"; - public static final String PINTERFACE_QUERY_PATH = "org.openecomp.sdnc.sli.aai.path.pserver.pinterface.query"; - public static final String PNF_PATH = "org.openecomp.sdnc.sli.aai.path.pnf"; - - private final String pinterface_path; - private final String pinterface_query_path; - - public static final String INTERFACE_NAME = "interface-name"; - public static final String PINTERFACE_INTERFACE_NAME = "p-interface.interface-name"; - public static final String PNF_NAME = "pnf-name"; - public static final String PNF_PNF_NAME = "pnf.pnf-name"; - - - public PInterfacePnfRequest() { - pinterface_path = configProperties.getProperty(PNF_PATH) + "/p-interfaces/p-interface/{interface-name}"; - pinterface_query_path = configProperties.getProperty(PINTERFACE_QUERY_PATH); - LoggerFactory.getLogger(PInterfacePnfRequest.class).debug("org.openecomp.sdnc.sli.aai.path.pserver.pinterface=\t" + pinterface_path); - LoggerFactory.getLogger(PInterfacePnfRequest.class).debug("org.openecomp.sdnc.sli.aai.path.pserver.pinterface.query=\t" + pinterface_query_path); - if(pinterface_path == null) { - LoggerFactory.getLogger(PInterfacePnfRequest.class).warn("org.openecomp.sdnc.sli.aai.path.pserver.pinterface PATH not found in aaiclient.properties"); - } - } - - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri + pinterface_path; - String encoded_vnf = null; - - String interfaceName = null; - - if(requestProperties.containsKey(INTERFACE_NAME)) { - interfaceName = requestProperties.getProperty(INTERFACE_NAME); - } else - if(requestProperties.containsKey(PINTERFACE_INTERFACE_NAME)) { - interfaceName = requestProperties.getProperty(PINTERFACE_INTERFACE_NAME); - } - - encoded_vnf = encodeQuery(interfaceName); - request_url = request_url.replace("{interface-name}", encoded_vnf) ; - - request_url = processPnfRequestPathData(request_url,requestProperties); - - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - aaiService.LOGwriteDateTrace("interface-name", interfaceName); - - return http_req_url; - } - - public static String processPnfRequestPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - - String key = PNF_NAME; - if(requestProperties.containsKey(PNF_PNF_NAME)) { - key = PNF_PNF_NAME; - } - - if(!requestProperties.containsKey(key)) { - aaiService.logKeyError(String.format("%s,%s", PNF_NAME, PNF_PNF_NAME)); - } - - String encoded_vnf = encodeQuery(requestProperties.getProperty(key)); - request_url = request_url.replace("{pnf-name}", encoded_vnf) ; - - return request_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return this.getRequestUrl(method, null); - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - PInterface vnfc = (PInterface)requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(vnfc); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - @Override - public String[] getArgsList() { - String[] args = {INTERFACE_NAME, PINTERFACE_INTERFACE_NAME, PNF_NAME, PNF_PNF_NAME}; - - return args; - } - - @Override - public Class getModelClass() { - return PInterface.class; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PInterfaceRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PInterfaceRequest.java deleted file mode 100644 index a08a3929..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PInterfaceRequest.java +++ /dev/null @@ -1,132 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; - -import org.openecomp.aai.inventory.v10.PInterface; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class PInterfaceRequest extends AAIRequest { - - // tenant (1602) - public static final String PINTERFACE_PATH = "org.openecomp.sdnc.sli.aai.path.pserver.pinterface"; - public static final String PINTERFACE_QUERY_PATH = "org.openecomp.sdnc.sli.aai.path.pserver.pinterface.query"; - - private final String pinterface_path; - private final String pinterface_query_path; - - public static final String HOSTNAME = "hostname"; - public static final String PSERVER_HOSTNAME = "pserver.hostname"; - public static final String INTERFACE_NAME = "interface-name"; - public static final String PINTERFACE_INTERFACE_NAME = "p-interface.interface-name"; - - - public PInterfaceRequest() { - pinterface_path = configProperties.getProperty(PINTERFACE_PATH); - pinterface_query_path = configProperties.getProperty(PINTERFACE_QUERY_PATH); - LoggerFactory.getLogger(PInterfaceRequest.class).debug("org.openecomp.sdnc.sli.aai.path.pserver.pinterface=\t" + pinterface_path); - LoggerFactory.getLogger(PInterfaceRequest.class).debug("org.openecomp.sdnc.sli.aai.path.pserver.pinterface.query=\t" + pinterface_query_path); - if(pinterface_path == null) { - LoggerFactory.getLogger(PInterfaceRequest.class).warn("org.openecomp.sdnc.sli.aai.path.pserver.pinterface PATH not found in aaiclient.properties"); - } - } - - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri + pinterface_path; - String encoded_vnf = null; - - String hostname = null; - String interfaceName = null; - - if(requestProperties.containsKey(HOSTNAME)) { - hostname = requestProperties.getProperty(HOSTNAME); - } - if(requestProperties.containsKey(PSERVER_HOSTNAME)) { - hostname = requestProperties.getProperty(PSERVER_HOSTNAME); - } - - if(requestProperties.containsKey(INTERFACE_NAME)) { - interfaceName = requestProperties.getProperty(INTERFACE_NAME); - } - if(requestProperties.containsKey(PINTERFACE_INTERFACE_NAME)) { - interfaceName = requestProperties.getProperty(PINTERFACE_INTERFACE_NAME); - } - - encoded_vnf = encodeQuery(hostname); - request_url = request_url.replace("{hostname}", encoded_vnf) ; - - encoded_vnf = encodeQuery(interfaceName); - request_url = request_url.replace("{interface-name}", encoded_vnf) ; - - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - aaiService.LOGwriteDateTrace("hostname", hostname); - aaiService.LOGwriteDateTrace("interface-name", hostname); - - return http_req_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return this.getRequestUrl(method, null); - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - PInterface vnfc = (PInterface)requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(vnfc); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - @Override - public String[] getArgsList() { - String[] args = {HOSTNAME, PSERVER_HOSTNAME, INTERFACE_NAME, PINTERFACE_INTERFACE_NAME}; - return args; - } - - @Override - public Class getModelClass() { - return PInterface.class; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PathRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PathRequest.java deleted file mode 100644 index 0e110a11..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PathRequest.java +++ /dev/null @@ -1,88 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; - -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class PathRequest extends AAIRequest { - - private final Class classType; - - public static final String RESOURCE_PATH = "resource-path"; - - public PathRequest(Class type) { - classType = (Class)type; - } - - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri + "{resource-path}"; - - String encoded_vnf = requestProperties.getProperty(RESOURCE_PATH); - request_url = request_url.replace("{resource-path}", encoded_vnf) ; - - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - - return http_req_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return this.getRequestUrl(method, null); - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - String json_text = null; - try { - json_text = mapper.writeValueAsString(classType); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - @Override - public String[] getArgsList() { - String[] args = {RESOURCE_PATH}; - return args; - } - - @Override - public Class getModelClass() { - return classType; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PhysicalLinkRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PhysicalLinkRequest.java deleted file mode 100644 index a03298ae..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/PhysicalLinkRequest.java +++ /dev/null @@ -1,112 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; - -import org.openecomp.aai.inventory.v10.PhysicalLink; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class PhysicalLinkRequest extends AAIRequest { - - // physical link - public static final String PHYSICAL_LINK_PATH = "org.openecomp.sdnc.sli.aai.path.physical.link"; - public static final String PHYSICAL_LINK_QUERY_PATH = "org.openecomp.sdnc.sli.aai.path.physical.link.query"; - - private final String physical_link_path; - private final String physical_link_query_path; - - public static final String LINK_NAME = "link-name"; - public static final String PHYSICAL_LINK_NAME = "physical-link.link-name"; - - - public PhysicalLinkRequest() { - physical_link_path = configProperties.getProperty(PHYSICAL_LINK_PATH); - physical_link_query_path = configProperties.getProperty(PHYSICAL_LINK_QUERY_PATH); - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return this.getRequestUrl(method, null); - } - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri+physical_link_path; - - String linkName = null; - if(requestProperties.containsKey(LINK_NAME)) { - linkName = requestProperties.getProperty(LINK_NAME); - } - - if(requestProperties.containsKey(PHYSICAL_LINK_NAME)) { - linkName = requestProperties.getProperty(PHYSICAL_LINK_NAME); - } - - - String encoded_vnf = encodeQuery(linkName); - request_url = request_url.replace("{link-name}", encoded_vnf) ; - - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - aaiService.LOGwriteDateTrace("link-name", linkName); - - return http_req_url; - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - PhysicalLink vpe = (PhysicalLink)requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(vpe); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - @Override - public String[] getArgsList() { - String[] args = {LINK_NAME, PHYSICAL_LINK_NAME}; - - return args; - } - - @Override - public Class getModelClass() { - return PhysicalLink.class; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/RelationshipRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/RelationshipRequest.java deleted file mode 100644 index f15cbb59..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/RelationshipRequest.java +++ /dev/null @@ -1,126 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; - -import org.openecomp.aai.inventory.v10.RelationshipList; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class RelationshipRequest extends AAIRequest { - - // tenant (1602) - public static final String RELATIONSHIP_LIST_PATH = "org.openecomp.sdnc.sli.aai.path.relationship.list"; - public static final String RELATIONSHIP_LIST_QUERY_PATH = "org.openecomp.sdnc.sli.aai.path.relationship.list.query"; - - private final String relationship_path; - private final String relationship_query_path; - - public static final String RELATED_TO = "related-to"; - public static final String RELATIONSHIP_KEY = "relationship-key"; - - public RelationshipRequest() { - relationship_path = configProperties.getProperty(RELATIONSHIP_LIST_PATH, "/relationship-list/relationship"); - relationship_query_path = configProperties.getProperty(RELATIONSHIP_LIST_QUERY_PATH); - } - - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - AAIRequest masterRequest = (AAIRequest)requestProperties.get(MASTER_REQUEST); - URL masterURL = masterRequest.getRequestUrl(method, null); - - String request_url = masterURL.toString(); - request_url = request_url + relationship_path; - - if(request_url.contains("//")) { - request_url = request_url.replaceAll("//", "/"); - } - - if(requestProperties.containsKey(RELATED_TO)) { - String encoded_vnf = encodeQuery(requestProperties.getProperty(RELATED_TO)); - request_url = request_url.replace("{related-to}", encoded_vnf) ; - } - -// if(resourceVersion != null) { -// request_url = request_url +"?resource-version="+resourceVersion; -// } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - aaiService.LOGwriteDateTrace("related-to", requestProperties.getProperty(RELATED_TO)); - - return http_req_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = target_uri+relationship_query_path; - String encoded_vnf = encodeQuery(requestProperties.getProperty(RELATIONSHIP_KEY)); - request_url = request_url.replace("{tenant-name}", encoded_vnf) ; - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - aaiService.LOGwriteDateTrace("tenant_name", requestProperties.getProperty(RELATIONSHIP_KEY)); - - return http_req_url; - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - Object tenant = requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(tenant); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - - @Override - public String[] getArgsList() { - String[] args = {RELATED_TO, RELATIONSHIP_KEY}; - return args; - } - - - @Override - public Class getModelClass() { - return RelationshipList.class; - } - - public boolean isDeleteDataRequired() { - return true; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/SelfLinkRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/SelfLinkRequest.java deleted file mode 100644 index 7c307652..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/SelfLinkRequest.java +++ /dev/null @@ -1,98 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; - -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Joiner; - -public class SelfLinkRequest extends AAIRequest { - - private final Class classType; - - public static final String SELFLINK = "selflink"; - - public SelfLinkRequest(Class type) { - classType = (Class)type; - } - - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = null; - - request_url = requestProperties.getProperty(SELFLINK); - - String query = null; - - if(request_url.contains("?")) { - query = request_url.substring(request_url.indexOf("?")); - Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("="); -// String queryString = mapJoiner.join(query); - } else { - request_url = request_url + "?depth=1"; - } - - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - - return http_req_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return this.getRequestUrl(method, null); - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - String json_text = null; - try { - json_text = mapper.writeValueAsString(classType); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - @Override - public String[] getArgsList() { - String[] args = {SELFLINK}; - return args; - } - - @Override - public Class getModelClass() { - return classType; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/SubInterfaceRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/SubInterfaceRequest.java deleted file mode 100644 index 1220ee9a..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/SubInterfaceRequest.java +++ /dev/null @@ -1,184 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Properties; - -import org.openecomp.aai.inventory.v10.LInterface; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class SubInterfaceRequest extends AAIRequest { - - // tenant (1602) - public static final String PNF_LAGINTERFACE_SUBINTERFACE_PATH = "org.openecomp.sdnc.sli.aai.path.pnf.lag.interface.subinterface"; - public static final String PNF_LAGINTERFACE_SUBINTERFACE_QUERY_PATH = "org.openecomp.sdnc.sli.aai.path.pnf.lag.interface.subinterface.query"; - - public static final String PNF_P_INTERFACE_SUBINTERFACE_PATH = "org.openecomp.sdnc.sli.aai.path.pnf.p.interface.l.interface"; - public static final String PNF_P_INTERFACE_SUBINTERFACE_QUERY_PATH = "org.openecomp.sdnc.sli.aai.path.pnf.p.interface.l.interface.query"; - - private final String pnf_laginterface_subinterface_path; - private final String pnf_laginterface_subinterface_query_path; - private final String pnf_p_interface_subinterface_path; - private final String pnf_p_interface_subinterface_query_path; - - public static final String SUBINTERFACE_INTERFACE_NAME = "l-interface.interface-name"; - public static final String LAG_INTERFACE_INTERFACE_NAME = "lag-interface.interface-name"; - public static final String PNF_PNF_NAME = "pnf.pnf-name"; - public static enum TYPE { L2_BRIDGE_BGF, L2_BRIDGE_SBG}; - - private final TYPE type; - - public SubInterfaceRequest(TYPE type) { - this.type = type; - - pnf_laginterface_subinterface_path = configProperties.getProperty(PNF_LAGINTERFACE_SUBINTERFACE_PATH); - pnf_laginterface_subinterface_query_path = configProperties.getProperty(PNF_LAGINTERFACE_SUBINTERFACE_QUERY_PATH); - - pnf_p_interface_subinterface_path = configProperties.getProperty(PNF_P_INTERFACE_SUBINTERFACE_PATH); - pnf_p_interface_subinterface_query_path = configProperties.getProperty(PNF_P_INTERFACE_SUBINTERFACE_QUERY_PATH); - } - - - @Override - public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException { - - String request_url = null; - String encoded_vnf = null; - - String pnfname = null; - String interfaceName = null; - - if(type == TYPE.L2_BRIDGE_SBG) { - request_url = target_uri + pnf_laginterface_subinterface_path; - - if(requestProperties.containsKey(PNF_PNF_NAME)) { - pnfname = requestProperties.getProperty(PNF_PNF_NAME); - encoded_vnf = encodeQuery(pnfname); - request_url = request_url.replace("{pnf-name}", encoded_vnf); - } - - encoded_vnf = encodeQuery(requestProperties.getProperty(LAG_INTERFACE_INTERFACE_NAME)); - request_url = request_url.replace("{lag-interface.interface-name}", encoded_vnf) ; - - - interfaceName = requestProperties.getProperty(SUBINTERFACE_INTERFACE_NAME); - encoded_vnf = encodeQuery(interfaceName); - request_url = request_url.replace("{interface-name}", encoded_vnf) ; - - } - if(type == TYPE.L2_BRIDGE_BGF) { - request_url = target_uri + pnf_p_interface_subinterface_path; - - if(requestProperties.containsKey(PNF_PNF_NAME)) { - pnfname = requestProperties.getProperty(PNF_PNF_NAME); - encoded_vnf = encodeQuery(pnfname); - request_url = request_url.replace("{pnf-name}", encoded_vnf); - } - - encoded_vnf = encodeQuery(requestProperties.getProperty(PInterfaceRequest.PINTERFACE_INTERFACE_NAME)); - request_url = request_url.replace("{p-interface.interface-name}", encoded_vnf) ; - - - interfaceName = requestProperties.getProperty(SUBINTERFACE_INTERFACE_NAME); - encoded_vnf = encodeQuery(interfaceName); - request_url = request_url.replace("{interface-name}", encoded_vnf) ; - } - - - if(resourceVersion != null) { - request_url = request_url +"?resource-version="+resourceVersion; - } - URL http_req_url = new URL(request_url); - - aaiService.LOGwriteFirstTrace(method, http_req_url.toString()); - - if(pnfname != null) - aaiService.LOGwriteDateTrace("pnf-name", pnfname); - if(requestProperties.containsKey(LAG_INTERFACE_INTERFACE_NAME)) { - aaiService.LOGwriteDateTrace("lag-interface.interface-name", requestProperties.getProperty(LAG_INTERFACE_INTERFACE_NAME)); - } - if(requestProperties.containsKey(PInterfaceRequest.PINTERFACE_INTERFACE_NAME)) { - aaiService.LOGwriteDateTrace("p-interface.interface-name", requestProperties.getProperty(PInterfaceRequest.PINTERFACE_INTERFACE_NAME)); - } - aaiService.LOGwriteDateTrace("interface-name", interfaceName); - - return http_req_url; - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return this.getRequestUrl(method, null); - } - - - @Override - public String toJSONString() { - ObjectMapper mapper = getObjectMapper(); - LInterface vnfc = (LInterface)requestDatum; - String json_text = null; - try { - json_text = mapper.writeValueAsString(vnfc); - } catch (JsonProcessingException exc) { - handleException(this, exc); - return null; - } - return json_text; - } - - - @Override - public String[] getArgsList() { - String[] args = {}; - if(type == TYPE.L2_BRIDGE_SBG) { - String[] tmpArray = {SUBINTERFACE_INTERFACE_NAME, LAG_INTERFACE_INTERFACE_NAME, PNF_PNF_NAME}; - args = tmpArray; - } - if(type == TYPE.L2_BRIDGE_BGF) { - String[] tmpArray = {SUBINTERFACE_INTERFACE_NAME, PInterfaceRequest.PINTERFACE_INTERFACE_NAME, PNF_PNF_NAME}; - args = tmpArray; - } - - return args; - } - - @Override - public Class getModelClass() { - return LInterface.class; - } - - @Override - public String getPrimaryResourceName(String resource) { - return "sub-interface"; - } - - public static final String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - String interfaceName = requestProperties.getProperty(SUBINTERFACE_INTERFACE_NAME); - request_url = request_url.replace("{interface-name}", encodeQuery(interfaceName)) ; - return request_url; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/UpdateRequest.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/UpdateRequest.java deleted file mode 100644 index 696f30bd..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/UpdateRequest.java +++ /dev/null @@ -1,106 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Map; -import java.util.Properties; - -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class UpdateRequest extends AAIRequest { - - private AAIRequest request; - private Map params; - - public UpdateRequest(AAIRequest request, Map parms) { - this.request = request; - this.params = parms; - } - - @Override - public URL getRequestUrl(String method, String resourceVersion) - throws UnsupportedEncodingException, MalformedURLException { - return request.getRequestUrl(method, resourceVersion); - } - - @Override - public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException { - return request.getRequestQueryUrl(method); - } - - @Override - public String toJSONString() { - ObjectMapper mapper = AAIService.getObjectMapper(); - String json = null; - - try { - json = mapper.writeValueAsString(params); - } catch (JsonProcessingException e) { - LOG.error("Could not convert parameters of " + request.getRequestObject().getClass().getName(), e); - } - - return json; - } - - @Override - public String[] getArgsList() { - return request.getArgsList(); - } - - @Override - public Class getModelClass() { - return request.getModelClass(); - } - - @Override - public void addRequestProperty(String key, String value) { - request.requestProperties.put(key, value); - } - - public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException { - -// if(request != null) { -// Class clazz = request.getClass(); -// Method function = null; -// try { -// function = clazz.getMethod("processPathData", request_url.getClass(), requestProperties.getClass()); -// request_url = (String) function.invoke(null, request_url, requestProperties); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } - -// request.processPathData(request_url, requestProperties); - return request_url; - } - - public void processRequestPathValues(Map nameValues) { - request.processRequestPathValues(nameValues); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/AAIDatum.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/AAIDatum.java deleted file mode 100644 index fe238026..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/AAIDatum.java +++ /dev/null @@ -1,26 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data; - -public interface AAIDatum { - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/EchoResponse.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/EchoResponse.java deleted file mode 100644 index 1b9cb8d4..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/EchoResponse.java +++ /dev/null @@ -1,76 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data; - -import java.util.HashMap; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "responseMessages" -}) -public class EchoResponse implements AAIDatum { - - @JsonProperty("responseMessages") - private ResponseMessages responseMessages; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The responseMessages - */ - @JsonProperty("responseMessages") - public ResponseMessages getResponseMessages() { - return responseMessages; - } - - /** - * - * @param responseMessages - * The responseMessages - */ - @JsonProperty("responseMessages") - public void setResponseMessages(ResponseMessages responseMessages) { - this.responseMessages = responseMessages; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ErrorResponse.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ErrorResponse.java deleted file mode 100644 index be5368d1..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ErrorResponse.java +++ /dev/null @@ -1,78 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data; - -import java.util.HashMap; -import java.util.Map; - -import javax.annotation.Generated; - -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "requestError" -}) -public class ErrorResponse { - - @JsonProperty("requestError") - private RequestError requestError; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The requestError - */ - @JsonProperty("requestError") - public RequestError getRequestError() { - return requestError; - } - - /** - * - * @param requestError - * The requestError - */ - @JsonProperty("requestError") - public void setRequestError(RequestError requestError) { - this.requestError = requestError; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/RequestError.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/RequestError.java deleted file mode 100644 index df875f8c..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/RequestError.java +++ /dev/null @@ -1,78 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data; - -import java.util.HashMap; -import java.util.Map; - -import javax.annotation.Generated; - -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "serviceException" -}) -public class RequestError { - - @JsonProperty("serviceException") - private ServiceException serviceException; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The serviceException - */ - @JsonProperty("serviceException") - public ServiceException getServiceException() { - return serviceException; - } - - /** - * - * @param serviceException - * The serviceException - */ - @JsonProperty("serviceException") - public void setServiceException(ServiceException serviceException) { - this.serviceException = serviceException; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ResourceVersion.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ResourceVersion.java deleted file mode 100644 index 5ac06e6b..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ResourceVersion.java +++ /dev/null @@ -1,28 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data; - -public interface ResourceVersion { - - public String getResourceVersion(); - public void setResourceVersion(String resourceVersion); -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ResponseMessage.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ResponseMessage.java deleted file mode 100644 index c1f9582a..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ResponseMessage.java +++ /dev/null @@ -1,122 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data; - -import java.util.HashMap; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "messageId", - "text", - "variables" -}) -public class ResponseMessage { - - @JsonProperty("messageId") - private String messageId; - @JsonProperty("text") - private String text; - @JsonProperty("variables") - private Variables variables; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The messageId - */ - @JsonProperty("messageId") - public String getMessageId() { - return messageId; - } - - /** - * - * @param messageId - * The messageId - */ - @JsonProperty("messageId") - public void setMessageId(String messageId) { - this.messageId = messageId; - } - - /** - * - * @return - * The text - */ - @JsonProperty("text") - public String getText() { - return text; - } - - /** - * - * @param text - * The text - */ - @JsonProperty("text") - public void setText(String text) { - this.text = text; - } - - /** - * - * @return - * The variables - */ - @JsonProperty("variables") - public Variables getVariables() { - return variables; - } - - /** - * - * @param variables - * The variables - */ - @JsonProperty("variables") - public void setVariables(Variables variables) { - this.variables = variables; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ResponseMessages.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ResponseMessages.java deleted file mode 100644 index 5af83aae..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ResponseMessages.java +++ /dev/null @@ -1,78 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "responseMessage" -}) -public class ResponseMessages { - - @JsonProperty("responseMessage") - private List responseMessage = new ArrayList(); - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The responseMessage - */ - @JsonProperty("responseMessage") - public List getResponseMessage() { - return responseMessage; - } - - /** - * - * @param responseMessage - * The responseMessage - */ - @JsonProperty("responseMessage") - public void setResponseMessage(List responseMessage) { - this.responseMessage = responseMessage; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ServiceException.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ServiceException.java deleted file mode 100644 index b02b448e..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/ServiceException.java +++ /dev/null @@ -1,126 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.Generated; - -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "messageId", - "text", - "variables" -}) -public class ServiceException { - - @JsonProperty("messageId") - private String messageId; - @JsonProperty("text") - private String text; - @JsonProperty("variables") - private List variables = new ArrayList(); - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The messageId - */ - @JsonProperty("messageId") - public String getMessageId() { - return messageId; - } - - /** - * - * @param messageId - * The messageId - */ - @JsonProperty("messageId") - public void setMessageId(String messageId) { - this.messageId = messageId; - } - - /** - * - * @return - * The text - */ - @JsonProperty("text") - public String getText() { - return text; - } - - /** - * - * @param text - * The text - */ - @JsonProperty("text") - public void setText(String text) { - this.text = text; - } - - /** - * - * @return - * The variables - */ - @JsonProperty("variables") - public List getVariables() { - return variables; - } - - /** - * - * @param variables - * The variables - */ - @JsonProperty("variables") - public void setVariables(List variables) { - this.variables = variables; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/SubInterface.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/SubInterface.java deleted file mode 100644 index a85e0219..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/SubInterface.java +++ /dev/null @@ -1,171 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data; - -import java.util.HashMap; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -import org.openecomp.aai.inventory.v10.RelationshipList; -import org.openecomp.aai.inventory.v10.Vlans; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "interface-name", - "interface-role", - "resource-version", - "vlans", - "relationshipList" -}) -public class SubInterface implements AAIDatum { - - @JsonProperty("interface-name") - private String interfaceName; - @JsonProperty("interface-role") - private String interfaceRole; - @JsonProperty("resource-version") - private String resourceVersion; - @JsonProperty("vlans") - private Vlans vlans; - @JsonProperty("relationshipList") - private RelationshipList relationshipList; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The interfaceName - */ - @JsonProperty("interface-name") - public String getInterfaceName() { - return interfaceName; - } - - /** - * - * @param interfaceName - * The interface-name - */ - @JsonProperty("interface-name") - public void setInterfaceName(String interfaceName) { - this.interfaceName = interfaceName; - } - - /** - * - * @return - * The interfaceRole - */ - @JsonProperty("interface-role") - public String getInterfaceRole() { - return interfaceRole; - } - - /** - * - * @param interfaceRole - * The interface-role - */ - @JsonProperty("interface-role") - public void setInterfaceRole(String interfaceRole) { - this.interfaceRole = interfaceRole; - } - - /** - * - * @return - * The resourceVersion - */ - @JsonProperty("resource-version") - public String getResourceVersion() { - return resourceVersion; - } - - /** - * - * @param resourceVersion - * The resource-version - */ - @JsonProperty("resource-version") - public void setResourceVersion(String resourceVersion) { - this.resourceVersion = resourceVersion; - } - - /** - * - * @return - * The vlans - */ - @JsonProperty("vlans") - public Vlans getVlans() { - return vlans; - } - - /** - * - * @param vlans - * The vlans - */ - @JsonProperty("vlans") - public void setVlans(Vlans vlans) { - this.vlans = vlans; - } - - /** - * - * @return - * The relationshipList - */ - @JsonProperty("relationshipList") - public RelationshipList getRelationshipList() { - return relationshipList; - } - - /** - * - * @param relationshipList - * The relationshipList - */ - @JsonProperty("relationshipList") - public void setRelationshipList(RelationshipList relationshipList) { - this.relationshipList = relationshipList; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/Variables.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/Variables.java deleted file mode 100644 index 99c42aa3..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/Variables.java +++ /dev/null @@ -1,78 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "variable" -}) -public class Variables { - - @JsonProperty("variable") - private List variable = new ArrayList(); - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The variable - */ - @JsonProperty("variable") - public List getVariable() { - return variable; - } - - /** - * - * @param variable - * The variable - */ - @JsonProperty("variable") - public void setVariable(List variable) { - this.variable = variable; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/notify/KeyDatum.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/notify/KeyDatum.java deleted file mode 100644 index 80e633dd..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/notify/KeyDatum.java +++ /dev/null @@ -1,99 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data.notify; - -import java.util.HashMap; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "key-name", - "key-value" -}) -public class KeyDatum { - - @JsonProperty("key-name") - private String keyName; - @JsonProperty("key-value") - private String keyValue; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The keyName - */ - @JsonProperty("key-name") - public String getKeyName() { - return keyName; - } - - /** - * - * @param keyName - * The key-name - */ - @JsonProperty("key-name") - public void setKeyName(String keyName) { - this.keyName = keyName; - } - - /** - * - * @return - * The keyValue - */ - @JsonProperty("key-value") - public String getKeyValue() { - return keyValue; - } - - /** - * - * @param keyValue - * The key-value - */ - @JsonProperty("key-value") - public void setKeyValue(String keyValue) { - this.keyValue = keyValue; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/notify/NotifyEvent.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/notify/NotifyEvent.java deleted file mode 100644 index 1be171e0..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/notify/NotifyEvent.java +++ /dev/null @@ -1,170 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data.notify; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "event-id", - "event-trigger", - "key-data", - "node-type", - "selflink" -}) -public class NotifyEvent { - - @JsonProperty("event-id") - private String eventId; - @JsonProperty("event-trigger") - private String eventTrigger; - @JsonProperty("key-data") - private List keyData = new ArrayList(); - @JsonProperty("node-type") - private String nodeType; - @JsonProperty("selflink") - private String selflink; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The eventId - */ - @JsonProperty("event-id") - public String getEventId() { - return eventId; - } - - /** - * - * @param eventId - * The event-id - */ - @JsonProperty("event-id") - public void setEventId(String eventId) { - this.eventId = eventId; - } - - /** - * - * @return - * The eventTrigger - */ - @JsonProperty("event-trigger") - public String getEventTrigger() { - return eventTrigger; - } - - /** - * - * @param eventTrigger - * The event-trigger - */ - @JsonProperty("event-trigger") - public void setEventTrigger(String eventTrigger) { - this.eventTrigger = eventTrigger; - } - - /** - * - * @return - * The keyData - */ - @JsonProperty("key-data") - public List getKeyData() { - return keyData; - } - - /** - * - * @param keyData - * The key-data - */ - @JsonProperty("key-data") - public void setKeyData(List keyData) { - this.keyData = keyData; - } - - /** - * - * @return - * The nodeType - */ - @JsonProperty("node-type") - public String getNodeType() { - return nodeType; - } - - /** - * - * @param nodeType - * The node-type - */ - @JsonProperty("node-type") - public void setNodeType(String nodeType) { - this.nodeType = nodeType; - } - - /** - * - * @return - * The selflink - */ - @JsonProperty("selflink") - public String getSelflink() { - return selflink; - } - - /** - * - * @param selflink - * The selflink - */ - @JsonProperty("selflink") - public void setSelflink(String selflink) { - this.selflink = selflink; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Flavor.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Flavor.java deleted file mode 100644 index 69288c11..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Flavor.java +++ /dev/null @@ -1,122 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data.v1507; - -import java.util.HashMap; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "flavorId", - "flavorName", - "flavorLink" -}) -public class Flavor { - - @JsonProperty("flavorId") - private String flavorId; - @JsonProperty("flavorName") - private String flavorName; - @JsonProperty("flavorLink") - private String flavorLink; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The flavorId - */ - @JsonProperty("flavorId") - public String getFlavorId() { - return flavorId; - } - - /** - * - * @param flavorId - * The flavorId - */ - @JsonProperty("flavorId") - public void setFlavorId(String flavorId) { - this.flavorId = flavorId; - } - - /** - * - * @return - * The flavorName - */ - @JsonProperty("flavorName") - public String getFlavorName() { - return flavorName; - } - - /** - * - * @param flavorName - * The flavorName - */ - @JsonProperty("flavorName") - public void setFlavorName(String flavorName) { - this.flavorName = flavorName; - } - - /** - * - * @return - * The flavorLink - */ - @JsonProperty("flavorLink") - public String getFlavorLink() { - return flavorLink; - } - - /** - * - * @param flavorLink - * The flavorLink - */ - @JsonProperty("flavorLink") - public void setFlavorLink(String flavorLink) { - this.flavorLink = flavorLink; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Host.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Host.java deleted file mode 100644 index e4a5720a..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Host.java +++ /dev/null @@ -1,122 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data.v1507; - -import java.util.HashMap; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "hostId", - "hostname", - "hostLoc" -}) -public class Host { - - @JsonProperty("hostId") - private String hostId; - @JsonProperty("hostname") - private String hostname; - @JsonProperty("hostLoc") - private String hostLoc; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The hostId - */ - @JsonProperty("hostId") - public String getHostId() { - return hostId; - } - - /** - * - * @param hostId - * The hostId - */ - @JsonProperty("hostId") - public void setHostId(String hostId) { - this.hostId = hostId; - } - - /** - * - * @return - * The hostname - */ - @JsonProperty("hostname") - public String getHostname() { - return hostname; - } - - /** - * - * @param hostname - * The hostname - */ - @JsonProperty("hostname") - public void setHostname(String hostname) { - this.hostname = hostname; - } - - /** - * - * @return - * The hostLoc - */ - @JsonProperty("hostLoc") - public String getHostLoc() { - return hostLoc; - } - - /** - * - * @param hostLoc - * The hostLoc - */ - @JsonProperty("hostLoc") - public void setHostLoc(String hostLoc) { - this.hostLoc = hostLoc; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Image.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Image.java deleted file mode 100644 index 19ae8749..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Image.java +++ /dev/null @@ -1,237 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data.v1507; - -import java.util.HashMap; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "imageId", - "imageName", - "osType", - "osVersion", - "application", - "applicationVersion", - "applicationVendor", - "imageLink" -}) -public class Image { - - @JsonProperty("imageId") - private String imageId; - @JsonProperty("imageName") - private String imageName; - @JsonProperty("osType") - private String osType; - @JsonProperty("osVersion") - private String osVersion; - @JsonProperty("application") - private String application; - @JsonProperty("applicationVersion") - private String applicationVersion; - @JsonProperty("applicationVendor") - private String applicationVendor; - @JsonProperty("imageLink") - private String imageLink; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The imageId - */ - @JsonProperty("imageId") - public String getImageId() { - return imageId; - } - - /** - * - * @param imageId - * The imageId - */ - @JsonProperty("imageId") - public void setImageId(String imageId) { - this.imageId = imageId; - } - - /** - * - * @return - * The imageName - */ - @JsonProperty("imageName") - public String getImageName() { - return imageName; - } - - /** - * - * @param imageName - * The imageName - */ - @JsonProperty("imageName") - public void setImageName(String imageName) { - this.imageName = imageName; - } - - /** - * - * @return - * The osType - */ - @JsonProperty("osType") - public String getOsType() { - return osType; - } - - /** - * - * @param osType - * The osType - */ - @JsonProperty("osType") - public void setOsType(String osType) { - this.osType = osType; - } - - /** - * - * @return - * The osVersion - */ - @JsonProperty("osVersion") - public String getOsVersion() { - return osVersion; - } - - /** - * - * @param osVersion - * The osVersion - */ - @JsonProperty("osVersion") - public void setOsVersion(String osVersion) { - this.osVersion = osVersion; - } - - /** - * - * @return - * The application - */ - @JsonProperty("application") - public String getApplication() { - return application; - } - - /** - * - * @param application - * The application - */ - @JsonProperty("application") - public void setApplication(String application) { - this.application = application; - } - - /** - * - * @return - * The applicationVersion - */ - @JsonProperty("applicationVersion") - public String getApplicationVersion() { - return applicationVersion; - } - - /** - * - * @param applicationVersion - * The applicationVersion - */ - @JsonProperty("applicationVersion") - public void setApplicationVersion(String applicationVersion) { - this.applicationVersion = applicationVersion; - } - - /** - * - * @return - * The applicationVendor - */ - @JsonProperty("applicationVendor") - public String getApplicationVendor() { - return applicationVendor; - } - - /** - * - * @param applicationVendor - * The applicationVendor - */ - @JsonProperty("applicationVendor") - public void setApplicationVendor(String applicationVendor) { - this.applicationVendor = applicationVendor; - } - - /** - * - * @return - * The imageLink - */ - @JsonProperty("imageLink") - public String getImageLink() { - return imageLink; - } - - /** - * - * @param imageLink - * The imageLink - */ - @JsonProperty("imageLink") - public void setImageLink(String imageLink) { - this.imageLink = imageLink; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/IpAddress.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/IpAddress.java deleted file mode 100644 index 1d29857a..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/IpAddress.java +++ /dev/null @@ -1,168 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data.v1507; - -import java.util.HashMap; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "addrId", - "addr", - "version", - "type", - "networkName" -}) -public class IpAddress { - - @JsonProperty("addrId") - private String addrId; - @JsonProperty("addr") - private String addr; - @JsonProperty("version") - private String version; - @JsonProperty("type") - private String type; - @JsonProperty("networkName") - private String networkName; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The addrId - */ - @JsonProperty("addrId") - public String getAddrId() { - return addrId; - } - - /** - * - * @param addrId - * The addrId - */ - @JsonProperty("addrId") - public void setAddrId(String addrId) { - this.addrId = addrId; - } - - /** - * - * @return - * The addr - */ - @JsonProperty("addr") - public String getAddr() { - return addr; - } - - /** - * - * @param addr - * The addr - */ - @JsonProperty("addr") - public void setAddr(String addr) { - this.addr = addr; - } - - /** - * - * @return - * The version - */ - @JsonProperty("version") - public String getVersion() { - return version; - } - - /** - * - * @param version - * The version - */ - @JsonProperty("version") - public void setVersion(String version) { - this.version = version; - } - - /** - * - * @return - * The type - */ - @JsonProperty("type") - public String getType() { - return type; - } - - /** - * - * @param type - * The type - */ - @JsonProperty("type") - public void setType(String type) { - this.type = type; - } - - /** - * - * @return - * The networkName - */ - @JsonProperty("networkName") - public String getNetworkName() { - return networkName; - } - - /** - * - * @param networkName - * The networkName - */ - @JsonProperty("networkName") - public void setNetworkName(String networkName) { - this.networkName = networkName; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Relationship.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Relationship.java deleted file mode 100644 index 623bd722..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/Relationship.java +++ /dev/null @@ -1,147 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data.v1507; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "relatedTo", - "relatedLink", - "relationshipData", - "any" -}) -public class Relationship { - - @JsonProperty("relatedTo") - private String relatedTo; - @JsonProperty("relatedLink") - private String relatedLink; - @JsonProperty("relationshipData") - private List relationshipData = new ArrayList(); - @JsonProperty("any") - private List any = new ArrayList(); - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The relatedTo - */ - @JsonProperty("relatedTo") - public String getRelatedTo() { - return relatedTo; - } - - /** - * - * @param relatedTo - * The relatedTo - */ - @JsonProperty("relatedTo") - public void setRelatedTo(String relatedTo) { - this.relatedTo = relatedTo; - } - - /** - * - * @return - * The relatedLink - */ - @JsonProperty("relatedLink") - public String getRelatedLink() { - return relatedLink; - } - - /** - * - * @param relatedLink - * The relatedLink - */ - @JsonProperty("relatedLink") - public void setRelatedLink(String relatedLink) { - this.relatedLink = relatedLink; - } - - /** - * - * @return - * The relationshipData - */ - @JsonProperty("relationshipData") - public List getRelationshipData() { - return relationshipData; - } - - /** - * - * @param relationshipData - * The relationshipData - */ - @JsonProperty("relationshipData") - public void setRelationshipData(List relationshipData) { - this.relationshipData = relationshipData; - } - - /** - * - * @return - * The any - */ - @JsonProperty("any") - public List getAny() { - return any; - } - - /** - * - * @param any - * The any - */ - @JsonProperty("any") - public void setAny(List any) { - this.any = any; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/RelationshipDatum.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/RelationshipDatum.java deleted file mode 100644 index 9f44c1fa..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/RelationshipDatum.java +++ /dev/null @@ -1,124 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data.v1507; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "relationshipKey", - "relationshipValue", - "any" -}) -public class RelationshipDatum { - - @JsonProperty("relationshipKey") - private String relationshipKey; - @JsonProperty("relationshipValue") - private String relationshipValue; - @JsonProperty("any") - private List any = new ArrayList(); - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The relationshipKey - */ - @JsonProperty("relationshipKey") - public String getRelationshipKey() { - return relationshipKey; - } - - /** - * - * @param relationshipKey - * The relationshipKey - */ - @JsonProperty("relationshipKey") - public void setRelationshipKey(String relationshipKey) { - this.relationshipKey = relationshipKey; - } - - /** - * - * @return - * The relationshipValue - */ - @JsonProperty("relationshipValue") - public String getRelationshipValue() { - return relationshipValue; - } - - /** - * - * @param relationshipValue - * The relationshipValue - */ - @JsonProperty("relationshipValue") - public void setRelationshipValue(String relationshipValue) { - this.relationshipValue = relationshipValue; - } - - /** - * - * @return - * The any - */ - @JsonProperty("any") - public List getAny() { - return any; - } - - /** - * - * @param any - * The any - */ - @JsonProperty("any") - public void setAny(List any) { - this.any = any; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/RelationshipList.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/RelationshipList.java deleted file mode 100644 index 242b0911..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/RelationshipList.java +++ /dev/null @@ -1,101 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data.v1507; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "relationship", - "any" -}) -public class RelationshipList { - - @JsonProperty("relationship") - private List relationship = new ArrayList(); - @JsonProperty("any") - private List any = new ArrayList(); - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The relationship - */ - @JsonProperty("relationship") - public List getRelationship() { - return relationship; - } - - /** - * - * @param relationship - * The relationship - */ - @JsonProperty("relationship") - public void setRelationship(List relationship) { - this.relationship = relationship; - } - - /** - * - * @return - * The any - */ - @JsonProperty("any") - public List getAny() { - return any; - } - - /** - * - * @param any - * The any - */ - @JsonProperty("any") - public void setAny(List any) { - this.any = any; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/VServer.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/VServer.java deleted file mode 100644 index 6c975604..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/data/v1507/VServer.java +++ /dev/null @@ -1,262 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.data.v1507; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "vmId", - "vmName", - "vmName2", - "host", - "image", - "flavor", - "ipAddresses", - "vserverLink", - "relationshipList" -}) -public class VServer { - - @JsonProperty("vmId") - private String vmId; - @JsonProperty("vmName") - private String vmName; - @JsonProperty("vmName2") - private String vmName2; - @JsonProperty("host") - private Host host; - @JsonProperty("image") - private Image image; - @JsonProperty("flavor") - private Flavor flavor; - @JsonProperty("ipAddresses") - private List ipAddresses = new ArrayList(); - @JsonProperty("vserverLink") - private String vserverLink; - @JsonProperty("relationshipList") - private RelationshipList relationshipList; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The vmId - */ - @JsonProperty("vmId") - public String getVmId() { - return vmId; - } - - /** - * - * @param vmId - * The vmId - */ - @JsonProperty("vmId") - public void setVmId(String vmId) { - this.vmId = vmId; - } - - /** - * - * @return - * The vmName - */ - @JsonProperty("vmName") - public String getVmName() { - return vmName; - } - - /** - * - * @param vmName - * The vmName - */ - @JsonProperty("vmName") - public void setVmName(String vmName) { - this.vmName = vmName; - } - - /** - * - * @return - * The vmName2 - */ - @JsonProperty("vmName2") - public String getVmName2() { - return vmName2; - } - - /** - * - * @param vmName2 - * The vmName2 - */ - @JsonProperty("vmName2") - public void setVmName2(String vmName2) { - this.vmName2 = vmName2; - } - - /** - * - * @return - * The host - */ - @JsonProperty("host") - public Host getHost() { - return host; - } - - /** - * - * @param host - * The host - */ - @JsonProperty("host") - public void setHost(Host host) { - this.host = host; - } - - /** - * - * @return - * The image - */ - @JsonProperty("image") - public Image getImage() { - return image; - } - - /** - * - * @param image - * The image - */ - @JsonProperty("image") - public void setImage(Image image) { - this.image = image; - } - - /** - * - * @return - * The flavor - */ - @JsonProperty("flavor") - public Flavor getFlavor() { - return flavor; - } - - /** - * - * @param flavor - * The flavor - */ - @JsonProperty("flavor") - public void setFlavor(Flavor flavor) { - this.flavor = flavor; - } - - /** - * - * @return - * The ipAddresses - */ - @JsonProperty("ipAddresses") - public List getIpAddresses() { - return ipAddresses; - } - - /** - * - * @param ipAddresses - * The ipAddresses - */ - @JsonProperty("ipAddresses") - public void setIpAddresses(List ipAddresses) { - this.ipAddresses = ipAddresses; - } - - /** - * - * @return - * The vserverLink - */ - @JsonProperty("vserverLink") - public String getVserverLink() { - return vserverLink; - } - - /** - * - * @param vserverLink - * The vserverLink - */ - @JsonProperty("vserverLink") - public void setVserverLink(String vserverLink) { - this.vserverLink = vserverLink; - } - - /** - * - * @return - * The relationshipList - */ - @JsonProperty("relationshipList") - public RelationshipList getRelationshipList() { - return relationshipList; - } - - /** - * - * @param relationshipList - * The relationshipList - */ - @JsonProperty("relationshipList") - public void setRelationshipList(RelationshipList relationshipList) { - this.relationshipList = relationshipList; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/FormattedQueryRequestData.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/FormattedQueryRequestData.java deleted file mode 100644 index 78d890aa..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/FormattedQueryRequestData.java +++ /dev/null @@ -1,83 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.query; - -import java.util.List; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -import com.fasterxml.jackson.annotation.JsonProperty; - -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "", propOrder = { - "start", - "query" -}) -@XmlRootElement(name = "query-request") -public class FormattedQueryRequestData implements AAIDatum { - - @JsonProperty("start") - protected List start; - - @JsonProperty("query") - private String query; - - @JsonProperty("start") - public List getStart () - { - return start; - } - - @JsonProperty("start") - public void setStart (List start) - { - this.start = start; - } - - @JsonProperty("query") - public String getQuery () - { - return query; - } - - @JsonProperty("query") - public void setQuery (String query) - { - this.query = query; - } - - @Override - public String toString() - { - return " [start = "+start+", query = "+query+"]"; - } - - public String getResourceVersion() { - return null; - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/FormattedQueryResultList.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/FormattedQueryResultList.java deleted file mode 100644 index 48b2a60b..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/FormattedQueryResultList.java +++ /dev/null @@ -1,59 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.query; - -import java.util.List; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import org.openecomp.sdnc.sli.aai.data.AAIDatum; - -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "", propOrder = { - "results" -}) -@XmlRootElement(name = "result-list") -public class FormattedQueryResultList implements AAIDatum { - - @XmlElement(name = "results") - private List results; - @XmlElement(name = "results") - public List getResults () - { - return results; - } - @XmlElement(name = "results") - public void setResults (List results) - { - this.results = results; - } - - @Override - public String toString() - { - return "ClassPojo [results = "+results+"]"; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/InstanceFilter.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/InstanceFilter.java deleted file mode 100644 index 33f1fec2..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/InstanceFilter.java +++ /dev/null @@ -1,133 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.query; - -import java.util.HashMap; -import java.util.Map; - -import javax.annotation.Generated; - -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -import org.openecomp.aai.inventory.v10.L3Network; -import org.openecomp.aai.inventory.v10.Pnf; -import org.openecomp.aai.inventory.v10.LogicalLink; -import org.openecomp.aai.inventory.v10.ServiceInstance; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "logical-link", - "pnf", - "l3-network", - "service-instance" -}) -public class InstanceFilter { - - @JsonProperty("logical-link") - private LogicalLink logicalLink; - @JsonProperty("pnf") - private Pnf pnf; - @JsonProperty("l3-network") - private L3Network l3Network; - @JsonProperty("service-instance") - private ServiceInstance serviceInstance; - - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The logicalLink - */ - @JsonProperty("logical-link") - public LogicalLink getLogicalLink() { - return logicalLink; - } - - /** - * - * @param logicalLink - * The logical-link - */ - @JsonProperty("logical-link") - public void setLogicalLink(LogicalLink logicalLink) { - this.logicalLink = logicalLink; - } - - /** - * - * @return - * The pnf - */ - @JsonProperty("pnf") - public Pnf getPnf() { - return pnf; - } - - /** - * - * @param pnf - * The pnf - */ - @JsonProperty("pnf") - public void setPnf(Pnf pnf) { - this.pnf = pnf; - } - - @JsonProperty("l3-network") - public L3Network getL3Network() { - return l3Network; - } - - @JsonProperty("l3-network") - public void setL3Network(L3Network l3Network) { - this.l3Network = l3Network; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - - @JsonProperty("service-instance") - public ServiceInstance getServiceInstance() { - return serviceInstance; - } - - @JsonProperty("service-instance") - public void setServiceInstance(ServiceInstance serviceInstance) { - this.serviceInstance = serviceInstance; - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/InstanceFilters.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/InstanceFilters.java deleted file mode 100644 index d38beed0..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/InstanceFilters.java +++ /dev/null @@ -1,78 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.query; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "instance-filter" -}) -public class InstanceFilters { - - @JsonProperty("instance-filter") - private List instanceFilter = new ArrayList(); - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The instanceFilter - */ - @JsonProperty("instance-filter") - public List getInstanceFilter() { - return instanceFilter; - } - - /** - * - * @param instanceFilter - * The instance-filter - */ - @JsonProperty("instance-filter") - public void setInstanceFilter(List instanceFilter) { - this.instanceFilter = instanceFilter; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/NamedQuery.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/NamedQuery.java deleted file mode 100644 index 5b20903d..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/NamedQuery.java +++ /dev/null @@ -1,76 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.query; - -import java.util.HashMap; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "named-query-uuid" -}) -public class NamedQuery { - - @JsonProperty("named-query-uuid") - private String namedQueryUuid; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The namedQueryUuid - */ - @JsonProperty("named-query-uuid") - public String getNamedQueryUuid() { - return namedQueryUuid; - } - - /** - * - * @param namedQueryUuid - * The named-query-uuid - */ - @JsonProperty("named-query-uuid") - public void setNamedQueryUuid(String namedQueryUuid) { - this.namedQueryUuid = namedQueryUuid; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/NamedQueryData.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/NamedQueryData.java deleted file mode 100644 index e8a77529..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/NamedQueryData.java +++ /dev/null @@ -1,101 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.query; - -import java.util.HashMap; -import java.util.Map; -import javax.annotation.Generated; - -import org.openecomp.sdnc.sli.aai.data.AAIDatum; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "query-parameters", - "instance-filters" -}) -public class NamedQueryData implements AAIDatum { - - @JsonProperty("query-parameters") - private QueryParameters queryParameters; - @JsonProperty("instance-filters") - private InstanceFilters instanceFilters; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The queryParameters - */ - @JsonProperty("query-parameters") - public QueryParameters getQueryParameters() { - return queryParameters; - } - - /** - * - * @param queryParameters - * The query-parameters - */ - @JsonProperty("query-parameters") - public void setQueryParameters(QueryParameters queryParameters) { - this.queryParameters = queryParameters; - } - - /** - * - * @return - * The instanceFilters - */ - @JsonProperty("instance-filters") - public InstanceFilters getInstanceFilters() { - return instanceFilters; - } - - /** - * - * @param instanceFilters - * The instance-filters - */ - @JsonProperty("instance-filters") - public void setInstanceFilters(InstanceFilters instanceFilters) { - this.instanceFilters = instanceFilters; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/QueryParameters.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/QueryParameters.java deleted file mode 100644 index bb4498cf..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/QueryParameters.java +++ /dev/null @@ -1,76 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.query; - -import java.util.HashMap; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "named-query" -}) -public class QueryParameters { - - @JsonProperty("named-query") - private NamedQuery namedQuery; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The namedQuery - */ - @JsonProperty("named-query") - public NamedQuery getNamedQuery() { - return namedQuery; - } - - /** - * - * @param namedQuery - * The named-query - */ - @JsonProperty("named-query") - public void setNamedQuery(NamedQuery namedQuery) { - this.namedQuery = namedQuery; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/Results.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/Results.java deleted file mode 100644 index 2931a7e1..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/query/Results.java +++ /dev/null @@ -1,84 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.query; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import org.openecomp.aai.inventory.v10.*; - - -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "", propOrder = { - "genericVnf", - "pserver", - "complex" -}) -@XmlRootElement(name = "results") -public class Results { - - @XmlElement(name = "generic-vnf") - private GenericVnf genericVnf; - - @XmlElement(name = "complex") - private Complex complex; - - @XmlElement(name = "pserver") - private Pserver pserver; - - - @XmlElement(name = "generic-vnf") - public GenericVnf getGenericVnf () - { - return genericVnf; - } - @XmlElement(name = "generic-vnf") - public void setGenericVnf (GenericVnf genericVnf) - { - this.genericVnf = genericVnf; - } - - @Override - public String toString() - { - return " [generic-vnf = "+genericVnf+"]"; - } - @XmlElement(name = "complex") - public Complex getComplex() { - return complex; - } - @XmlElement(name = "complex") - public void setComplex(Complex complex) { - this.complex = complex; - } - @XmlElement(name = "pserver") - public Pserver getPserver() { - return pserver; - } - @XmlElement(name = "pserver") - public void setPserver(Pserver pserver) { - this.pserver = pserver; - } -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/Action.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/Action.java deleted file mode 100644 index 296a3713..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/Action.java +++ /dev/null @@ -1,101 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.update; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "action-data", - "action-type" -}) -public class Action { - - @JsonProperty("action-data") - private List actionData = new ArrayList(); - @JsonProperty("action-type") - private String actionType; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The actionData - */ - @JsonProperty("action-data") - public List getActionData() { - return actionData; - } - - /** - * - * @param actionData - * The action-data - */ - @JsonProperty("action-data") - public void setActionData(List actionData) { - this.actionData = actionData; - } - - /** - * - * @return - * The actionType - */ - @JsonProperty("action-type") - public String getActionType() { - return actionType; - } - - /** - * - * @param actionType - * The action-type - */ - @JsonProperty("action-type") - public void setActionType(String actionType) { - this.actionType = actionType; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/ActionDatum.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/ActionDatum.java deleted file mode 100644 index 3dfb9c37..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/ActionDatum.java +++ /dev/null @@ -1,99 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.update; - -import java.util.HashMap; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "property-name", - "property-value" -}) -public class ActionDatum { - - @JsonProperty("property-name") - private String propertyName; - @JsonProperty("property-value") - private String propertyValue; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The propertyName - */ - @JsonProperty("property-name") - public String getPropertyName() { - return propertyName; - } - - /** - * - * @param propertyName - * The property-name - */ - @JsonProperty("property-name") - public void setPropertyName(String propertyName) { - this.propertyName = propertyName; - } - - /** - * - * @return - * The propertyValue - */ - @JsonProperty("property-value") - public String getPropertyValue() { - return propertyValue; - } - - /** - * - * @param propertyValue - * The property-value - */ - @JsonProperty("property-value") - public void setPropertyValue(String propertyValue) { - this.propertyValue = propertyValue; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/Update.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/Update.java deleted file mode 100644 index a092b6b9..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/Update.java +++ /dev/null @@ -1,124 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.update; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "update-node-type", - "update-node-key", - "action" -}) -public class Update { - - @JsonProperty("update-node-type") - private String updateNodeType; - @JsonProperty("action") - private List action = new ArrayList(); - @JsonProperty("update-node-key") - private List updateNodeKey = new ArrayList(); - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The updateNodeType - */ - @JsonProperty("update-node-type") - public String getUpdateNodeType() { - return updateNodeType; - } - - /** - * - * @param updateNodeType - * The update-node-type - */ - @JsonProperty("update-node-type") - public void setUpdateNodeType(String updateNodeType) { - this.updateNodeType = updateNodeType; - } - - /** - * - * @return - * The action - */ - @JsonProperty("action") - public List getAction() { - return action; - } - - /** - * - * @param action - * The action - */ - @JsonProperty("action") - public void setAction(List action) { - this.action = action; - } - - /** - * - * @return - * The updateNodeKey - */ - @JsonProperty("update-node-key") - public List getUpdateNodeKey() { - return updateNodeKey; - } - - /** - * - * @param updateNodeKey - * The update-node-key - */ - @JsonProperty("update-node-key") - public void setUpdateNodeKey(List updateNodeKey) { - this.updateNodeKey = updateNodeKey; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/UpdateNodeKey.java b/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/UpdateNodeKey.java deleted file mode 100644 index ffc5cc0d..00000000 --- a/aai-service/provider/src/main/java/org/openecomp/sdnc/sli/aai/update/UpdateNodeKey.java +++ /dev/null @@ -1,99 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.update; - -import java.util.HashMap; -import java.util.Map; -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - "key-name", - "key-value" -}) -public class UpdateNodeKey { - - @JsonProperty("key-name") - private String keyName; - @JsonProperty("key-value") - private String keyValue; - @JsonIgnore - private Map additionalProperties = new HashMap(); - - /** - * - * @return - * The keyName - */ - @JsonProperty("key-name") - public String getKeyName() { - return keyName; - } - - /** - * - * @param keyName - * The key-name - */ - @JsonProperty("key-name") - public void setKeyName(String keyName) { - this.keyName = keyName; - } - - /** - * - * @return - * The keyValue - */ - @JsonProperty("key-value") - public String getKeyValue() { - return keyValue; - } - - /** - * - * @param keyValue - * The key-value - */ - @JsonProperty("key-value") - public void setKeyValue(String keyValue) { - this.keyValue = keyValue; - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/aai-service/provider/src/main/resources/aai-schema-bindings.xjb b/aai-service/provider/src/main/resources/aai-schema-bindings.xjb index e6292fa1..47d1bc2d 100755 --- a/aai-service/provider/src/main/resources/aai-schema-bindings.xjb +++ b/aai-service/provider/src/main/resources/aai-schema-bindings.xjb @@ -5,7 +5,7 @@ jxb:extensionBindingPrefixes="xjc"> - + diff --git a/aai-service/provider/src/test/java/org/onap/sli/adaptors/aai/r1607/R1607AutoGeneratedTest.java b/aai-service/provider/src/test/java/org/onap/sli/adaptors/aai/r1607/R1607AutoGeneratedTest.java new file mode 100644 index 00000000..8bd2b664 --- /dev/null +++ b/aai-service/provider/src/test/java/org/onap/sli/adaptors/aai/r1607/R1607AutoGeneratedTest.java @@ -0,0 +1,489 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 ONAP Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.adaptors.aai.r1607; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; + +import java.io.File; +import java.io.IOException; +import java.lang.annotation.Annotation; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.net.URL; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import javax.xml.bind.SchemaOutputResolver; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.transform.Result; +import javax.xml.transform.stream.StreamResult; + +import org.apache.commons.lang.RandomStringUtils; +import org.apache.commons.lang.StringUtils; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; +import org.junit.runners.MethodSorters; +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; +import org.onap.ccsdk.sli.adaptors.aai.AAIClient; +import org.onap.ccsdk.sli.adaptors.aai.AAIDeclarations; +import org.onap.ccsdk.sli.adaptors.aai.AAIRequest; +import org.onap.ccsdk.sli.adaptors.aai.AAIService; +import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum; +import org.openecomp.aai.inventory.v10.GenericVnf; +import org.openecomp.aai.inventory.v10.InventoryResponseItems; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.ObjectMapper; + + + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class R1607AutoGeneratedTest { + + private static final Logger LOG = LoggerFactory.getLogger(R1607AutoGeneratedTest.class); + + protected static AAIClient client; + + protected Map cache = new HashMap(); + + @BeforeClass + public static void setUp() throws Exception { +// super.setUp(); + URL url = AAIService.class.getResource(AAIService.AAICLIENT_PROPERTIES); + client = new AAIService(url); + LOG.info("\nTaicAAIResourceTest.setUp\n"); + } + + @AfterClass + public static void tearDown() throws Exception { +// super.tearDown(); + client = null; + LOG.info("----------------------- AAIResourceTest.tearDown -----------------------"); + } + + +// @Test + public void test01AutoGeneratedRequest() { + + String[] requestDefinition = { + "query|generic-vnf|generic-vnf.vnf-id:assign:value:bnfm0001v-1147" + }; + + for(String line : requestDefinition){ + // parse request line resource | key structure + String[] segments = line.split("\\|"); + String action = segments[0]; + String resource = segments[1]; + String[] tmpKeys = segments[2].split("&"); + + + String localId = null; + + List keys = new ArrayList(); + String keyLine = null; + + for(String instruction : tmpKeys) { + String[] parts = instruction.split(":"); + String identifier = parts[0]; + String method = parts[2]; + + if(identifier.startsWith(resource)) { + localId = identifier; + } else if(identifier.startsWith("l-interface") && "l2-bridge-bgf".equals(resource)) { + localId = identifier; + } else if(identifier.startsWith("l-interface") && "l2-bridge-sbg".equals(resource)) { + localId = identifier; + } + + switch(parts[1]) { + case "assign": + String postProcesss = parts[3]; + keyLine = processAssign(identifier, method, postProcesss); + if(keyLine != null && !keyLine.trim().isEmpty()) { + keys.add(keyLine); + } + break; + case "cached": + keyLine = processCached(identifier, method); + if(keyLine != null && !keyLine.trim().isEmpty()) { + keys.add(keyLine); + } + break; + } + + } + + switch(action){ + case "save": + List x = Arrays.asList(localId.split("\\.")); + + testAutoGeneratedSaveRequest(resource, keys, x.get(x.size() - 1), cache.get(localId)); + break; + case "query": + test03AutoGeneratedQueryRequest(resource, keys); + break; + case "delete": + test03AutoGeneratedDeleteRequest(resource, keys); + break; + } + } + + LOG.info("done"); + } + + + public void testAutoGeneratedSaveRequest(String resource, List requestKeys, String identifier, String idValue) { + LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------"); + + try + { + Map nameValues = keyToHashMap(StringUtils.join(requestKeys, " AND "), new SvcLogicContext()); + AAIRequest request = AAIRequest.createRequest(resource, nameValues); + Class resourceClass = (Class) (request==null ? GenericVnf.class : request.getModelClass()); + + Map data = new HashMap(); + + for(Field field : resourceClass.getDeclaredFields()) { + String type = field.getType().getName(); + if(type.startsWith("java.lang.")){ + Annotation[] fieldAnnotations = field.getAnnotations(); + for(int i = 0; i < fieldAnnotations.length; i++) { + Annotation a = fieldAnnotations[i]; + if(a instanceof JsonProperty){ + JsonProperty pa = (JsonProperty)a; + String name = pa.value(); + String value; + switch(type) { + case "java.lang.Integer": + case "java.lang.Long": + value = RandomStringUtils.random(6, false, true); + break; + case "java.lang.Boolean": + value = "false"; + break; + default: + if(name.equals(identifier)) { + value = idValue; + } else { + value = RandomStringUtils.random(10, true, false); + } + } + data.put(name, value); + } else + if(a instanceof javax.xml.bind.annotation.XmlElement) { + XmlElement xe = (XmlElement)a; + String name = xe.name(); + if("link-type".equals(name)){ + data.put(name, "roadmTail"); + continue; + } + if("operational-status".equals(name)){ + data.put(name, "available"); + continue; + } + String value; + switch(type) { + case "java.lang.Integer": + case "java.lang.Long": + value = RandomStringUtils.random(6, false, true); + break; + case "java.lang.Boolean": + value = "false"; + break; + default: + if(name.equals(identifier)) { + value = idValue; + } else { + value = RandomStringUtils.random(10, true, false); + } + } + data.put(name, value); + } + } + } + } + + SvcLogicContext ctx = new SvcLogicContext(); + + data.remove("resource-version"); + + QueryStatus resp = null; + + //(String resource, boolean force, boolean localOnly, String key, Map parms, String prefix, SvcLogicContext ctx) + resp = client.save(resource, false, false, StringUtils.join(requestKeys, " AND "), data, "aaidata", ctx); + } + catch (Throwable e) + { + LOG.error("Caught exception", e); + fail("Caught exception"); + } + } + + public void test03AutoGeneratedQueryRequest(String resource, List requestKeys) { + LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------"); + + SvcLogicContext ctx = new SvcLogicContext(); + try + { + + QueryStatus response = null; + + response = client.query(resource, false, null, StringUtils.join(requestKeys, " AND "), "aaiTest", null, ctx); + } + catch (Throwable e) + { + LOG.error("Caught exception", e); + fail("Caught exception"); + } + } + + + public void test03AutoGeneratedDeleteRequest(String resource, List requestKeys) { + LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------"); + + try + { + SvcLogicContext ctx = new SvcLogicContext(); + + QueryStatus response = null; + + response = client.delete(resource, StringUtils.join(requestKeys, " AND "), ctx); + } + catch (Throwable e) + { + LOG.error("Caught exception", e); + fail("Caught exception"); + } + } + + static ArrayList findSetters(Class c) { + ArrayList list = new ArrayList(); + Method[] methods = c.getDeclaredMethods(); + for (Method method : methods) + if (isGetter(method)) + list.add(method); + return list; + } + + + public static boolean isGetter(Method method) { + if (Modifier.isPublic(method.getModifiers()) && + method.getParameterTypes().length == 0) { + if (method.getName().matches("^get[A-Z].*") && + !method.getReturnType().equals(void.class)) + return true; + if (method.getName().matches("^is[A-Z].*") && + method.getReturnType().equals(boolean.class)) + return true; + } + return false; + } + + public static boolean isSetter(Method method) { + return Modifier.isPublic(method.getModifiers()) && + method.getReturnType().equals(void.class) && + method.getParameterTypes().length == 1 && + method.getName().matches("^set[A-Z].*"); + } + + private String processAssign(String identifier, String method, String postProcess) { + String value = null; + if("uuid".equals(method)) { + value = UUID.randomUUID().toString(); + } + + if("cache".equals(postProcess)) { + cache.put(identifier, value); + } + + if("value".equals(method)) { + cache.put(identifier, postProcess); + value = postProcess; + } + + String key = String.format("%s = '%s'", identifier, value); + return key; + } + + private String processCached(String identifier, String method) { + String value = cache.get(identifier); + + String key = String.format("%s = '%s'", identifier, value); + return key; + } + + protected HashMap keyToHashMap(String key, SvcLogicContext ctx) { + if (key == null) { + return (null); + } + + LOG.debug("Converting key [" + key + "] to where clause"); + + if (key.startsWith("'") && key.endsWith("'")) { + key = key.substring(1, key.length() - 1); + + LOG.debug("Stripped outer single quotes - key is now [" + key + "]"); + } + + String[] keyTerms = key.split("\\s+"); + + StringBuffer whereBuff = new StringBuffer(); + String term1 = null; + String op = null; + String term2 = null; + HashMap results = new HashMap(); + + for (int i = 0; i < keyTerms.length; i++) { + if (term1 == null) { + if ("and".equalsIgnoreCase(keyTerms[i]) + || "or".equalsIgnoreCase(keyTerms[i])) { + // Skip over ADD/OR + } else { + term1 = resolveTerm(keyTerms[i], ctx); + } + } else if (op == null) { + if ("==".equals(keyTerms[i])) { + op = "="; + } else { + op = keyTerms[i]; + } + } else { + term2 = resolveTerm(keyTerms[i], ctx); + term2 = term2.trim().replace("'", "").replace("$", "").replace("'", ""); + results.put(term1, term2); + + term1 = null; + op = null; + term2 = null; + } + } + + return (results); + } + + private String resolveTerm(String term, SvcLogicContext ctx) { + if (term == null) { + return (null); + } + + LOG.debug("resolveTerm: term is " + term); + + if (term.startsWith("$") && (ctx != null)) { + // Resolve any index variables. + + return ("'" + resolveCtxVariable(term.substring(1), ctx) + "'"); + } else if (term.startsWith("'") || term.startsWith("\"")) { + return (term); + } else { + return (term.replaceAll("-", "_")); + + } + + } + + private String resolveCtxVariable(String ctxVarName, SvcLogicContext ctx) { + + if (ctxVarName.indexOf('[') == -1) { + // Ctx variable contains no arrays + return (ctx.getAttribute(ctxVarName)); + } + + // Resolve any array references + StringBuffer sbuff = new StringBuffer(); + String[] ctxVarParts = ctxVarName.split("\\["); + sbuff.append(ctxVarParts[0]); + for (int i = 1; i < ctxVarParts.length; i++) { + if (ctxVarParts[i].startsWith("$")) { + int endBracketLoc = ctxVarParts[i].indexOf("]"); + if (endBracketLoc == -1) { + // Missing end bracket ... give up parsing + LOG.warn("Variable reference " + ctxVarName + + " seems to be missing a ']'"); + return (ctx.getAttribute(ctxVarName)); + } + + String idxVarName = ctxVarParts[i].substring(1, endBracketLoc); + String remainder = ctxVarParts[i].substring(endBracketLoc); + + sbuff.append("["); + sbuff.append(ctx.getAttribute(idxVarName)); + sbuff.append(remainder); + + } else { + // Index is not a variable reference + sbuff.append("["); + sbuff.append(ctxVarParts[i]); + } + } + + return (ctx.getAttribute(sbuff.toString())); + } + +// @Test + public void test04VceDataPost() { + LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------"); + + try + { + URL resource = this.getClass().getResource("/json/tails4.json"); + + LOG.info("Resource is " + resource.getFile()); + File requestFile = new File(resource.getFile()); + if(!requestFile.exists()) { + fail("Test file does not exist"); + } + SvcLogicContext ctx = new SvcLogicContext(); + ObjectMapper mapper = AAIService.getObjectMapper(); + InventoryResponseItems request = mapper.readValue(requestFile, InventoryResponseItems.class); + Map subnetsList = mapper.convertValue(request, Map.class); + AAIDeclarations.class.cast(client).writeMap(subnetsList, "aaiTmp", ctx); + assertNotNull(request); + + } + catch (Exception e) + { + LOG.error("Caught exception", e); + fail("Caught exception"); + } + } + +static class MySchemaOutputResolver extends SchemaOutputResolver { + + public Result createOutput(String namespaceURI, String suggestedFileName) throws IOException { + File file = new File(suggestedFileName); + StreamResult result = new StreamResult(file); + result.setSystemId(file.getAbsolutePath()); + return result; + } + + } +} diff --git a/aai-service/provider/src/test/java/org/openecomp/sdnc/sli/aai/r1607/R1607AutoGeneratedTest.java b/aai-service/provider/src/test/java/org/openecomp/sdnc/sli/aai/r1607/R1607AutoGeneratedTest.java deleted file mode 100644 index 15a7647e..00000000 --- a/aai-service/provider/src/test/java/org/openecomp/sdnc/sli/aai/r1607/R1607AutoGeneratedTest.java +++ /dev/null @@ -1,489 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.sli.aai.r1607; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.fail; - -import java.io.File; -import java.io.IOException; -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.net.URL; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import javax.xml.bind.SchemaOutputResolver; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.transform.Result; -import javax.xml.transform.stream.StreamResult; - -import org.apache.commons.lang.RandomStringUtils; -import org.apache.commons.lang.StringUtils; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.FixMethodOrder; -import org.junit.runners.MethodSorters; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; -import org.openecomp.aai.inventory.v10.GenericVnf; -import org.openecomp.aai.inventory.v10.InventoryResponseItems; -import org.openecomp.sdnc.sli.aai.AAIClient; -import org.openecomp.sdnc.sli.aai.AAIDeclarations; -import org.openecomp.sdnc.sli.aai.AAIRequest; -import org.openecomp.sdnc.sli.aai.AAIService; -import org.openecomp.sdnc.sli.aai.data.AAIDatum; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.ObjectMapper; - - - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class R1607AutoGeneratedTest { - - private static final Logger LOG = LoggerFactory.getLogger(R1607AutoGeneratedTest.class); - - protected static AAIClient client; - - protected Map cache = new HashMap(); - - @BeforeClass - public static void setUp() throws Exception { -// super.setUp(); - URL url = AAIService.class.getResource(AAIService.AAICLIENT_PROPERTIES); - client = new AAIService(url); - LOG.info("\nTaicAAIResourceTest.setUp\n"); - } - - @AfterClass - public static void tearDown() throws Exception { -// super.tearDown(); - client = null; - LOG.info("----------------------- AAIResourceTest.tearDown -----------------------"); - } - - -// @Test - public void test01AutoGeneratedRequest() { - - String[] requestDefinition = { - "query|generic-vnf|generic-vnf.vnf-id:assign:value:bnfm0001v-1147" - }; - - for(String line : requestDefinition){ - // parse request line resource | key structure - String[] segments = line.split("\\|"); - String action = segments[0]; - String resource = segments[1]; - String[] tmpKeys = segments[2].split("&"); - - - String localId = null; - - List keys = new ArrayList(); - String keyLine = null; - - for(String instruction : tmpKeys) { - String[] parts = instruction.split(":"); - String identifier = parts[0]; - String method = parts[2]; - - if(identifier.startsWith(resource)) { - localId = identifier; - } else if(identifier.startsWith("l-interface") && "l2-bridge-bgf".equals(resource)) { - localId = identifier; - } else if(identifier.startsWith("l-interface") && "l2-bridge-sbg".equals(resource)) { - localId = identifier; - } - - switch(parts[1]) { - case "assign": - String postProcesss = parts[3]; - keyLine = processAssign(identifier, method, postProcesss); - if(keyLine != null && !keyLine.trim().isEmpty()) { - keys.add(keyLine); - } - break; - case "cached": - keyLine = processCached(identifier, method); - if(keyLine != null && !keyLine.trim().isEmpty()) { - keys.add(keyLine); - } - break; - } - - } - - switch(action){ - case "save": - List x = Arrays.asList(localId.split("\\.")); - - testAutoGeneratedSaveRequest(resource, keys, x.get(x.size() - 1), cache.get(localId)); - break; - case "query": - test03AutoGeneratedQueryRequest(resource, keys); - break; - case "delete": - test03AutoGeneratedDeleteRequest(resource, keys); - break; - } - } - - LOG.info("done"); - } - - - public void testAutoGeneratedSaveRequest(String resource, List requestKeys, String identifier, String idValue) { - LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------"); - - try - { - Map nameValues = keyToHashMap(StringUtils.join(requestKeys, " AND "), new SvcLogicContext()); - AAIRequest request = AAIRequest.createRequest(resource, nameValues); - Class resourceClass = (Class) (request==null ? GenericVnf.class : request.getModelClass()); - - Map data = new HashMap(); - - for(Field field : resourceClass.getDeclaredFields()) { - String type = field.getType().getName(); - if(type.startsWith("java.lang.")){ - Annotation[] fieldAnnotations = field.getAnnotations(); - for(int i = 0; i < fieldAnnotations.length; i++) { - Annotation a = fieldAnnotations[i]; - if(a instanceof JsonProperty){ - JsonProperty pa = (JsonProperty)a; - String name = pa.value(); - String value; - switch(type) { - case "java.lang.Integer": - case "java.lang.Long": - value = RandomStringUtils.random(6, false, true); - break; - case "java.lang.Boolean": - value = "false"; - break; - default: - if(name.equals(identifier)) { - value = idValue; - } else { - value = RandomStringUtils.random(10, true, false); - } - } - data.put(name, value); - } else - if(a instanceof javax.xml.bind.annotation.XmlElement) { - XmlElement xe = (XmlElement)a; - String name = xe.name(); - if("link-type".equals(name)){ - data.put(name, "roadmTail"); - continue; - } - if("operational-status".equals(name)){ - data.put(name, "available"); - continue; - } - String value; - switch(type) { - case "java.lang.Integer": - case "java.lang.Long": - value = RandomStringUtils.random(6, false, true); - break; - case "java.lang.Boolean": - value = "false"; - break; - default: - if(name.equals(identifier)) { - value = idValue; - } else { - value = RandomStringUtils.random(10, true, false); - } - } - data.put(name, value); - } - } - } - } - - SvcLogicContext ctx = new SvcLogicContext(); - - data.remove("resource-version"); - - QueryStatus resp = null; - - //(String resource, boolean force, boolean localOnly, String key, Map parms, String prefix, SvcLogicContext ctx) - resp = client.save(resource, false, false, StringUtils.join(requestKeys, " AND "), data, "aaidata", ctx); - } - catch (Throwable e) - { - LOG.error("Caught exception", e); - fail("Caught exception"); - } - } - - public void test03AutoGeneratedQueryRequest(String resource, List requestKeys) { - LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------"); - - SvcLogicContext ctx = new SvcLogicContext(); - try - { - - QueryStatus response = null; - - response = client.query(resource, false, null, StringUtils.join(requestKeys, " AND "), "aaiTest", null, ctx); - } - catch (Throwable e) - { - LOG.error("Caught exception", e); - fail("Caught exception"); - } - } - - - public void test03AutoGeneratedDeleteRequest(String resource, List requestKeys) { - LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------"); - - try - { - SvcLogicContext ctx = new SvcLogicContext(); - - QueryStatus response = null; - - response = client.delete(resource, StringUtils.join(requestKeys, " AND "), ctx); - } - catch (Throwable e) - { - LOG.error("Caught exception", e); - fail("Caught exception"); - } - } - - static ArrayList findSetters(Class c) { - ArrayList list = new ArrayList(); - Method[] methods = c.getDeclaredMethods(); - for (Method method : methods) - if (isGetter(method)) - list.add(method); - return list; - } - - - public static boolean isGetter(Method method) { - if (Modifier.isPublic(method.getModifiers()) && - method.getParameterTypes().length == 0) { - if (method.getName().matches("^get[A-Z].*") && - !method.getReturnType().equals(void.class)) - return true; - if (method.getName().matches("^is[A-Z].*") && - method.getReturnType().equals(boolean.class)) - return true; - } - return false; - } - - public static boolean isSetter(Method method) { - return Modifier.isPublic(method.getModifiers()) && - method.getReturnType().equals(void.class) && - method.getParameterTypes().length == 1 && - method.getName().matches("^set[A-Z].*"); - } - - private String processAssign(String identifier, String method, String postProcess) { - String value = null; - if("uuid".equals(method)) { - value = UUID.randomUUID().toString(); - } - - if("cache".equals(postProcess)) { - cache.put(identifier, value); - } - - if("value".equals(method)) { - cache.put(identifier, postProcess); - value = postProcess; - } - - String key = String.format("%s = '%s'", identifier, value); - return key; - } - - private String processCached(String identifier, String method) { - String value = cache.get(identifier); - - String key = String.format("%s = '%s'", identifier, value); - return key; - } - - protected HashMap keyToHashMap(String key, SvcLogicContext ctx) { - if (key == null) { - return (null); - } - - LOG.debug("Converting key [" + key + "] to where clause"); - - if (key.startsWith("'") && key.endsWith("'")) { - key = key.substring(1, key.length() - 1); - - LOG.debug("Stripped outer single quotes - key is now [" + key + "]"); - } - - String[] keyTerms = key.split("\\s+"); - - StringBuffer whereBuff = new StringBuffer(); - String term1 = null; - String op = null; - String term2 = null; - HashMap results = new HashMap(); - - for (int i = 0; i < keyTerms.length; i++) { - if (term1 == null) { - if ("and".equalsIgnoreCase(keyTerms[i]) - || "or".equalsIgnoreCase(keyTerms[i])) { - // Skip over ADD/OR - } else { - term1 = resolveTerm(keyTerms[i], ctx); - } - } else if (op == null) { - if ("==".equals(keyTerms[i])) { - op = "="; - } else { - op = keyTerms[i]; - } - } else { - term2 = resolveTerm(keyTerms[i], ctx); - term2 = term2.trim().replace("'", "").replace("$", "").replace("'", ""); - results.put(term1, term2); - - term1 = null; - op = null; - term2 = null; - } - } - - return (results); - } - - private String resolveTerm(String term, SvcLogicContext ctx) { - if (term == null) { - return (null); - } - - LOG.debug("resolveTerm: term is " + term); - - if (term.startsWith("$") && (ctx != null)) { - // Resolve any index variables. - - return ("'" + resolveCtxVariable(term.substring(1), ctx) + "'"); - } else if (term.startsWith("'") || term.startsWith("\"")) { - return (term); - } else { - return (term.replaceAll("-", "_")); - - } - - } - - private String resolveCtxVariable(String ctxVarName, SvcLogicContext ctx) { - - if (ctxVarName.indexOf('[') == -1) { - // Ctx variable contains no arrays - return (ctx.getAttribute(ctxVarName)); - } - - // Resolve any array references - StringBuffer sbuff = new StringBuffer(); - String[] ctxVarParts = ctxVarName.split("\\["); - sbuff.append(ctxVarParts[0]); - for (int i = 1; i < ctxVarParts.length; i++) { - if (ctxVarParts[i].startsWith("$")) { - int endBracketLoc = ctxVarParts[i].indexOf("]"); - if (endBracketLoc == -1) { - // Missing end bracket ... give up parsing - LOG.warn("Variable reference " + ctxVarName - + " seems to be missing a ']'"); - return (ctx.getAttribute(ctxVarName)); - } - - String idxVarName = ctxVarParts[i].substring(1, endBracketLoc); - String remainder = ctxVarParts[i].substring(endBracketLoc); - - sbuff.append("["); - sbuff.append(ctx.getAttribute(idxVarName)); - sbuff.append(remainder); - - } else { - // Index is not a variable reference - sbuff.append("["); - sbuff.append(ctxVarParts[i]); - } - } - - return (ctx.getAttribute(sbuff.toString())); - } - -// @Test - public void test04VceDataPost() { - LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------"); - - try - { - URL resource = this.getClass().getResource("/json/tails4.json"); - - LOG.info("Resource is " + resource.getFile()); - File requestFile = new File(resource.getFile()); - if(!requestFile.exists()) { - fail("Test file does not exist"); - } - SvcLogicContext ctx = new SvcLogicContext(); - ObjectMapper mapper = AAIService.getObjectMapper(); - InventoryResponseItems request = mapper.readValue(requestFile, InventoryResponseItems.class); - Map subnetsList = mapper.convertValue(request, Map.class); - AAIDeclarations.class.cast(client).writeMap(subnetsList, "aaiTmp", ctx); - assertNotNull(request); - - } - catch (Exception e) - { - LOG.error("Caught exception", e); - fail("Caught exception"); - } - } - -static class MySchemaOutputResolver extends SchemaOutputResolver { - - public Result createOutput(String namespaceURI, String suggestedFileName) throws IOException { - File file = new File(suggestedFileName); - StreamResult result = new StreamResult(file); - result.setSystemId(file.getAbsolutePath()); - return result; - } - - } -} diff --git a/aai-service/provider/src/test/resources/aaiclient.properties b/aai-service/provider/src/test/resources/aaiclient.properties index 260b5162..d1bd26fd 100644 --- a/aai-service/provider/src/test/resources/aaiclient.properties +++ b/aai-service/provider/src/test/resources/aaiclient.properties @@ -26,112 +26,112 @@ # # Certificate keystore and truststore # -org.openecomp.sdnc.sli.aai.ssl.trust=/opt/bvc/tls-client/truststore.client.jks -org.openecomp.sdnc.sli.aai.ssl.trust.psswd={truststore-password} -org.openecomp.sdnc.sli.aai.ssl.key=/opt/bvc/tls-client/keystore.client.jks -org.openecomp.sdnc.sli.aai.ssl.key.psswd={keystore-password} -org.openecomp.sdnc.sli.aai.host.certificate.ignore=true +org.onap.ccsdk.sli.adaptors.aai.ssl.trust=/opt/bvc/tls-client/truststore.client.jks +org.onap.ccsdk.sli.adaptors.aai.ssl.trust.psswd={truststore-password} +org.onap.ccsdk.sli.adaptors.aai.ssl.key=/opt/bvc/tls-client/keystore.client.jks +org.onap.ccsdk.sli.adaptors.aai.ssl.key.psswd={keystore-password} +org.onap.ccsdk.sli.adaptors.aai.host.certificate.ignore=true -org.openecomp.sdnc.sli.aai.client.name=SDNC -org.openecomp.sdnc.sli.aai.client.psswd=SDNC +org.onap.ccsdk.sli.adaptors.aai.client.name=SDNC +org.onap.ccsdk.sli.adaptors.aai.client.psswd=SDNC -org.openecomp.sdnc.sli.aai.application=openECOMP +org.onap.ccsdk.sli.adaptors.aai.application=openECOMP # # Configuration file for A&AI Client # -org.openecomp.sdnc.sli.aai.uri=https://localhost:8443 +org.onap.ccsdk.sli.adaptors.aai.uri=https://localhost:8443 # query -org.openecomp.sdnc.sli.aai.path.query=/aai/v10/search/sdn-zone-query -org.openecomp.sdnc.sli.aai.query.nodes=/aai/v10/search/nodes-query?search-node-type={node-type}&filter={entity-identifier}:EQUALS:{entity-name} -org.openecomp.sdnc.sli.aai.query.generic=/aai/v10/search/generic-query?key={identifier}:{value}&start-node-type={start-node-type}&include=complex&depth=3 +org.onap.ccsdk.sli.adaptors.aai.path.query=/aai/v10/search/sdn-zone-query +org.onap.ccsdk.sli.adaptors.aai.query.nodes=/aai/v10/search/nodes-query?search-node-type={node-type}&filter={entity-identifier}:EQUALS:{entity-name} +org.onap.ccsdk.sli.adaptors.aai.query.generic=/aai/v10/search/generic-query?key={identifier}:{value}&start-node-type={start-node-type}&include=complex&depth=3 # named query -org.openecomp.sdnc.sli.aai.query.named=/aai/search/named-query +org.onap.ccsdk.sli.adaptors.aai.query.named=/aai/search/named-query #update -org.openecomp.sdnc.sli.aai.update=/aai/v10/actions/update +org.onap.ccsdk.sli.adaptors.aai.update=/aai/v10/actions/update # vce -org.openecomp.sdnc.sli.aai.path.vce =/aai/v10/network/vces/vce/ -org.openecomp.sdnc.sli.aai.path.vces=/aai/v10/network/vces/ +org.onap.ccsdk.sli.adaptors.aai.path.vce =/aai/v10/network/vces/vce/ +org.onap.ccsdk.sli.adaptors.aai.path.vces=/aai/v10/network/vces/ # customer -org.openecomp.sdnc.sli.aai.path.customer=/aai/v10/business/customers/customer/{customer-id} +org.onap.ccsdk.sli.adaptors.aai.path.customer=/aai/v10/business/customers/customer/{customer-id} # service subscription -org.openecomp.sdnc.sli.aai.path.service.subscription=/aai/v10/business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type} +org.onap.ccsdk.sli.adaptors.aai.path.service.subscription=/aai/v10/business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type} # service instance -org.openecomp.sdnc.sli.aai.path.svcinst=/aai/v10/business/customers/customer/{customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances -org.openecomp.sdnc.sli.aai.path.svcinst.query=/aai/v10/search/generic-query?key=service-instance.service-instance-id:{svc-instance-id}&start-node-type=service-instance&include=service-instance -org.openecomp.sdnc.sli.aai.path.service.instance=/aai/v10/business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id} +org.onap.ccsdk.sli.adaptors.aai.path.svcinst=/aai/v10/business/customers/customer/{customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances +org.onap.ccsdk.sli.adaptors.aai.path.svcinst.query=/aai/v10/search/generic-query?key=service-instance.service-instance-id:{svc-instance-id}&start-node-type=service-instance&include=service-instance +org.onap.ccsdk.sli.adaptors.aai.path.service.instance=/aai/v10/business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id} # tenant -org.openecomp.sdnc.sli.aai.path.tenant=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id} -org.openecomp.sdnc.sli.aai.path.tenant.query=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant?tenant-name={tenant-name} +org.onap.ccsdk.sli.adaptors.aai.path.tenant=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id} +org.onap.ccsdk.sli.adaptors.aai.path.tenant.query=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant?tenant-name={tenant-name} # vservers -org.openecomp.sdnc.sli.aai.path.vservers=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/ -org.openecomp.sdnc.sli.aai.path.vserver=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id} +org.onap.ccsdk.sli.adaptors.aai.path.vservers=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/ +org.onap.ccsdk.sli.adaptors.aai.path.vserver=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id} # vpls-pe -org.openecomp.sdnc.sli.aai.path.vpls.pes=/aai/v10/network/vpls-pes/ -org.openecomp.sdnc.sli.aai.path.vpls.pe =/aai/v10/network/vpls-pes/vpls-pe/ +org.onap.ccsdk.sli.adaptors.aai.path.vpls.pes=/aai/v10/network/vpls-pes/ +org.onap.ccsdk.sli.adaptors.aai.path.vpls.pe =/aai/v10/network/vpls-pes/vpls-pe/ # ctag-pool -org.openecomp.sdnc.sli.aai.path.ctag.pools=/aai/v10/cloud-infrastructure/complexes/complex/{physical-location-id}/ctag-pools -org.openecomp.sdnc.sli.aai.path.ctag.pool=/aai/v10/cloud-infrastructure/complexes/complex/{physical-location-id}/ctag-pools/ctag-pool/{target-pe}/{availability-zone-name} +org.onap.ccsdk.sli.adaptors.aai.path.ctag.pools=/aai/v10/cloud-infrastructure/complexes/complex/{physical-location-id}/ctag-pools +org.onap.ccsdk.sli.adaptors.aai.path.ctag.pool=/aai/v10/cloud-infrastructure/complexes/complex/{physical-location-id}/ctag-pools/ctag-pool/{target-pe}/{availability-zone-name} # #-------------- 1510 ---------------------- # # pservers -org.openecomp.sdnc.sli.aai.path.pservers=/aai/v10/cloud-infrastructure/pservers -org.openecomp.sdnc.sli.aai.path.pserver=/aai/v10/cloud-infrastructure/pservers/pserver/{hostname} +org.onap.ccsdk.sli.adaptors.aai.path.pservers=/aai/v10/cloud-infrastructure/pservers +org.onap.ccsdk.sli.adaptors.aai.path.pserver=/aai/v10/cloud-infrastructure/pservers/pserver/{hostname} # generic-vnf -#org.openecomp.sdnc.sli.aai.path.generic.vnfs=/aai/v10/network/generic-vnfs -#org.openecomp.sdnc.sli.aai.path.generic.vnf=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id} +#org.onap.ccsdk.sli.adaptors.aai.path.generic.vnfs=/aai/v10/network/generic-vnfs +#org.onap.ccsdk.sli.adaptors.aai.path.generic.vnf=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id} # dvs-switch -org.openecomp.sdnc.sli.aai.path.dvsswitches=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/dvs-switches -org.openecomp.sdnc.sli.aai.path.dvsswitch=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/dvs-switches/dvs-switch/{switch-name} +org.onap.ccsdk.sli.adaptors.aai.path.dvsswitches=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/dvs-switches +org.onap.ccsdk.sli.adaptors.aai.path.dvsswitch=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/dvs-switches/dvs-switch/{switch-name} # L3 Networks -org.openecomp.sdnc.sli.aai.path.l3networks=/aai/v10/network/l3-networks -org.openecomp.sdnc.sli.aai.path.l3network=/aai/v10/network/l3-networks/l3-network/{network-id} -org.openecomp.sdnc.sli.aai.path.l3network.query.name=/aai/v10/network/l3-networks/l3-network?network-name={network-name} +org.onap.ccsdk.sli.adaptors.aai.path.l3networks=/aai/v10/network/l3-networks +org.onap.ccsdk.sli.adaptors.aai.path.l3network=/aai/v10/network/l3-networks/l3-network/{network-id} +org.onap.ccsdk.sli.adaptors.aai.path.l3network.query.name=/aai/v10/network/l3-networks/l3-network?network-name={network-name} # P-Interfaces -org.openecomp.sdnc.sli.aai.path.pserver.pinterfaces=/aai/v10/cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces -org.openecomp.sdnc.sli.aai.path.pserver.pinterface=/aai/v10/cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name} +org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterfaces=/aai/v10/cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces +org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface=/aai/v10/cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name} # Physical Link -org.openecomp.sdnc.sli.aai.path.physical.links=/aai/v10/network/physical-links -org.openecomp.sdnc.sli.aai.path.physical.link=/aai/v10/network/physical-links/physical-link/{link-name} +org.onap.ccsdk.sli.adaptors.aai.path.physical.links=/aai/v10/network/physical-links +org.onap.ccsdk.sli.adaptors.aai.path.physical.link=/aai/v10/network/physical-links/physical-link/{link-name} # VPN Bindings -org.openecomp.sdnc.sli.aai.path.vpn.bindings=/aai/v10/network/vpn-bindings/ -org.openecomp.sdnc.sli.aai.path.vpn.binding=/aai/v10/network/vpn-bindings/vpn-binding/{vpn-id} +org.onap.ccsdk.sli.adaptors.aai.path.vpn.bindings=/aai/v10/network/vpn-bindings/ +org.onap.ccsdk.sli.adaptors.aai.path.vpn.binding=/aai/v10/network/vpn-bindings/vpn-binding/{vpn-id} # VNF IMAGES -org.openecomp.sdnc.sli.aai.path.vnf.images=/aai/v10/service-design-and-creation/vnf-images -org.openecomp.sdnc.sli.aai.path.vnf.image=/aai/v10/service-design-and-creation/vnf-images/vnf-image/{att-uuid} -org.openecomp.sdnc.sli.aai.path.vnf.image.query=/aai/v10/service-design-and-creation/vnf-images/vnf-image?application={application_model}&application-vendor={application_vendor} +org.onap.ccsdk.sli.adaptors.aai.path.vnf.images=/aai/v10/service-design-and-creation/vnf-images +org.onap.ccsdk.sli.adaptors.aai.path.vnf.image=/aai/v10/service-design-and-creation/vnf-images/vnf-image/{att-uuid} +org.onap.ccsdk.sli.adaptors.aai.path.vnf.image.query=/aai/v10/service-design-and-creation/vnf-images/vnf-image?application={application_model}&application-vendor={application_vendor} # UBB Notify -org.openecomp.sdnc.sli.aai.path.notify=/aai/v10/actions/notify -org.openecomp.sdnc.sli.aai.notify.selflink.fqdn=https://sdncodl.it.us.aic.cip.att.com:8443/restconf/config/L3SDN-API:services/layer3-service-list/{service-instance-id} -org.openecomp.sdnc.sli.aai.notify.selflink.avpn=https://sdncodl-conexus.it.us.02.aic.cip.att.com:8543/restconf/config/L3AVPN-EVC-API:services/service-list/{service-instance-id}/service-data/avpn-logicalchannel-information +org.onap.ccsdk.sli.adaptors.aai.path.notify=/aai/v10/actions/notify +org.onap.ccsdk.sli.adaptors.aai.notify.selflink.fqdn=https://sdncodl.it.us.aic.cip.att.com:8443/restconf/config/L3SDN-API:services/layer3-service-list/{service-instance-id} +org.onap.ccsdk.sli.adaptors.aai.notify.selflink.avpn=https://sdncodl-conexus.it.us.02.aic.cip.att.com:8543/restconf/config/L3AVPN-EVC-API:services/service-list/{service-instance-id}/service-data/avpn-logicalchannel-information # Service -org.openecomp.sdnc.sli.aai.path.service=/aai/v10/service-design-and-creation/services/service/{service-id} -org.openecomp.sdnc.sli.aai.path.services=/aai/v10/service-design-and-creation/services +org.onap.ccsdk.sli.adaptors.aai.path.service=/aai/v10/service-design-and-creation/services/service/{service-id} +org.onap.ccsdk.sli.adaptors.aai.path.services=/aai/v10/service-design-and-creation/services # @@ -139,99 +139,99 @@ org.openecomp.sdnc.sli.aai.path.services=/aai/v10/service-design-and-creation/se # # VNFC -org.openecomp.sdnc.sli.aai.path.vnfc=/aai/v10/network/vnfcs/vnfc/{vnfc-name} +org.onap.ccsdk.sli.adaptors.aai.path.vnfc=/aai/v10/network/vnfcs/vnfc/{vnfc-name} # site-pair -org.openecomp.sdnc.sli.aai.path.site.pair=/aai/v10/network/site-pair-sets/site-pair-set/{site-pair-set-id}/routing-instances/routing-instance/{routing-instance-id}/site-pairs/site-pair/{site-pair-id} +org.onap.ccsdk.sli.adaptors.aai.path.site.pair=/aai/v10/network/site-pair-sets/site-pair-set/{site-pair-set-id}/routing-instances/routing-instance/{routing-instance-id}/site-pairs/site-pair/{site-pair-id} # routing-instance -org.openecomp.sdnc.sli.aai.path.routing.instance=/aai/v10/network/site-pair-sets/site-pair-set/{site-pair-set-id}/routing-instances/routing-instance/{routing-instance-id} +org.onap.ccsdk.sli.adaptors.aai.path.routing.instance=/aai/v10/network/site-pair-sets/site-pair-set/{site-pair-set-id}/routing-instances/routing-instance/{routing-instance-id} # site-pair-set -org.openecomp.sdnc.sli.aai.path.site.pair.set=/aai/v10/network/site-pair-sets/site-pair-set/{site-pair-set-id} +org.onap.ccsdk.sli.adaptors.aai.path.site.pair.set=/aai/v10/network/site-pair-sets/site-pair-set/{site-pair-set-id} # license key resource -org.openecomp.sdnc.sli.aai.path.license.acquire=/aai/v10/actions/assignment/license-management/assignment-group-uuid/{assignment-group-uuid} -org.openecomp.sdnc.sli.aai.path.license=/aai/v10/license-management/license-key-resources/license-key-resource/{att-uuid} +org.onap.ccsdk.sli.adaptors.aai.path.license.acquire=/aai/v10/actions/assignment/license-management/assignment-group-uuid/{assignment-group-uuid} +org.onap.ccsdk.sli.adaptors.aai.path.license=/aai/v10/license-management/license-key-resources/license-key-resource/{att-uuid} # logical-link -org.openecomp.sdnc.sli.aai.path.logical.link =/aai/v10/network/logical-links/logical-link/{link-name} +org.onap.ccsdk.sli.adaptors.aai.path.logical.link =/aai/v10/network/logical-links/logical-link/{link-name} # virtual-data-center -org.openecomp.sdnc.sli.aai.path.virtual.data.center=/aai/v10/cloud-infrastructure/virtual-data-centers/virtual-data-center/{vdc-id} +org.onap.ccsdk.sli.adaptors.aai.path.virtual.data.center=/aai/v10/cloud-infrastructure/virtual-data-centers/virtual-data-center/{vdc-id} # wan-connector -org.openecomp.sdnc.sli.aai.path.wan.connector=/aai/v10/business/connectors/connector/{resource-instance-id} +org.onap.ccsdk.sli.adaptors.aai.path.wan.connector=/aai/v10/business/connectors/connector/{resource-instance-id} # l-interface -org.openecomp.sdnc.sli.aai.path.lag.interface.l.interface=/aai/v10/cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{lag-interface.interface-name}/l-interfaces/l-interface/{interface-name} -org.openecomp.sdnc.sli.aai.path.p.interface.l.interface=/aai/v10/cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{p-interface.interface-name}/l-interfaces/l-interface/{interface-name} +org.onap.ccsdk.sli.adaptors.aai.path.lag.interface.l.interface=/aai/v10/cloud-infrastructure/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{lag-interface.interface-name}/l-interfaces/l-interface/{interface-name} +org.onap.ccsdk.sli.adaptors.aai.path.p.interface.l.interface=/aai/v10/cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{p-interface.interface-name}/l-interfaces/l-interface/{interface-name} # l-interface pnf -org.openecomp.sdnc.sli.aai.path.lag.interface.l.interface.pnf=/aai/v10/network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{lag-interface.interface-name}/l-interfaces/l-interface/{interface-name} -org.openecomp.sdnc.sli.aai.path.p.interface.l.interface.pnf=/aai/v10/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{p-interface.interface-name}/l-interfaces/l-interface/{interface-name} +org.onap.ccsdk.sli.adaptors.aai.path.lag.interface.l.interface.pnf=/aai/v10/network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{lag-interface.interface-name}/l-interfaces/l-interface/{interface-name} +org.onap.ccsdk.sli.adaptors.aai.path.p.interface.l.interface.pnf=/aai/v10/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{p-interface.interface-name}/l-interfaces/l-interface/{interface-name} # subinterface -org.openecomp.sdnc.sli.aai.path.pnf.lag.interface.subinterface=/aai/v10/network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{lag-interface.interface-name}/l-interfaces/l-interface/{interface-name} -org.openecomp.sdnc.sli.aai.path.pnf.p.interface.l.interface=/aai/v10/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{p-interface.interface-name}/l-interfaces/l-interface/{interface-name} +org.onap.ccsdk.sli.adaptors.aai.path.pnf.lag.interface.subinterface=/aai/v10/network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{lag-interface.interface-name}/l-interfaces/l-interface/{interface-name} +org.onap.ccsdk.sli.adaptors.aai.path.pnf.p.interface.l.interface=/aai/v10/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{p-interface.interface-name}/l-interfaces/l-interface/{interface-name} # l3-interface-ipv4-address-list -org.openecomp.sdnc.sli.aai.path.l3.interface.ipv4.address.list=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} -org.openecomp.sdnc.sli.aai.path.vlan.l3.interface.ipv4.address.list=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} +org.onap.ccsdk.sli.adaptors.aai.path.l3.interface.ipv4.address.list=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} +org.onap.ccsdk.sli.adaptors.aai.path.vlan.l3.interface.ipv4.address.list=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} # l3-interface-ipv6-address-list -org.openecomp.sdnc.sli.aai.path.l3.interface.ipv6.address.list=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} -org.openecomp.sdnc.sli.aai.path.vlan.l3.interface.ipv6.address.list=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} +org.onap.ccsdk.sli.adaptors.aai.path.l3.interface.ipv6.address.list=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} +org.onap.ccsdk.sli.adaptors.aai.path.vlan.l3.interface.ipv6.address.list=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} # ipsec-configuration -org.openecomp.sdnc.sli.aai.path.ipsec.configuration=/aai/v10/network/ipsec-configurations/ipsec-configuration/{ipsec-configuration-id} +org.onap.ccsdk.sli.adaptors.aai.path.ipsec.configuration=/aai/v10/network/ipsec-configurations/ipsec-configuration/{ipsec-configuration-id} # vig server -org.openecomp.sdnc.sli.aai.path.vig.server=/aai/v10/network/ipsec-configurations/ipsec-configuration/{ipsec-configuration-id}/vig-servers/vig-server/{vig-address-type} +org.onap.ccsdk.sli.adaptors.aai.path.vig.server=/aai/v10/network/ipsec-configurations/ipsec-configuration/{ipsec-configuration-id}/vig-servers/vig-server/{vig-address-type} # l3-network -org.openecomp.sdnc.sli.aai.path.l3.network=/aai/v10/network/l3-networks/l3-network/{network-id} +org.onap.ccsdk.sli.adaptors.aai.path.l3.network=/aai/v10/network/l3-networks/l3-network/{network-id} # subnet -org.openecomp.sdnc.sli.aai.path.subnet=/aai/v10/network/l3-networks/l3-network/{network-id}/subnets/subnet/{subnet-id} +org.onap.ccsdk.sli.adaptors.aai.path.subnet=/aai/v10/network/l3-networks/l3-network/{network-id}/subnets/subnet/{subnet-id} # multicast-configuration -org.openecomp.sdnc.sli.aai.path.multicast.configuration=/aai/v10/network/multicast-configurations/multicast-configuration/{multicast-configuration-id} +org.onap.ccsdk.sli.adaptors.aai.path.multicast.configuration=/aai/v10/network/multicast-configurations/multicast-configuration/{multicast-configuration-id} -# org.openecomp.sdnc.sli.aai.path.l.interface.ipv4.address.list -org.openecomp.sdnc.sli.aai.path.l3-interface.ipv4.address.list=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} +# org.onap.ccsdk.sli.adaptors.aai.path.l.interface.ipv4.address.list +org.onap.ccsdk.sli.adaptors.aai.path.l3-interface.ipv4.address.list=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} -# org.openecomp.sdnc.sli.aai.path.l.interface.vlan.ipv4.address.list -org.openecomp.sdnc.sli.aai.path.l3-interface.vlan.ipv4.address.list=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} +# org.onap.ccsdk.sli.adaptors.aai.path.l.interface.vlan.ipv4.address.list +org.onap.ccsdk.sli.adaptors.aai.path.l3-interface.vlan.ipv4.address.list=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address} -# org.openecomp.sdnc.sli.aai.path.l.interface.ipv6.address.list -org.openecomp.sdnc.sli.aai.path.l3-interface.ipv6.address.list=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} +# org.onap.ccsdk.sli.adaptors.aai.path.l.interface.ipv6.address.list +org.onap.ccsdk.sli.adaptors.aai.path.l3-interface.ipv6.address.list=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address} # volume.group -org.openecomp.sdnc.sli.aai.path.volume.group=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/volume-groups/volume-group/{volume-group-id} +org.onap.ccsdk.sli.adaptors.aai.path.volume.group=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/volume-groups/volume-group/{volume-group-id} #cloud region -org.openecomp.sdnc.sli.aai.path.cloud.region=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id} +org.onap.ccsdk.sli.adaptors.aai.path.cloud.region=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id} # vf-module -org.openecomp.sdnc.sli.aai.path.vf.module=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/vf-modules/vf-module/{vf-module-id} +org.onap.ccsdk.sli.adaptors.aai.path.vf.module=/aai/v10/network/generic-vnfs/generic-vnf/{vnf-id}/vf-modules/vf-module/{vf-module-id} # network-policy -org.openecomp.sdnc.sli.aai.path.network.policy=/aai/v10/network/network-policies/network-policy/{network-policy-id} +org.onap.ccsdk.sli.adaptors.aai.path.network.policy=/aai/v10/network/network-policies/network-policy/{network-policy-id} # pnf -org.openecomp.sdnc.sli.aai.path.pnf=/aai/v10/network/pnfs/pnf/{pnf-name} +org.onap.ccsdk.sli.adaptors.aai.path.pnf=/aai/v10/network/pnfs/pnf/{pnf-name} # oam-network -org.openecomp.sdnc.sli.aai.path.oam.network=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/oam-networks/oam-network/{network-uuid} +org.onap.ccsdk.sli.adaptors.aai.path.oam.network=/aai/v10/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/oam-networks/oam-network/{network-uuid} # route-table-reference -org.openecomp.sdnc.sli.aai.path.route.table.reference=/aai/v10/network/route-table-references/route-table-reference/{route-table-reference-id} +org.onap.ccsdk.sli.adaptors.aai.path.route.table.reference=/aai/v10/network/route-table-references/route-table-reference/{route-table-reference-id} # # Formatting # -org.openecomp.sdnc.sli.aai.param.format=filter=%s:%s -org.openecomp.sdnc.sli.aai.param.vnf_type=vnf-type -org.openecomp.sdnc.sli.aai.param.physical.location.id=physical-location-id -org.openecomp.sdnc.sli.aai.param.service.type=service-type +org.onap.ccsdk.sli.adaptors.aai.param.format=filter=%s:%s +org.onap.ccsdk.sli.adaptors.aai.param.vnf_type=vnf-type +org.onap.ccsdk.sli.adaptors.aai.param.physical.location.id=physical-location-id +org.onap.ccsdk.sli.adaptors.aai.param.service.type=service-type -- cgit 1.2.3-korg