blob: e52a87cc6331e1e9101c5e26ba05d4723671b225 [file] [log] [blame]
import sys
from twisted.internet import defer, reactor
from slavealloc import client, exceptions
def setup_argparse(subparsers):
subparser = subparsers.add_parser(
'notes', help="get or set a slave's notes")
subparser.add_argument('slave',
help="slave to edit")
subparser.add_argument('-m', '--message',
dest='message', help="new slave notes")
return subparser
def process_args(subparser, args):
if not args.slave:
subparser.error("slave name is required")
if '.' in ''.join(args.slave):
subparser.error(
"slave name must not contain '.'; give the unqualified hostname")
@defer.inlineCallbacks
def main(args):
agent = client.RestAgent(reactor, args.apiurl)
# get first
path = 'slaves/%s?byname=1' % args.slave
slave = yield agent.restRequest('GET', path, {})
if not slave:
raise exceptions.CmdlineError(
"No slave found named '%s'." % args.slave)
assert slave['name'] == args.slave
slaveid = slave['slaveid']
if args.message is None:
if slave['notes']:
print slave['notes']
return
else:
print >>sys.stderr, "previous slave notes: '%s'" % slave['notes']
# set the notes
set_result = yield agent.restRequest('PUT',
'slaves/%d' % slaveid, {'notes': args.message})
success = set_result.get('success')
if not success:
raise exceptions.CmdlineError("Operation failed on server.")
print >>sys.stderr, "notes set to '%s'" % args.message