X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fopenstack%2Fdriver.py;h=4c0791e219a9b820ef6e627677490455d9207535;hb=e9ba12d0c240faf964f0dd06c015151fd52dd305;hp=eba424a5768e1270a181fac54a125ec1f279d740;hpb=732913407cc255ab864e39522585e1b98e654af1;p=plstackapi.git diff --git a/planetstack/openstack/driver.py b/planetstack/openstack/driver.py index eba424a..4c0791e 100644 --- a/planetstack/openstack/driver.py +++ b/planetstack/openstack/driver.py @@ -2,7 +2,6 @@ import commands from planetstack.config import Config from openstack.client import OpenStackClient -has_openstack = False class OpenStackDriver: def __init__(self, config = None, client=None): @@ -12,10 +11,7 @@ class OpenStackDriver: self.config = Config() self.admin_client = OpenStackClient() - if has_openstack: - self.admin_user = self.admin_client.keystone.users.find(name=self.admin_client.keystone.username) - else: - self.admin_user = None + self.admin_user = self.admin_client.keystone.users.find(name=self.admin_client.keystone.username) if client: self.shell = client @@ -73,6 +69,10 @@ class OpenStackDriver: def delete_user(self, id): users = self.shell.keystone.users.findall(id=id) for user in users: + # delete users keys + keys = self.shell.nova.keypairs.findall() + for key in keys: + self.shell.nova.keypairs.delete(key) self.shell.keystone.users.delete(user) return 1 @@ -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'] @@ -282,12 +286,16 @@ class OpenStackDriver: return 1 - def create_keypair(self, name, key): + def create_keypair(self, name, public_key): keys = self.shell.nova.keypairs.findall(name=name) if keys: key = keys[0] + # update key + if key.public_key != public_key: + self.delete_keypair(key.id) + key = self.shell.nova.keypairs.create(name=name, public_key=public_key) else: - key = self.shell.nova.keypairs.create(name=name, public_key=key) + key = self.shell.nova.keypairs.create(name=name, public_key=public_key) return key def delete_keypair(self, id): @@ -304,9 +312,9 @@ class OpenStackDriver: if not security_group: security_group = self.config.nova_default_security_group - #authorized_keys = "\n".join(pubkeys) - #files = {'/root/.ssh/authorized_keys': authorized_keys} files = {} + if pubkeys: + files['/root/.ssh/authorized_keys'] = "\n".join(pubkeys) hints = {} availability_zone = None