[CORD-1724] Add Ability to Create Tenants/Instances in TOSCA
Change-Id: Ic58116693de06c650a32361b5bdacc900f6373f9
diff --git a/mcord-tenant-playbook.yml b/mcord-tenant-playbook.yml
new file mode 100644
index 0000000..4c543af
--- /dev/null
+++ b/mcord-tenant-playbook.yml
@@ -0,0 +1,25 @@
+---
+# mcord-tenant-playbook.yml
+# Creates tenants/instances predefined in TOSCA during build time
+
+- name: Include vars
+ hosts: all
+ tasks:
+ - name: Include variables
+ include_vars: "{{ item }}"
+ with_items:
+ - "profile_manifests/{{ cord_profile }}.yml"
+ - profile_manifests/local_vars.yml
+
+- name: Create mcord tenants/instances
+ hosts: head
+ roles:
+ - test-mcord-tenants-config
+
+- include: add-onboard-containers-playbook.yml
+
+- name: Enable mcord tenants/instances
+ hosts: xos_ui
+ connection: docker
+ roles:
+ - test-mcord-tenants-enable
diff --git a/roles/test-mcord-tenants-config/defaults/main.yml b/roles/test-mcord-tenants-config/defaults/main.yml
new file mode 100644
index 0000000..30ea86a
--- /dev/null
+++ b/roles/test-mcord-tenants-config/defaults/main.yml
@@ -0,0 +1,4 @@
+---
+# test-mcord-tenants-config/defaults/main.yml
+
+cord_profile_dir: "{{ ansible_user_dir + '/cord_profile' }}"
diff --git a/roles/test-mcord-tenants-config/tasks/main.yml b/roles/test-mcord-tenants-config/tasks/main.yml
new file mode 100644
index 0000000..10c2ba9
--- /dev/null
+++ b/roles/test-mcord-tenants-config/tasks/main.yml
@@ -0,0 +1,9 @@
+---
+# test-mcord-tenants-config/tasks/main.yml
+
+- name: Create onboard-mcord-tenants.yaml TOSCA config
+ template:
+ src: onboard-mcord-tenants.yaml.j2
+ dest: "{{ cord_profile_dir }}/onboard-mcord-tenants.yaml"
+ owner: "{{ ansible_user_id }}"
+ mode: 0644
diff --git a/roles/test-mcord-tenants-config/templates/onboard-mcord-tenants.yaml.j2 b/roles/test-mcord-tenants-config/templates/onboard-mcord-tenants.yaml.j2
new file mode 100644
index 0000000..1e55678
--- /dev/null
+++ b/roles/test-mcord-tenants-config/templates/onboard-mcord-tenants.yaml.j2
@@ -0,0 +1,81 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Creates desired M-CORD instances and tenants during build time
+
+imports:
+ - custom_types/xos.yaml
+ - custom_types/vbbu.yaml
+ - custom_types/vmme.yaml
+
+topology_template:
+ node_templates:
+
+# site, fully created in deployment.yaml
+ {{ site_name }}:
+ type: tosca.nodes.Site
+ properties:
+ no-delete: true
+ no-create: true
+ no-update: true
+
+ trusty-server-multi-nic:
+ type: tosca.nodes.Image
+
+# vbbu and vmme slices/services fully created in mcord-services.yaml
+ service#vbbu:
+ type: tosca.nodes.VBBUService
+ properties:
+ no-delete: true
+ no-create: true
+ no-update: true
+
+ service#vmme:
+ type: tosca.nodes.VMMEService
+ properties:
+ no-delete: true
+ no-create: true
+ no-update: true
+
+ mysite_vBBU_slice:
+ type: tosca.nodes.Slice
+ properties:
+ no-delete: true
+ no-create: true
+ no-update: true
+
+ mysite_vMME_slice:
+ type: tosca.nodes.Slice
+ properties:
+ no-delete: true
+ no-create: true
+ no-update: true
+
+# create a sample tenant and sample instance
+ tenant#vmmetenant1:
+ type: tosca.nodes.VMMETenant
+ properties:
+ kind: vEPC
+ requirements:
+ - tenant:
+ node: service#vmme
+ relationship: tosca.relationships.TenantOfService
+ - dependency:
+ node: mysite_vMME_slice
+ relationship: tosca.relationships.DependsOn
+
+ instance#vbbuinstance1:
+ type: tosca.nodes.Compute
+ capabilities:
+ # Host container properties
+ host:
+ properties:
+ num_cpus: 1
+ disk_size: 10 GB
+ mem_size: 2 GB
+ requirements:
+ - slice:
+ node: mysite_vBBU_slice
+ relationship: tosca.relationships.MemberOfSlice
+ - image:
+ node: trusty-server-multi-nic
+ relationship: tosca.relationships.UseImage
diff --git a/roles/test-mcord-tenants-enable/tasks/main.yml b/roles/test-mcord-tenants-enable/tasks/main.yml
new file mode 100644
index 0000000..e29c088
--- /dev/null
+++ b/roles/test-mcord-tenants-enable/tasks/main.yml
@@ -0,0 +1,7 @@
+---
+# test-mcord-tenants-enable/tasks/main.yml
+
+- name: Run TOSCA to add MCORD tenants and instances
+ command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} /opt/cord_profile/onboard-mcord-tenants.yaml"
+ tags:
+ - skip_ansible_lint # TOSCA loading should be idempotent
\ No newline at end of file