def read_aws_credential_file(location, parameter_pool, func_matrix, source, quiet = False): try: env_name = parameter_pool.get_value(ParameterName.EnvironmentName) \ if parameter_pool.has(ParameterName.EnvironmentName) else '' log.info('Reading AWS credential from file: "{0}"'.format(location)) parser = NoSectionConfigParser() parser.read(location) for name, from_file_func in func_matrix: if name == ParameterName.RdsMasterPassword: key_name = rds_utils.password_key_name(env_name) else: key_name = AwsCredentialFileDefault.KeyName[name] if parser.has_option(key_name): value = parser.get(key_name) value = from_file_func(value) if from_file_func is not None else value parameter_pool.put(Parameter(name, value, source)) log.info('Finished reading AWS credential from file.') except BaseException as ex: log.error('Failed to retrieve AWS credential from file "{0}", because: "{1}"'.\ format(location, ex)) if not quiet: msg = CredentialFileErrorMessage.ReadError.format(location) prompt.error(msg) raise EBSCliException(msg) else: return False # if failed, just skip
def read_aws_credential_file(location, parameter_pool, func_matrix, source, quiet=False): try: env_name = parameter_pool.get_value(ParameterName.EnvironmentName) \ if parameter_pool.has(ParameterName.EnvironmentName) else u'' log.info(u'Reading AWS credential from file: "{0}"'.format(location)) parser = NoSectionConfigParser() parser.read(location) for name, from_file_func in func_matrix: if name == ParameterName.RdsMasterPassword: key_name = rds_utils.password_key_name(env_name) else: key_name = AwsCredentialFileDefault.KeyName[name] if parser.has_option(key_name): value = parser.get(key_name) value = from_file_func( value) if from_file_func is not None else value parameter_pool.put(Parameter(name, value, source)) log.info(u'Finished reading AWS credential from file.') except BaseException as ex: log.error(u'Failed to retrieve AWS credential from file "{0}", because: "{1}"'.\ format(location, ex)) if not quiet: msg = CredentialFileErrorMessage.ReadError.format(location) prompt.error(msg) raise EBSCliException(msg) else: return False # if failed, just skip
def execute(self, parameter_pool): command = parameter_pool.get_value(PName.Command, False) if command == CommandType.DELETE: # Remove RDS master password from crential file credential_file_loc = config_file.default_aws_credential_file_location() # default environment env_name = parameter_pool.get_value(PName.EnvironmentName, False) param_list = [rds_utils.password_key_name(env_name)] # branch environment if parameter_pool.get_value(PName.Branches) is not None: branches = parameter_pool.get_value(PName.Branches, False) for branch in branches.values(): env_name = branch[PName.EnvironmentName] param_list.append(rds_utils.password_key_name(env_name)) # Remove passwords config_file.trim_aws_credential_file(credential_file_loc, param_list, True) ret_result = OperationResult(self, None, None, None) return ret_result
def write_aws_credential_file(location, parameter_pool, func_matrix, quiet=False): try: log.info(u'Writing AWS credential to file: "{0}"'.format(location)) parser = NoSectionConfigParser() try: parser.read(location) except IOError as ex: pass # No existing file for branch, name, to_file_func in func_matrix: if branch: value = parameter_pool.get_value(ParameterName.Branches, False)[branch][name] env_name = parameter_pool.get_value(ParameterName.Branches, False)[branch]\ [ParameterName.EnvironmentName] else: value = parameter_pool.get_value(name, False) env_name = parameter_pool.get_value( ParameterName.EnvironmentName, False) if to_file_func: value = to_file_func(value) if name == ParameterName.RdsMasterPassword: key_name = rds_utils.password_key_name(env_name) else: key_name = AwsCredentialFileDefault.KeyName[name] parser.set(key_name, value) parser.write(location) log.info(u'Finished writing AWS credential to file.') # Set access permission set_access_permission(location, False) log.info(u'Set AWS credential file access permission.') except BaseException as ex: log.error(u'Failed to update AWS credential file at "{0}", because: "{1}"'.\ format(location, ex)) msg = CredentialFileErrorMessage.WriteError.format(location) prompt.error(msg) if not quiet: raise EBSCliException(msg) else: return False # if failed, just skip
def write_aws_credential_file(location, parameter_pool, func_matrix, quiet = False): try: log.info(u'Writing AWS credential to file: "{0}"'.format(location)) parser = NoSectionConfigParser() try: parser.read(location) except IOError as ex: pass # No existing file for branch, name, to_file_func in func_matrix: if branch: value = parameter_pool.get_value(ParameterName.Branches)[branch][name] env_name = parameter_pool.get_value(ParameterName.Branches)[branch]\ [ParameterName.EnvironmentName] else: value = parameter_pool.get_value(name) env_name = parameter_pool.get_value(ParameterName.EnvironmentName) if to_file_func: value = to_file_func(value) if name == ParameterName.RdsMasterPassword: key_name = rds_utils.password_key_name(env_name) else: key_name = AwsCredentialFileDefault.KeyName[name] parser.set(key_name, value) parser.write(location) log.info(u'Finished writing AWS credential to file.') # Set access permission set_access_permission(location, False) log.info(u'Set AWS credential file access permission.') except BaseException as ex: log.error(u'Failed to update AWS credential file at "{0}", because: "{1}"'.\ format(location, ex)) msg = CredentialFileErrorMessage.WriteError.format(location) prompt.error(msg) if not quiet: raise EBSCliException(msg) else: return False # if failed, just skip
def execute(self, parameter_pool): eb_client = ElasticBeanstalkClient( parameter_pool.get_value(ParameterName.AwsAccessKeyId), parameter_pool.get_value(ParameterName.AwsSecretAccessKey), parameter_pool.get_value(ParameterName.ServiceEndpoint)) app_name = parameter_pool.get_value(ParameterName.ApplicationName) env_name = parameter_pool.get_value(ParameterName.EnvironmentName) prompt.action(DeleteApplicationOpMessage.Start.format(app_name)) try: response = eb_client.delete_application(app_name, 'true') except OperationInProgressException: log.info('Deleting Application "{0}" already in progress'.format( app_name)) prompt.result( DeleteApplicationOpMessage.AlreadyDelete.format(app_name)) ret_result = OperationResult( self, None, DeleteApplicationOpMessage.AlreadyDelete.format(app_name), None) else: log.info('Received response for DeleteApplication call.') self._log_api_result(self.__class__.__name__, 'DeleteApplication', response.result) prompt.result(DeleteApplicationOpMessage.Succeed.format(app_name)) credential_file_loc = config_file.default_aws_credential_file_location( ) param_list = [rds_utils.password_key_name(env_name)] config_file.trim_aws_credential_file(credential_file_loc, parameter_pool, param_list, True) ret_result = OperationResult( self, response.request_id, DeleteApplicationOpMessage.Succeed.format(app_name), response.result) return ret_result
def execute(self, parameter_pool): eb_client = ElasticBeanstalkClient(parameter_pool.get_value(ParameterName.AwsAccessKeyId), parameter_pool.get_value(ParameterName.AwsSecretAccessKey), parameter_pool.get_value(ParameterName.ServiceEndpoint)) app_name = parameter_pool.get_value(ParameterName.ApplicationName) env_name = parameter_pool.get_value(ParameterName.EnvironmentName) prompt.action(DeleteApplicationOpMessage.Start.format(app_name)) try: response = eb_client.delete_application(app_name, 'true') except OperationInProgressException: log.info('Deleting Application "{0}" already in progress'.format(app_name)) prompt.result(DeleteApplicationOpMessage.AlreadyDelete.format(app_name)) ret_result = OperationResult(self, None, DeleteApplicationOpMessage.AlreadyDelete.format(app_name), None) else: log.info('Received response for DeleteApplication call.') self._log_api_result(self.__class__.__name__, 'DeleteApplication', response.result) prompt.result(DeleteApplicationOpMessage.Succeed.format(app_name)) credential_file_loc = config_file.default_aws_credential_file_location() param_list = [rds_utils.password_key_name(env_name)] config_file.trim_aws_credential_file(credential_file_loc, parameter_pool, param_list, True) ret_result = OperationResult(self, response.request_id, DeleteApplicationOpMessage.Succeed.format(app_name), response.result) return ret_result