Add users and useraccount update
Change-Id: I77d36eb0fad620b3b601663d48819cb3830ba9ba
diff --git a/_modules/avinetworks.py b/_modules/avinetworks.py
index e01edd6..7e329d8 100644
--- a/_modules/avinetworks.py
+++ b/_modules/avinetworks.py
@@ -383,3 +383,114 @@
ret['result'] = False
ret['comment'] = {"Error": "Cluster was not updates", "reason": result.json()['error']}
return ret
+
+
+def user_list():
+ command = "user"
+ ret = send_request_get(command)
+ return ret.json()
+
+
+def user_get(name, **kwargs):
+ users = user_list()
+ for user in users['results']:
+ if name == user['username'] or name == user['uuid']:
+ return user
+ return {'result': False,
+ 'Error': "Error in the retrieving user " + name + "."}
+
+
+def _compare_attr(origin, new):
+ if not new:
+ return origin
+ return new
+
+
+def user_create(name, uuid=None, username=None, password=None, email=None, full_name=None, is_superuser=None, local=None, **kwargs):
+ command = 'user'
+ ret = {'name': name,
+ 'changes': {},
+ 'result': True,
+ 'comment': ''}
+
+ user = user_get(name)
+ if 'Error' not in user:
+ data = {}
+ data['username'] = _compare_attr(user['username'], username)
+ data['password'] = _compare_attr(user['password'], password)
+ data['email'] = _compare_attr(user['email'], email)
+ data['full_name'] = _compare_attr(user['full_name'], full_name)
+ data['is_superuser'] = _compare_attr(user['is_superuser'], is_superuser)
+ data['local'] = _compare_attr(user['local'], local)
+ # data['default_tenant_uuid'] = _compare_attr(user['default_tenant_uuid'], default_tenant_uuid)
+
+ if __opts__['test']:
+ ret['changes'] = None
+ ret['comment'] = "User " + name + " will be updated"
+ return ret
+
+ command += "/"+user["uuid"]
+ result = send_request_put(command, data)
+ ret['result'] = result
+ ret['comment'] = "User " + name + " has been updated"
+ return ret
+
+ data = {}
+ data['username'] = username
+ data['password'] = password
+ data['email'] = email
+ data['full_name'] = full_name
+ data['is_superuser'] = is_superuser
+ data['local'] = local
+
+ if __opts__['test']:
+ ret['changes'] = None
+ ret['comment'] = "User " + name + " will be created"
+ return ret
+
+ result = send_request_post(command, data)
+ ret['result'] = result
+ ret['comment'] = "User " + name + " has been created"
+ return ret
+
+
+def useraccount_get():
+ command = "useraccount"
+ ret = send_request_get(command)
+ return ret.json()
+
+
+def useraccount_update(old_password, password, full_name=None, email=None, **kwargs):
+ command = 'useraccount'
+ ret = {'name': "user_account",
+ 'changes': {},
+ 'result': True,
+ 'comment': ''}
+ data = {}
+ data['old_password'] = old_password
+ data['password'] = password
+ account = useraccount_get()
+ if email:
+ data['email'] = email
+ elif (len(account["email"]) > 0):
+ data['email'] = str(account["email"])
+ else:
+ data['email'] = ""
+
+ if full_name:
+ data['full_name'] = full_name
+ elif (len(account["full_name"]) > 0):
+ data['full_name'] = str(account["full_name"])
+ else:
+ data['full_name'] = ""
+
+ if __opts__['test']:
+ ret['result'] = None
+ ret['comment'] = "User Account will be updated"
+ return ret
+
+ send_request_put(command, data)
+ ret['result'] = True
+ ret['changes'] = data
+ ret['comment'] = "User Account has been updated"
+ return ret