Fix bugs
diff --git a/plstackapi/openstack/driver.py b/plstackapi/openstack/driver.py
index 940be6c..3522b8c 100644
--- a/plstackapi/openstack/driver.py
+++ b/plstackapi/openstack/driver.py
@@ -67,14 +67,32 @@
def add_user_role(self, user_id, tenant_id, role_name):
user = self.shell.keystone.users.find(id=user_id)
tenant = self.shell.keystone.tenants.find(id=tenant_id)
- role = self.shell.keystone.roles.find(role_name)
- return tenant.add_user(user, role)
+ role = self.shell.keystone.roles.find(name=role_name)
+
+ role_found = False
+ user_roles = user.list_roles(tenant.id)
+ for user_role in user_roles:
+ if user_role.name == role.name:
+ role_found = True
+ if not role_found:
+ tenant.add_user(user, role)
+
+ return 1
def delete_user_role(self, user_id, tenant_id, role_name):
user = self.shell.keystone.users.find(id=user_id)
tenant = self.shell.keystone.tenants.find(id=tenant_id)
- role = self.shell.keystone.roles.find(role_name)
- return tenant.delete_user(user, role)
+ role = self.shell.keystone.roles.find(name=role_name)
+
+ role_found = False
+ user_roles = user.list_roles(tenant.id)
+ for user_role in user_roles:
+ if user_role.name == role.name:
+ role_found = True
+ if role_found:
+ tenant.remove_user(user, role)
+
+ return 1
def update_user(self, id, **kwds):
return self.shell.keystone.users.update(id, **kwds)