DB Connection Setup for API and PAP for CSIT 50/85250/4
authorBilal A <bilal@research.att.com>
Fri, 12 Apr 2019 22:38:32 +0000 (22:38 +0000)
committerBilal A <bilal@research.att.com>
Mon, 15 Apr 2019 15:39:20 +0000 (15:39 +0000)
1) Adds CSIT Test for API
2) Adds a mariadb container setup and configuration for API.
3) Adds a mariadb container setup and configuration for PAP.

Change-Id: I9beea4f2445215bc95962ebceb4ec626dd0d5521
Issue-ID: POLICY-1270
Signed-off-by: Bilal A <bilal@research.att.com>
plans/policy/api/setup.sh
plans/policy/api/teardown.sh [changed mode: 0644->0755]
plans/policy/pap/setup.sh
plans/policy/pap/teardown.sh
scripts/policy/config/db/db.conf [new file with mode: 0644]
scripts/policy/config/db/db.sh [new file with mode: 0755]
scripts/policy/docker-compose-api.yml [new file with mode: 0644]
scripts/policy/docker-compose-pap.yml [new file with mode: 0644]
tests/policy/api/api-test.robot

index b7d31bb..a29254a 100644 (file)
 # SPDX-License-Identifier: Apache-2.0
 # ============LICENSE_END=========================================================
 
-docker run -d --name policy-api -p 6969:6969 -it nexus3.onap.org:10001/onap/policy-api:2.0.0-SNAPSHOT-latest 
+echo "Uninstall docker-py and reinstall docker."
+pip uninstall -y docker-py
+pip uninstall -y docker
+pip install -U docker==2.7.0
+
+# Adding this waiting container to avoid race condition between api and mariadb containers.
+docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-api.yml run --rm start_dependencies
+docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-api.yml up -d
+sleep 3
 
 POLICY_API_IP=`get-instance-ip.sh policy-api`
+MARIADB_IP=`get-instance-ip.sh mariadb`
+
 echo API IP IS ${POLICY_API_IP}
+echo MARIADB IP IS ${MARIADB_IP}
+
 # Wait for initialization
+for i in {1..10}; do
+   curl -sS ${MARIADB_IP}:3306 && break
+   echo sleep $i
+   sleep $i
+done
 for i in {1..10}; do
    curl -sS ${POLICY_API_IP}:6969 && break
    echo sleep $i
    sleep $i
 done
 
+#Configure the database
+docker exec -it mariadb  chmod +x /docker-entrypoint-initdb.d/db.sh
+docker exec -it mariadb  /docker-entrypoint-initdb.d/db.sh
+
 ROBOT_VARIABLES="-v POLICY_API_IP:${POLICY_API_IP}"
old mode 100644 (file)
new mode 100755 (executable)
index 8683ded..fc82dfa
@@ -18,3 +18,5 @@
 # ============LICENSE_END=========================================================
 
 kill-instance.sh policy-api
+kill-instance.sh mariadb
+kill-instance.sh policy-wait
index 44a205a..2d31b9c 100644 (file)
 # SPDX-License-Identifier: Apache-2.0
 # ============LICENSE_END=========================================================
 
-docker run -d --name policy-pap -p 6969:6969 -it nexus3.onap.org:10001/onap/policy-pap:2.0.0-SNAPSHOT-latest
+echo "Uninstall docker-py and reinstall docker."
+pip uninstall -y docker-py
+pip uninstall -y docker
+pip install -U docker==2.7.0
+
+# Adding this waiting container due to race condition between pap and mariadb
+docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-pap.yml run --rm start_dependencies
+docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-pap.yml up -d
+sleep 3
 
 POLICY_PAP_IP=`get-instance-ip.sh policy-pap`
+MARIADB_IP=`get-instance-ip.sh mariadb`
+
 echo PAP IP IS ${POLICY_PAP_IP}
+echo MARIADB IP IS ${MARIADB_IP}
 # Wait for initialization
+for i in {1..10}; do
+   curl -sS ${MARIADB_IP}:3306 && break
+   echo sleep $i
+   sleep $i
+done
 for i in {1..10}; do
    curl -sS ${POLICY_PAP_IP}:6969 && break
    echo sleep $i
    sleep $i
 done
 
+#Configure the database
+docker exec -it mariadb  chmod +x /docker-entrypoint-initdb.d/db.sh
+docker exec -it mariadb  /docker-entrypoint-initdb.d/db.sh
+
 ROBOT_VARIABLES="-v POLICY_PAP_IP:${POLICY_PAP_IP}"
index 877b164..8798697 100644 (file)
@@ -18,3 +18,5 @@
 # ============LICENSE_END=========================================================
 
 kill-instance.sh policy-pap
+kill-instance.sh mariadb
+kill-instance.sh policy-wait
diff --git a/scripts/policy/config/db/db.conf b/scripts/policy/config/db/db.conf
new file mode 100644 (file)
index 0000000..d6764f9
--- /dev/null
@@ -0,0 +1,16 @@
+# Copyright 2019 AT&T Intellectual Property. All rights reserved
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+MYSQL_ROOT_PASSWORD=secret
+MYSQL_USER=policy_user
+MYSQL_PASSWORD=policy_user
diff --git a/scripts/policy/config/db/db.sh b/scripts/policy/config/db/db.sh
new file mode 100755 (executable)
index 0000000..9ab2be2
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/bash -xv
+# Copyright 2019 AT&T Intellectual Property. All rights reserved
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+for db in policyadmin
+do
+       mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "CREATE DATABASE IF NOT EXISTS ${db};"
+       mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "GRANT ALL PRIVILEGES ON \`${db}\`.* TO '${MYSQL_USER}'@'%' ;"
+done
+
+mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "FLUSH PRIVILEGES;"
diff --git a/scripts/policy/docker-compose-api.yml b/scripts/policy/docker-compose-api.yml
new file mode 100644 (file)
index 0000000..452297f
--- /dev/null
@@ -0,0 +1,43 @@
+# Copyright 2019 AT&T Intellectual Property. All rights reserved
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+version: '2'
+networks:
+  default:
+    driver: bridge
+services:
+   mariadb:
+      image: mariadb:10.2.14
+      container_name: mariadb
+      hostname: mariadb
+      command: ['--lower-case-table-names=1', '--wait_timeout=28800']
+      env_file: config/db/db.conf
+      volumes:
+         - ./config/db:/docker-entrypoint-initdb.d
+      ports:
+       - "3306:3306"
+   api:
+      image: nexus3.onap.org:10001/onap/policy-api
+      container_name: policy-api
+      depends_on: 
+       - mariadb
+      hostname: policy-api
+      ports:
+       - "6969:6969"
+   start_dependencies:
+      image: dadarek/wait-for-dependencies
+      container_name: policy-wait
+      depends_on:
+        - mariadb
+      hostname: policy-wait
+      command: mariadb:3306
diff --git a/scripts/policy/docker-compose-pap.yml b/scripts/policy/docker-compose-pap.yml
new file mode 100644 (file)
index 0000000..c5ff9cf
--- /dev/null
@@ -0,0 +1,43 @@
+# Copyright 2019 AT&T Intellectual Property. All rights reserved
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+version: '2'
+networks:
+  default:
+    driver: bridge
+services:
+   mariadb:
+      image: mariadb:10.2.14
+      container_name: mariadb
+      hostname: mariadb
+      command: ['--lower-case-table-names=1', '--wait_timeout=28800']
+      env_file: config/db/db.conf
+      volumes:
+         - ./config/db:/docker-entrypoint-initdb.d
+      ports:
+       - "3306:3306"
+   pap:
+      image: nexus3.onap.org:10001/onap/policy-pap:2.0.0-SNAPSHOT-latest
+      container_name: policy-pap
+      depends_on: 
+       - "mariadb"
+      hostname: policy-pap
+      ports:
+       - "6969:6969"
+   start_dependencies:
+      image: dadarek/wait-for-dependencies
+      container_name: policy-wait
+      depends_on:
+        - mariadb
+      hostname: policy-wait
+      command: mariadb:3306
index bf2c12b..d90dabc 100644 (file)
@@ -26,3 +26,15 @@ Statistics
      Log    Received response from policy ${resp.text}
      Should Be Equal As Strings    ${resp.status_code}     200
      Should Be Equal As Strings    ${resp.json()['code']}  200
+
+RetrievePolicyTypes
+     [Documentation]    Gets Policy Types
+     ${auth}=    Create List    healthcheck    zb!XztG34 
+     Log    Creating session https://${POLICY_API_IP}:6969
+     ${session}=    Create Session      policy  https://${POLICY_API_IP}:6969   auth=${auth}
+     ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
+     ${resp}=   Get Request     policy  /policy/api/v1/policytypes     headers=${headers}
+     Log    Received response from policy ${resp.text}
+     Should Be Equal As Strings    ${resp.status_code}     200
+     Should Be Equal As Strings    ${resp.json()['version']}  1.0.0
+