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
48 def build_cmd(module, *args):
50 module.get_bin_path('java', True),
52 '/opt/opendaylight/bin/aaa-cli-jar.jar',
54 '/opt/opendaylight/data'
62 module = AnsibleModule(
64 username=dict(type='str'),
65 password=dict(type='str'),
66 state=dict(type='str')
70 username = module.params['username']
71 password = module.params['password']
72 state = module.params['state']
76 module.exit_json(changed=False, failed=True,
77 msg="Username not provided")
78 ls_users_cmd = build_cmd(module, "-l")
79 (rc, out, err) = module.run_command(ls_users_cmd)
81 cmd = build_cmd(module, '--deleteUser', username)
82 (rc, out, err) = module.run_command(cmd)
83 if rc is not None and rc != 0:
84 return module.fail_json(msg=err)
85 module.exit_json(changed=True, msg="User deleted")
87 module.exit_json(changed=False, msg="No such user exists")
88 elif state == 'present':
89 if not username or not password:
90 module.exit_json(changed=False, failed=True,
91 msg="Username or password not provided")
92 ls_users_cmd = build_cmd(module, "-l")
93 (rc, out, err) = module.run_command(ls_users_cmd)
94 if rc is not None and rc != 0:
95 return module.fail_json(msg=err)
98 module.exit_json(changed=False, msg="User already exists")
100 cmd = build_cmd(module, '--newUser', username, '-p', password)
101 (rc, out, err) = module.run_command(cmd)
102 if rc is not None and rc != 0:
103 return module.fail_json(msg=err)
104 module.exit_json(changed=True, msg="User added")
105 elif state == 'list':
106 ls_users_cmd = build_cmd(module, "-l")
107 (rc, out, err) = module.run_command(ls_users_cmd)
108 if rc is not None and rc != 0:
109 return module.fail_json(msg=err)
110 users = out.split('\n')
111 if users[0] == 'User names:':
113 module.exit_json(changed=False, msg=users)
115 module.exit_json(changed=False, msg="No state specified")
118 if __name__ == '__main__':