summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2015-02-07 15:24:48 +0100
committerAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2015-02-07 15:24:48 +0100
commitbab0b84e0026ce34523c11e9284ffc835ded21fe (patch)
treef54387231c89dc876bc8a80a97ac693a5744dc58
parent65a0fe82f4a33ab5b6720d603681213935b5d3aa (diff)
downloadbcfg2-tools-bab0b84e0026ce34523c11e9284ffc835ded21fe.tar.gz
bcfg2-tools-bab0b84e0026ce34523c11e9284ffc835ded21fe.tar.bz2
bcfg2-tools-bab0b84e0026ce34523c11e9284ffc835ded21fe.zip
clients: Implement list and remove as SubCommands.
-rwxr-xr-xclients38
1 files changed, 32 insertions, 6 deletions
diff --git a/clients b/clients
index 0459076..753bc3c 100755
--- a/clients
+++ b/clients
@@ -2,10 +2,36 @@
import Bcfg2.Options
import Bcfg2.Client.Proxy
-parser = Bcfg2.Options.get_parser(
- components=[Bcfg2.Client.Proxy.ComponentProxy])
-parser.parse()
-proxy = Bcfg2.Client.Proxy.ComponentProxy()
-for client in proxy.Metadata.list_clients():
- print client
+class _ClientCmd(Bcfg2.Options.Subcommand):
+ pass
+
+class Remove(_ClientCmd):
+ """ Remove the given client. """
+ options = [Bcfg2.Options.PositionalArgument(
+ 'client',
+ help='Name of the client, that should be removed.')]
+
+ def run(self, setup):
+ proxy = Bcfg2.Client.Proxy.ComponentProxy()
+ proxy.Metadata.remove_client(setup.client)
+
+class List(_ClientCmd):
+ """ List all clients. """
+
+ def run(self, setup):
+ proxy = Bcfg2.Client.Proxy.ComponentProxy()
+ for client in proxy.Metadata.list_clients():
+ print client
+
+class ManageClients(Bcfg2.Options.CommandRegistry):
+ def __init__(self):
+ Bcfg2.Options.CommandRegistry.__init__(self)
+ self.register_commands(globals().values(), parent=_ClientCmd)
+ parser = Bcfg2.Options.get_parser(
+ description="Manage clients of a running Bcfg2 server",
+ components=[Bcfg2.Client.Proxy.ComponentProxy, self])
+ parser.add_options(self.subcommand_options)
+ parser.parse()
+
+ManageClients().runcommand()