DRY up dict conversion and fix serialization error
This commit is contained in:
parent
74e7eba528
commit
8f2f8a5b53
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']
|
||||
|
||||
|
||||
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,
|
||||
vip_type, timeout, wait, wait_timeout):
|
||||
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)
|
||||
|
||||
balancer.get()
|
||||
instance = {}
|
||||
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
|
||||
instance = to_dict(balancer)
|
||||
|
||||
result = dict(changed=changed, balancer=instance)
|
||||
|
||||
|
@ -246,20 +257,7 @@ def cloud_load_balancer(module, state, name, meta, algorithm, port, protocol,
|
|||
except Exception, e:
|
||||
module.fail_json(msg='%s' % e.message)
|
||||
|
||||
instance = {}
|
||||
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
|
||||
instance = to_dict(balancer)
|
||||
|
||||
if wait:
|
||||
attempts = wait_timeout / 5
|
||||
|
|
Loading…
Reference in a new issue