X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fclient%2Fsfi.py;h=cfa1cefc4831136621a00c2990245f2b4073c2a7;hb=6782d10152e23427bb71966548cd9b72b0751169;hp=838b291439b671132d7a168d6c897603e043db87;hpb=3ccb44d8d54fe8d9ef137038b9324e0d0aefadd2;p=sfa.git diff --git a/sfa/client/sfi.py b/sfa/client/sfi.py index 838b2914..cfa1cefc 100755 --- a/sfa/client/sfi.py +++ b/sfa/client/sfi.py @@ -16,13 +16,15 @@ from lxml import etree from StringIO import StringIO from types import StringTypes, ListType from optparse import OptionParser - +from sfa.client.client_helper import pg_users_arg, sfa_users_arg, sfa_to_pg_users_arg from sfa.util.sfalogging import sfi_logger from sfa.trust.certificate import Keypair, Certificate from sfa.trust.gid import GID from sfa.trust.credential import Credential from sfa.util.sfaticket import SfaTicket from sfa.util.record import SfaRecord, UserRecord, SliceRecord, NodeRecord, AuthorityRecord +from sfa.rspecs.rspec import RSpec +from sfa.rspecs.rspec_converter import RSpecConverter from sfa.util.xrn import Xrn, get_leaf, get_authority, hrn_to_urn import sfa.util.xmlrpcprotocol as xmlrpcprotocol from sfa.util.config import Config @@ -980,41 +982,24 @@ class Sfi: # keys: [, ] # }] users = [] - all_keys = [] - all_key_ids = [] slice_records = self.registry.Resolve(slice_urn, [user_cred.save_to_string(save_parents=True)]) if slice_records and 'researcher' in slice_records[0] and slice_records[0]['researcher']!=[]: slice_record = slice_records[0] user_hrns = slice_record['researcher'] user_urns = [hrn_to_urn(hrn, 'user') for hrn in user_hrns] user_records = self.registry.Resolve(user_urns, [user_cred.save_to_string(save_parents=True)]) - for user_record in user_records: - if user_record['type'] != 'user': - continue - #user = {'urn': user_cred.get_gid_caller().get_urn(),'keys': []} - user = {'urn': user_cred.get_gid_caller().get_urn(), # - 'keys': user_record['keys'], - 'email': user_record['email'], # needed for MyPLC - 'person_id': user_record['person_id'], # needed for MyPLC - 'first_name': user_record['first_name'], # needed for MyPLC - 'last_name': user_record['last_name'], # needed for MyPLC - 'slice_record': slice_record, # needed for legacy refresh peer - 'key_ids': user_record['key_ids'] # needed for legacy refresh peer - } - users.append(user) - all_keys.extend(user_record['keys']) - all_key_ids.extend(user_record['key_ids']) - # ProtoGeni Aggregates will only install the keys of the user that is issuing the - # request. So we will add all to the current caller's list of keys + if 'sfa' not in server_version: - for user in users: - if user['urn'] == user_cred.get_gid_caller().get_urn(): - user['keys'] = all_keys - + users = pg_users_arg(user_records) + rspec = RSpec(rspec) + rspec.filter({'component_manager_id': server_version['urn']}) + rspec = RSpecConverter.to_pg_rspec(rspec.toxml(), content_type='request') + else: + users = sfa_users_arg(user_records, slice_record) call_args = [slice_urn, creds, rspec, users] if self.server_supports_call_id_arg(server): call_args.append(unique_call_id()) - + result = server.CreateSliver(*call_args) if opts.file is None: print result