Merge branch 'master' of ssh://git.planet-lab.org/git/plstackapi
diff --git a/planetstack/openstack_observer/ansible.py b/planetstack/openstack_observer/ansible.py
new file mode 100755
index 0000000..5eec7d9
--- /dev/null
+++ b/planetstack/openstack_observer/ansible.py
@@ -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
index 0000000..5fab9df
--- /dev/null
+++ b/planetstack/openstack_observer/run_ansible
@@ -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
index 0000000..e630415
--- /dev/null
+++ b/planetstack/openstack_observer/steps/sliver.yaml
@@ -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
index 0000000..4129802
--- /dev/null
+++ b/planetstack/openstack_observer/steps/sync_site_deployments.yaml
@@ -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
index 0000000..de1caf4
--- /dev/null
+++ b/planetstack/openstack_observer/steps/sync_slice_deployments.yaml
@@ -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
index 0000000..5f45d5c
--- /dev/null
+++ b/planetstack/openstack_observer/steps/sync_slivers.yaml
@@ -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
index 0000000..95cdba3
--- /dev/null
+++ b/planetstack/openstack_observer/steps/sync_user_deployments.yaml
@@ -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 %}