def getPLCShell(self):
self.plauth = {'Username': self.config.GENI_PLC_USER,
- 'AuthMethod': 'password',
- 'AuthString': self.config.GENI_PLC_PASSWORD}
+ 'AuthMethod': 'password',
+ 'AuthString': self.config.GENI_PLC_PASSWORD}
try:
import PLC.Shell
shell = PLC.Shell.Shell(globals = globals())
plc_host = self.config.GENI_PLC_HOST
plc_port = self.config.GENI_PLC_PORT
plc_api_path = self.config.GENI_PLC_API_PATH
- url = "https://%(plc_host)s:%(plc_port)s/%(plc_api_path)s/" % \
- locals()
+ url = "https://%(plc_host)s:%(plc_port)s/%(plc_api_path)s/" % locals()
shell = xmlrpclib.Server(url, verbose = 0, allow_none = True)
shell.AuthCheck(self.plauth)
return shell
def getPLCShellVersion(self):
- # We need to figure out what version of PLCAPI are talking to.
- # Some calls we need to make later will be different depending
+ # We need to figure out what version of PLCAPI we are talking to.
+ # Some calls we need to make later will be different depending on
# the api version.
try:
# This is probably a bad way to determine api versions
# @param geni_fields dictionary of geni fields
# @param pl_fields dictionary of PLC fields (output)
- def geni_fields_to_pl_fields(self, type, hrn, geni_fields, pl_fields):
- if type == "user":
- if not "email" in pl_fields:
- if not "email" in geni_fields:
- raise MissingGeniInfo("email")
- pl_fields["email"] = geni_fields["email"]
-
- if not "first_name" in pl_fields:
- pl_fields["first_name"] = "geni"
-
- if not "last_name" in pl_fields:
- pl_fields["last_name"] = hrn
-
- elif type == "slice":
- if not "instantiation" in pl_fields:
- pl_fields["instantiation"] = "delegated" # "plc-instantiated"
- if not "name" in pl_fields:
- pl_fields["name"] = hrn_to_pl_slicename(hrn)
- if not "max_nodes" in pl_fields:
- pl_fields["max_nodes"] = 10
+ def geni_fields_to_pl_fields(self, type, hrn, record):
+ pl_record = {}
+ for field in record:
+ pl_record[field] = record[field]
+
+ if type == "slice":
+ if not "instantiation" in pl_record:
+ pl_record["instantiation"] = "delegated" # "plc-instantiated"
+ if not "name" in pl_record:
+ pl_record["name"] = hrn_to_pl_slicename(hrn)
+ if not "max_nodes" in pl_record:
+ pl_record["max_nodes"] = 10
elif type == "node":
- if not "hostname" in pl_fields:
- if not "dns" in geni_fields:
+ if not "hostname" in pl_record:
+ if not "dns" in record:
raise MissingGeniInfo("dns")
- pl_fields["hostname"] = geni_fields["dns"]
- if not "model" in pl_fields:
- pl_fields["model"] = "geni"
+ pl_record["hostname"] = record["dns"]
+ if not "model" in pl_record:
+ pl_record["model"] = "geni"
elif type == "authority":
- pl_fields["login_base"] = hrn_to_pl_login_base(hrn)
-
- if not "name" in pl_fields:
- pl_fields["name"] = hrn
+ pl_record["login_base"] = hrn_to_pl_login_base(hrn)
- if not "abbreviated_name" in pl_fields:
- pl_fields["abbreviated_name"] = hrn
+ if not "name" in pl_record:
+ pl_record["name"] = hrn
- if not "enabled" in pl_fields:
- pl_fields["enabled"] = True
+ if not "abbreviated_name" in pl_record:
+ pl_record["abbreviated_name"] = hrn
- if not "is_public" in pl_fields:
- pl_fields["is_public"] = True
+ if not "enabled" in pl_record:
+ pl_record["enabled"] = True
+ if not "is_public" in pl_record:
+ pl_record["is_public"] = True
+ return pl_record
def fill_record_pl_info(self, record):
"""
Fill in the planetlab specific fields of a Geni record. This
- involves calling the appropraite PLC method to retrie the
- dtabase record for the object.
+ involves calling the appropriate PLC method to retrieve the
+ database record for the object.
- PLC data is filled into the pl_fino field of the record.
+ PLC data is filled into the pl_info field of the record.
- @param record record to fill in field (in/out param)
+ @param record: record to fill in field (in/out param)
"""
type = record.get_type()
pointer = record.get_pointer()
geni_info['pi'] = pis
geni_info['operator'] = operators
geni_info['owner'] = owners
- # TODO: OrganizationName
+ # xxx TODO: OrganizationName
elif (type == "node"):
geni_info['dns'] = record.get("hostname", "")
- # TODO: URI, LatLong, IP, DNS
+ # xxx TODO: URI, LatLong, IP, DNS
elif (type == "user"):
geni_info['email'] = record.get("email", "")
- # TODO: PostalAddress, Phone
+ # xxx TODO: PostalAddress, Phone
record.update(geni_info)
self.fill_record_geni_info(record)
def update_membership_list(self, oldRecord, record, listName, addFunc, delFunc):
- # get a list of the HRNs tht are members of the old and new records^M
+ # get a list of the HRNs tht are members of the old and new records
oldList = oldRecord.get(listName, [])
newList = record.get(listName, [])
userRecord = records[0]
newIdList.append(userRecord.get_pointer())
- # build a list of the old person ids from the person_ids field of the
+ # build a list of the old person ids from the person_ids field
if oldRecord:
oldIdList = oldRecord.get("person_ids", [])
containerId = oldRecord.get_pointer()
self.plshell.AddPersonToSlice,
self.plshell.DeletePersonFromSlice)
elif record.type == "authority":
- # TODO
+ # xxx TODO
pass