DRY up dict conversion and fix serialization error
This commit is contained in:
parent
1ad4f6e325
commit
f8c3a83cd5
1 changed files with 26 additions and 28 deletions
|
@ -136,6 +136,30 @@ PROTOCOLS = ['DNS_TCP', 'DNS_UDP', 'FTP', 'HTTP', 'HTTPS', 'IMAPS', 'IMAPv4',
|
||||||
'TCP_CLIENT_FIRST', 'UDP', 'UDP_STREAM', 'SFTP']
|
'TCP_CLIENT_FIRST', 'UDP', 'UDP_STREAM', 'SFTP']
|
||||||
|
|
||||||
|
|
||||||
|
def to_dict(obj):
|
||||||
|
instance = {}
|
||||||
|
for key in dir(obj):
|
||||||
|
value = getattr(obj, key)
|
||||||
|
if key == 'virtual_ips':
|
||||||
|
virtual_ips = []
|
||||||
|
instance[key] = []
|
||||||
|
for vip in value:
|
||||||
|
vip_dict = {}
|
||||||
|
for vip_key, vip_value in vars(vip).iteritems():
|
||||||
|
if isinstance(vip_value, NON_CALLABLES):
|
||||||
|
vip_dict[vip_key] = vip_value
|
||||||
|
instance[key].append(vip_dict)
|
||||||
|
elif key == 'nodes':
|
||||||
|
instance[key] = []
|
||||||
|
for node in value:
|
||||||
|
instance[key].append(node.to_dict())
|
||||||
|
elif (isinstance(value, NON_CALLABLES) and
|
||||||
|
not key.startswith('_')):
|
||||||
|
instance[key] = value
|
||||||
|
|
||||||
|
return instance
|
||||||
|
|
||||||
|
|
||||||
def cloud_load_balancer(module, state, name, meta, algorithm, port, protocol,
|
def cloud_load_balancer(module, state, name, meta, algorithm, port, protocol,
|
||||||
vip_type, timeout, wait, wait_timeout):
|
vip_type, timeout, wait, wait_timeout):
|
||||||
for arg in (state, name, port, protocol, vip_type):
|
for arg in (state, name, port, protocol, vip_type):
|
||||||
|
@ -210,20 +234,7 @@ def cloud_load_balancer(module, state, name, meta, algorithm, port, protocol,
|
||||||
pyrax.utils.wait_for_build(balancer, interval=5, attempts=attempts)
|
pyrax.utils.wait_for_build(balancer, interval=5, attempts=attempts)
|
||||||
|
|
||||||
balancer.get()
|
balancer.get()
|
||||||
instance = {}
|
instance = to_dict(balancer)
|
||||||
for key, value in vars(balancer).iteritems():
|
|
||||||
if key == 'virtual_ips':
|
|
||||||
virtual_ips = []
|
|
||||||
instance[key] = []
|
|
||||||
for vip in value:
|
|
||||||
vip_dict = {}
|
|
||||||
for vip_key, vip_value in vars(vip).iteritems():
|
|
||||||
if isinstance(vip_value, NON_CALLABLES):
|
|
||||||
vip_dict[vip_key] = vip_value
|
|
||||||
instance[key].append(vip_dict)
|
|
||||||
elif (isinstance(value, NON_CALLABLES) and
|
|
||||||
not key.startswith('_')):
|
|
||||||
instance[key] = value
|
|
||||||
|
|
||||||
result = dict(changed=changed, balancer=instance)
|
result = dict(changed=changed, balancer=instance)
|
||||||
|
|
||||||
|
@ -246,20 +257,7 @@ def cloud_load_balancer(module, state, name, meta, algorithm, port, protocol,
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
module.fail_json(msg='%s' % e.message)
|
module.fail_json(msg='%s' % e.message)
|
||||||
|
|
||||||
instance = {}
|
instance = to_dict(balancer)
|
||||||
for key, value in vars(balancer).iteritems():
|
|
||||||
if key == 'virtual_ips':
|
|
||||||
virtual_ips = []
|
|
||||||
instance[key] = []
|
|
||||||
for vip in value:
|
|
||||||
vip_dict = {}
|
|
||||||
for vip_key, vip_value in vars(vip).iteritems():
|
|
||||||
if isinstance(vip_value, NON_CALLABLES):
|
|
||||||
vip_dict[vip_key] = vip_value
|
|
||||||
instance[key].append(vip_dict)
|
|
||||||
elif (isinstance(value, NON_CALLABLES) and
|
|
||||||
not key.startswith('_')):
|
|
||||||
instance[key] = value
|
|
||||||
|
|
||||||
if wait:
|
if wait:
|
||||||
attempts = wait_timeout / 5
|
attempts = wait_timeout / 5
|
||||||
|
|
Loading…
Reference in a new issue