3 # implements support for geni records
5 # TODO: Use existing PLC database methods? or keep this separate?
9 # Record is a tuple (Name, GID, Type, Info)
10 # info is comprised of the following sub-fields
11 # pointer = a pointer to the record in the PL database
12 # pl_info = planetlab-specific info (when talking to client)
13 # geni_info = geni-specific info (when talking to client)
16 def __init__(self, name=None, gid=None, type=None, pointer=None, dict=None):
27 self.set_pointer(pointer)
29 self.set_name(dict['name'])
30 self.set_gid(dict['gid'])
31 self.set_type(dict['type'])
32 self.set_pointer(dict['pointer'])
34 self.set_pl_info(dict["pl_info"])
35 if "geni_info" in dict:
36 self.set_geni_info(dict["geni_info"])
38 def set_name(self, name):
42 def set_gid(self, gid):
43 if isinstance(gid, str):
46 self.gid = gid.save_to_string(save_parents=True)
49 def set_type(self, type):
53 def set_pointer(self, pointer):
54 self.pointer = pointer
57 def set_pl_info(self, pl_info):
58 self.pl_info = pl_info
61 def set_geni_info(self, geni_info):
62 self.geni_info = geni_info
65 def get_pl_info(self):
71 def get_geni_info(self):
83 def get_pointer(self):
86 # TODO: not the best name for the function, because we have things called gidObjects in the Cred
87 def get_gid_object(self):
88 return GID(string=self.gid)
91 return self.name + "#" + self.type
93 def get_field_names(self):
94 return ["name", "gid", "type", "pointer"]
96 def get_field_value_string(self, fieldname):
97 if fieldname == "key":
100 val = getattr(self, fieldname)
101 if isinstance(val, str):
102 return "'" + str(val) + "'"
106 def get_field_value_strings(self, fieldnames):
108 for fieldname in fieldnames:
109 strs.append(self.get_field_value_string(fieldname))
114 names = self.get_field_names()
116 dict[name] = getattr(self, name)
119 dict['pl_info'] = self.pl_info
122 dict['geni_info'] = self.geni_info
126 def dump(self, dump_parents=False):
127 print "RECORD", self.name
128 print " hrn:", self.name
129 print " type:", self.type
131 self.get_gid_object().dump(8, dump_parents)
132 print " pointer:", self.pointer
135 geni_info = getattr(self, "geni_info", {})
137 for key in geni_info.keys():
138 print " ", key, ":", geni_info[key]
141 pl_info = getattr(self, "pl_info", {})
143 for key in pl_info.keys():
144 print " ", key, ":", pl_info[key]