From 25f54ac07dcc62d44059fd8f73091a1b3a535fa3 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Mon, 6 May 2013 17:20:20 +0200 Subject: initial commit --- printer.py | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 printer.py (limited to 'printer.py') diff --git a/printer.py b/printer.py new file mode 100644 index 0000000..7d440d0 --- /dev/null +++ b/printer.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- + +class Printer: + labels = { + 'hostname': 'Hostname', + 'arch': 'Architecture', + 'os': 'Operating System', + 'addresses': 'IPs' + } + + sort = ['hostname', 'arch', 'os', 'addresses'] + ignore = ['vserver-host'] + + def __init__(self, data): + self.data = data + + def print_addresses(self, label, value): + for ip in value: + print('%s%s/%s (%s)' % + (label, ip['address'], ip['netmask'], ip['interface'])) + label = self.empty + + def print_vserver(self, label, value): + if value == 'guest': + print('%sguest running on %s' % + (label, self.data['vserver-host'])) + else: + print('%s %s' % (self.label, value)) + + def print_default(self, key, value): + label = '' + if self.length > 0: + label = '%s: ' % self.get_label(key) + label = label.rjust(self.length) + + try: + method = getattr(self, 'print_%s' % key) + method(label, value) + except AttributeError: + if isinstance(value, list): + for v in value: + print('%s%s' % (label, v)) + label = self.empty + else: + print('%s%s' % (label, value)) + + def get_label(self, key): + if key in self.labels: + return self.labels[key] + return key + + def info(self, key): + # find max lenght for labels + labels = map(self.get_label, self.data.keys()) + self.length = max(map(len, labels)) + 3 + self.empty = ' ' * self.length + + if key is not None: + self.length = 0 + self.empty = '' + if key in self.data: + self.print_default(key, self.data[key]) + else: + # first the sorted keys + for key in self.sort: + if key in self.data: + self.print_default(key, self.data[key]) + + # other keys, that are not ignored + for key in [k for k in self.data.keys() + if k not in self.sort + and k not in self.ignore]: + self.print_default(key, self.data[key]) + -- cgit v1.2.3-1-g7c22