-import types
+from __future__ import print_function
+
# for get_key_from_incoming_ip
import tempfile
import os
def Resolve(self, api, xrns, type=None, details=False):
dbsession = api.dbsession()
- if not isinstance(xrns, types.ListType):
+ if not isinstance(xrns, list):
# try to infer type if not set and we get a single input
if not type:
type = Xrn(xrns).get_type()
# logger.debug("non recursive mode, found {} local records".format(len(records)))
# so that sfi list can show more than plain names...
for record in records:
- # xxx mystery - again this useless statement is key here so that
- # resulting records have their __dict__ field actually in line with the
- # object's contents; was first observed with authorities' 'name' column
+ # xxx mystery - see also the bottom of model.py
+ # resulting records have been observed to not always have
+ # their __dict__ actually in line with the object's contents;
+ # was first observed with authorities' 'name' column
# that would be missing from result as received by client
- # record.todict() is the place where __dict__ is used
- print "DO NOT REMOVE ME before augment_with_sfa_builtins, record={}".format(record)
augment_with_sfa_builtins(record)
record_dicts = [ record.record_to_dict(exclude_types=(InstrumentedList,)) for record in records ]
pub_key=getattr(record,'reg-keys',None)
if pub_key is not None:
# use only first key in record
- if pub_key and isinstance(pub_key, types.ListType): pub_key = pub_key[0]
+ if pub_key and isinstance(pub_key, list): pub_key = pub_key[0]
pkey = convert_public_key(pub_key)
email = getattr(record,'email',None)
elif isinstance (record, RegUser):
# create RegKey objects for incoming keys
if hasattr(record,'reg-keys'):
- keys=getattr(record,'reg-keys')
+ keys = getattr(record, 'reg-keys')
# some people send the key as a string instead of a list of strings
- if isinstance(keys,types.StringTypes): keys=[keys]
- logger.debug ("creating {} keys for user {}".format(len(keys), record.hrn))
+ # note for python2/3 : no need to consider unicode in a key
+ if isinstance(keys, str):
+ keys = [keys]
+ logger.debug("creating {} keys for user {}".format(len(keys), record.hrn))
record.reg_keys = [ RegKey (key) for key in keys ]
# update testbed-specific data if needed
if type == 'user':
if getattr(new_record, 'keys', None):
new_key = new_record.keys
- if isinstance (new_key, types.ListType):
+ if isinstance (new_key, list):
new_key = new_key[0]
# take new_key into account
record.email = email
# update the PLC information that was specified with the record
- # xxx mystery: oddly enough, without this useless statement,
+ # xxx mystery -- see also the bottom of model.py,
+ # oddly enough, without this useless statement,
# record.__dict__ as received by the driver seems to be off
- # anyway the driver should receive an object
+ # anyway the driver should receive an object
# (and then extract __dict__ itself if needed)
- print "DO NOT REMOVE ME before driver.update, record={}".format(record)
+ print("DO NOT REMOVE ME before driver.update, record={}".format(record))
+ # as of June 2015: I suspect we could remove that print line above and replace it with
+ # augment_with_sfa_builtins(record)
+ # instead, that checks for these fields, like it is done above in List()
+ # but that would need to be confirmed by more extensive tests
new_key_pointer = -1
try:
(pointer, new_key_pointer) = api.driver.update (record.__dict__, new_record.__dict__, hrn, new_key)
for command in all_commands:
(status, output) = commands.getstatusoutput(command)
if status:
- raise Exception, output
+ raise Exception(output)
for filename in [key_filename, gid_filename]:
os.unlink(filename)