Merge "composer.create returns CreatedResources object"
This commit is contained in:
@@ -33,9 +33,9 @@ def setup_riak():
|
||||
ModelMeta.remove_all()
|
||||
resources = cr.create('nodes', 'templates/nodes', {'count': 3})
|
||||
nodes = [x for x in resources if x.name.startswith('node')]
|
||||
hosts_services = [x for x in resources if x.name.startswith('hosts_file')]
|
||||
nodes = resources.like('node')
|
||||
hosts_services = resources.like('hosts_file')
|
||||
node1, node2, node3 = nodes
|
||||
hosts_services = [x for x in resources if x.name.startswith('hosts_file')]
|
||||
|
||||
riak_services = []
|
||||
ips = '10.0.0.%d'
|
||||
|
||||
@@ -14,12 +14,14 @@
|
||||
# under the License.
|
||||
|
||||
from collections import defaultdict
|
||||
from collections import OrderedDict
|
||||
from StringIO import StringIO
|
||||
|
||||
from jinja2 import Environment
|
||||
from jinja2 import meta
|
||||
|
||||
import os
|
||||
import re
|
||||
import yaml
|
||||
|
||||
from solar.core.log import log
|
||||
@@ -42,6 +44,32 @@ VR_ENV = Environment(block_start_string="#%",
|
||||
lstrip_blocks=True)
|
||||
|
||||
|
||||
class CreatedResources(object):
|
||||
|
||||
def __init__(self, resources):
|
||||
if isinstance(resources, (list, tuple)):
|
||||
c = OrderedDict((r.name, r) for r in resources)
|
||||
else:
|
||||
c = resources
|
||||
self.data = c
|
||||
|
||||
def __getitem__(self, key):
|
||||
if isinstance(key, int):
|
||||
key = self.data.keys()[key]
|
||||
return self.data[key]
|
||||
|
||||
def __iter__(self):
|
||||
return self.data.itervalues()
|
||||
|
||||
def __len__(self):
|
||||
return self.data.__len__()
|
||||
|
||||
def like(self, regex):
|
||||
keys = self.data.keys()
|
||||
matched_keys = filter(lambda key: re.match(regex, key), keys)
|
||||
return CreatedResources({rname: self[rname] for rname in matched_keys})
|
||||
|
||||
|
||||
def create(name, spec, inputs=None, tags=None):
|
||||
inputs = inputs or {}
|
||||
if isinstance(spec, provider.BaseProvider):
|
||||
@@ -70,7 +98,7 @@ def create(name, spec, inputs=None, tags=None):
|
||||
r = create_resource(name, spec, inputs=inputs, tags=tags)
|
||||
rs = [r]
|
||||
|
||||
return rs
|
||||
return CreatedResources(rs)
|
||||
|
||||
|
||||
def create_resource(name, spec, inputs=None, tags=None):
|
||||
|
||||
Reference in New Issue
Block a user