X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fobserver%2Fsteps%2Fsync_users.py;fp=planetstack%2Fobserver%2Fsteps%2Fsync_users.py;h=af1bc30cdd46e1dbb87bffbdf4679f5c0b7054c3;hb=24836f18c96de50f93cacb2be40f311f66e4876a;hp=0000000000000000000000000000000000000000;hpb=f61e17af98a435ab1eac843ee865abff81f5fa4c;p=plstackapi.git diff --git a/planetstack/observer/steps/sync_users.py b/planetstack/observer/steps/sync_users.py new file mode 100644 index 0000000..af1bc30 --- /dev/null +++ b/planetstack/observer/steps/sync_users.py @@ -0,0 +1,32 @@ +import os +import base64 +from planetstack.config import Config + +class SyncUsers(OpenStackSyncStep): + provides=[User] + def sync_record(self, user): + name = user.email[:user.email.find('@')] + user_fields = {'name': name, + 'email': user.email, + 'password': hashlib.md5(user.password).hexdigest()[:6], + 'enabled': True} + if not user.kuser_id: + keystone_user = self.driver.create_user(**user_fields) + user.kuser_id = keystone_user.id + 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') + if user.is_admin: + self.driver.add_user_role(user.kuser_id, user.site.tenant_id, 'admin') + 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() + + user.save()