Exemplo n.º 1
0
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)]
Exemplo n.º 2
0
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
Exemplo n.º 3
0
 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'))