Merge branch 'master' of ssh://git.planet-lab.org/git/plstackapi
authorSapan Bhatia <sapanbhatia@nat-oitwireless-inside-vapornet100-c-32154.Princeton.EDU>
Wed, 19 Nov 2014 20:26:27 +0000 (15:26 -0500)
committerSapan Bhatia <sapanbhatia@nat-oitwireless-inside-vapornet100-c-32154.Princeton.EDU>
Wed, 19 Nov 2014 20:26:27 +0000 (15:26 -0500)
planetstack/openstack_observer/ansible.py [new file with mode: 0755]
planetstack/openstack_observer/run_ansible [new file with mode: 0755]
planetstack/openstack_observer/steps/sliver.yaml [new file with mode: 0644]
planetstack/openstack_observer/steps/sync_site_deployments.yaml [new file with mode: 0644]
planetstack/openstack_observer/steps/sync_slice_deployments.yaml [new file with mode: 0644]
planetstack/openstack_observer/steps/sync_slivers.yaml [new file with mode: 0644]
planetstack/openstack_observer/steps/sync_user_deployments.yaml [new file with mode: 0644]

diff --git a/planetstack/openstack_observer/ansible.py b/planetstack/openstack_observer/ansible.py
new file mode 100755 (executable)
index 0000000..5eec7d9
--- /dev/null
@@ -0,0 +1,65 @@
+#!/usr/bin/python
+import jinja2
+import tempfile
+import os
+import json
+
+try:
+    step_dir = Config().observer_steps_dir
+except:
+    step_dir = '/opt/planetstack/observer/steps'
+
+os_template_loader = jinja2.FileSystemLoader( searchpath=step_dir)
+os_template_env = jinja2.Environment(loader=os_template_loader)
+
+def parse_output(msg):
+    lines = msg.splitlines()
+    results = []
+    print msg
+
+    for l in lines:
+       magic_str = 'ok: [127.0.0.1] => '
+       magic_str2 = 'changed: [127.0.0.1] => '
+        if (l.startswith(magic_str)):
+           w = len(magic_str)
+           str = l[w:]
+           d = json.loads(str)
+           results.append(d)
+       elif (l.startswith(magic_str2)):
+           w = len(magic_str2)
+           str = l[w:]
+           d = json.loads(str)
+           results.append(d)
+
+
+    return results
+           
+def run_template(name, opts):
+    template = os_template_env.get_template(name)
+    buffer = template.render(opts)
+    
+    f = tempfile.NamedTemporaryFile(mode='w')
+    f.write(buffer)
+    f.flush()
+    
+    run = os.popen('/opt/planetstack/observer/run_ansible '+f.name)
+    msg = run.read()
+    status = run.close()
+
+    try:
+       ok_results = parse_output(msg)
+    except ValueError,e:
+       print str(e)
+       raise e
+    return ok_results
+
+def main():
+       run_template('ansible/sync_user_deployments.yaml',{ "endpoint" : "http://172.31.38.128:5000/v2.0/",
+                 "name" : "Sapan Bhatia",
+                 "email": "gwsapan@gmail.com",
+                 "password": "foobar",
+                 "admin_user":"admin",
+                 "admin_password":"6a789bf69dd647e2",
+                 "admin_tenant":"admin",
+                "tenant":"demo",
+                 "roles":['user','admin'] })
diff --git a/planetstack/openstack_observer/run_ansible b/planetstack/openstack_observer/run_ansible
new file mode 100755 (executable)
index 0000000..5fab9df
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+source /opt/ansible/hacking/env-setup
+ansible-playbook -v $@
diff --git a/planetstack/openstack_observer/steps/sliver.yaml b/planetstack/openstack_observer/steps/sliver.yaml
new file mode 100644 (file)
index 0000000..e630415
--- /dev/null
@@ -0,0 +1,17 @@
+---
+- hosts: 127.0.0.1
+  connection: local
+  tasks:
+  - nova_compute:
+       state: present
+       auth_url: http://172.31.38.128:5000/v2.0/
+       login_username: admin
+       login_password: 6a789bf69dd647e2
+       login_tenant_name: admin
+       name: gloopy
+       image_id: 3ee851df-b35a-41c5-8551-f681e7209095
+       key_name: boo
+       wait_for: 200
+       flavor_id: 3
+       nics:
+         - net-id: d1de537b-80dc-4c1b-aa5f-4a197b33b5f6
diff --git a/planetstack/openstack_observer/steps/sync_site_deployments.yaml b/planetstack/openstack_observer/steps/sync_site_deployments.yaml
new file mode 100644 (file)
index 0000000..4129802
--- /dev/null
@@ -0,0 +1,5 @@
+---
+- hosts: 127.0.0.1
+  connection: local
+  tasks:
+  - keystone_user: endpoint={{ endpoint }} login_user={{ admin_user }} login_password={{ admin_password }} login_tenant_name={{ admin_tenant }} tenant={{ tenant }} tenant_description="{{ tenant_description }}"
diff --git a/planetstack/openstack_observer/steps/sync_slice_deployments.yaml b/planetstack/openstack_observer/steps/sync_slice_deployments.yaml
new file mode 100644 (file)
index 0000000..de1caf4
--- /dev/null
@@ -0,0 +1,8 @@
+---
+- hosts: 127.0.0.1
+  connection: local
+  tasks:
+  - keystone_user: endpoint={{ endpoint }} login_user={{ admin_user }} login_password={{ admin_password }} login_tenant_name={{ admin_tenant }} tenant={{ tenant }} tenant_description="{{ tenant_description }}"
+  {% for role in roles %}
+  - keystone_user: endpoint={{ endpoint}} login_user={{ admin_user }} login_password={{ admin_password }} login_tenant_name={{ admin_tenant }} user="{{ name }}" role={{ role }} tenant={{ tenant }}
+  {% endfor %}
diff --git a/planetstack/openstack_observer/steps/sync_slivers.yaml b/planetstack/openstack_observer/steps/sync_slivers.yaml
new file mode 100644 (file)
index 0000000..5f45d5c
--- /dev/null
@@ -0,0 +1,36 @@
+---
+- hosts: 127.0.0.1
+  connection: local
+  tasks:
+  - nova_keypair:
+       state: present
+       auth_url: {{ endpoint }}
+       login_username: {{ admin_user }}
+       login_password: {{ admin_password }}
+       login_tenant_name: {{ admin_tenant }}
+       name: {{ key_name }}
+       public_key: "{{ key.public_key}}"
+       
+  - nova_compute:
+       state: present
+       auth_url: {{ endpoint }}
+       login_username: {{ admin_user }}
+       login_password: {{ admin_password }}
+       login_tenant_name: {{ admin_tenant }}
+       name: {{ name }}
+       image_id: {{ image_id }}
+       key_name: {{ key_name }}
+       wait_for: 200
+       flavor_id: {{ flavor_id }}
+       user_data: "{{ user_data }}"
+       nics:
+       {% for net in nics %}  
+         - net-id: {{ net }}
+       {% endfor %}
+
+       {% if meta %}
+       meta:
+       {% for k,v in meta.items() %}  
+         {{ k }} : "{{ v }}"
+       {% endfor %}
+       {% endif %}
diff --git a/planetstack/openstack_observer/steps/sync_user_deployments.yaml b/planetstack/openstack_observer/steps/sync_user_deployments.yaml
new file mode 100644 (file)
index 0000000..95cdba3
--- /dev/null
@@ -0,0 +1,16 @@
+---
+- hosts: 127.0.0.1
+  connection: local
+  tasks:
+  - keystone_user: 
+       endpoint={{ endpoint }} 
+       user="{{ name }}" 
+       email={{ email }} 
+       password={{ password }} 
+       login_user={{ admin_user }} 
+       login_password={{ admin_password }} 
+       login_tenant_name={{ admin_tenant }} 
+       tenant={{ tenant }}
+  {% for role in roles %}
+  - keystone_user: endpoint={{ endpoint}} login_user={{ admin_user }} login_password={{ admin_password }} login_tenant_name={{ admin_tenant }} user="{{ name }}" role={{ role }} tenant={{ tenant }}
+  {% endfor %}