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')
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)
def load_config(file_name=None): """ Loads Bifrost configuration file for project """ return Config.load(file_name)
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')
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')
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')
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')
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')
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')
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'])
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]')
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')