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