Esempio n. 1
0
def get_environment(env_name=None):
    tgt_env_name = env_name if env_name else horton.namespace + 'whoville'
    envs = list_environments()
    if tgt_env_name in envs:
        env_test = cd.EnvironmentsApi(horton.cad).get_redacted(tgt_env_name)
        while not env_test:
            sleep(2)
            env_test = cd.EnvironmentsApi(horton.cad).get_redacted(tgt_env_name)
        return env_test
    else:
        return create_environment()
Esempio n. 2
0
def create_environment():
    platform = config.profile.get('platform')
    env_name = horton.namespace + 'whoville'
    if 'ssh_key_priv' in config.profile:
        priv_key = config.profile['ssh_key_priv']
    elif 'sshkey_priv' in config.profile:
        priv_key = config.profile['sshkey_priv']
    else:
        raise ValueError("SSH Private Key is required in your Profile, please update from the Template")
    if platform['provider'] == 'EC2':
        env_type = 'aws'
        env_config = {
                    'accessKeyId': platform['key'],
                    'secretAccessKey': platform['secret'],
                    'region': platform['region']
                }
    elif platform['provider'] == 'GCE':
        env_type = 'google'
        env_config = {
                    'projectId': platform['project'],
                    'jsonKey': platform['jsonkey'],
                    'region': platform['region']
                }
    else:
        raise ValueError("Provider %s not supported for Director in Whoville", platform['provider'])
    cad_env = cd.Environment(
        name=env_name,
        credentials=cd.SshCredentials(
            username='******',
            port=22,
            private_key=priv_key
        ),
        provider=cd.InstanceProviderConfig(
            type=env_type,
            config=env_config
        )
    )
    try:
        cd.EnvironmentsApi(horton.cad).create(cad_env)
    except ApiException as e:
        if 'iam:GetInstanceProfile' in e.body:
            sleep(3)
            # The first attempt usually fails, then will succeed after
            cd.EnvironmentsApi(horton.cad).create(cad_env)
        else:
            raise e
    env_test = cd.EnvironmentsApi(horton.cad).get_redacted(env_name)
    while not env_test:
        sleep(2)
        env_test = cd.EnvironmentsApi(horton.cad).get_redacted(env_name)
    return env_test
Esempio n. 3
0
def get_environment(env_name=None):
    tgt_env_name = env_name if env_name else horton.namespace + 'whoville'
    envs = list_environments()
    if tgt_env_name in envs:
        return cd.EnvironmentsApi(horton.cad).get_redacted(tgt_env_name)
    else:
        return create_environment()
Esempio n. 4
0
def list_environments(bool_response=False):
    # Using this function as a test for the Cloudbreak Api being available
    try:
        envs = cd.EnvironmentsApi(horton.cad).list()
        if not bool_response:
            return envs
        else:
            if isinstance(envs, list):
                return True
            else:
                return False
    except ApiException as e:
        if bool_response:
            return False
        else:
            raise e
Esempio n. 5
0
def delete_environment(env_name=None):
    env_name = env_name if env_name else horton.cdcred.name
    try:
        return cd.EnvironmentsApi(horton.cad).delete(env_name)
    except ApiException as e:
        raise e