+
+ d_registry= "http://www.planet-lab.org:12345"
+ d_slicemgr= "http://www.planet-lab.org:12347"
+ d_aggmgr= "http://www.planet-lab.org:12346"
+
+ supported = [
+ # local code name, config variable name, default
+ ('slice', 'SFI_SLICE' , None, '-s','--slice', "slice HRN"),
+ ('user', 'SFI_USER', None, '-u','--user', "user HRN"),
+ ('authority', 'SFI_AUTH', None, '-t','--auth', "users's authority HRN"),
+ ('registry', 'SFI_REGISTRY', d_registry, '-r','--registry', "registry's URL"),
+ ('slicemgr', 'SFI_SM' , d_slicemgr, '-m','--slicemgr', "slice manager's URL"),
+ ('aggmgr', 'SFI_AM', d_aggmgr, '-a','--aggregate', "aggregate manager's URL"),
+ ('verbose', 'SFACE_VERBOSE',False, '-v','--verbose', "UI verbosity"),
+ ('debug', 'SFACE_DEBUG', False, '-d','--debug', "UI debug flag"),
+ ]
+
+ def fields (self):
+ return [ tup[0] for tup in SfiConfig.supported ]
+
+ def field_labels (self):
+ return [ (tup[0],tup[5]) for tup in SfiConfig.supported ]
+
+ def sfi_field (self, sfi):
+ for tuple in SfiConfig.supported:
+ if tuple[1]==sfi: return tuple[0]
+ return None
+
+ def field_default (self, field):
+ for tuple in SfiConfig.supported:
+ if tuple[0]==field: return tuple[2]
+ return None
+
+ # xxx todo - need for validators - not even sure this is still useful
+ def define_accessors (self):
+ for (field,sfi,default,_,__,___) in SfiConfig.supported:
+ self.define_accessor (field,sfi,default)
+
+ def define_accessor (self,field,sfi,default):
+ get_name="get" + field.capitalize();
+ if not hasattr(SfiConfig,get_name):
+ def get_call (self): return getattr(self,field)
+ setattr (SfiConfig, get_name, get_call)
+ set_name="set" + field.capitalize();
+ if not hasattr(SfiConfig,set_name):
+ def set_call (self, newvalue): setattr (self, field, newvalue)
+ setattr (SfiConfig, set_name, set_call)
+
+ # the generic form of accessors
+ def get(self,field): return getattr(self,field)
+ def set(self,field,value): setattr(self,field,value)