From ec3146d12630f0ee2a9ca966627df776d62aa881 Mon Sep 17 00:00:00 2001 From: Marco Mariani <marco.mariani@nexedi.com> Date: Thu, 18 Apr 2013 14:53:56 +0200 Subject: [PATCH] cli refactoring: node bang --- setup.py | 3 ++- slapos/bang.py | 44 +++++++++++++++++++++++++------------------- slapos/cli/bang.py | 21 +++++++++++++++++++++ slapos/cli/cache.py | 8 ++++---- 4 files changed, 52 insertions(+), 24 deletions(-) create mode 100644 slapos/cli/bang.py diff --git a/setup.py b/setup.py index 29ffe5efc..e50075b21 100644 --- a/setup.py +++ b/setup.py @@ -73,7 +73,8 @@ setup(name=name, 'slap2 = slapos.cli.entry:main', ], 'slapos.cli': [ - 'cache lookup = slapos.cli.cache:CacheLookup', + 'cache lookup = slapos.cli.cache:CacheLookupCommand', + 'node bang = slapos.cli.bang:BangCommand', ] }, test_suite="slapos.tests", diff --git a/slapos/bang.py b/slapos/bang.py index 0bec8eef2..c7cb76223 100644 --- a/slapos/bang.py +++ b/slapos/bang.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +# vim: set et sts=2: ############################################################################## # # Copyright (c) 2011, 2012 Vifib SARL and Contributors. @@ -31,11 +32,31 @@ import slapos.slap.slap import argparse import ConfigParser + +def do_bang(config, message): + computer_id = config.get('slapos', 'computer_id') + master_url = config.get('slapos', 'master_url') + if config.has_option('slapos', 'key_file'): + key_file = config.get('slapos', 'key_file') + else: + key_file = None + if config.has_option('slapos', 'cert_file'): + cert_file = config.get('slapos', 'cert_file') + else: + cert_file = None + slap = slapos.slap.slap() + slap.initializeConnection(master_url, key_file=key_file, cert_file=cert_file) + computer = slap.registerComputer(computer_id) + print 'Banging to %r' % master_url + computer.bang(message) + print 'Bang with message %r' % message + + def main(*args): parser = argparse.ArgumentParser() parser.add_argument("-m", "--message", default='', help="Message for bang.") parser.add_argument("configuration_file", nargs=1, type=argparse.FileType(), - help="SlapOS configuration file.") + help="SlapOS configuration file.") if len(args) == 0: argument = parser.parse_args() else: @@ -43,21 +64,6 @@ def main(*args): configuration_file = argument.configuration_file[0] message = argument.message # Loads config (if config specified) - configuration = ConfigParser.SafeConfigParser() - configuration.readfp(configuration_file) - computer_id = configuration.get('slapos', 'computer_id') - master_url = configuration.get('slapos', 'master_url') - if configuration.has_option('slapos', 'key_file'): - key_file = configuration.get('slapos', 'key_file') - else: - key_file = None - if configuration.has_option('slapos', 'cert_file'): - cert_file = configuration.get('slapos', 'cert_file') - else: - cert_file = None - slap = slapos.slap.slap() - slap.initializeConnection(master_url, key_file=key_file, cert_file=cert_file) - computer = slap.registerComputer(computer_id) - print 'Banging to %r' % master_url - computer.bang(message) - print 'Bang with message %r' % message + config = ConfigParser.SafeConfigParser() + config.readfp(configuration_file) + do_bang(config, message) diff --git a/slapos/cli/bang.py b/slapos/cli/bang.py new file mode 100644 index 000000000..4a39507f6 --- /dev/null +++ b/slapos/cli/bang.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- + +import logging + +from slapos.cli.config import ConfigCommand +from slapos.bang import do_bang + + +class BangCommand(ConfigCommand): + + log = logging.getLogger(__name__) + + def get_parser(self, prog_name): + parser = super(BangCommand, self).get_parser(prog_name) + parser.add_argument('-m', '--message', + help='Message for bang') + return parser + + def take_action(self, args): + config = self.fetch_config(args) + do_bang(config, args.message) diff --git a/slapos/cli/cache.py b/slapos/cli/cache.py index 32e516f6c..59f205b63 100644 --- a/slapos/cli/cache.py +++ b/slapos/cli/cache.py @@ -6,15 +6,15 @@ from slapos.cli.config import ConfigCommand from slapos.cache import do_lookup -class CacheLookup(ConfigCommand): +class CacheLookupCommand(ConfigCommand): log = logging.getLogger(__name__) def get_parser(self, prog_name): - parser = super(CacheLookup, self).get_parser(prog_name) + parser = super(CacheLookupCommand, self).get_parser(prog_name) # XXX this argument could use a better name - parser.add_argument("software_url", - help="Your software url or MD5 hash") + parser.add_argument('software_url', + help='Your software url or MD5 hash') return parser def take_action(self, args): -- 2.30.9