From: Tony Mack Date: Tue, 11 Jun 2013 14:10:24 +0000 (-0400) Subject: fix user key sync X-Git-Tag: 1.0~21 X-Git-Url: http://git.onelab.eu/?p=plstackapi.git;a=commitdiff_plain;h=6795fbebdf1c348f1539dbd32e255f50e9ff4e12 fix user key sync --- diff --git a/planetstack/openstack/driver.py b/planetstack/openstack/driver.py index e9988e3..530d93b 100644 --- a/planetstack/openstack/driver.py +++ b/planetstack/openstack/driver.py @@ -106,8 +106,12 @@ class OpenStackDriver: return 1 - def update_user(self, id, **kwds): - return self.shell.keystone.users.update(id, **kwds) + def update_user(self, id, fields): + if 'password' in fields: + self.shell.keystone.users.update_password(id, fields['password']) + if 'enabled' in fields: + self.shell.keystone.users.update_enabled(id, fields['enabled']) + return 1 def create_router(self, name, set_gateway=True): routers = self.shell.quantum.list_routers(name=name)['routers'] diff --git a/planetstack/openstack/manager.py b/planetstack/openstack/manager.py index e310883..131b8fb 100644 --- a/planetstack/openstack/manager.py +++ b/planetstack/openstack/manager.py @@ -2,6 +2,7 @@ import os #os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings") import string import random +import md5 from netaddr import IPAddress, IPNetwork from planetstack import settings @@ -56,7 +57,7 @@ class OpenStackManager: @require_enabled def init_caller(self, caller, tenant): auth = {'username': caller.email, - 'password': '', + 'password': md5.new(caller.password).hexdigest()[:6], 'tenant': tenant} self.client = OpenStackClient(**auth) self.driver = OpenStackDriver(client=self.client) @@ -94,17 +95,16 @@ class OpenStackManager: @require_enabled def save_user(self, user): + name = user.email[:user.email.find('@')] + user_fields = {'name': name, + 'email': user.email, + 'password': md5.new(user.password).hexdigest()[:6], + 'enabled': True} if not user.kuser_id: - name = user.email[:user.email.find('@')] - user_fields = {'name': name, - 'email': user.email, - 'password': user.password, - 'enabled': True} keystone_user = self.driver.create_user(**user_fields) user.kuser_id = keystone_user.id - - if user.public_key: - self.save_key(user.public_key, user.keyname) + else: + self.driver.update_user(user.kuser_id, user_fields) if user.site: self.driver.add_user_role(user.kuser_id, user.site.tenant_id, 'user') @@ -113,6 +113,11 @@ class OpenStackManager: else: # may have admin role so attempt to remove it self.driver.delete_user_role(user.kuser_id, user.site.tenant_id, 'admin') + + if user.public_key: + self.init_caller(user, user.site.login_base) + self.save_key(user.public_key, user.keyname) + self.init_admin() @require_enabled def delete_user(self, user): diff --git a/planetstack/openstack/observer.py b/planetstack/openstack/observer.py index e4460a9..0690558 100644 --- a/planetstack/openstack/observer.py +++ b/planetstack/openstack/observer.py @@ -16,7 +16,7 @@ class OpenStackObserver: return while True: try: - self.sync_roles() + #self.sync_roles() self.sync_tenants() self.sync_users() #self.sync_user_tenant_roles()