# interpreted as representing official policies, either expressed
# or implied, of GRNET S.A.
-class OrderedDict(dict):
- """An ordered dict implementation for Python versions prior to 2.7"""
-
- def __init__(self):
- dict.__init__(self)
- self._keys = []
-
- def __delitem__(self, key):
- dict.__delitem__(self, key)
- self._keys.remove(key)
-
- def __iter__(self):
- return iter(self._keys)
-
- def __repr__(self):
- return repr(self.items())
-
- def __setitem__(self, key, value):
- if key not in self:
- self._keys.append(key)
- dict.__setitem__(self, key, value)
-
- def keys(self):
- return self._keys
-
- def iteritems(self):
- for key in self._keys:
- yield key, self[key]
-
- def items(self):
- return list(self.iteritems())
-
def print_addresses(addresses, margin):
for address in addresses:
print '%s: %s' % (key.rjust(margin + 8), ip['addr'])
-def print_metadata(metadata, margin):
- print '%s:' % 'metadata'.rjust(margin)
- for key, val in metadata.get('values', {}).items():
- print '%s: %s' % (key.rjust(margin + 4), val)
-
-
def print_dict(d, exclude=()):
if not d:
return
print '%s:' % 'addresses'.rjust(margin)
print_addresses(val.get('values', []), margin)
continue
- elif key == 'metadata':
- print_metadata(val, margin)
- continue
elif key == 'servers':
- val = ', '.join(str(x) for x in val['values'])
+ val = ', '.join(unicode(x) for x in val['values'])
+ elif isinstance(val, dict):
+ if val.keys() == ['values']:
+ val = val['values']
+ print '%s:' % key.rjust(margin)
+ for key, val in val.items():
+ print '%s: %s' % (key.rjust(margin + 4), val)
+ continue
print '%s: %s' % (key.rjust(margin), val)
-def print_items(items, detail=False):
+def print_items(items, title=('id', 'name')):
for item in items:
- print '%s %s' % (item['id'], item.get('name', ''))
- if detail:
- print_dict(item, exclude=('id', 'name'))
+ print ' '.join(unicode(item.pop(key)) for key in title if key in item)
+ if item:
+ print_dict(item)
print