from sfa.client.candidates import Candidates
-from sfa.client.common import optparse_listvalue_callback, terminal_render, filter_records
+from sfa.client.common import optparse_listvalue_callback, optparse_dictvalue_callback, terminal_render, filter_records
pprinter = PrettyPrinter(indent=4)
def _record_dict(self, xrn=None, type=None,
url=None, description=None, email='',
key=None,
- slices=[], researchers=[], pis=[]):
+ slices=[], researchers=[], pis=[], extras={}):
record_dict = {}
if xrn:
if type:
record_dict['email'] = email
if pis:
record_dict['pi'] = pis
+ if extras:
+ record_dict.update(extras)
return record_dict
@args('-p', '--pis', dest='pis', metavar='<PIs>',
help='Set/replace Principal Investigators/Project Managers',
default='', type="str", action='callback', callback=optparse_listvalue_callback)
+ @args('-X','--extra',dest='extras',default={},type='str',metavar="<EXTRA_ASSIGNS>", action="callback", callback=optparse_dictvalue_callback, nargs=1, help="set extra/testbed-dependent flags, e.g. --extra enabled=true")
def register(self, xrn, type=None, url=None, description=None, key=None, slices='',
- pis='', researchers='',email=''):
+ pis='', researchers='',email='', extras={}):
"""Create a new Registry record"""
record_dict = self._record_dict(xrn=xrn, type=type, url=url, key=key,
- slices=slices, researchers=researchers, email=email, pis=pis)
+ slices=slices, researchers=researchers, email=email, pis=pis, extras=extras)
self.api.manager.Register(self.api, record_dict)
@args('-p', '--pis', dest='pis', metavar='<PIs>',
help='Set/replace Principal Investigators/Project Managers',
default='', type="str", action='callback', callback=optparse_listvalue_callback)
+ @args('-X','--extra',dest='extras',default={},type='str',metavar="<EXTRA_ASSIGNS>", action="callback", callback=optparse_dictvalue_callback, nargs=1, help="set extra/testbed-dependent flags, e.g. --extra enabled=true")
def update(self, xrn, type=None, url=None, description=None, key=None, slices='',
- pis='', researchers=''):
+ pis='', researchers='', extras={}):
"""Update an existing Registry record"""
print 'incoming PIS',pis
record_dict = self._record_dict(xrn=xrn, type=type, url=url, description=description,
- key=key, slices=slices, researchers=researchers, pis=pis)
+ key=key, slices=slices, researchers=researchers, pis=pis, extras=extras)
self.api.manager.Update(self.api, record_dict)
@args('-x', '--xrn', dest='xrn', metavar='<xrn>', help='object hrn/urn (mandatory)')