From 54304c693d7996577ee21729c5bac6fd07a67556 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Sun, 28 Apr 2013 11:27:07 -0400 Subject: [PATCH] Fix bugs --- plstackapi/core/models/site.py | 1 - plstackapi/core/models/slice.py | 5 +++++ plstackapi/openstack/driver.py | 26 ++++++++++++++++++++++---- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/plstackapi/core/models/site.py b/plstackapi/core/models/site.py index ef7db95..b15e35b 100644 --- a/plstackapi/core/models/site.py +++ b/plstackapi/core/models/site.py @@ -29,7 +29,6 @@ class Site(PlCoreBase): # update the record if self.id: self.driver.update_tenant(self.tenant_id, - name=self.login_base, description=self.name, enabled=self.enabled) diff --git a/plstackapi/core/models/slice.py b/plstackapi/core/models/slice.py index dda6553..027ba10 100644 --- a/plstackapi/core/models/slice.py +++ b/plstackapi/core/models/slice.py @@ -39,6 +39,11 @@ class Slice(PlCoreBase): router = self.driver.create_router(self.name) self.router_id = router['id'] + if self.id: + self.driver.update_tenant(self.tenant_id, + description=self.description, + enabled=self.enabled) + super(Slice, self).save(*args, **kwds) def delete(self, *args, **kwds): 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 @@ class OpenStackDriver: 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) -- 2.43.0