Dedupe PTR record related code in rax_dns_record
This commit is contained in:
parent
28fcdec2db
commit
7d0eba19ab
4 changed files with 33 additions and 31 deletions
|
@ -33,7 +33,6 @@ REPLACER_COMPLEX = "\"<<INCLUDE_ANSIBLE_MODULE_COMPLEX_ARGS>>\""
|
||||||
REPLACER_WINDOWS = "# POWERSHELL_COMMON"
|
REPLACER_WINDOWS = "# POWERSHELL_COMMON"
|
||||||
REPLACER_VERSION = "\"<<ANSIBLE_VERSION>>\""
|
REPLACER_VERSION = "\"<<ANSIBLE_VERSION>>\""
|
||||||
|
|
||||||
|
|
||||||
class ModuleReplacer(object):
|
class ModuleReplacer(object):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -170,6 +170,29 @@ def rax_find_server(module, rax_module, server):
|
||||||
return server
|
return server
|
||||||
|
|
||||||
|
|
||||||
|
def rax_find_loadbalancer(module, rax_module, loadbalancer):
|
||||||
|
clb = rax_module.cloud_loadbalancers
|
||||||
|
try:
|
||||||
|
UUID(loadbalancer)
|
||||||
|
found = clb.get(loadbalancer)
|
||||||
|
except:
|
||||||
|
for lb in clb.list():
|
||||||
|
if loadbalancer == lb.name:
|
||||||
|
found.append(lb)
|
||||||
|
|
||||||
|
if not found:
|
||||||
|
module.fail_json(msg='No loadbalancer was matched')
|
||||||
|
|
||||||
|
if len(found) > 1:
|
||||||
|
module.fail_json(msg='Multiple loadbalancers matched')
|
||||||
|
|
||||||
|
# We made it this far, grab the first and hopefully only item
|
||||||
|
# in the list
|
||||||
|
found = found[0]
|
||||||
|
|
||||||
|
return found
|
||||||
|
|
||||||
|
|
||||||
def rax_argument_spec():
|
def rax_argument_spec():
|
||||||
return dict(
|
return dict(
|
||||||
api_key=dict(type='str', aliases=['password'], no_log=True),
|
api_key=dict(type='str', aliases=['password'], no_log=True),
|
||||||
|
|
|
@ -219,7 +219,7 @@ def create(module, names=[], flavor=None, image=None, meta={}, key_name=None,
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
module.fail_json(msg='Failed to load %s' % user_data)
|
module.fail_json(msg='Failed to load %s' % user_data)
|
||||||
|
|
||||||
# Handle the file contents
|
# Handle the file contents
|
||||||
for rpath in files.keys():
|
for rpath in files.keys():
|
||||||
lpath = os.path.expanduser(files[rpath])
|
lpath = os.path.expanduser(files[rpath])
|
||||||
try:
|
try:
|
||||||
|
@ -707,5 +707,5 @@ def main():
|
||||||
from ansible.module_utils.basic import *
|
from ansible.module_utils.basic import *
|
||||||
from ansible.module_utils.rax import *
|
from ansible.module_utils.rax import *
|
||||||
|
|
||||||
### invoke the module
|
# invoke the module
|
||||||
main()
|
main()
|
||||||
|
|
|
@ -120,43 +120,23 @@ except ImportError:
|
||||||
HAS_PYRAX = False
|
HAS_PYRAX = False
|
||||||
|
|
||||||
|
|
||||||
def rax_dns_record(module, data=None, comment=None, loadbalancer=None,
|
def rax_dns_record_ptr(module, data=None, comment=None, loadbalancer=None,
|
||||||
name=None, server=None, state='present', ttl=7200):
|
name=None, server=None, state='present', ttl=7200):
|
||||||
changed = False
|
changed = False
|
||||||
results = []
|
results = []
|
||||||
|
|
||||||
cs = pyrax.cloudservers
|
|
||||||
clb = pyrax.cloud_loadbalancers
|
|
||||||
dns = pyrax.cloud_dns
|
dns = pyrax.cloud_dns
|
||||||
|
|
||||||
if not cs or not clb or not dns:
|
if not dns:
|
||||||
module.fail_json(msg='Failed to instantiate client. This '
|
module.fail_json(msg='Failed to instantiate client. This '
|
||||||
'typically indicates an invalid region or an '
|
'typically indicates an invalid region or an '
|
||||||
'incorrectly capitalized region name.')
|
'incorrectly capitalized region name.')
|
||||||
|
|
||||||
if loadbalancer:
|
if loadbalancer:
|
||||||
try:
|
item = rax_find_loadbalancer(module, pyrax, loadbalancer)
|
||||||
UUID(loadbalancer)
|
|
||||||
found = [clb.get(loadbalancer)]
|
|
||||||
except:
|
|
||||||
for lb in clb.list():
|
|
||||||
if loadbalancer == lb.name:
|
|
||||||
found.append(lb)
|
|
||||||
|
|
||||||
if len(found) != 1:
|
|
||||||
module.fail_json(msg='Could not match a loadbalancer with %s' %
|
|
||||||
loadbalancer)
|
|
||||||
elif server:
|
elif server:
|
||||||
try:
|
item = rax_find_server(module, pyrax, server)
|
||||||
UUID(server)
|
|
||||||
found = [cs.servers.get(server)]
|
|
||||||
except:
|
|
||||||
found = cs.servers.list(search_opts=dict(name='^%s$' % server))
|
|
||||||
if len(found) != 1:
|
|
||||||
module.fail_json(msg='Could not match a server with %s' %
|
|
||||||
server)
|
|
||||||
|
|
||||||
item = found[0]
|
|
||||||
if state == 'present':
|
if state == 'present':
|
||||||
current = dns.list_ptr_records(item)
|
current = dns.list_ptr_records(item)
|
||||||
for record in current:
|
for record in current:
|
||||||
|
@ -169,10 +149,10 @@ def rax_dns_record(module, data=None, comment=None, loadbalancer=None,
|
||||||
module.fail_json(msg='%s' % e.message)
|
module.fail_json(msg='%s' % e.message)
|
||||||
record.ttl = ttl
|
record.ttl = ttl
|
||||||
record.name = name
|
record.name = name
|
||||||
results.append(to_dict(record))
|
results.append(rax_to_dict(record))
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
results.append(to_dict(record))
|
results.append(rax_to_dict(record))
|
||||||
break
|
break
|
||||||
|
|
||||||
if not results:
|
if not results:
|
||||||
|
@ -190,7 +170,7 @@ def rax_dns_record(module, data=None, comment=None, loadbalancer=None,
|
||||||
current = dns.list_ptr_records(item)
|
current = dns.list_ptr_records(item)
|
||||||
for record in current:
|
for record in current:
|
||||||
if record.data == data:
|
if record.data == data:
|
||||||
results.append(to_dict(record))
|
results.append(rax_to_dict(record))
|
||||||
break
|
break
|
||||||
|
|
||||||
if results:
|
if results:
|
||||||
|
|
Loading…
Reference in a new issue