Automated setup of M-CORD EPC
Change-Id: Ic6935b6a29bc322aa46120aaf421a23dc321cf3d
diff --git a/mcord-ng40-test-playbook.yml b/mcord-ng40-test-playbook.yml
index e64d3fe..89ca318 100644
--- a/mcord-ng40-test-playbook.yml
+++ b/mcord-ng40-test-playbook.yml
@@ -27,6 +27,8 @@
- "profile_manifests/{{ cord_profile }}.yml"
- profile_manifests/local_vars.yml
+
+
- name: Run base M-CORD tests
hosts: head
become: no
@@ -54,5 +56,12 @@
- { vm: vspgwu, network: s1u_network }
- { vm: vspgwu, network: sgi_network }
- { vm: vspgwu, network: spgw_network }
+ epc_blueprint: build
+ epc_sync_objects:
+ - vspgwu/vspgwutenants
+ - vspgwc/vspgwctenants
+ - venb/venbserviceinstances
roles:
+ - create-epc
- test-mcord-base
+ - epc-synced
diff --git a/roles/create-epc/defaults/main.yml b/roles/create-epc/defaults/main.yml
new file mode 100644
index 0000000..542f13d
--- /dev/null
+++ b/roles/create-epc/defaults/main.yml
@@ -0,0 +1,21 @@
+---
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+# roles/create-epc/defaults/main.yml
+
+xos_admin_user: "xosadmin@opencord.org"
+xos_admin_pass: "{{ lookup('password', '/opt/credentials/xosadmin@opencord.org') }}"
+epc_blueprint: "build"
\ No newline at end of file
diff --git a/roles/create-epc/tasks/main.yml b/roles/create-epc/tasks/main.yml
new file mode 100644
index 0000000..ddad05f
--- /dev/null
+++ b/roles/create-epc/tasks/main.yml
@@ -0,0 +1,47 @@
+---
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+# roles/create-epc/tasks/main.yml
+
+- name: Check for EPC ServiceInstance
+ uri:
+ url: http://localhost/xosapi/v1/vepc/vepcserviceinstances
+ user: "{{ xos_admin_user }}"
+ password: "{{ xos_admin_pass }}"
+ return_content: yes
+ register: result
+
+- name: Get EPC Service ID
+ uri:
+ url: http://localhost/xosapi/v1/vepc/vepcservices
+ user: "{{ xos_admin_user }}"
+ password: "{{ xos_admin_pass }}"
+ return_content: yes
+ register: vepcservice
+ when: not result.json["items"]
+
+- name: Create EPC
+ uri:
+ url: http://localhost/xosapi/v1/vepc/vepcserviceinstances
+ user: "{{ xos_admin_user }}"
+ password: "{{ xos_admin_pass }}"
+ method: POST
+ body:
+ blueprint: "{{ epc_blueprint }}"
+ owner_id: "{{ vepcservice.json['items'][0]['id'] }}"
+ site_id: 1
+ body_format: json
+ when: not result.json["items"]
diff --git a/roles/epc-synced/defaults/main.yml b/roles/epc-synced/defaults/main.yml
new file mode 100644
index 0000000..c621734
--- /dev/null
+++ b/roles/epc-synced/defaults/main.yml
@@ -0,0 +1,21 @@
+---
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+# roles/epc-synced/defaults/main.yml
+
+xos_admin_user: "xosadmin@opencord.org"
+xos_admin_pass: "{{ lookup('password', '/opt/credentials/xosadmin@opencord.org') }}"
+epc_sync_objects: []
diff --git a/roles/epc-synced/tasks/main.yml b/roles/epc-synced/tasks/main.yml
new file mode 100644
index 0000000..996a069
--- /dev/null
+++ b/roles/epc-synced/tasks/main.yml
@@ -0,0 +1,29 @@
+---
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+# roles/epc-synced/tasks/main.yml
+
+- name: Wait for synchronizers to run
+ uri:
+ url: http://localhost/xosapi/v1/{{ item }}
+ user: "{{ xos_admin_user }}"
+ password: "{{ xos_admin_pass }}"
+ return_content: yes
+ register: result
+ until: result.json["items"] and result.json["items"][0]["backend_status"] == "OK"
+ retries: 20
+ delay: 30
+ with_items: "{{ epc_sync_objects }}"