def apply_args_filters(args, ) -> Mapping[str, Mapping[str, Set[str]]]: """ Take an args object and returns the dict of cluster:service:instances Currently, will filter by clusters, instances, services, and deploy_groups If no instances are found, will print a message and try to find matching instances for each service :param args: args object containing attributes to filter by :returns: Dict of dicts, in format {cluster_name: {service_name: {instance1, instance2}}} """ clusters_services_instances: DefaultDict[str, DefaultDict[ str, Set[str]]] = defaultdict(lambda: defaultdict(set)) if args.service is None and args.owner is None: args.service = figure_out_service_name(args, soa_dir=args.soa_dir) filters = get_filters(args) all_services = list_services(soa_dir=args.soa_dir) if args.service and args.service not in all_services: paasta_print( PaastaColors.red(f'The service "{args.service}" does not exist.')) suggestions = difflib.get_close_matches(args.service, all_services, n=5, cutoff=0.5) if suggestions: paasta_print(PaastaColors.red(f'Did you mean any of these?')) for suggestion in suggestions: paasta_print(PaastaColors.red(f' {suggestion}')) return clusters_services_instances i_count = 0 for service in all_services: if args.service and service != args.service: continue for instance_conf in get_instance_configs_for_service( service, soa_dir=args.soa_dir): if all([f(instance_conf) for f in filters]): clusters_services_instances[ instance_conf.get_cluster()][service].add( instance_conf.get_instance()) i_count += 1 if i_count == 0 and args.service and args.instances: if args.clusters: clusters = args.clusters.split(',') else: clusters = list_clusters() for service in args.service.split(','): verify_instances(args.instances, service, clusters) return clusters_services_instances
def paasta_list(args): """Print a list of Yelp services currently running :param args: argparse.Namespace obj created from sys.args by cli""" if args.print_instances: services = list_service_instances() elif args.all: services = list_services() else: services = list_paasta_services() for service in services: paasta_print(service)
def paasta_list(args): """Print a list of Yelp services currently running :param args: argparse.Namespace obj created from sys.args by cli""" if args.print_instances: services = list_service_instances() elif args.all: services = list_services() else: services = list_paasta_services() for service in services: print service
def apply_args_filters(args): """ Take an args object and returns the dict of cluster:service:instances Currently, will filter by clusters, instances, services, and deploy_groups If no instances are found, will print a message and try to find matching instances for each service :param args: args object containing attributes to filter by :returns: Dict of dicts, in format {cluster_name: {service_name: {instance1, instance2}}} """ clusters_services_instances = defaultdict(lambda: defaultdict(set)) if args.service is None and args.owner is None: args.service = figure_out_service_name(args, soa_dir=args.soa_dir) filters = get_filters(args) i_count = 0 for service in list_services(soa_dir=args.soa_dir): if args.service and service != args.service: continue for instance_conf in get_instance_configs_for_service( service, soa_dir=args.soa_dir): if all([f(instance_conf) for f in filters]): clusters_services_instances[ instance_conf.get_cluster()][service].add( instance_conf.get_instance()) i_count += 1 if i_count == 0 and args.service and args.instances: if args.clusters: clusters = args.clusters.split(',') else: clusters = list_clusters() for service in args.service.split(','): verify_instances(args.instances, service, clusters) return clusters_services_instances
def completer_clusters(prefix, parsed_args, **kwargs): service = parsed_args.service or guess_service_name() if service in list_services(): return list_clusters(service) else: return list_clusters()