Merge "composer.create returns CreatedResources object"
This commit is contained in:
@@ -33,9 +33,9 @@ def setup_riak():
|
|||||||
ModelMeta.remove_all()
|
ModelMeta.remove_all()
|
||||||
resources = cr.create('nodes', 'templates/nodes', {'count': 3})
|
resources = cr.create('nodes', 'templates/nodes', {'count': 3})
|
||||||
nodes = [x for x in resources if x.name.startswith('node')]
|
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
|
node1, node2, node3 = nodes
|
||||||
hosts_services = [x for x in resources if x.name.startswith('hosts_file')]
|
|
||||||
|
|
||||||
riak_services = []
|
riak_services = []
|
||||||
ips = '10.0.0.%d'
|
ips = '10.0.0.%d'
|
||||||
|
|||||||
@@ -14,12 +14,14 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
from collections import OrderedDict
|
||||||
from StringIO import StringIO
|
from StringIO import StringIO
|
||||||
|
|
||||||
from jinja2 import Environment
|
from jinja2 import Environment
|
||||||
from jinja2 import meta
|
from jinja2 import meta
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from solar.core.log import log
|
from solar.core.log import log
|
||||||
@@ -42,6 +44,32 @@ VR_ENV = Environment(block_start_string="#%",
|
|||||||
lstrip_blocks=True)
|
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):
|
def create(name, spec, inputs=None, tags=None):
|
||||||
inputs = inputs or {}
|
inputs = inputs or {}
|
||||||
if isinstance(spec, provider.BaseProvider):
|
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)
|
r = create_resource(name, spec, inputs=inputs, tags=tags)
|
||||||
rs = [r]
|
rs = [r]
|
||||||
|
|
||||||
return rs
|
return CreatedResources(rs)
|
||||||
|
|
||||||
|
|
||||||
def create_resource(name, spec, inputs=None, tags=None):
|
def create_resource(name, spec, inputs=None, tags=None):
|
||||||
|
|||||||
Reference in New Issue
Block a user