X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fopenstack%2Fnova_driver.py;h=e4b95b07087fb9975b89d13ba0e2ada060d25b2e;hb=0f90da7f05fbe3d07e56790c10f6ecc877b33754;hp=9ad1ce1d4df6b0a45c8da14080e01e510fd63fbe;hpb=ee849c3e580319a90352b63e7b6cecf6dd9d8ebb;p=sfa.git diff --git a/sfa/openstack/nova_driver.py b/sfa/openstack/nova_driver.py index 9ad1ce1d..e4b95b07 100644 --- a/sfa/openstack/nova_driver.py +++ b/sfa/openstack/nova_driver.py @@ -22,7 +22,7 @@ from sfa.managers.driver import Driver from sfa.openstack.nova_shell import NovaShell from sfa.openstack.euca_shell import EucaShell from sfa.openstack.osaggregate import OSAggregate -from sfa.plc.plslices import PlSlices +from sfa.planetlab.plslices import PlSlices from sfa.util.osxrn import OSXrn @@ -114,18 +114,28 @@ class NovaDriver (Driver): ########## # xxx actually old_sfa_record comes filled with plc stuff as well in the original code def update (self, old_sfa_record, new_sfa_record, hrn, new_key): - pointer = old_sfa_record['pointer'] - type = old_sfa_record['type'] - + type = new_sfa_record['type'] + # new_key implemented for users only if new_key and type not in [ 'user' ]: raise UnknownSfaType(type) elif type == "slice": - # can update description, researchers and PI - pass + # can update project manager and description + name = Xrn(hrn).get_leaf() + researchers = sfa_record.get('researchers', []) + pis = sfa_record.get('pis', []) + project_manager = None + description = sfa_record.get('description', None) + if pis: + project_manager = Xrn(pis[0], 'user').get_leaf() + elif researchers: + project_manager = Xrn(researchers[0], 'user').get_leaf() + self.shell.auth_manager.modify_project(name, project_manager, description) + elif type == "user": - # can update slices, keys and roles + # can techinally update access_key and secret_key, + # but that is not in our scope, so we do nothing. pass return True