Change hosts_file example to use Resource.connect_with_defaults

This commit is contained in:
Dmitry Shulyak 2015-09-30 11:53:38 +03:00
parent 483b787b42
commit a08e512804
5 changed files with 14 additions and 10 deletions

View File

@ -20,22 +20,22 @@ def run():
hosts1 = vr.create('hosts_file1', 'resources/hosts_file', {})[0] hosts1 = vr.create('hosts_file1', 'resources/hosts_file', {})[0]
hosts2 = vr.create('hosts_file2', 'resources/hosts_file', {})[0] hosts2 = vr.create('hosts_file2', 'resources/hosts_file', {})[0]
signals.connect(node1, hosts1, { node1.connect_with_defaults(hosts1, {
'name': 'hosts:name', 'name': 'hosts:name',
'ip': 'hosts:ip', 'ip': 'hosts:ip',
}) })
signals.connect(node2, hosts2, { node2.connect_with_defaults(hosts1, {
'name': 'hosts:name', 'name': 'hosts:name',
'ip': 'hosts:ip', 'ip': 'hosts:ip',
}) })
signals.connect(node1, hosts2, { node1.connect_with_defaults(hosts2, {
'name': 'hosts:name', 'name': 'hosts:name',
'ip': 'hosts:ip', 'ip': 'hosts:ip',
}) })
signals.connect(node2, hosts1, { node2.connect_with_defaults(hosts2, {
'name': 'hosts:name', 'name': 'hosts:name',
'ip': 'hosts:ip', 'ip': 'hosts:ip',
}) })

View File

@ -252,12 +252,16 @@ class Resource(object):
def connect_with_events(self, receiver, mapping=None, events=None, def connect_with_events(self, receiver, mapping=None, events=None,
use_defaults=False): use_defaults=False):
signals.connect(emitter, receiver, mapping=mapping) signals.connect(self, receiver, mapping=mapping)
if use_defaults: if use_defaults:
api.add_default_events(self, receiver) api.add_default_events(self, receiver)
if events: if events:
api.add_events(self.name, events) api.add_events(self.name, events)
def connect_with_defaults(self, receiver, mapping=None, events=None):
return self.connect_with_events(
receiver, mapping=mapping, events=events, use_defaults=True)
def load(name): def load(name):

View File

@ -168,7 +168,7 @@ def update_inputs(child, args):
parent = load_resource(c['parent']) parent = load_resource(c['parent'])
events = c['events'] events = c['events']
mapping[c['parent_input']] = c['child_input'] mapping[c['parent_input']] = c['child_input']
signals.connect(parent, child, mapping, events) parent.connect_with_events(child, mapping, events)
child.update(assignments) child.update(assignments)

View File

@ -39,8 +39,8 @@ def create_event(event_dict):
def add_default_events(emitter, receiver): def add_default_events(emitter, receiver):
events_to_add = [ events_to_add = [
Dependency(emitter.name, 'run', 'success', receiver.name, 'run'), Dep(emitter.name, 'run', 'success', receiver.name, 'run'),
Dependency(emitter.name, 'update', 'success', receiver.name, 'update') Dep(emitter.name, 'update', 'success', receiver.name, 'update')
] ]
add_events(emitter.name, events_to_add) add_events(emitter.name, events_to_add)

View File

@ -112,7 +112,7 @@ def test_parse_bad_event(bad_event_type):
def test_add_connections(mocker, resources): def test_add_connections(mocker, resources):
mocked_signals = mocker.patch('solar.core.resource.virtual_resource.signals') mocked_signals = mocker.patch('solar.core.resource.resource.signals')
args = {'ip': 'node1::ip', args = {'ip': 'node1::ip',
'servers': ['node1::ip', 'node2::ip'], 'servers': ['node1::ip', 'node2::ip'],
'alias': 'ser1' 'alias': 'ser1'