Exemple #1
0
 def run(self, context, args, kwargs, opargs):
     volume = self.parent.entity
     result = list(iterate_vdevs(volume['topology']))
     return Table(result, [
         Table.Column('Name', 'path'),
         Table.Column('Status', 'status')
     ])
Exemple #2
0
 def run(self, context, args, kwargs, opargs):
     vols = context.connection.call_sync('volumes.find')
     return Table(vols, [
         Table.Column('ID', 'id'),
         Table.Column('Volume name', 'name'),
         Table.Column('Status', 'status')
     ])
Exemple #3
0
 def run(self, context, args, kwargs, opargs):
     volume = context.call_sync('zfs.pool.get_boot_pool')
     result = list(iterate_vdevs(volume['groups']))
     return Table(result, [
         Table.Column('Name', 'path'),
         Table.Column('Status', 'status')
     ])
Exemple #4
0
        def run(self, context, args, kwargs, opargs, filtering=None):
            cols = []
            params = []
            options = {}

            if filtering:
                for k, v in filtering['params'].items():
                    if k == 'limit':
                        options['limit'] = int(v)
                        continue

                    if k == 'sort':
                        for sortkey in v:
                            prop = self.parent.get_mapping(sortkey)
                            options.setdefault('sort', []).append(prop.get)
                        continue

                    if not self.parent.has_property(k):
                        raise CommandException('Unknown field {0}'.format(k))

                params = list(self.__map_filter_properties(
                    filtering['filter']))

            for col in filter(lambda x: x.list, self.parent.property_mappings):
                cols.append(Table.Column(col.descr, col.get, col.type))

            return Table(self.parent.query(params, options), cols)
Exemple #5
0
 def run(self, context, args, kwargs, opargs):
     media = context.connection.call_sync('volumes.find_media')
     return Table(media, [
         Table.Column('Path', 'path'),
         Table.Column('Label', 'label'),
         Table.Column('Size', 'size'),
         Table.Column('Filesystem type', 'fstype')
     ])
Exemple #6
0
    def run(self, context, args, kwargs, opargs, input=None):
        field = args[0]
        if isinstance(input, Table):
            input.data = map(lambda x: {'result': x.get(field)}, input.data)
            input.columns = [Table.Column('Result', 'result')]

            return input
Exemple #7
0
 def run(self, context, args, kwargs, opargs):
     items = context.call_sync('sessions.query', *parse_query_args(args, kwargs))
     return Table(items, [
         Table.Column('Session ID', 'id', ValueType.NUMBER),
         Table.Column('IP address', 'address', ValueType.STRING),
         Table.Column('User name', 'username', ValueType.STRING),
         Table.Column('Started at', 'started-at', ValueType.TIME),
         Table.Column('Ended at', 'ended-at', ValueType.TIME)
     ])
Exemple #8
0
 def run(self, context, args, kwargs, opargs):
     self.context = context
     tasks = context.connection.call_sync('task.query')
     return Table(tasks, [
         Table.Column('ID', 'id'),
         Table.Column('Started at', 'started_at', ValueType.TIME),
         Table.Column('Finished at', 'finished_at', ValueType.TIME),
         Table.Column('Description', self.describe_task),
         Table.Column('State', self.describe_state)
     ])
Exemple #9
0
 def run(self, context, args, kwargs, opargs):
     items = context.call_sync('event.query', *parse_query_args(args, kwargs))
     return Table(items, [
         Table.Column('Event name', lambda t: events.translate(context, t['name'], t['args'])),
         Table.Column('Time', 'timestamp', ValueType.TIME)
     ])
Exemple #10
0
    def run(self, context, args, kwargs, opargs):
        display_props = False
        if "properties" in args:
            display_props = True
        obj = context.ml.get_relative_object(context.ml.path[-1], args)
        bases = map(lambda x: x.__name__, obj.__class__.__bases__)

        if display_props:
            if hasattr(obj, 'property_mappings'):
                prop_dict_list = []
                for prop in obj.property_mappings:
                    prop_dict = {
                        'propname': prop.name,
                        'propdescr': prop.descr
                    }
                    prop_dict_list.append(prop_dict)
                return Table(prop_dict_list, [
                    Table.Column('Property', 'propname', ValueType.STRING),
                    Table.Column('Description', 'propdescr', ValueType.STRING)
                ])
            else:
                output_msg(
                    "The current namespace does not have any properties.")
            return

        if 'Command' in bases and obj.__doc__:
            if hasattr(obj, 'parent'):
                if obj.__class__.__name__ in obj.parent.localdoc:
                    output_msg(
                        textwrap.dedent(
                            obj.parent.localdoc[obj.__class__.__name__]))
                else:
                    output_msg(inspect.getdoc(obj))
            else:
                output_msg(inspect.getdoc(obj))

        if 'PipeCommand' in bases and obj.__doc__:
            output_msg(inspect.getdoc(obj))

        if any(i in ['Namespace', 'EntityNamespace'] for i in bases):
            # First listing the Current Namespace's commands
            cmd_dict_list = []
            ns_cmds = obj.commands()
            for key, value in ns_cmds.iteritems():
                cmd_dict = {
                    'cmd': key,
                    'description': value.description,
                }
                cmd_dict_list.append(cmd_dict)

            # Then listing the namespaces available from this namespace
            namespaces_dict_list = []
            for nss in obj.namespaces():
                if not isinstance(nss, EntityNamespace.SingleItemNamespace):
                    namespace_dict = {
                        'name': nss.name,
                        'description': nss.description,
                    }
                    namespaces_dict_list.append(namespace_dict)

            # Finally listing the builtin cmds
            builtin_cmd_dict_list = []
            for key, value in context.ml.builtin_commands.iteritems():
                builtin_cmd_dict = {
                    'cmd': key,
                    'description': value.description,
                }
                builtin_cmd_dict_list.append(builtin_cmd_dict)

            # Finally printing all this out in unix `LESS(1)` pager style
            output_call_list = []
            if cmd_dict_list:
                output_call_list.append(
                    Table(cmd_dict_list, [
                        Table.Column('Command', 'cmd', ValueType.STRING),
                        Table.Column('Description', 'description',
                                     ValueType.STRING)
                    ]))
            if namespaces_dict_list:
                output_call_list.append(
                    Table(namespaces_dict_list, [
                        Table.Column('Namespace', 'name', ValueType.STRING),
                        Table.Column('Description', 'description',
                                     ValueType.STRING)
                    ]))
            # Only display the help on builtin commands if in the RootNamespace
            if obj.__class__.__name__ == 'RootNamespace':
                output_call_list.append(
                    Table(builtin_cmd_dict_list, [
                        Table.Column('Builtin Command', 'cmd',
                                     ValueType.STRING),
                        Table.Column('Description', 'description',
                                     ValueType.STRING)
                    ]))
            output_less(lambda: output_table_list(output_call_list))