Exemplo n.º 1
0
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'))
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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'))
Exemplo n.º 4
0
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])
Exemplo n.º 5
0
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'))
Exemplo n.º 6
0
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'))
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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])