1 from ansible.module_utils.basic import AnsibleModule
3 ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'],
4 'supported_by': 'community'}
10 short_description: Manipulate ODL users
12 - Use this module to add, delete and list ODL users
14 author: "Taseer Ahmed (@Taseer)"
23 description: Add/remove/list OpenDaylight users
31 - name: create odl user
37 - name: delete odl user
42 - name: list odl users
46 - name: change user password
54 def build_cmd(module, *args):
56 module.get_bin_path('java', True),
58 '/opt/opendaylight/bin/aaa-cli-jar.jar',
60 '/opt/opendaylight/data'
68 module = AnsibleModule(
70 username=dict(type='str'),
71 password=dict(type='str'),
72 state=dict(type='str')
76 username = module.params['username']
77 password = module.params['password']
78 state = module.params['state']
82 module.exit_json(changed=False, failed=True,
83 msg="Username not provided")
84 ls_users_cmd = build_cmd(module, "-l")
85 (rc, out, err) = module.run_command(ls_users_cmd)
87 cmd = build_cmd(module, '--deleteUser', username)
88 (rc, out, err) = module.run_command(cmd)
89 if rc is not None and rc != 0:
90 return module.fail_json(msg=err)
91 module.exit_json(changed=True, msg="User deleted")
93 module.exit_json(changed=False, msg="No such user exists")
94 elif state == 'present':
95 if not username or not password:
96 module.exit_json(changed=False, failed=True,
97 msg="Username or password not provided")
98 ls_users_cmd = build_cmd(module, "-l")
99 (rc, out, err) = module.run_command(ls_users_cmd)
100 if rc is not None and rc != 0:
101 return module.fail_json(msg=err)
104 module.exit_json(changed=False, msg="User already exists")
106 cmd = build_cmd(module, '--newUser', username, '-p', password)
107 (rc, out, err) = module.run_command(cmd)
108 if rc is not None and rc != 0:
109 return module.fail_json(msg=err)
110 module.exit_json(changed=True, msg="User added")
111 elif state == 'list':
112 ls_users_cmd = build_cmd(module, "-l")
113 (rc, out, err) = module.run_command(ls_users_cmd)
114 if rc is not None and rc != 0:
115 return module.fail_json(msg=err)
116 users = out.split('\n')
117 if users[0] == 'User names:':
119 module.exit_json(changed=False, msg=users)
120 elif state == 'update':
121 if not username or not password:
122 module.exit_json(changed=False, failed=True,
123 msg="Username or password not provided")
124 cmd = build_cmd(module, "--cu", username, '-p', password)
125 (rc, out, err) = module.run_command(cmd)
126 if rc is not None and rc != 0:
127 return module.fail_json(msg=err)
128 module.exit_json(changed=True, msg="Password changed")
130 module.exit_json(changed=False, msg="No state specified")
133 if __name__ == '__main__':