3 # implements GENI tickets
12 # (gidCaller, gidObject, attributes, rspec, delegate)
14 # gidCaller = GID of the caller performing the operation
15 # gidObject = GID of the slice
16 # attributes = slice attributes (keys, vref, instantiation, etc)
19 class Ticket(Certificate):
26 def __init__(self, create=False, subject=None, string=None, filename=None):
27 Certificate.__init__(self, create, subject, string, filename)
29 def set_gid_caller(self, gid):
32 def get_gid_caller(self):
33 if not self.gidCaller:
37 def set_gid_object(self, gid):
40 def get_gid_object(self):
41 if not self.gidObject:
45 def set_attributes(self, gid):
48 def get_attributes(self):
49 if not self.attributes:
51 return self.attributes
53 def set_rspec(self, gid):
61 def set_delegate(self, delegate):
62 self.delegate = delegate
64 def get_delegate(self):
70 dict = {"gidCaller": None,
72 "attributes": self.attributes,
74 "delegate": self.delegate}
76 dict["gidCaller"] = self.gidCaller.save_to_string(save_parents=True)
78 dict["gidObject"] = self.gidObject.save_to_string(save_parents=True)
79 str = xmlrpclib.dumps((dict,), allow_none=True)
83 data = self.get_data()
85 dict = xmlrpclib.loads(self.get_data())[0][0]
89 self.attributes = dict.get("attributes", {})
90 self.rspec = dict.get("rspec", {})
91 self.delegate = dict.get("delegate", False)
93 gidCallerStr = dict.get("gidCaller", None)
95 self.gidCaller = GID(string=gidCallerStr)
99 gidObjectStr = dict.get("gidObject", None)
101 self.gidObject = GID(string=gidObjectStr)
103 self.gidObject = None
105 def dump(self, dump_parents=False):
106 print "TICKET", self.get_subject()
109 gidCaller = self.get_gid_caller()
111 gidCaller.dump(8, dump_parents)
114 gidObject = self.get_gid_object()
116 gidObject.dump(8, dump_parents)
119 for attrname in self.get_attributes().keys():
120 print " ", attrname, self.get_attributes()[attrname]
123 for attrname in self.get_rspec().keys():
124 print " ", attrname, self.get_rspec()[attrname]
126 if self.parent and dump_parents:
128 self.parent.dump(dump_parents)