3 # implements GENI tickets
11 from sfa.trust.certificate import Certificate
12 from sfa.trust.rights import *
13 from sfa.trust.gid import *
16 # (gidCaller, gidObject, attributes, rspec, delegate)
18 # gidCaller = GID of the caller performing the operation
19 # gidObject = GID of the slice
20 # attributes = slice attributes (keys, vref, instantiation, etc)
23 class Ticket(Certificate):
30 def __init__(self, create=False, subject=None, string=None, filename=None):
31 Certificate.__init__(self, create, subject, string, filename)
33 def set_gid_caller(self, gid):
36 def get_gid_caller(self):
37 if not self.gidCaller:
41 def set_gid_object(self, gid):
44 def get_gid_object(self):
45 if not self.gidObject:
49 def set_attributes(self, gid):
52 def get_attributes(self):
53 if not self.attributes:
55 return self.attributes
57 def set_rspec(self, gid):
65 def set_delegate(self, delegate):
66 self.delegate = delegate
68 def get_delegate(self):
74 dict = {"gidCaller": None,
76 "attributes": self.attributes,
78 "delegate": self.delegate}
80 dict["gidCaller"] = self.gidCaller.save_to_string(save_parents=True)
82 dict["gidObject"] = self.gidObject.save_to_string(save_parents=True)
83 str = xmlrpclib.dumps((dict,), allow_none=True)
87 data = self.get_data()
89 dict = xmlrpclib.loads(self.get_data())[0][0]
93 self.attributes = dict.get("attributes", {})
94 self.rspec = dict.get("rspec", {})
95 self.delegate = dict.get("delegate", False)
97 gidCallerStr = dict.get("gidCaller", None)
99 self.gidCaller = GID(string=gidCallerStr)
101 self.gidCaller = None
103 gidObjectStr = dict.get("gidObject", None)
105 self.gidObject = GID(string=gidObjectStr)
107 self.gidObject = None
109 def dump(self, dump_parents=False):
110 print "TICKET", self.get_subject()
113 gidCaller = self.get_gid_caller()
115 gidCaller.dump(8, dump_parents)
118 gidObject = self.get_gid_object()
120 gidObject.dump(8, dump_parents)
123 for attrname in self.get_attributes().keys():
124 print " ", attrname, self.get_attributes()[attrname]
127 for attrname in self.get_rspec().keys():
128 print " ", attrname, self.get_rspec()[attrname]
130 if self.parent and dump_parents:
132 self.parent.dump(dump_parents)