aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plans/dcaegen2-pmmapper/pmmapper/assets/config.json4
-rw-r--r--plans/dcaegen2-pmmapper/pmmapper/composefile/docker-compose-pmmapper.yml1
-rwxr-xr-xplans/dcaegen2-pmmapper/pmmapper/dmaapbc.sh44
-rw-r--r--plans/dcaegen2-pmmapper/pmmapper/setup.sh4
-rw-r--r--plans/dmaap-datarouter/dr-suite/docker-compose/node.properties103
-rwxr-xr-xplans/dmaap-datarouter/dr-suite/docker-compose/provserver.properties69
-rwxr-xr-xplans/dmaap-datarouter/dr-suite/setup.sh4
-rwxr-xr-xplans/dmaap-datarouter/dr-suite/teardown.sh2
-rw-r--r--plans/usecases/5G-bulkpm/assets/addSubscriber.json3
-rw-r--r--plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml6
-rw-r--r--plans/usecases/5G-bulkpm/setup.sh8
-rw-r--r--plans/vid/healthCheck/setup.sh2
-rw-r--r--plans/vid/healthCheck/teardown.sh1
-rw-r--r--scripts/vid/kill_containers_and_remove_dataFolders.sh5
-rw-r--r--tests/appc/cdt/cdt.robot5
-rw-r--r--tests/appc/cdt/common.robot2
-rw-r--r--tests/dcaegen2-pmmapper/pmmapper/assets/A_meas_result.xml24
-rw-r--r--tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot47
-rw-r--r--tests/usecases/5G-bulkpm/BulkpmE2E.robot10
-rw-r--r--tests/vid/resources/docker-compose.yml18
-rw-r--r--tests/vid/resources/simulators/Dockerfile14
-rw-r--r--tests/vid/resources/simulators/SO.py2
-rw-r--r--tests/vid/resources/simulators/test_data_assets/expected_aai_requests.json4
-rw-r--r--tests/vid/resources/simulators/test_data_assets/expected_aai_responses.json9
24 files changed, 291 insertions, 100 deletions
diff --git a/plans/dcaegen2-pmmapper/pmmapper/assets/config.json b/plans/dcaegen2-pmmapper/pmmapper/assets/config.json
index 5eec4380..79b32012 100644
--- a/plans/dcaegen2-pmmapper/pmmapper/assets/config.json
+++ b/plans/dcaegen2-pmmapper/pmmapper/assets/config.json
@@ -19,8 +19,8 @@
"type": "message_router",
"aaf_password": null,
"dmaap_info": {
- "topic_url": "https://message-router:3904/events/org.onap.dmaap.onapCSIT.pm_mapper",
- "client_role": "org.onap.dmaap.client.pub",
+ "topic_url": "http://message-router:3904/events/topic.org.onap.dmaap.mr.test1",
+ "client_role": "org.onap.dmaap.mr.topic",
"location": "csit-pmmapper",
"client_id": null
},
diff --git a/plans/dcaegen2-pmmapper/pmmapper/composefile/docker-compose-pmmapper.yml b/plans/dcaegen2-pmmapper/pmmapper/composefile/docker-compose-pmmapper.yml
index b14a73c6..a7f5b973 100644
--- a/plans/dcaegen2-pmmapper/pmmapper/composefile/docker-compose-pmmapper.yml
+++ b/plans/dcaegen2-pmmapper/pmmapper/composefile/docker-compose-pmmapper.yml
@@ -12,3 +12,4 @@ services:
extra_hosts:
- "dmaap-bc:BUSIP"
- "dmaap-dr-node:DRNODEIP"
+ - "message-router:DMAAPMRIP"
diff --git a/plans/dcaegen2-pmmapper/pmmapper/dmaapbc.sh b/plans/dcaegen2-pmmapper/pmmapper/dmaapbc.sh
index 14051121..14302589 100755
--- a/plans/dcaegen2-pmmapper/pmmapper/dmaapbc.sh
+++ b/plans/dcaegen2-pmmapper/pmmapper/dmaapbc.sh
@@ -1,22 +1,23 @@
#!/bin/bash
# $1 is the IP address of the buscontroller
+
# INITIALIZE: dmaap object
+echo $'\nInitializing /dmaap endpoint'
JSON=/tmp/dmaap.json
cat << EOF > $JSON
{
"version": "1",
-"topicNsRoot": "org.onap.dmaap",
+"topicNsRoot": "topic.org.onap.dmaap",
"drProvUrl": "https://dmaap-dr-prov:8443",
-"dmaapName": "DataRouter",
+"dmaapName": "mr",
"bridgeAdminTopic": "MM_AGENT_PROV"
}
EOF
-
-echo "Initializing /dmaap endpoint"
curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/dmaap
# INITIALIZE: dcaeLocation object
+echo $'\nInitializing /dcaeLocations endpoint'
JSON=/tmp/dcaeLocation.json
cat << EOF > $JSON
{
@@ -26,26 +27,25 @@ cat << EOF > $JSON
"zone": "zoneA"
}
EOF
-
-echo "Initializing /dcaeLocations endpoint"
curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/dcaeLocations
# INITIALIZE: MR object in 1 site
+echo $'\nInitializing /mr_clusters endpoint'
+DMAAP=$(docker ps -a -q --filter="name=dmaap_1")
DMAAP_MR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $DMAAP)
JSON=/tmp/mr.json
cat << EOF > $JSON
{
"dcaeLocationName": "csit-pmmapper",
-"fqdn": "$DMAAP_MR_IP",
+"fqdn": "${DMAAP_MR_IP}",
"topicProtocol" : "http",
"topicPort": "3904"
}
EOF
-
-echo "Initializing /mr_clusters endpoint"
curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/mr_clusters
# CREATING: DR feed
+echo $'\nInitializing /feeds endpoint'
JSON=/tmp/feed.json
cat << EOF > $JSON
{
@@ -67,6 +67,30 @@ cat << EOF > $JSON
]
}
EOF
-echo "Initializing /feeds endpoint"
curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/feeds
+
+# CREATING: MR Topic
+echo $'\nInitializing /topic endpoint'
+JSON=/tmp/topic.json
+cat << EOF > $JSON
+{
+"topicName":"test1",
+"topicDescription":"PM Mapper - VES Event",
+"owner":"pmmapper"
+}
+EOF
+curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/topics
+
+# CREATING: MR Client
+echo $'\nInitializing /mr_clients endpoint'
+JSON=/tmp/mrclients.json
+cat << EOF > $JSON
+{
+"fqtn": "topic.org.onap.dmaap.mr.test1",
+"dcaeLocationName": "csit-pmmapper",
+"clientRole": "org.onap.dmaap.mr.topic",
+"action": [ "pub", "view" ]
+}
+EOF
+curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/mr_clients
sleep 5 \ No newline at end of file
diff --git a/plans/dcaegen2-pmmapper/pmmapper/setup.sh b/plans/dcaegen2-pmmapper/pmmapper/setup.sh
index 2924bd21..18d82373 100644
--- a/plans/dcaegen2-pmmapper/pmmapper/setup.sh
+++ b/plans/dcaegen2-pmmapper/pmmapper/setup.sh
@@ -122,6 +122,7 @@ CBS_IP=$(docker inspect '--format={{range .NetworkSettings.Networks}}{{.IPAddres
sed -i 's/CBSIP/'$CBS_IP'/g' docker-compose.yml
sed -i 's/BUSIP/'$DMAAPBC_IP'/g' docker-compose.yml
sed -i 's/DRNODEIP/'$DR_NODE_IP'/g' docker-compose.yml
+sed -i 's/DMAAPMRIP/'$DMAAP_MR_IP'/g' docker-compose.yml
docker-compose up -d
# Wait for initialization of Docker container for 3GPP PM Mapper
@@ -143,6 +144,7 @@ docker exec pmmapper /bin/sh -c "cat /var/log/ONAP/dcaegen2/services/pm-mapper/p
cat /tmp/pmmapper.log
docker exec buscontroller /bin/sh -c "cat /opt/app/dmaapbc/logs/ONAP/application.log"
curl -k https://$DR_PROV_IP:8443/internal/prov
+curl http://${DMAAP_MR_IP}:3904/events/topic.org.onap.dmaap.mr.test1/CG1/C1?timeout=1000
#Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v CONSUL_IP:${CONSUL_IP} -v DR_PROV_IP:${DR_PROV_IP} -v DMAAPBC_IP:${DMAAPBC_IP} -v DMAAP_MR_IP:${DMAAP_MR_IP} -v CBS_IP:${CBS_IP} -v PMMAPPER_IP:${PMMAPPER_IP} -v DR_NODE_IP:${DR_NODE_IP}" \ No newline at end of file
+ROBOT_VARIABLES="-v DMAAP_MR_IP:${DMAAP_MR_IP} -v CONSUL_IP:${CONSUL_IP} -v DR_PROV_IP:${DR_PROV_IP} -v DMAAPBC_IP:${DMAAPBC_IP} -v DMAAP_MR_IP:${DMAAP_MR_IP} -v CBS_IP:${CBS_IP} -v PMMAPPER_IP:${PMMAPPER_IP} -v DR_NODE_IP:${DR_NODE_IP}" \ No newline at end of file
diff --git a/plans/dmaap-datarouter/dr-suite/docker-compose/node.properties b/plans/dmaap-datarouter/dr-suite/docker-compose/node.properties
new file mode 100644
index 00000000..62b0f824
--- /dev/null
+++ b/plans/dmaap-datarouter/dr-suite/docker-compose/node.properties
@@ -0,0 +1,103 @@
+#-------------------------------------------------------------------------------
+# ============LICENSE_START==================================================
+# * org.onap.dmaap
+# * ===========================================================================
+# * Copyright � 2017 AT&T Intellectual Property. All rights reserved.
+# * ===========================================================================
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# * http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# * ============LICENSE_END====================================================
+# *
+# * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+# *
+#-------------------------------------------------------------------------------
+#
+# Configuration parameters set at startup for the DataRouter node
+#
+# URL to retrieve dynamic configuration
+ProvisioningURL = https://dmaap-dr-prov:8443/internal/prov
+#
+# URL to upload PUB/DEL/EXP logs
+LogUploadURL = https://dmaap-dr-prov:8443/internal/logs
+#
+# The port number for http as seen within the server
+IntHttpPort = 8080
+#
+# The port number for https as seen within the server
+IntHttpsPort = 8443
+#
+# The external port number for https taking port mapping into account
+ExtHttpsPort = 443
+#
+# The minimum interval between fetches of the dynamic configuration from the provisioning server
+MinProvFetchInterval = 10000
+#
+# The minimum interval between saves of the redirection data file
+MinRedirSaveInterval = 10000
+#
+# The path to the directory where log files are stored
+LogDir = /opt/app/datartr/logs
+#
+# The retention interval (in days) for log files
+LogRetention = 30
+#
+# The path to the directories where data and meta data files are stored
+SpoolDir = /opt/app/datartr/spool
+#
+# The path to the redirection data file
+RedirectionFile = etc/redirections.dat
+#
+# The type of keystore for https
+KeyStoreType = jks
+#
+# The path to the keystore for https
+KeyStoreFile = /opt/app/datartr/aaf_certs/org.onap.dmaap-dr.jks
+#
+# The password for the https keystore
+KeyStorePassword=]3V)($O&.Mv]W{f8^]6SxGNL
+#
+# The password for the private key in the https keystore
+KeyPassword=]3V)($O&.Mv]W{f8^]6SxGNL
+#
+# The type of truststore for https
+TrustStoreType = jks
+#
+# The path to the truststore for https
+TrustStoreFile = /opt/app/datartr/aaf_certs/org.onap.dmaap-dr.trust.jks
+#
+# The password for the https truststore
+TrustStorePassword=(Rd,&{]%ePdp}4JZjqoJ2G+g
+#
+# The path to the file used to trigger an orderly shutdown
+QuiesceFile = etc/SHUTDOWN
+#
+# The key used to generate passwords for node to node transfers
+NodeAuthKey = Node123!
+#
+# DR_NODE DEFAULT ENABLED TLS PROTOCOLS
+NodeHttpsProtocols = TLSv1.1|TLSv1.2
+#
+# AAF type to generate permission string
+AAFType = org.onap.dmaap-dr.feed
+#
+# AAF default instance to generate permission string - default should be legacy
+AAFInstance = legacy
+#
+# AAF action to generate permission string - default should be publish
+AAFAction = publish
+#
+# AAF URL to connect to AAF server
+AafUrl = https://aaf-onap-test.osaaf.org:8095
+#
+# AAF CADI enabled flag
+CadiEnabled = false
+
diff --git a/plans/dmaap-datarouter/dr-suite/docker-compose/provserver.properties b/plans/dmaap-datarouter/dr-suite/docker-compose/provserver.properties
new file mode 100755
index 00000000..e5295530
--- /dev/null
+++ b/plans/dmaap-datarouter/dr-suite/docker-compose/provserver.properties
@@ -0,0 +1,69 @@
+#-------------------------------------------------------------------------------
+# ============LICENSE_START==================================================
+# * org.onap.dmaap
+# * ===========================================================================
+# * Copyright � 2017 AT&T Intellectual Property. All rights reserved.
+# * Modifications Copyright (C) 2018 Nokia. 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====================================================
+# *
+# * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+# *
+#-------------------------------------------------------------------------------
+
+#Jetty Server properties
+org.onap.dmaap.datarouter.provserver.http.port = 8080
+org.onap.dmaap.datarouter.provserver.https.port = 8443
+org.onap.dmaap.datarouter.provserver.https.relaxation = true
+
+org.onap.dmaap.datarouter.provserver.keystore.type = jks
+org.onap.dmaap.datarouter.provserver.keymanager.password = AT{];bvaDiytVD&oWhMZj0N5
+org.onap.dmaap.datarouter.provserver.keystore.path = /opt/app/datartr/aaf_certs/org.onap.dmaap-dr.jks
+org.onap.dmaap.datarouter.provserver.keystore.password = AT{];bvaDiytVD&oWhMZj0N5
+org.onap.dmaap.datarouter.provserver.truststore.path = /opt/app/datartr/aaf_certs/org.onap.dmaap-dr.trust.jks
+org.onap.dmaap.datarouter.provserver.truststore.password = ljlS@Y}0]{UO(TnwvEWkgJ%]
+
+org.onap.dmaap.datarouter.provserver.accesslog.dir = /opt/app/datartr/logs
+org.onap.dmaap.datarouter.provserver.spooldir = /opt/app/datartr/spool
+org.onap.dmaap.datarouter.provserver.dbscripts = /opt/app/datartr/etc/misc
+org.onap.dmaap.datarouter.provserver.logretention = 30
+
+#DMAAP-597 (Tech Dept) REST request source IP auth
+# relaxation to accommodate OOM kubernetes deploy
+org.onap.dmaap.datarouter.provserver.isaddressauthenabled = false
+
+#Localhost address config
+org.onap.dmaap.datarouter.provserver.localhost = 127.0.0.1
+
+# Database access
+org.onap.dmaap.datarouter.db.driver = org.mariadb.jdbc.Driver
+org.onap.dmaap.datarouter.db.url = jdbc:mariadb://datarouter-mariadb:3306/datarouter
+org.onap.dmaap.datarouter.db.login = datarouter
+org.onap.dmaap.datarouter.db.password = datarouter
+
+# PROV - DEFAULT ENABLED TLS PROTOCOLS
+org.onap.dmaap.datarouter.provserver.https.include.protocols = TLSv1.1|TLSv1.2
+
+# AAF config
+org.onap.dmaap.datarouter.provserver.cadi.enabled = false
+
+org.onap.dmaap.datarouter.provserver.passwordencription = PasswordEncryptionKey#@$%^&1234#
+org.onap.dmaap.datarouter.provserver.aaf.feed.type = org.onap.dmaap-dr.feed
+org.onap.dmaap.datarouter.provserver.aaf.sub.type = org.onap.dmaap-dr.sub
+org.onap.dmaap.datarouter.provserver.aaf.instance = legacy
+org.onap.dmaap.datarouter.provserver.aaf.action.publish = publish
+org.onap.dmaap.datarouter.provserver.aaf.action.subscribe = subscribe
+
+# AAF URL to connect to AAF server
+org.onap.dmaap.datarouter.provserver.cadi.aaf.url = https://aaf-onap-test.osaaf.org:8095 \ No newline at end of file
diff --git a/plans/dmaap-datarouter/dr-suite/setup.sh b/plans/dmaap-datarouter/dr-suite/setup.sh
index fa0764db..398eb7cd 100755
--- a/plans/dmaap-datarouter/dr-suite/setup.sh
+++ b/plans/dmaap-datarouter/dr-suite/setup.sh
@@ -11,6 +11,8 @@ cd datarouter
git pull
cd $WORKSPACE/archives/dmaapdr/datarouter/datarouter-docker-compose/src/main/resources
cp $WORKSPACE/plans/dmaap-datarouter/dr-suite/docker-compose/docker-compose.yml .
+cp $WORKSPACE/plans/dmaap-datarouter/dr-suite/docker-compose/provserver.properties ./prov_data/provserver.properties
+cp $WORKSPACE/plans/dmaap-datarouter/dr-suite/docker-compose/node.properties ./node_data/node.properties
# start DMaaP DR containers with docker compose and configuration from docker-compose.yml
docker login -u docker -p docker nexus3.onap.org:10001
@@ -47,7 +49,7 @@ for i in {1..10}; do
then
echo datarouter-prov container is not in healthy state - the test is not made, teardown...
cd $WORKSPACE/archives/dmaapdr/datarouter/datarouter-docker-compose/src/main/resources
- docker-compose down -v
+ docker-compose rm -sf
exit 1
fi
fi
diff --git a/plans/dmaap-datarouter/dr-suite/teardown.sh b/plans/dmaap-datarouter/dr-suite/teardown.sh
index 8e568691..1b20842c 100755
--- a/plans/dmaap-datarouter/dr-suite/teardown.sh
+++ b/plans/dmaap-datarouter/dr-suite/teardown.sh
@@ -1,4 +1,4 @@
#!/bin/bash
cd $WORKSPACE/archives/dmaapdr/datarouter/datarouter-docker-compose/src/main/resources
-docker-compose down -v
+docker-compose rm -sf
diff --git a/plans/usecases/5G-bulkpm/assets/addSubscriber.json b/plans/usecases/5G-bulkpm/assets/addSubscriber.json
index 612c4626..bab63c4d 100644
--- a/plans/usecases/5G-bulkpm/assets/addSubscriber.json
+++ b/plans/usecases/5G-bulkpm/assets/addSubscriber.json
@@ -14,5 +14,6 @@
"log": "https://dmaap-dr-prov/feedlog/1",
"feed": "https://dmaap-dr-prov/feed/1"
},
- "subscriber":"admin"
+ "subscriber":"admin",
+ "decompress":true
} \ No newline at end of file
diff --git a/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml b/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml
index 8f1abb51..f3c47bb2 100644
--- a/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml
+++ b/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml
@@ -1,7 +1,7 @@
version: '2.1'
services:
datarouter-prov:
- image: nexus3.onap.org:10001/onap/dmaap/datarouter-prov:2.0.1
+ image: nexus3.onap.org:10001/onap/dmaap/datarouter-prov:2.0.2-SNAPSHOT-latest
container_name: datarouter-prov
hostname: dmaap-dr-prov
ports:
@@ -22,7 +22,7 @@ services:
retries: 5
datarouter-node:
- image: nexus3.onap.org:10001/onap/dmaap/datarouter-node:2.0.1
+ image: nexus3.onap.org:10001/onap/dmaap/datarouter-node:2.0.2-SNAPSHOT-latest
container_name: datarouter-node
hostname: dmaap-dr-node
ports:
@@ -35,7 +35,7 @@ services:
condition: service_healthy
datarouter-subscriber:
- image: nexus3.onap.org:10001/onap/dmaap/datarouter-subscriber:2.0.1
+ image: nexus3.onap.org:10001/onap/dmaap/datarouter-subscriber:2.0.2-SNAPSHOT-latest
container_name: fileconsumer-node
hostname: subscriber.com
ports:
diff --git a/plans/usecases/5G-bulkpm/setup.sh b/plans/usecases/5G-bulkpm/setup.sh
index 3b766917..3d3a9ef5 100644
--- a/plans/usecases/5G-bulkpm/setup.sh
+++ b/plans/usecases/5G-bulkpm/setup.sh
@@ -152,7 +152,7 @@ echo data_endpoints.json from DFC containter
cat /tmp/datafile_endpoints.json.fromcontainer
docker cp /tmp/datafile_endpoints.json dfc:/opt/app/datafile/config/
#Increase Logging
-docker exec dfc /bin/sh -c " sed -i 's/org.onap.dcaegen2.collectors.datafile: ERROR/org.onap.dcaegen2.collectors.datafile: TRACE/g' /opt/app/datafile/config/application.yaml"
+docker exec dfc /bin/sh -c " sed -i 's/org.onap.dcaegen2.collectors.datafile: WARN/org.onap.dcaegen2.collectors.datafile: TRACE/g' /opt/app/datafile/config/application.yaml"
docker restart dfc
sleep 2
@@ -172,7 +172,7 @@ done
sleep 10
#Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v DR_PROV_IP:${DR_PROV_IP} -v DR_NODE_IP:${DR_NODE_IP} -v DMAAP_MR_IP:${DMAAP_MR_IP} -v VESC_IP:${VESC_IP} -v VESC_PORT:${VESC_PORT} -v DR_SUBSCIBER_IP:${DR_SUBSCIBER_IP}"
+ROBOT_VARIABLES="-v DR_PROV_IP:${DR_PROV_IP} -v DR_NODE_IP:${DR_NODE_IP} -v DMAAP_MR_IP:${DMAAP_MR_IP} -v VESC_IP:${VESC_IP} -v VESC_PORT:${VESC_PORT} -v DR_SUBSCIBER_IP:${DR_SUBSCIBER_IP} -v SFTP_IP:${SFTP_IP}"
pip install jsonschema uuid simplejson
# Wait container ready
@@ -258,10 +258,10 @@ sed -i 's/sftpport/'${SFTP_PORT}'/g' $WORKSPACE/tests/usecases/5G-bulkpm/assets/
docker cp $WORKSPACE/plans/usecases/5G-bulkpm/assets/xNF.pm.xml.gz sftp:/home/admin/
# Create default feed and create file consumer subscriber on data router
-curl -v -X POST -H "Content-Type:application/vnd.att-dr.feed" -H "X-ATT-DR-ON-BEHALF-OF:dradmin" --data-ascii @$WORKSPACE/plans/usecases/5G-bulkpm/assets/createFeed.json --post301 --location-trusted -k https://${DR_PROV_IP}:8443
+curl -v -X POST -H "Content-Type:application/vnd.dmaap-dr.feed" -H "X-DMAAP-DR-ON-BEHALF-OF:dradmin" --data-ascii @$WORKSPACE/plans/usecases/5G-bulkpm/assets/createFeed.json --post301 --location-trusted -k https://${DR_PROV_IP}:8443
cp $WORKSPACE/plans/usecases/5G-bulkpm/assets/addSubscriber.json /tmp/addSubscriber.json
sed -i 's/fileconsumer/'${HOST_IP}'/g' /tmp/addSubscriber.json
-curl -v -X POST -H "Content-Type:application/vnd.att-dr.subscription" -H "X-ATT-DR-ON-BEHALF-OF:dradmin" --data-ascii @/tmp/addSubscriber.json --post301 --location-trusted -k https://${DR_PROV_IP}:8443/subscribe/1
+curl -v -X POST -H "Content-Type:application/vnd.dmaap-dr.subscription" -H "X-DMAAP-DR-ON-BEHALF-OF:dradmin" --data-ascii @/tmp/addSubscriber.json --post301 --location-trusted -k https://${DR_PROV_IP}:8443/subscribe/1
sleep 10
curl -k https://$DR_PROV_IP:8443/internal/prov
diff --git a/plans/vid/healthCheck/setup.sh b/plans/vid/healthCheck/setup.sh
index 584a640a..50a28b6b 100644
--- a/plans/vid/healthCheck/setup.sh
+++ b/plans/vid/healthCheck/setup.sh
@@ -25,7 +25,7 @@ source ${SCRIPTS}/common_functions.sh
source ${WORKSPACE}/scripts/vid/clone_and_setup_vid_data.sh
source ${WORKSPACE}/scripts/vid/start_vid_containers.sh
-echo `Obtaining ip of VID server...`
+echo "Obtaining ip of VID server..."
VID_IP=`get-instance-ip.sh vid-server`
SO_SIMULATOR_IP=`get-instance-ip.sh so-simulator`
diff --git a/plans/vid/healthCheck/teardown.sh b/plans/vid/healthCheck/teardown.sh
index 8f168679..e5e5140a 100644
--- a/plans/vid/healthCheck/teardown.sh
+++ b/plans/vid/healthCheck/teardown.sh
@@ -18,6 +18,5 @@
#
source ${WORKSPACE}/scripts/vid/kill_containers_and_remove_dataFolders.sh
-docker kill so-simulator
# $WORKSPACE/archives/clamp-clone deleted with archives folder when tests starts so we keep it at the end for debugging
diff --git a/scripts/vid/kill_containers_and_remove_dataFolders.sh b/scripts/vid/kill_containers_and_remove_dataFolders.sh
index 9e72a42f..d7e05533 100644
--- a/scripts/vid/kill_containers_and_remove_dataFolders.sh
+++ b/scripts/vid/kill_containers_and_remove_dataFolders.sh
@@ -20,8 +20,9 @@
echo "This is ${WORKSPACE}/scripts/vid/kill_and_remove_dataFolder.sh"
#kill and remove all vid dockers
-docker stop $(docker ps -a -q --filter="name=vid")
-docker rm $(docker ps -a -q --filter="name=vid")
+cd ${WORKSPACE}/tests/vid/resources
+docker-compose down
+docker-compose rm -f
#delete data folder
diff --git a/tests/appc/cdt/cdt.robot b/tests/appc/cdt/cdt.robot
index b33bfe77..ad380f15 100644
--- a/tests/appc/cdt/cdt.robot
+++ b/tests/appc/cdt/cdt.robot
@@ -10,6 +10,7 @@
| | Page should contain link | Home
| | Page should contain link | MY VNFs
| | Page should contain link | Test
+| | Page should contain link | Admin
| | Page should contain link | About us
| | Page Should Not Contain | ${USER_ID}
# Verify MY VNFs link will will ask for user entry
@@ -79,8 +80,8 @@
| | Input Text | id=vnfType | csit${THEDATE}
| | Click Button | Next
| | Page Should Contain Element | id=cmbAction
-# Verify 17 selections available
-| | Select From List By Index | id=cmbAction | 17
+# Verify 19 selections available
+| | Select From List By Index | id=cmbAction | 19
# Select HealthCheck and ANSIBLE and verify it gets created
| | Select From List By Value | id=cmbAction | HealthCheck
| | Select From List By Value | id=txtDeviceProtocol | ANSIBLE
diff --git a/tests/appc/cdt/common.robot b/tests/appc/cdt/common.robot
index 3492924f..b500d88e 100644
--- a/tests/appc/cdt/common.robot
+++ b/tests/appc/cdt/common.robot
@@ -12,7 +12,7 @@
| ${LONGTIME} | 90s
| ${TENMINUTES} | 600s
#| ${FFPROFILE_DIR} | /home/dvz/.mozilla/firefox/s87c07vn.AppCZoomed50
-| ${MAINURL} | http://localhost:8080/index.html
+| ${MAINURL} | https://localhost:8080/index.html
| ${USER_ID} | csituser
*** Keywords ***
diff --git a/tests/dcaegen2-pmmapper/pmmapper/assets/A_meas_result.xml b/tests/dcaegen2-pmmapper/pmmapper/assets/A_meas_result.xml
deleted file mode 100644
index 269fdf1d..00000000
--- a/tests/dcaegen2-pmmapper/pmmapper/assets/A_meas_result.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
- <fileHeader dnPrefix="some dnPrefix" vendorName="FooBar Ltd"
- fileFormatVersion="32.435 V10.0">
- <fileSender localDn="Dublin"/>
- <measCollec beginTime="2018-10-02T12:00:00+01:00"/>
- </fileHeader>
- <measData>
- <managedElement swVersion="r0.1" localDn="Dublin"/>
- <measInfo measInfoId="some measInfoId">
- <job jobId="jobId"/>
- <granPeriod endTime="2018-10-02T12:15:00Z" duration="PT900S"/>
- <repPeriod duration="PT900S"/>
- <measTypes>a b c</measTypes>
- <measValue measObjLdn="objLdn">
- <measResults>76 27 98</measResults>
- <suspect>false</suspect>
- </measValue>
- </measInfo>
- </measData>
- <fileFooter>
- <measCollec endTime="2018-10-02T12:15:00+01:00"/>
- </fileFooter>
-</measCollecFile>
diff --git a/tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot b/tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot
index 311ee433..cbb77f93 100644
--- a/tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot
+++ b/tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot
@@ -17,7 +17,6 @@ ${DELIVERY_ENDPOINT} /delivery
${HEALTHCHECK_ENDPOINT} /healthcheck
${NO_MANAGED_ELEMENT_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/A_no_managed_element.xml
${NO_MEASDATA_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/A_no_measdata.xml
-${MEASD_RESULT_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/A_meas_result.xml
${VALID_METADATA_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/valid_metadata.json
${DIFF_VENDOR_METADATA} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/diff_vendor_metadata.json
${CLI_EXEC_CLI_PM_LOG} docker exec pmmapper /bin/sh -c "tail -5 /var/log/ONAP/dcaegen2/services/pm-mapper/pm-mapper_output.log"
@@ -29,6 +28,7 @@ ${CLI_EXEC_PM_FILTER} curl 'http://${CONSUL_IP}:8500/v1/kv/pm
${CLI_RESTART_PMMAPPER} docker restart pmmapper
${CLI_DELETE_SUB1} curl -i -X DELETE -H "Content-Type:application/vnd.dmaap-dr.subscription" -H "X-DMAAP-DR-ON-BEHALF-OF:DGL" -k https://localhost:8443/subs/1
${CLI_DELETE_SUB2} curl -i -X DELETE -H "Content-Type:application/vnd.dmaap-dr.subscription" -H "X-DMAAP-DR-ON-BEHALF-OF:DGL" -k https://localhost:8443/subs/2
+${CLI_MESSAGE_ROUTER_TOPIC} curl http://${DMAAP_MR_IP}:3904/events/topic.org.onap.dmaap.mr.test1/CG1/C1?timeout=2000
*** Test Cases ***
@@ -43,7 +43,6 @@ Verify 3GPP PM Mapper Subscribes to Data Router
CheckLog ${CLI_EXEC_CLI_SUBS} 3gpppmmapper
CheckLog ${CLI_EXEC_CLI_SUBS} "privilegedSubscriber":true
-
Verify Health Check returns 200 when a REST GET request to healthcheck url
[Tags] PM_MAPPER_03
[Documentation] Verify Health Check returns 200 when a REST GET request to healthcheck url
@@ -71,56 +70,46 @@ Verify 3GPP PM Mapper responds appropriately when invalid metadata is provided
VerifyResponse ${resp.content} Malformed Metadata.
CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=2
-Verify 3GPP PM Mapper received pushed PM data from Data Router
+Verify 3GPP PM Mapper received pushed PM data from data router and publishes to message router.
[Tags] PM_MAPPER_06
- [Documentation] Verify 3GPP PM Mapper received pushed PM data from Data Router
+ [Documentation] Verify 3GPP PM Mapper received pushed PM data from data router and publishes to message router.
[Timeout] 1 minute
${PM_DATA}= Get File ${PM_DATA_FILE_PATH}
${valid_metatdata} Get File ${VALID_METADATA_PATH}
${resp}= PutCall ${PUBLISH_NODE_URL} 3 ${PM_DATA} ${PUBLISH_CONTENT_TYPE} ${valid_metatdata.replace("\n","")} pmmapper
VerifyResponse ${resp.status_code} 204
Sleep 10s
- CheckLog ${CLI_EXEC_CLI_PM_LOG} Event Processed
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} Successfully published VES events to messagerouter
CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=3
-
-Verify that PM Mapper logs successful when a file that contains measdata is provided
- [Tags] PM_MAPPER_07
- [Documentation] Verify that PM Mapper logs successful when a file that contains measdata is provided
- [Timeout] 1 minute
- ${valid_meas_result_content}= Get File ${MEASD_RESULT_PATH}
- ${valid_metatdata} Get File ${VALID_METADATA_PATH}
- ${headers}= Create Dictionary X-ONAP-RequestID=4 Content-Type=application/xml X-DMAAP-DR-PUBLISH-ID=4 X-DMAAP-DR-META=${valid_metatdata.replace("\n","")}
- ${resp}= Put Request mapper_session ${DELIVERY_ENDPOINT}/A_meas_result.xml data=${valid_meas_result_content} headers=${headers}
- VerifyResponse ${resp.status_code} 200
- CheckLog ${CLI_EXEC_CLI_PM_LOG} XML validation successful
- CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=4
+ Sleep 10s
+ CheckLog ${CLI_MESSAGE_ROUTER_TOPIC} perf3gpp_gnb-Ericsson_pmMeasResult
Verify that PM Mapper logs successful when a file that contains no measdata is provided
- [Tags] PM_MAPPER_08
+ [Tags] PM_MAPPER_07
[Documentation] Verify that PM Mapper logs successful when a file that contains no measdata is provided
[Timeout] 1 minute
${valid_no_measdata_content}= Get File ${NO_MEASDATA_PATH}
${valid_metatdata} Get File ${VALID_METADATA_PATH}
- ${headers}= Create Dictionary X-ONAP-RequestID=5 Content-Type=application/xml X-DMAAP-DR-PUBLISH-ID=3 X-DMAAP-DR-META=${valid_metatdata.replace("\n","")}
+ ${headers}= Create Dictionary X-ONAP-RequestID=4 Content-Type=application/xml X-DMAAP-DR-PUBLISH-ID=3 X-DMAAP-DR-META=${valid_metatdata.replace("\n","")}
${resp}= Put Request mapper_session ${DELIVERY_ENDPOINT}/A_no_measdata.xml data=${valid_no_measdata_content} headers=${headers}
VerifyResponse ${resp.status_code} 200
- CheckLog ${CLI_EXEC_CLI_PM_LOG} XML validation successful
- CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=5
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} MeasData is empty
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=4
Verify that PM Mapper throws Event failed validation against schema error when no managed element content is provided
- [Tags] PM_MAPPER_09
+ [Tags] PM_MAPPER_08
[Documentation] Verify 3gpp pm mapper responds with an error when no managed element content is provided
[Timeout] 1 minute
${no_managed_element_content}= Get File ${NO_MANAGED_ELEMENT_PATH}
${valid_metatdata} Get File ${VALID_METADATA_PATH}
- ${headers}= Create Dictionary X-ONAP-RequestID=6 Content-Type=application/xml X-DMAAP-DR-PUBLISH-ID=2 X-DMAAP-DR-META=${valid_metatdata.replace("\n","")}
+ ${headers}= Create Dictionary X-ONAP-RequestID=5 Content-Type=application/xml X-DMAAP-DR-PUBLISH-ID=2 X-DMAAP-DR-META=${valid_metatdata.replace("\n","")}
${resp}= Put Request mapper_session ${DELIVERY_ENDPOINT}/A_no_managed_element.xml data=${no_managed_element_content} headers=${headers}
VerifyResponse ${resp.status_code} 200
CheckLog ${CLI_EXEC_CLI_PM_LOG} XML validation failed
- CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=6
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=5
Verify that PM Mapper correctly identifies a file that should not be mapped based on metadata filtering.
- [Tags] PM_MAPPER_10
+ [Tags] PM_MAPPER_09
[Documentation] Verify that PM Mapper correctly identifies a file that should not be mapped based on metadata filtering.
[Timeout] 1 minute
${cli_cmd_output}= Run Process ${CLI_EXEC_VENDOR_FILTER} shell=yes
@@ -129,12 +118,12 @@ Verify that PM Mapper correctly identifies a file that should not be mapped base
Should Be Equal As Strings ${cli_cmd_output.rc} 0
${cli_cmd_output}= Run Process ${CLI_RESTART_PMMAPPER} shell=yes
Sleep 10s
- ${valid_meas_result_content}= Get File ${MEASD_RESULT_PATH}
+ ${pm_data}= Get File ${PM_DATA_FILE_PATH}
${diff_vendor_metadata}= Get File ${DIFF_VENDOR_METADATA}
- ${headers}= Create Dictionary X-ONAP-RequestID=7 Content-Type=application/xml X-DMAAP-DR-PUBLISH-ID=2 X-DMAAP-DR-META=${diff_vendor_metadata.replace("\n","")}
- ${resp}= Put Request mapper_session ${DELIVERY_ENDPOINT}/A_meas_result.xml data=${valid_meas_result_content} headers=${headers}
+ ${headers}= Create Dictionary X-ONAP-RequestID=6 Content-Type=application/xml X-DMAAP-DR-PUBLISH-ID=2 X-DMAAP-DR-META=${diff_vendor_metadata.replace("\n","")}
+ ${resp}= Put Request mapper_session ${DELIVERY_ENDPOINT}/A20181002.0000-1000-0015-1000_5G.xml data=${pm_data} headers=${headers}
CheckLog ${CLI_EXEC_CLI_PM_LOG} Metadata does not match any filters,
- CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=7
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=6
*** Keywords ***
diff --git a/tests/usecases/5G-bulkpm/BulkpmE2E.robot b/tests/usecases/5G-bulkpm/BulkpmE2E.robot
index 2541501f..f8ba0fb1 100644
--- a/tests/usecases/5G-bulkpm/BulkpmE2E.robot
+++ b/tests/usecases/5G-bulkpm/BulkpmE2E.robot
@@ -17,12 +17,12 @@ ${EVENT_DATA_FILE} %{WORKSPACE}/tests/usecases/5G-bulkpm/a
${TARGETURL_TOPICS} http://${DMAAP_MR_IP}:3904/topics
${TARGETURL_SUBSCR} http://${DMAAP_MR_IP}:3904/events/unauthenticated.VES_NOTIFICATION_OUTPUT/OpenDcae-c12/C12?timeout=1000
${CLI_EXEC_CLI} curl -k https://${DR_PROV_IP}:8443/internal/prov
-${CLI_EXEC_CLI_FILECONSUMER} docker exec fileconsumer-node /bin/sh -c "ls /opt/app/subscriber/delivery | grep .gz"
+${CLI_EXEC_CLI_FILECONSUMER} docker exec fileconsumer-node /bin/sh -c "ls /opt/app/subscriber/delivery | grep .xml"
${CLI_EXEC_CLI_DFC_LOG} docker exec dfc /bin/sh -c "cat /var/log/ONAP/application.log" > /tmp/dfc_docker.log.robot
${CLI_EXEC_CLI_DFC_LOG_GREP} grep "Publish to DR successful!" /tmp/dfc_docker.log.robot
-${CLI_EXEC_CLI_FILECONSUMER_CP} docker cp fileconsumer-node:/opt/app/subscriber/delivery/xNF.pm.xml.gz.M %{WORKSPACE}
-${CLI_EXEC_RENAME_METADATA} mv %{WORKSPACE}/xNF.pm.xml.gz.M %{WORKSPACE}/metadata.json
+${CLI_EXEC_CLI_FILECONSUMER_CP} docker cp fileconsumer-node:/opt/app/subscriber/delivery/oteNB5309_xNF.pm.xml.M %{WORKSPACE}
+${CLI_EXEC_RENAME_METADATA} mv %{WORKSPACE}/oteNB5309_xNF.pm.xml.M %{WORKSPACE}/metadata.json
${metadataSchemaPath} %{WORKSPACE}/tests/usecases/5G-bulkpm/assets/metadata.schema.json
${metadataJsonPath} %{WORKSPACE}/metadata.json
@@ -86,7 +86,7 @@ Verify Fileconsumer Receive PM file from Data Router
${cli_cmd_output}= Run Process ${CLI_EXEC_CLI_FILECONSUMER} shell=yes
Log ${cli_cmd_output.stdout}
Should Be Equal As Strings ${cli_cmd_output.rc} 0
- Should Contain ${cli_cmd_output.stdout} xNF.pm.xml.gz
+ Should Contain ${cli_cmd_output.stdout} oteNB5309_xNF.pm.xml
Verify File Consumer Receive valid metadata from Data Router
[Tags] Bulk_PM_E2E_06
@@ -94,7 +94,7 @@ Verify File Consumer Receive valid metadata from Data Router
${cli_cmd_output}= Run Process ${CLI_EXEC_CLI_FILECONSUMER} shell=yes
Log ${cli_cmd_output.stdout}
Should Be Equal As Strings ${cli_cmd_output.rc} 0
- Should Contain ${cli_cmd_output.stdout} xNF.pm.xml.gz.M
+ Should Contain ${cli_cmd_output.stdout} oteNB5309_xNF.pm.xml.M
${cli_cmd_output}= Run Process ${CLI_EXEC_CLI_FILECONSUMER_CP} shell=yes
${cli_cmd_output}= Run Process ${CLI_EXEC_RENAME_METADATA} shell=yes
${validation_result}= Validate ${metadataSchemaPath} ${metadataJsonPath}
diff --git a/tests/vid/resources/docker-compose.yml b/tests/vid/resources/docker-compose.yml
index 5f2c0fec..01fa92b3 100644
--- a/tests/vid/resources/docker-compose.yml
+++ b/tests/vid/resources/docker-compose.yml
@@ -1,11 +1,12 @@
version: '3'
services:
vid-server:
- image: nexus3.onap.org:10001/onap/vid:3.0-STAGING-latest
+ image: nexus3.onap.org:10001/onap/vid:4.0-STAGING-latest
environment:
- VID_MYSQL_DBNAME=vid_openecomp_epsdk
- VID_MYSQL_PASS=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
- VID_MSO_SERVER_URL=https://so-simulator:8443
+ - VID_AAI_URL=http://aai-simulator:8443
ports:
- "8080:8080"
- "8443:8443"
@@ -29,6 +30,19 @@ services:
build:
context: simulators
dockerfile: Dockerfile
+ args:
+ component: so
ports:
- "8444:8443"
- container_name: so-simulator \ No newline at end of file
+ container_name: so-simulator
+
+ aai-simulator:
+ build:
+ context: simulators
+ dockerfile: Dockerfile
+ args:
+ component: aai
+ ports:
+ - "8445:8443"
+ container_name: aai-simulator
+
diff --git a/tests/vid/resources/simulators/Dockerfile b/tests/vid/resources/simulators/Dockerfile
index ace6d56d..e6586b1e 100644
--- a/tests/vid/resources/simulators/Dockerfile
+++ b/tests/vid/resources/simulators/Dockerfile
@@ -1,16 +1,12 @@
-FROM alpine:3.9
+FROM python:3-alpine3.9
-RUN apk add --no-cache python3 && \
- python3 -m ensurepip && \
- rm -r /usr/lib/python*/ensurepip && \
- pip3 install --upgrade pip setuptools && \
- if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi && \
- if [[ ! -e /usr/bin/python ]]; then ln -sf /usr/bin/python3 /usr/bin/python; fi && \
- rm -r /root/.cache
+# `component` should be `so` or `aai`
+ARG component
+ENV component=$component
COPY SO.py /
ADD ./test_data_assets/ /
EXPOSE 8443
-CMD [ "python", "./SO.py", "expected_so_requests.json", "expected_so_responses.json" ]
+CMD python ./SO.py expected_${component}_requests.json expected_${component}_responses.json
diff --git a/tests/vid/resources/simulators/SO.py b/tests/vid/resources/simulators/SO.py
index c1199390..fa481b38 100644
--- a/tests/vid/resources/simulators/SO.py
+++ b/tests/vid/resources/simulators/SO.py
@@ -103,7 +103,7 @@ class JsonFileToDictReader(object):
def init_so_simulator():
expected_so_requests = JsonFileToDictReader.read_expected_test_data(argv[1])
expected_so_responses = JsonFileToDictReader.read_expected_test_data(argv[2])
- logging.basicConfig(filename='output.log', level=logging.INFO)
+ logging.basicConfig(level=logging.INFO)
handler = partial(SOHandler, expected_so_requests, expected_so_responses)
handler.protocol_version = "HTTP/1.0"
httpd = HTTPServer(('', DEFAULT_PORT), handler)
diff --git a/tests/vid/resources/simulators/test_data_assets/expected_aai_requests.json b/tests/vid/resources/simulators/test_data_assets/expected_aai_requests.json
new file mode 100644
index 00000000..3d77fe59
--- /dev/null
+++ b/tests/vid/resources/simulators/test_data_assets/expected_aai_requests.json
@@ -0,0 +1,4 @@
+{
+ "get": {
+ }
+} \ No newline at end of file
diff --git a/tests/vid/resources/simulators/test_data_assets/expected_aai_responses.json b/tests/vid/resources/simulators/test_data_assets/expected_aai_responses.json
new file mode 100644
index 00000000..c809bca1
--- /dev/null
+++ b/tests/vid/resources/simulators/test_data_assets/expected_aai_responses.json
@@ -0,0 +1,9 @@
+{
+ "get": {
+ "cloud-region": [{
+ "cloud-owner": "CloudOwner",
+ "cloud-region-id": "RegionOne"
+ }
+ ]
+ }
+}