blob: 75b37e28d08d0d76195abd0def6b61948b37553e [file] [log] [blame]
Scott Bakerc41914d2017-06-26 14:00:52 -07001#!/usr/bin/python
2
3import json
4import os
5import requests
6import sys
7import traceback
8
9from ansible.module_utils.basic import AnsibleModule
10from auraclienttools import LCDNAPI, LCDNFault
11
12def main():
13 module = AnsibleModule(
14 argument_spec = dict(
15 name = dict(required=True, type='str'),
16 site = dict(required=True, type='str'),
17 dns = dict(required=True, type='list'),
18 interfaces= dict(required=True, type='list'),
19
20 state = dict(required=True, type='str', choices=["present", "absent"]),
21 force = dict(default=False, type="bool"),
22 username = dict(required=True, type='str'),
23 password = dict(required=True, type='str'),
24 hostname = dict(required=True, type='str'),
25 plc_name = dict(required=True, type='str'),
26
27 remote_hostname = dict(default=None, type="str"),
28 )
29 )
30
31 credentials = {"username": module.params["username"],
32 "password": module.params["password"],
33 "hostname": module.params["hostname"],
34 "plc_name": module.params["plc_name"]}
35
36 state = module.params["state"]
37 node_hostname = module.params["name"]
38 force = module.params["force"]
39
40 api = LCDNAPI(credentials, experimental=True)
41
42 nodes = api.ListAll("Node", {"hostname": node_hostname})
43
44 if (nodes or force) and (state=="absent"):
45 api.deleteRR(node_hostname)
46 module.exit_json(changed=True, msg="cachenode deleted")
47 elif ((not nodes) or force) and (state=="present"):
48 if nodes:
49 # must have been called with force=True, so delete the node so we can re-create it
50 api.deleteRR(node_hostname)
51
52 rr = {"hostname": node_hostname,
53 "site": module.params["site"],
54 "dns": module.params["dns"],
55 "Interfaces": module.params["interfaces"]}
56 ret = api.createRR(**rr)
57 setupscript=ret["setupscript"]
58
59 if module.params["remote_hostname"]:
60 setupscript = setupscript.replace(module.params["hostname"], module.params["remote_hostname"])
61
62 module.exit_json(changed=True, msg="rr created", setupscript=setupscript)
63 else:
64 module.exit_json(changed=False)
65
66if __name__ == '__main__':
67 main()