Merge "composer.create returns CreatedResources object"

This commit is contained in:
Jenkins
2016-01-05 15:19:16 +00:00
committed by Gerrit Code Review
2 changed files with 31 additions and 3 deletions

View File

@@ -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'

View File

@@ -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):