diff --git a/example-puppet.py b/example-puppet.py index 7c555748..41a141de 100644 --- a/example-puppet.py +++ b/example-puppet.py @@ -8,6 +8,7 @@ from solar.core import signals from solar.core import validation from solar.core.resource import virtual_resource as vr from solar import errors +from solar import events as evapi from solar.interfaces.db import get_db @@ -39,7 +40,7 @@ def setup_resources(): signals.Connections.clear() node1, node2 = vr.create('nodes', 'templates/nodes.yml', {}) - + # MARIADB mariadb_service1 = vr.create('mariadb_service1', 'resources/mariadb_service', { 'image': 'mariadb', @@ -71,6 +72,7 @@ def setup_resources(): # KEYSTONE keystone_puppet = vr.create('keystone_puppet', 'resources/keystone_puppet', {})[0] + evapi.add_dep(rabbitmq_service1.name, keystone_puppet.name, actions=('run', 'update')) keystone_db = vr.create('keystone_db', 'resources/mariadb_db/', { 'db_name': 'keystone_db', 'login_user': 'root' @@ -259,7 +261,7 @@ def setup_resources(): 'port': ['admin_port', 'internal_port', 'public_port'],}) signals.connect(keystone_puppet, cinder_keystone_service_endpoint, { 'admin_port': 'keystone_admin_port', 'admin_token': 'admin_token'}) - + # CINDER GLANCE # Deploy chain: cinder_puppet -> cinder_glance -> ( cinder_api, cinder_scheduler, cinder_volume ) cinder_glance_puppet = vr.create('cinder_glance_puppet', 'resources/cinder_glance_puppet', {})[0] @@ -273,17 +275,17 @@ def setup_resources(): signals.connect(cinder_puppet, cinder_api_puppet, { 'keystone_host': 'keystone_auth_host', 'keystone_port': 'keystone_auth_port'}) - + evapi.add_react(cinder_puppet.name, cinder_api_puppet.name, actions=('update',)) # CINDER SCHEDULER cinder_scheduler_puppet = vr.create('cinder_scheduler_puppet', 'resources/cinder_scheduler_puppet', {})[0] signals.connect(node1, cinder_scheduler_puppet) signals.connect(cinder_puppet, cinder_scheduler_puppet) - + evapi.add_react(cinder_puppet.name, cinder_scheduler_puppet.name, actions=('update',)) # CINDER VOLUME cinder_volume_puppet = vr.create('cinder_volume_puppet', 'resources/cinder_volume_puppet', {})[0] signals.connect(node1, cinder_volume_puppet) signals.connect(cinder_puppet, cinder_volume_puppet) - + evapi.add_react(cinder_puppet.name, cinder_volume_puppet.name, actions=('update',)) # NOVA nova_puppet = vr.create('nova_puppet', 'resources/nova_puppet', {})[0] nova_db = vr.create('nova_db', 'resources/mariadb_db/', { diff --git a/solar/solar/events/__init__.py b/solar/solar/events/__init__.py index e69de29b..a8093db8 100644 --- a/solar/solar/events/__init__.py +++ b/solar/solar/events/__init__.py @@ -0,0 +1,2 @@ + +from .api import * \ No newline at end of file diff --git a/solar/solar/events/api.py b/solar/solar/events/api.py index fdff3952..407b0bc9 100644 --- a/solar/solar/events/api.py +++ b/solar/solar/events/api.py @@ -1,6 +1,6 @@ -__all__ = ['add_event', 'remove_event', 'all_events', 'set_events'] +__all__ = ['add_dep', 'add_react'] import networkx as nx @@ -34,6 +34,21 @@ def add_event(ev): [i.to_dict() for i in rst], collection=db.COLLECTIONS.events) + +def add_dep(parent, dep, actions, state='success'): + for act in actions: + d = Dep(parent, act, state=state, + depend_node=dep, depend_action=act) + add_event(d) + log.debug('Added event: %s', d) + +def add_react(parent, dep, actions, state='success'): + for act in actions: + r = React(parent, act, state=state, + depend_node=dep, depend_action=act) + add_event(r) + log.debug('Added event: %s', r) + def remove_event(ev): rst = all_events(ev.parent_node) db.save(