def run(self): if 'targets' not in self.config: self.logger.info('You have not added any targets yet') self.logger.info('Use the "add" command to do this') return if self.args.target not in self.config['targets']: all_targets = sorted(list(self.config['targets'].keys())) self.logger.info('"%s" is an unknown target', self.args.target) self.logger.info('Choices are: %s', all_targets) return entry = self.config['targets'][self.args.target] local_folder = entry.get('local_folder', '') s3_uri = entry.get('s3_uri', '') aws_access_key_id = entry.get('aws_access_key_id') aws_secret_access_key = entry.get('aws_secret_access_key') region_name = entry.get('region_name') new_local_folder = utils.get_input( 'local folder [{}]: '.format(local_folder)) new_s3_uri = utils.get_input('s3 uri [{}]: '.format(s3_uri)) new_aws_access_key_id = utils.get_input( 'AWS Access Key ID [{}]: '.format(aws_access_key_id)) secret_key_prompt = 'AWS Secret Access Key [{}]: '.format( aws_secret_access_key) new_aws_secret_access_key = utils.get_input(secret_key_prompt, secret=True) new_region_name = utils.get_input( 'region name [{}]: '.format(region_name)) if new_local_folder: entry['local_folder'] = os.path.expanduser(new_local_folder) if new_s3_uri: entry['s3_uri'] = new_s3_uri if new_aws_access_key_id: entry['aws_access_key_id'] = new_aws_access_key_id if new_aws_secret_access_key: entry['aws_secret_access_key'] = new_aws_secret_access_key if new_region_name: entry['region_name'] = new_region_name self.config['targets'][self.args.target] = entry utils.set_config(self.config)
def run(self): if "targets" not in self.config: self.logger.info("You have not added any targets yet") self.logger.info('Use the "add" command to do this') return if self.args.target not in self.config["targets"]: all_targets = sorted(list(self.config["targets"].keys())) self.logger.info('"%s" is an unknown target', self.args.target) self.logger.info("Choices are: %s", all_targets) return entry = self.config["targets"][self.args.target] local_folder = entry.get("local_folder", "") s3_uri = entry.get("s3_uri", "") aws_access_key_id = entry.get("aws_access_key_id") aws_secret_access_key = entry.get("aws_secret_access_key") region_name = entry.get("region_name") new_local_folder = utils.get_input( "local folder [{}]: ".format(local_folder)) new_s3_uri = utils.get_input("s3 uri [{}]: ".format(s3_uri)) new_aws_access_key_id = utils.get_input( "AWS Access Key ID [{}]: ".format(aws_access_key_id)) secret_key_prompt = "AWS Secret Access Key [{}]: ".format( aws_secret_access_key) new_aws_secret_access_key = utils.get_input(secret_key_prompt, secret=True) new_region_name = utils.get_input( "region name [{}]: ".format(region_name)) if new_local_folder: entry["local_folder"] = os.path.expanduser(new_local_folder) if new_s3_uri: entry["s3_uri"] = new_s3_uri if new_aws_access_key_id: entry["aws_access_key_id"] = new_aws_access_key_id if new_aws_secret_access_key: entry["aws_secret_access_key"] = new_aws_secret_access_key if new_region_name: entry["region_name"] = new_region_name self.config["targets"][self.args.target] = entry utils.set_config(self.config)
def handle_conflict(key, action_1, client_1, action_2, client_2): print( "\n" 'Conflict for "{}". Which version would you like to keep?\n' " (1) {}{} updated at {} ({})\n" " (2) {}{} updated at {} ({})\n" " (d) View difference (requires the diff command)\n" " (X) Skip this file\n".format( key, client_1.get_uri(), key, action_1.get_remote_datetime(), action_1.state, client_2.get_uri(), key, action_2.get_remote_datetime(), action_2.state, ), file=sys.stderr, ) while True: choice = utils.get_input("Choice (default=skip): ") print("", file=sys.stderr) if choice == "d": show_diff(client_1, client_2, key) else: break if choice == "1": return Resolution.get_resolution(key, action_1, client_2, client_1) elif choice == "2": return Resolution.get_resolution(key, action_2, client_1, client_2)
def test_required(self, input_fn, getpass): input_fn.side_effect = ["", "", "something"] result = utils.get_input("give me some info", required=True) assert result == "something" assert input_fn.call_count == 3 assert getpass.call_count == 0
def test_secret(self, input_fn, getpass): getpass.return_value = "bar" result = utils.get_input("give me some secret info", secret=True) assert result == "bar" assert getpass.call_count == 1 assert input_fn.call_count == 0
def test_blank(self, input_fn, getpass): input_fn.return_value = "" result = utils.get_input("give me some info", blank=True) assert result is None assert getpass.call_count == 0 assert input_fn.call_count == 1
def test_not_secret(self, input_fn, getpass): input_fn.return_value = "foo" result = utils.get_input("give me some info", secret=False) assert result == "foo" assert getpass.call_count == 0 assert input_fn.call_count == 1
def run(self): target = self.args.copy_target_credentials all_targets = list(self.config["targets"].keys()) if target is not None and target not in all_targets: self.logger.info('"%s" is an unknown target', target) self.logger.info("Choices are: %s", all_targets) return entry = {} entry["local_folder"] = os.path.expanduser( utils.get_input("local folder: ")) entry["s3_uri"] = utils.get_input("s3 uri: ") entry["region_name"] = utils.get_input("region name: ") if target is not None: entry["aws_access_key_id"] = self.config["targets"][target][ "aws_access_key_id"] entry["aws_secret_access_key"] = self.config["targets"][target][ "aws_secret_access_key"] else: entry["aws_access_key_id"] = utils.get_input("AWS Access Key ID: ") entry["aws_secret_access_key"] = utils.get_input( "AWS Secret Access Key: ", secret=True) default_name = os.path.basename(entry["s3_uri"]) name = utils.get_input( "Provide a name for this entry [{}]: ".format(default_name)) if not name: name = default_name self.config["targets"][name] = entry utils.set_config(self.config)
def run(self): target = self.args.copy_target_credentials all_targets = list(self.config['targets'].keys()) if target is not None and target not in all_targets: self.logger.info('"%s" is an unknown target', target) self.logger.info('Choices are: %s', all_targets) return entry = {} entry['local_folder'] = os.path.expanduser( utils.get_input('local folder: ')) entry['s3_uri'] = utils.get_input('s3 uri: ') entry['region_name'] = utils.get_input('region name: ') if target is not None: entry['aws_access_key_id'] = self.config['targets'][target][ 'aws_access_key_id'] entry['aws_secret_access_key'] = self.config['targets'][target][ 'aws_secret_access_key'] else: entry['aws_access_key_id'] = utils.get_input('AWS Access Key ID: ') entry['aws_secret_access_key'] = utils.get_input( 'AWS Secret Access Key: ', secret=True) default_name = os.path.basename(entry['s3_uri']) name = utils.get_input( 'Provide a name for this entry [{}]: '.format(default_name)) if not name: name = default_name if 'targets' not in self.config: self.config['targets'] = {} self.config['targets'][name] = entry utils.set_config(self.config)
def add_command(args, config, logger): entry = {} entry['local_folder'] = os.path.expanduser( utils.get_input('local folder: ')) entry['s3_uri'] = utils.get_input('s3 uri: ') entry['aws_access_key_id'] = utils.get_input('AWS Access Key ID: ') entry['aws_secret_access_key'] = utils.get_input('AWS Secret Access Key: ', secret=True) entry['region_name'] = utils.get_input('region name: ') default_name = os.path.basename(entry['s3_uri']) name = utils.get_input( 'Provide a name for this entry [{}]: '.format(default_name)) if not name: name = default_name if 'targets' not in config: config['targets'] = {} config['targets'][name] = entry set_config(config)
def test_get_input(getpass, input_fn): utils.get_input("give me some info", secret=False) assert getpass.call_count == 1 assert input_fn.call_count == 0
def test_get_input_secret(getpass, input_fn): utils.get_input("give me some secret info", secret=True) assert getpass.call_count == 0 assert input_fn.call_count == 1