class RunLabelAdd(object): """Add a new run labels """ def __init__(self, args=None, silent=False): # Args may be given as an input argument for testing purposes # or from the main parser. # Otherwise get them from the parser. if args is None: args = self._get_args() self.args = args self.silent = silent verify_has_connection_settings() server_url = get_server_url() verify_server_is_running(url=server_url) self.connection = Connection(server_url, token=get_token()) def _get_args(self): self.parser = self.get_parser() return self.parser.parse_args() @classmethod def get_parser(cls, parser=None): # If called from main, use the subparser provided. # Otherwise create a top-level parser here. if parser is None: parser = argparse.ArgumentParser(__file__) parser.add_argument( 'target', metavar='TARGET', help='identifier for run to be labeled') parser.add_argument( 'label', metavar='LABEL', help='label name to be added') return parser def run(self): try: runs = self.connection.get_run_index( min=1, max=1, query_string=self.args.target) except LoomengineUtilsError as e: raise SystemExit("ERROR! Failed to get run list: '%s'" % e) label_data = {'label': self.args.label} try: label = self.connection.post_run_label(runs[0]['uuid'], label_data) except LoomengineUtilsError as e: raise SystemExit("ERROR! Failed to create label: '%s'" % e) if not self.silent: print 'Target "%s@%s" has been labeled as "%s"' % \ (runs[0].get('name'), runs[0].get('uuid'), label.get('label'))
class RunTagList(object): def __init__(self, args=None, silent=False): if args is None: args = self._get_args() self.args = args self.silent = silent verify_has_connection_settings() server_url = get_server_url() verify_server_is_running(url=server_url) self.connection = Connection(server_url, token=get_token()) def _get_args(self): self.parser = self.get_parser() return self.parser.parse_args() @classmethod def get_parser(cls, parser=None): # If called from main, use the subparser provided. # Otherwise create a top-level parser here. if parser is None: parser = argparse.ArgumentParser(__file__) parser.add_argument( 'target', metavar='TARGET', nargs='?', help='show tags only for the specified run') return parser def run(self): if self.args.target: try: runs = self.connection.get_run_index( min=1, max=1, query_string=self.args.target) except LoomengineUtilsError as e: raise SystemExit("ERROR! Failed to get run list: '%s'" % e) try: tag_data = self.connection.list_run_tags(runs[0]['uuid']) except LoomengineUtilsError as e: raise SystemExit("ERROR! Failed to get tag list: '%s'" % e) tags = tag_data.get('tags', []) else: try: tag_list = self.connection.get_run_tag_index() except LoomengineUtilsError as e: raise SystemExit("ERROR! Failed to get tag list: '%s'" % e) tags = [item.get('tag') for item in tag_list] print '[showing %s tags]' % len(tags) for tag in tags: print tag
class RunTagRemove(object): """Remove a run tag """ def __init__(self, args=None, silent=False): if args is None: args = self._get_args() self.args = args self.silent = silent verify_has_connection_settings() server_url = get_server_url() verify_server_is_running(url=server_url) self.connection = Connection(server_url, token=get_token()) def _get_args(self): self.parser = self.get_parser() return self.parser.parse_args() @classmethod def get_parser(cls, parser=None): # If called from main, use the subparser provided. # Otherwise create a top-level parser here. if parser is None: parser = argparse.ArgumentParser(__file__) parser.add_argument( 'target', metavar='TARGET', help='identifier for run to be untagged') parser.add_argument( 'tag', metavar='TAG', help='tag name to be removed') return parser def run(self): try: runs = self.connection.get_run_index( min=1, max=1, query_string=self.args.target) except LoomengineUtilsError as e: raise SystemExit("ERROR! Failed to get run list: '%s'" % e) tag_data = {'tag': self.args.tag} try: tag = self.connection.remove_run_tag(runs[0]['uuid'], tag_data) except LoomengineUtilsError as e: raise SystemExit("ERROR! Failed to remove tag: '%s'" % e) print 'Tag %s has been removed from run "%s@%s"' % \ (tag.get('tag'), runs[0].get('name'), runs[0].get('uuid'))
class RunLabelList(object): def __init__(self, args=None): if args is None: args = self._get_args() self.args = args verify_has_connection_settings() server_url = get_server_url() verify_server_is_running(url=server_url) self.connection = Connection(server_url, token=get_token()) def _get_args(self): self.parser = self.get_parser() return self.parser.parse_args() @classmethod def get_parser(cls, parser=None): # If called from main, use the subparser provided. # Otherwise create a top-level parser here. if parser is None: parser = argparse.ArgumentParser(__file__) parser.add_argument( 'target', metavar='TARGET', nargs='?', help='show labels only for the specified run') return parser def run(self): if self.args.target: runs = self.connection.get_run_index( min=1, max=1, query_string=self.args.target) label_data = self.connection.list_run_labels(runs[0]['uuid']) labels = label_data.get('labels', []) print '[showing %s labels]' % len(labels) for label in labels: print label else: label_list = self.connection.get_run_label_index() label_counts = {} for item in label_list: label_counts.setdefault(item.get('label'), 0) label_counts[item.get('label')] += 1 print '[showing %s labels]' % len(label_counts) for key in label_counts: print "%s (%s)" % (key, label_counts[key])
class RunLabelAdd(object): """Add a new run labels """ def __init__(self, args=None): # Args may be given as an input argument for testing purposes # or from the main parser. # Otherwise get them from the parser. if args is None: args = self._get_args() self.args = args verify_has_connection_settings() server_url = get_server_url() verify_server_is_running(url=server_url) self.connection = Connection(server_url, token=get_token()) def _get_args(self): self.parser = self.get_parser() return self.parser.parse_args() @classmethod def get_parser(cls, parser=None): # If called from main, use the subparser provided. # Otherwise create a top-level parser here. if parser is None: parser = argparse.ArgumentParser(__file__) parser.add_argument( 'target', metavar='TARGET', help='identifier for run to be labeled') parser.add_argument( 'label', metavar='LABEL', help='label name to be added') return parser def run(self): runs = self.connection.get_run_index( min=1, max=1, query_string=self.args.target) label_data = {'label': self.args.label} label = self.connection.post_run_label(runs[0]['uuid'], label_data) print 'Target "%s@%s" has been labeled as "%s"' % \ (runs[0].get('name'), runs[0].get('uuid'), label.get('label'))
class RunLabelRemove(object): """Remove a run label """ def __init__(self, args=None): if args is None: args = self._get_args() self.args = args verify_has_connection_settings() server_url = get_server_url() verify_server_is_running(url=server_url) self.connection = Connection(server_url, token=get_token()) def _get_args(self): self.parser = self.get_parser() return self.parser.parse_args() @classmethod def get_parser(cls, parser=None): # If called from main, use the subparser provided. # Otherwise create a top-level parser here. if parser is None: parser = argparse.ArgumentParser(__file__) parser.add_argument( 'target', metavar='TARGET', help='identifier for run to be unlabeled') parser.add_argument( 'label', metavar='LABEL', help='label name to be removed') return parser def run(self): runs = self.connection.get_run_index( min=1, max=1, query_string=self.args.target) label_data = {'label': self.args.label} label = self.connection.remove_run_label(runs[0]['uuid'], label_data) print 'Label %s has been removed from run "%s@%s"' % \ (label.get('label'), runs[0].get('name'), runs[0].get('uuid'))
class RunTagList(object): def __init__(self, args=None): if args is None: args = self._get_args() self.args = args verify_has_connection_settings() server_url = get_server_url() verify_server_is_running(url=server_url) self.connection = Connection(server_url, token=get_token()) def _get_args(self): self.parser = self.get_parser() return self.parser.parse_args() @classmethod def get_parser(cls, parser=None): # If called from main, use the subparser provided. # Otherwise create a top-level parser here. if parser is None: parser = argparse.ArgumentParser(__file__) parser.add_argument('target', metavar='TARGET', nargs='?', help='show tags only for the specified run') return parser def run(self): if self.args.target: runs = self.connection.get_run_index(min=1, max=1, query_string=self.args.target) tag_data = self.connection.list_run_tags(runs[0]['uuid']) tags = tag_data.get('tags', []) else: tag_list = self.connection.get_run_tag_index() tags = [item.get('tag') for item in tag_list] print '[showing %s tags]' % len(tags) for tag in tags: print tag
class RunLabelList(object): def __init__(self, args=None, silent=False): if args is None: args = self._get_args() self.args = args self.silent = silent verify_has_connection_settings() server_url = get_server_url() verify_server_is_running(url=server_url) self.connection = Connection(server_url, token=get_token()) def _get_args(self): self.parser = self.get_parser() return self.parser.parse_args() @classmethod def get_parser(cls, parser=None): # If called from main, use the subparser provided. # Otherwise create a top-level parser here. if parser is None: parser = argparse.ArgumentParser(__file__) parser.add_argument( 'target', metavar='TARGET', nargs='?', help='show labels only for the specified run') return parser def run(self): if self.args.target: try: runs = self.connection.get_run_index( min=1, max=1, query_string=self.args.target) except LoomengineUtilsError as e: raise SystemExit("ERROR! Failed to get run list: '%s'" % e) try: label_data = self.connection.list_run_labels(runs[0]['uuid']) except LoomengineUtilsError as e: raise SystemExit("ERROR! Failed to get label list: '%s'" % e) labels = label_data.get('labels', []) if not self.silent: print '[showing %s labels]' % len(labels) for label in labels: print label else: try: label_list = self.connection.get_run_label_index() except LoomengineUtilsError as e: raise SystemExit("ERROR! Failed to get label list: '%s'" % e) label_counts = {} for item in label_list: label_counts.setdefault(item.get('label'), 0) label_counts[item.get('label')] += 1 if not self.silent: print '[showing %s labels]' % len(label_counts) for key in label_counts: print "%s (%s)" % (key, label_counts[key])