]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-deploy.git/commitdiff
config: add 'config HOST ...' command
authorSage Weil <sage@inktank.com>
Sun, 10 Mar 2013 06:47:59 +0000 (22:47 -0800)
committerSage Weil <sage@inktank.com>
Sun, 10 Mar 2013 06:47:59 +0000 (22:47 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
ceph_deploy/config.py [new file with mode: 0644]
setup.py

diff --git a/ceph_deploy/config.py b/ceph_deploy/config.py
new file mode 100644 (file)
index 0000000..fd2e317
--- /dev/null
@@ -0,0 +1,55 @@
+import argparse
+import logging
+import os.path
+
+from cStringIO import StringIO
+
+from . import exc
+from . import conf
+from .cliutil import priority
+
+
+log = logging.getLogger(__name__)
+
+def admin(args):
+    cfg = conf.load(args)
+    conf_data = StringIO()
+    cfg.write(conf_data)
+
+    errors = 0
+    for hostname in args.client:
+        log.debug('Pushing config to %s', hostname)
+        try:
+            sudo = args.pushy('ssh+sudo:{hostname}'.format(
+                    hostname=hostname,
+                    ))
+
+            write_conf_r = sudo.compile(conf.write_conf)
+            write_conf_r(
+                cluster=args.cluster,
+                conf=conf_data.getvalue(),
+                overwrite=args.overwrite_conf,
+                )
+
+        except RuntimeError as e:
+            log.error(e)
+            errors += 1
+
+    if errors:
+        raise exc.GenericError('Failed to config %d hosts' % errors)
+
+
+@priority(70)
+def make(parser):
+    """
+    Push configuration file to a remote host.
+    """
+    parser.add_argument(
+        'client',
+        metavar='HOST',
+        nargs='*',
+        help='host to configure',
+        )
+    parser.set_defaults(
+        func=admin,
+        )
index 3a85929c9580583a866e3495b25370dce19cef80..14d1f02878cf81e9bdd14027eb7540572c8e8718 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -54,6 +54,7 @@ setup(
             'osd = ceph_deploy.osd:make',
             'mds = ceph_deploy.mds:make',
             'forgetkeys = ceph_deploy.forgetkeys:make',
+            'config = ceph_deploy.config:make',
             'admin = ceph_deploy.admin:make',
             'zapdisk = ceph_deploy.zapdisk:make',
             ],