from optparse import OptionParser
from sfa.trust.certificate import Keypair, Certificate
from sfa.trust.credential import Credential
-from sfa.util.geniclient import GeniClient
from sfa.util.sfaticket import SfaTicket
from sfa.util.record import *
-from sfa.util.misc import *
+from sfa.util.namespace import *
from sfa.util.rspec import RSpec
from sfa.util.xmlrpcprotocol import ServerException
import sfa.util.xmlrpcprotocol as xmlrpcprotocol
elif record['type'] in ['authority', 'ma', 'sa']:
record = AuthorityRecord(dict = record)
else:
- record = GeniRecord(dict = record)
+ record = SfaRecord(dict = record)
str = record.save_to_string()
file(filename, "w").write(str)
return
# load methods
def load_record_from_file(filename):
str = file(filename, "r").read()
- record = GeniRecord(string=str)
+ record = SfaRecord(string=str)
return record
self.cert_file = cert_file
self.cert = Certificate(filename=cert_file)
# Establish connection to server(s)
- #self.slicemgr = GeniClient(sm_url, key_file, cert_file, self.options.protocol)
- #self.registry = GeniClient(reg_url, key_file, cert_file, self.options.protocol)
self.registry = xmlrpcprotocol.get_server(reg_url, key_file, cert_file)
self.slicemgr = xmlrpcprotocol.get_server(sm_url, key_file, cert_file)
return
else:
# bootstrap user credential
cert_string = self.cert.save_to_string(save_parents=True)
- request_hash = self.key.compute_hash([cert_string, "user", self.user])
user_name=self.user.replace(self.authority+".", '')
if user_name.count(".") > 0:
user_name = user_name.replace(".", '_')
self.user=self.authority + "." + user_name
- user_cred = self.registry.get_self_credential(cert_string, "user", self.user, request_hash)
+ user_cred = self.registry.get_self_credential(cert_string, "user", self.user)
if user_cred:
cred = Credential(string=user_cred)
cred.save_to_file(file, save_parents=True)
raise Exception, "Error: Didn't find a %(type)s record for %(hrn)s" % locals()
# the gid of the user who will be delegated too
- record = GeniRecord(dict=records[0])
+ record = SfaRecord(dict=records[0])
delegee_gid = record.get_gid_object()
delegee_hrn = delegee_gid.get_hrn()
elif record['type'] in ['authority', 'ma', 'sa']:
record = AuthorityRecord(dict = record)
else:
- record = GeniRecord(dict = record)
+ record = SfaRecord(dict = record)
if (opts.format=="text"):
record.dump()
else:
print "Error: Object credential", object_hrn, "does not have delegate bit set"
return
- records = self.registry.resolve(user_cred, args[0])
+ records = self.registry.resolve(user_cred.save_to_string(save_parents=True), args[0])
records = filter_records("user", records)
if not records:
return
# the gid of the user who will be delegated too
- delegee_gid = records[0].get_gid_object()
+ delegee_gid = GID(string=records[0]['gid'])
delegee_hrn = delegee_gid.get_hrn()
# the key and hrn of the user who will be delegating
user_key = Keypair(filename = self.get_key_file())
user_hrn = user_cred.get_gid_caller().get_hrn()
-
- dcred = Credential(subject=object_hrn + " delegated to " + delegee_hrn)
+
+ subject_string = "%s delegated to %s" % (object_hrn, delegee_hrn)
+ dcred = Credential(subject=subject_string)
dcred.set_gid_caller(delegee_gid)
dcred.set_gid_object(object_gid)
dcred.set_privileges(object_cred.get_privileges())
raise Exception, "No such aggregate %s" % opts.aggregate
aggregate = aggregates[0]
url = "http://%s:%s" % (aggregate['addr'], aggregate['port'])
- server = GeniClient(url, self.key_file, self.cert_file, self.options.protocol)
+ server = xmlrpcprotocol.get_server(url, self.key_file, self.cert_file, self.options.protocol)
return server.create_slice(slice_cred, slice_hrn, rspec)
# get a ticket for the specified slice
raise Exception, "No such aggregate %s" % opts.aggregate
aggregate = aggregates[0]
url = "http://%s:%s" % (aggregate['addr'], aggregate['port'])
- server = GeniClient(url, self.key_file, self.cert_file, self.options.protocol)
+ server = xmlrpcprotocol.get_server(url, self.key_file, self.cert_file, self.options.protocol)
ticket_string = server.get_ticket(slice_cred, slice_hrn, rspec)
file = os.path.join(self.options.sfi_dir, get_leaf(slice_hrn) + ".ticket")
print "writing ticket to ", file
# use this to get the right slice credential
ticket = SfaTicket(filename=ticket_file)
ticket.decode()
- slice_hrn = ticket.attributes['slivers'][0]['hrn']
+ slice_hrn=ticket.gidObject.get_hrn()
+ #slice_hrn = ticket.attributes['slivers'][0]['hrn']
user_cred = self.get_user_cred()
slice_cred = self.get_slice_cred(slice_hrn).save_to_string(save_parents=True)
try:
cm_port = "12346"
url = "https://%(hostname)s:%(cm_port)s" % locals()
- print "Calling get_ticket at %(url)s " % locals(),
+ print "Calling redeem_ticket at %(url)s " % locals(),
cm = xmlrpcprotocol.get_server(url, self.key_file, self.cert_file)
cm.redeem_ticket(slice_cred, ticket.save_to_string(save_parents=True))
print "Success"