From 51b2e8efeb81c2e6d61e4846c0ae821e7a97c6f9 Mon Sep 17 00:00:00 2001 From: Marco Mariani <marco.mariani@nexedi.com> Date: Sun, 12 May 2013 19:24:40 +0200 Subject: [PATCH] split into further options, added md5(url) --- slapos/cli/proxy_show.py | 84 ++++++++++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 30 deletions(-) diff --git a/slapos/cli/proxy_show.py b/slapos/cli/proxy_show.py index c71bb25e2..5af575e6d 100644 --- a/slapos/cli/proxy_show.py +++ b/slapos/cli/proxy_show.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import collections +import hashlib import logging import lxml.etree @@ -25,8 +26,20 @@ class ProxyShowCommand(ConfigCommand): ap.add_argument('-u', '--database-uri', help='URI for sqlite database') - ap.add_argument('--instances', - help='view instance information', + ap.add_argument('--computers', + help='view computer information', + action='store_true') + + ap.add_argument('--software', + help='view software releases', + action='store_true') + + ap.add_argument('--partitions', + help='view partitions', + action='store_true') + + ap.add_argument('--slaves', + help='view slave instances', action='store_true') ap.add_argument('--params', @@ -34,7 +47,7 @@ class ProxyShowCommand(ConfigCommand): action='store_true') ap.add_argument('--network', - help='view network information', + help='view network settings', action='store_true') return ap @@ -47,11 +60,7 @@ class ProxyShowCommand(ConfigCommand): do_show(conf=conf) -tbl_computer = 'computer' + DB_VERSION -tbl_software = 'software' + DB_VERSION tbl_partition = 'partition' + DB_VERSION -tbl_partition_network = 'partition_network' + DB_VERSION -tbl_slave = 'slave' + DB_VERSION def coalesce(*seq): @@ -63,7 +72,6 @@ def coalesce(*seq): def print_table(qry, tablename, skip=None): - if skip is None: skip = set() @@ -81,24 +89,20 @@ def print_table(qry, tablename, skip=None): if rows: print 'table %s:' % tablename, + if skip: + print 'skipping %s' % ', '.join(skip) + else: + print else: print 'table %s: empty' % tablename return - if skip: - print 'skipping %s' % ', '.join(skip) - else: - print - print pt.get_string(border=True, padding_width=0, vrules=prettytable.NONE) - print def print_params(conn): cur = conn.cursor() - print - qry = cur.execute("SELECT reference, partition_reference, software_type, connection_xml FROM %s" % tbl_partition) for row in qry.fetchall(): if not row['connection_xml']: @@ -113,18 +117,19 @@ def print_params(conn): if text and name in ('ssh-key', 'ssh-public-key'): text = text[:20] + '...' + text[-20:] print ' %s = %s' % (name, text) - print def print_computer_table(conn): + tbl_computer = 'computer' + DB_VERSION cur = conn.cursor() qry = cur.execute("SELECT * FROM %s" % tbl_computer) print_table(qry, tbl_computer) def print_software_table(conn): + tbl_software = 'software' + DB_VERSION cur = conn.cursor() - qry = cur.execute("SELECT * FROM %s" % tbl_software) + qry = cur.execute("SELECT *, md5(url) as md5 FROM %s" % tbl_software) print_table(qry, tbl_software) @@ -135,20 +140,14 @@ def print_partition_table(conn): def print_slave_table(conn): + tbl_slave = 'slave' + DB_VERSION cur = conn.cursor() qry = cur.execute("SELECT * FROM %s" % tbl_slave) print_table(qry, tbl_slave, skip=['connection_xml']) -def print_tables(conn): - print_computer_table(conn) - print_software_table(conn) - print_partition_table(conn) - print_slave_table(conn) - - def print_network(conn): - print + tbl_partition_network = 'partition_network' + DB_VERSION cur = conn.cursor() addr = collections.defaultdict(list) qry = cur.execute(""" @@ -170,11 +169,36 @@ def do_show(conf): conn = sqlite3.connect(conf.database_uri) conn.row_factory = sqlite3.Row - print_all = (not conf.instances and not conf.params and not conf.network) - - if print_all or conf.instances: - print_tables(conn) + conn.create_function('md5', 1, lambda s: hashlib.md5(s).hexdigest()) + + print_all = not any( + [ + conf.computers, + conf.software, + conf.partitions, + conf.slaves, + conf.params, + conf.network, + ] + ) + + if print_all or conf.computers: + print_computer_table(conn) + print + if print_all or conf.software: + print_software_table(conn) + print + if print_all or conf.partitions: + print_partition_table(conn) + print + if print_all or conf.slaves: + print_slave_table(conn) + print if print_all or conf.params: print_params(conn) + print if print_all or conf.network: print_network(conn) + print + + -- 2.30.9