2 # implements SFA tickets
7 from sfa.trust.certificate import Certificate
8 from sfa.trust.gid import GID
11 # (gidCaller, gidObject, attributes, rspec, delegate)
13 # gidCaller = GID of the caller performing the operation
14 # gidObject = GID of the slice
15 # attributes = slice attributes (keys, vref, instantiation, etc)
18 class SfaTicket(Certificate):
25 def __init__(self, create=False, subject=None, string=None, filename=None):
26 Certificate.__init__(self, create, subject, string, filename)
28 def set_gid_caller(self, gid):
31 def get_gid_caller(self):
32 if not self.gidCaller:
36 def set_gid_object(self, gid):
39 def get_gid_object(self):
40 if not self.gidObject:
44 def set_attributes(self, gid):
47 def get_attributes(self):
48 if not self.attributes:
50 return self.attributes
52 def set_rspec(self, gid):
60 def set_delegate(self, delegate):
61 self.delegate = delegate
63 def get_delegate(self):
69 dict = {"gidCaller": None,
71 "attributes": self.attributes,
73 "delegate": self.delegate}
75 dict["gidCaller"] = self.gidCaller.save_to_string(save_parents=True)
77 dict["gidObject"] = self.gidObject.save_to_string(save_parents=True)
78 str = "URI:" + xmlrpclib.dumps((dict,), allow_none=True)
82 data = self.get_data()
84 dict = xmlrpclib.loads(self.get_data()[4:])[0][0]
88 self.attributes = dict.get("attributes", {})
89 self.rspec = dict.get("rspec", {})
90 self.delegate = dict.get("delegate", False)
92 gidCallerStr = dict.get("gidCaller", None)
94 self.gidCaller = GID(string=gidCallerStr)
98 gidObjectStr = dict.get("gidObject", None)
100 self.gidObject = GID(string=gidObjectStr)
102 self.gidObject = None
104 def dump(self, dump_parents=False):
105 print "TICKET", self.get_subject()
108 gidCaller = self.get_gid_caller()
110 gidCaller.dump(8, dump_parents)
113 gidObject = self.get_gid_object()
115 gidObject.dump(8, dump_parents)
118 for attrname in self.get_attributes().keys():
119 print " ", attrname, self.get_attributes()[attrname]
122 print " ", self.get_rspec()
124 if self.parent and dump_parents:
126 self.parent.dump(dump_parents)