def info(args): parser = OptionParser(usage='usage: %prog <name, ip, or mac>') options, args = parser.parse_args(args) if not args: parser.print_help() return -1 obj = clusto.get(args[0]) if not obj: log.error('No entity named %s' % args[0]) return -1 obj = obj[0] def format_line(key, value, pad=20): if isinstance(value, list): value = ', '.join(value) key += ':' print key.ljust(pad, ' '), value print 'Name:'.ljust(20, ' '), obj.name print 'Type:'.ljust(20, ' '), obj.type ip = obj.attr_values(key='ip', subkey='ipstring') if ip: format_line('IP', ip) parents = obj.parents() if parents: format_line('Parents', [x.name for x in parents]) contents = obj.contents() if contents: format_line('Contents', [x.name for x in contents]) print '\n', serial = obj.attr_values(key='system', subkey='serial') if serial: format_line('Serial', [x.rstrip('\r\n') for x in serial if x]) memory = obj.attr_value(key='system', subkey='memory') if memory: format_line('Memory', '%i GB' % (memory / 1000)) disk = obj.attr_value(key='system', subkey='disk') if disk: format_line( 'Disk', '%i GB (%i)' % (disk, len(obj.attrs(key='disk', subkey='size')))) cpucount = obj.attr_value(key='system', subkey='cpucount') if cpucount: format_line('CPU Cores', cpucount) desc = obj.attr_values(key='description') if desc: format_line('Description', '\n '.join(desc)) ifaces = [('nic-eth(%i)' % x.number).ljust(20, ' ') + ' %s = %s' % (x.subkey, x.value) for x in obj.attrs(key='port-nic-eth') if x.subkey.find('mac') != -1] if ifaces: print '\n', '\n'.join(ifaces)
def attr(args): parser = OptionParser( usage='%prog (add|set|delete|show) [options] <object>') parser.add_option('-k', '--key', dest='key', default=None) parser.add_option('-s', '--subkey', dest='subkey', default=None) parser.add_option('-v', '--value', dest='value', default=None) parser.add_option('-n', '--number', dest='number', default=None) parser.add_option( '-m', '--merge', dest='merge_container_attrs', action='store_true', help='Merge attributes from this object\'s parent objects') parser.add_option( '-c', '--csv', dest='csv', action='store_true', help= 'Output from the show action will be comma-delimited, rather than pretty' ) options, args = parser.parse_args(args) if len(args) < 2: parser.print_help() return -1 action, obj = args[:2] try: obj = clusto.get(obj) except LookupError: sys.stderr.write('%s does not exist\n' % object) return -1 obj = obj[0] actions = { 'add': obj.addattr, 'set': obj.setattr, 'delete': obj.delattr, 'del': obj.delattr, 'show': AttrQuery(obj), } func = actions.get(action.lower(), None) if not func: sys.stderr.write('Unknown action: %s\n' % action) return -1 if options.number: options.number = int(options.number) if isinstance(options.value, str) and options.value.isdigit(): options.value = int(options.value) opts = dict([(k, v) for k, v in options.__dict__.items() if v != None]) func(**opts)
def info(args): parser = OptionParser(usage='usage: %prog <name, ip, or mac>') options, args = parser.parse_args(args) if not args: parser.print_help() return -1 obj = clusto.get(args[0]) if not obj: log.error('No entity named %s' % args[0]) return -1 obj = obj[0] def format_line(key, value, pad=20): if isinstance(value, list): value = ', '.join(value) key += ':' print key.ljust(pad, ' '), value print 'Name:'.ljust(20, ' '), obj.name print 'Type:'.ljust(20, ' '), obj.type ip = obj.attr_values(key='ip', subkey='ipstring') if ip: format_line('IP', ip) parents = obj.parents() if parents: format_line('Parents', [x.name for x in parents]) contents = obj.contents() if contents: format_line('Contents', [x.name for x in contents]) print '\n', serial = obj.attr_values(key='system', subkey='serial') if serial: format_line('Serial', [x.rstrip('\r\n') for x in serial if x]) memory = obj.attr_value(key='system', subkey='memory') if memory: format_line('Memory', '%i GB' % (memory / 1000)) disk = obj.attr_value(key='system', subkey='disk') if disk: format_line('Disk', '%i GB (%i)' % (disk, len(obj.attrs(key='disk', subkey='size')))) cpucount = obj.attr_value(key='system', subkey='cpucount') if cpucount: format_line('CPU Cores', cpucount) desc = obj.attr_values(key='description') if desc: format_line('Description', '\n '.join(desc)) ifaces = [('nic-eth(%i)' % x.number).ljust(20, ' ') + ' %s = %s' % (x.subkey, x.value) for x in obj.attrs(key='port-nic-eth') if x.subkey.find('mac') != -1] if ifaces: print '\n', '\n'.join(ifaces)
def attr(args): parser = OptionParser(usage='%prog (add|set|delete|show) [options] <object>') parser.add_option('-k', '--key', dest='key', default=None) parser.add_option('-s', '--subkey', dest='subkey', default=None) parser.add_option('-v', '--value', dest='value', default=None) parser.add_option('-n', '--number', dest='number', default=None) parser.add_option('-m', '--merge', dest='merge_container_attrs', action='store_true', help='Merge attributes from this object\'s parent objects') parser.add_option('-c', '--csv', dest='csv', action='store_true', help='Output from the show action will be comma-delimited, rather than pretty') options, args = parser.parse_args(args) if len(args) < 2: parser.print_help() return -1 action, obj = args[:2] try: obj = clusto.get(obj) except LookupError: sys.stderr.write('%s does not exist\n' % object) return -1 obj = obj[0] actions = { 'add': obj.addattr, 'set': obj.setattr, 'delete': obj.delattr, 'del': obj.delattr, 'show': AttrQuery(obj), } func = actions.get(action.lower(), None) if not func: sys.stderr.write('Unknown action: %s\n' % action) return -1 if options.number: options.number = int(options.number) if isinstance(options.value, str) and options.value.isdigit(): options.value = int(options.value) opts = dict([(k, v) for k, v in options.__dict__.items() if v != None]) func(**opts)