3 # implements support for geni records
5 # TODO: Use existing PLC database methods? or keep this separate?
10 # Record is a tuple (Name, GID, Type, Info)
11 # info is comprised of the following sub-fields
12 # pointer = a pointer to the record in the PL database
13 # pl_info = planetlab-specific info (when talking to client)
14 # geni_info = geni-specific info (when talking to client)
17 def __init__(self, name=None, gid=None, type=None, pointer=None, dict=None):
28 self.set_pointer(pointer)
30 self.set_name(dict['name'])
31 self.set_gid(dict['gid'])
32 self.set_type(dict['type'])
33 self.set_pointer(dict['pointer'])
35 self.set_pl_info(dict["pl_info"])
36 if "geni_info" in dict:
37 self.set_geni_info(dict["geni_info"])
39 def set_name(self, name):
43 def set_gid(self, gid):
44 if isinstance(gid, str):
47 self.gid = gid.save_to_string(save_parents=True)
50 def set_type(self, type):
54 def set_pointer(self, pointer):
55 self.pointer = pointer
58 def set_pl_info(self, pl_info):
59 self.pl_info = pl_info
62 def set_geni_info(self, geni_info):
63 self.geni_info = geni_info
66 def get_pl_info(self):
72 def get_geni_info(self):
84 def get_pointer(self):
87 # TODO: not the best name for the function, because we have things called gidObjects in the Cred
88 def get_gid_object(self):
89 return GID(string=self.gid)
92 return self.name + "#" + self.type
94 def get_field_names(self):
95 return ["name", "gid", "type", "pointer"]
97 def get_field_value_string(self, fieldname):
98 if fieldname == "key":
101 val = getattr(self, fieldname)
102 if isinstance(val, str):
103 return "'" + str(val) + "'"
107 def get_field_value_strings(self, fieldnames):
109 for fieldname in fieldnames:
110 strs.append(self.get_field_value_string(fieldname))
115 names = self.get_field_names()
117 dict[name] = getattr(self, name)
120 dict['pl_info'] = self.pl_info
123 dict['geni_info'] = self.geni_info
127 def dump(self, dump_parents=False):
128 print "RECORD", self.name
129 print " hrn:", self.name
130 print " type:", self.type
132 self.get_gid_object().dump(8, dump_parents)
133 print " pointer:", self.pointer
136 geni_info = getattr(self, "geni_info", {})
138 for key in geni_info.keys():
139 print " ", key, ":", geni_info[key]
142 pl_info = getattr(self, "pl_info", {})
144 for key in pl_info.keys():
145 print " ", key, ":", pl_info[key]