From 722d0fe1288a2ec895d63717dbdb9c476227c4dd Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Thu, 13 Feb 2014 15:55:26 -0500 Subject: [PATCH] Fix API explorer to do list type attributes --- confluent/config/attributes.py | 2 +- confluent/config/configmanager.py | 2 +- confluent/httpapi.py | 8 ++++++-- confluent/messages.py | 13 +++++++++---- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/confluent/config/attributes.py b/confluent/config/attributes.py index 37c27c43..62bf2802 100644 --- a/confluent/config/attributes.py +++ b/confluent/config/attributes.py @@ -52,7 +52,7 @@ nic = { # 'node', which can be considered a 'system' or a 'vm' node = { 'groups': { - 'type': (list, tuple), + 'type': list, 'default': 'all', 'description': ('List of static groups for which this node is ' 'considered a member'), diff --git a/confluent/config/configmanager.py b/confluent/config/configmanager.py index dc6750e0..fb2f23e4 100644 --- a/confluent/config/configmanager.py +++ b/confluent/config/configmanager.py @@ -575,7 +575,7 @@ class ConfigManager(object): for attrname in attribmap[node].iterkeys(): if (attrname not in attributes.node or ('type' in attributes.node[attrname] and - type(attribmap[node][attrname]) not in attributes.node[attrname]['type'])): + not isinstance(attribmap[node][attrname],attributes.node[attrname]['type'])): raise ValueError newdict = {} if (isinstance(attribmap[node][attrname], str)): diff --git a/confluent/httpapi.py b/confluent/httpapi.py index debd4dd7..72a216dd 100644 --- a/confluent/httpapi.py +++ b/confluent/httpapi.py @@ -38,11 +38,15 @@ def node_creation_resources(): if attr.startswith("secret."): yield confluent.messages.CryptedAttributes( kv={attr: None}, - desc=attribs.node[attr]['description']).html() + '
' + desc=attribs.node[attr]['description']).html() + '
\n' + elif 'type' in attribs.node[attr] and list == attribs.node[attr]['type']: + yield confluent.messages.ListAttributes( + kv={attr: []}, + desc=attribs.node[attr]['description']).html() + '
\n' else: yield confluent.messages.Attributes( kv={attr: None}, - desc=attribs.node[attr]['description']).html() + '
' + desc=attribs.node[attr]['description']).html() + '
\n' create_resource_functions = { '/node/': node_creation_resources, diff --git a/confluent/messages.py b/confluent/messages.py index 44cb5969..d20c0e99 100644 --- a/confluent/messages.py +++ b/confluent/messages.py @@ -45,6 +45,10 @@ class ConfluentMessage(object): value = '********' if isinstance(val, list): snippet += key + ":" + if len(val) == 0: + snippet += ('' + ).format(type, key, self.desc) for v in val: snippet += ('' @@ -274,11 +278,12 @@ class Attributes(ConfluentMessage): class ListAttributes(ConfluentMessage): - def __init__(self, node, kv, desc=''): + def __init__(self, node=None, kv=None, desc=''): self.desc = desc - self .kvpairs = { - node: kv - } + if node is None: + self.kvpairs = kv + else: + self .kvpairs = {node: kv} class CryptedAttributes(Attributes):