def load_nodes(providers=None, regions='', filter=None): """ Uses a cloud provider(s) for the node list (i.e. ec2) :param providers: List of cloud provider names ; comma separated (see `maestro.config.AVAILABLE_CLOUD_PROVIDERS`) :param regions: List of cloud provider regions ; comma separated (see `maestro.config.AVAILABLE_CLOUD_REGIONS`) * If `regions` is not defined, all regions are used :param filter: Regular expression for filtering nodes """ load_env_keys() connections = {} env.nodes = [] env.hosts = [] filter = filter if filter else '.*' regex = re.compile(filter) for p in providers.split(','): if not regions: regions = config.AVAILABLE_CLOUD_REGIONS.get(p) else: regions = regions.split(',') for r in regions: nodes = get_nodes(p, r) [env.nodes.append(x) for x in nodes if regex.match(x.name)] [env.hosts.append(x.public_ips[0]) for x in nodes if x.state == NodeState.RUNNING \ and regex.match(x.name)]
def get_key(provider=None, region=None): """ Returns keys for provider :param provider: Name of provider (see `maestro.config.AVAILABLE_CLOUD_PROVIDERS`) :param region: Name of region """ load_env_keys() # check for ec2 east/west and use ec2 keys if provider.find('ec2') > -1: pk = env.provider_keys.get('ec2') else: pk = env.provider_keys[provider] return pk
def test_load_env_keys(self): load_env_keys() self.assertTrue(env.has_key('provider_keys')) self.assertTrue(env.get('provider_keys').has_key('ec2'))