Пример #1
0
def init(name):
    print_header()
    if os.path.exists(name):
        print('File already exists, exiting...')
        sys.exit(1)

    app_type = query_options('Type of application', 'python', 'javascript')
    dvcs = query_options('Source Control version', 'git', 'hg')

    profile_name = raw_input('AWS Profile to use: ')
    profile_exists = AWSProfile.exists(profile_name)

    if not profile_exists:
        should_create_profile = query_yes_no('Do you want to create this profile?: ')
        if not should_create_profile:
            sys.exit(1)

        access_key_id = raw_input('AWS Access Key Id: ')
        access_secret_key = raw_input('AWS Secret Access Key: ')

        AWSProfile.save(profile_name, access_key_id, access_secret_key)

    config_values = {}
    config_template = Config.load_from_template()

    for key, components in config_template.iteritems():
        if key in ['bifrost', 'application', 'dvcs']:
            continue
        if key == 'roles':
            print('Roles...')
            config_values['roles'] = {}
            number_of_roles = raw_input('Number required: ')
            for i in range(0, int(number_of_roles)):
                builder = ConfigBuilder('role {0}'.format(i), {'name': '', 'tag-key': 'my-role'})

                values = builder.prompt_user()
                role_name = values.pop('name')
                config_values['roles'][role_name] = values
        else:
            builder = ConfigBuilder(key, components)
            if key == 'connection':
                builder.change_question('aws_profile', skip=True)
            elif key == 'deployment':
                builder.change_question('base_dir', required=True)
            elif key == 'repository':
                builder.change_question('repository', required=True)

            config_values[key] = builder.prompt_user()
            if key == 'repository':
                config_values[key] = config_values[key][key]

    if config_values:
        Config.save(name=name, application_type=app_type, dvcs=dvcs, **config_values)
        if not os.path.exists(FABRIC_FILE_NAME):
            Fabric.save(FABRIC_FILE_NAME,
                        roles=list(config_values['roles'].iterkeys()))
    else:
        print('No configuration loaded')
Пример #2
0
    def test_when_not_passing_any_overrides_default_file_is_generated(self):
        Config.save(self.file_name)

        saved_file = Config.load(self.file_name)
        template = Config.load_from_template()
        # update with version number
        template['bifrost']['version'] = get_version('short')

        self.assertEqual(saved_file, template)
Пример #3
0
def load_config(file_name=None):
    """
    Loads Bifrost configuration file for project
    """
    return Config.load(file_name)
Пример #4
0
 def test_write_default_deployment_venv_when_not_passed_in(self):
     Config.save(self.file_name)
     saved_file = Config.load(self.file_name)
     self.assertEqual(saved_file['deployment']['venv'], 'venv')
Пример #5
0
 def test_write_deployment_venv_when_passed_in(self):
     deployment_obj = dict(venv='env')
     Config.save(self.file_name, deployment=deployment_obj)
     saved_file = Config.load(self.file_name)
     self.assertEqual(saved_file['deployment']['venv'], 'env')
Пример #6
0
    def test_write_deployment_code_dir_when_passed_in(self):
        deployment_obj = dict(code_dir='relative')
        Config.save(self.file_name, deployment=deployment_obj)

        saved_file = Config.load(self.file_name)
        self.assertEqual(saved_file['deployment']['code_dir'], 'relative')
Пример #7
0
    def test_write_deployment_base_dir_when_passed_in(self):
        deployment_obj = dict(base_dir='/path/to/something')
        Config.save(self.file_name, deployment=deployment_obj)

        saved_file = Config.load(self.file_name)
        self.assertEqual(saved_file['deployment']['base_dir'], '/path/to/something')
Пример #8
0
    def test_writes_connection_ssh_key_when_passed_in(self):
        connection_obj = dict(ssh_key='~/.aws/conn.pem')
        Config.save(self.file_name, connection=connection_obj)

        saved_file = Config.load(self.file_name)
        self.assertEqual(saved_file['connection']['ssh_key'], '~/.aws/conn.pem')
Пример #9
0
    def test_writes_connection_instance_username_when_passed_in(self):
        connection_obj = dict(instance_username='******')
        Config.save(self.file_name, connection=connection_obj)

        saved_file = Config.load(self.file_name)
        self.assertEqual(saved_file['connection']['instance_username'], 'david')
Пример #10
0
    def test_writes_connection_gateway_when_false_passed_in(self):
        connection_obj = dict(gateway=False)
        Config.save(self.file_name, connection=connection_obj)

        saved_file = Config.load(self.file_name)
        self.assertFalse(saved_file['connection']['gateway'])
Пример #11
0
    def test_writes_connection_gateway_when_passed_in(self):
        connection_obj = dict(gateway='[email protected]')
        Config.save(self.file_name, connection=connection_obj)

        saved_file = Config.load(self.file_name)
        self.assertEqual(saved_file['connection']['gateway'], '[email protected]')
Пример #12
0
    def test_writes_connection_aws_profile_when_passed_in(self):
        connection_obj = dict(aws_profile='hello')
        Config.save(self.file_name, connection=connection_obj)

        saved_file = Config.load(self.file_name)
        self.assertEqual(saved_file['connection']['aws_profile'], 'hello')