blob: 03a569069cc5be92e3472209ed1f50c371cc7031 [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 license = dict(required=True, type='str'),
20
21 state = dict(required=True, type='str', choices=["present", "absent"]),
22 force = dict(default=False, type="bool"),
23 username = dict(required=True, type='str'),
24 password = dict(required=True, type='str'),
25 hostname = dict(required=True, type='str'),
26 plc_name = dict(required=True, type='str'),
27
28 remote_hostname = dict(default=None, type="str"),
29 )
30 )
31
32 credentials = {"username": module.params["username"],
33 "password": module.params["password"],
34 "hostname": module.params["hostname"],
35 "plc_name": module.params["plc_name"]}
36
37 state = module.params["state"]
38 node_hostname = module.params["name"]
39 force = module.params["force"]
40
41 api = LCDNAPI(credentials)
42
43 nodes = api.ListAll("Node", {"hostname": node_hostname})
44
45 if (nodes or force) and (state=="absent"):
46 api.deleteCache(node_hostname)
47 module.exit_json(changed=True, msg="cachenode deleted")
48 elif ((not nodes) or force) and (state=="present"):
49 if nodes:
50 # must have been called with force=True, so delete the node so we can re-create it
51 api.deleteCache(node_hostname)
52
53 hpc = {"hostname": node_hostname,
54 "site": module.params["site"],
55 "dns": module.params["dns"],
56 "Interfaces": module.params["interfaces"],
57 "license": module.params["license"]}
58 ret = api.createCache(**hpc)
59 setupscript=ret["setupscript"]
60
61 if module.params["remote_hostname"]:
62 setupscript = setupscript.replace(module.params["hostname"], module.params["remote_hostname"])
63
64 module.exit_json(changed=True, msg="cachenode created", setupscript=setupscript)
65 else:
66 module.exit_json(changed=False)
67
68if __name__ == '__main__':
69 main()