2 # Implements support for geni records
4 # TODO: Use existing PLC database methods? or keep this separate?
11 # GeniRecord is a tuple (Name, GID, Type, Info)
12 # info is comprised of the following sub-fields
13 # pointer = a pointer to the record in the PL database
14 # pl_info = planetlab-specific info (when talking to client)
15 # geni_info = geni-specific info (when talking to client)
18 def __init__(self, name=None, gid=None, type=None, pointer=None, dict=None):
29 self.set_pointer(pointer)
31 self.set_name(dict['name'])
32 self.set_gid(dict['gid'])
33 self.set_type(dict['type'])
34 self.set_pointer(dict['pointer'])
36 self.set_pl_info(dict["pl_info"])
37 if "geni_info" in dict:
38 self.set_geni_info(dict["geni_info"])
40 def set_name(self, name):
44 def set_gid(self, gid):
45 if isinstance(gid, str):
48 self.gid = gid.save_to_string(save_parents=True)
51 def set_type(self, type):
55 def set_pointer(self, pointer):
56 self.pointer = pointer
59 def set_pl_info(self, pl_info):
60 self.pl_info = pl_info
63 def set_geni_info(self, geni_info):
64 self.geni_info = geni_info
67 def get_pl_info(self):
73 def get_geni_info(self):
85 def get_pointer(self):
88 # TODO: not the best name for the function, because we have things called gidObjects in the Cred
89 def get_gid_object(self):
90 return GID(string=self.gid)
93 return self.name + "#" + self.type
95 def get_field_names(self):
96 return ["name", "gid", "type", "pointer"]
98 def get_field_value_string(self, fieldname):
99 if fieldname == "key":
102 val = getattr(self, fieldname)
103 if isinstance(val, str):
104 return "'" + str(val) + "'"
108 def get_field_value_strings(self, fieldnames):
110 for fieldname in fieldnames:
111 strs.append(self.get_field_value_string(fieldname))
116 names = self.get_field_names()
118 dict[name] = getattr(self, name)
121 dict['pl_info'] = self.pl_info
124 dict['geni_info'] = self.geni_info
128 def dump(self, dump_parents=False):
129 print "RECORD", self.name
130 print " hrn:", self.name
131 print " type:", self.type
133 self.get_gid_object().dump(8, dump_parents)
134 print " pointer:", self.pointer
137 geni_info = getattr(self, "geni_info", {})
139 for key in geni_info.keys():
140 print " ", key, ":", geni_info[key]
143 pl_info = getattr(self, "pl_info", {})
145 for key in pl_info.keys():
146 print " ", key, ":", pl_info[key]