File calamari-suse.patch of Package ceph-deploy

Index: ceph-deploy-1.5.10/ceph_deploy/calamari.py
===================================================================
--- ceph-deploy-1.5.10.orig/ceph_deploy/calamari.py
+++ ceph-deploy-1.5.10/ceph_deploy/calamari.py
@@ -4,6 +4,30 @@ import os
 from ceph_deploy import hosts, exc
 from ceph_deploy.lib import remoto
 
+#
+# For use on SLES, `ceph-deploy calamari` doesn't use a calamari minion repo.
+# Rather, it relies on your Ceph nodes already having access to a respository
+# that containts salt-minion and its dependencies, as well as diamond, which
+# salt-minion will in turn install.  This completely removes any need to
+# specify repos, or alter your ~/.cephdeploy.conf file at all (which is what
+# (http://calamari.readthedocs.org/en/latest/operations/minion_connect.html
+# says you need to do).
+#
+# All you need to do to hook some set of Ceph nodes up to a calamari instance
+# is run:
+#
+#   ceph-deploy calamari connect --master <calamari-fqdn> <node1> [<node2> ...]
+#
+# For example:
+#
+#   ceph-deploy calamari connect --master calamari.example.com \
+#       ceph-0.example.com ceph-1.example.com ceph-2.example.com
+#
+# Or, if you are running ceph-deploy from your calamari host:
+#
+#   ceph-deploy calamari connect --master $(hostname -f) \
+#       ceph-0.example.com ceph-1.example.com ceph-2.example.com
+#
 
 LOG = logging.getLogger(__name__)
 
@@ -13,30 +37,18 @@ def distro_is_supported(distro_name):
     An enforcer of supported distros that can differ from what ceph-deploy
     supports.
     """
-    supported = ['centos', 'redhat', 'ubuntu', 'debian']
+    supported = ['suse']
     if distro_name in supported:
         return True
     return False
 
 
 def connect(args):
-    cd_conf = getattr(args, 'cd_conf', None)
-    if not cd_conf:
-        raise RuntimeError(
-            'a ceph-deploy configuration is required but was not found'
-        )
-
-    repo_name = args.release or 'calamari-minion'
-    has_minion_repo = cd_conf.has_section(repo_name)
-
-    if not has_minion_repo:
-        raise RuntimeError('no calamari-minion repo found')
-
     for hostname in args.hosts:
         distro = hosts.get(hostname, username=args.username)
         if not distro_is_supported(distro.normalized_name):
             raise exc.UnsupportedPlatform(
-                distro.distro_name,
+                distro.name,
                 distro.codename,
                 distro.release
             )
@@ -48,36 +60,8 @@ def connect(args):
             distro.codename
         )
 
-        # We rely on the default for repo installs that does not install ceph
-        # unless specified otherwise. We define the `options` dictionary here
-        # because ceph-deploy pops items iternally and that causes issues when
-        # those items need to be available for every host
-        options = dict(cd_conf.items(repo_name))
-
         rlogger = logging.getLogger(hostname)
-        if distro.name in ('debian', 'ubuntu'):
-            rlogger.info('ensuring proxy is disabled for calamari minions repo')
-            distro.conn.remote_module.write_file(
-                '/etc/apt/apt.conf.d/99ceph',
-                'Acquire::http::Proxy::%s DIRECT;' % args.master,
-            )
         rlogger.info('installing calamari-minion package on %s' % hostname)
-        rlogger.info('adding custom repository file')
-        try:
-            distro.repo_install(
-                distro,
-                repo_name,
-                options.pop('baseurl'),
-                options.pop('gpgkey', ''),  # will probably not use a gpgkey
-                **options
-            )
-        except KeyError as err:
-            raise RuntimeError(
-                'missing required key: %s in config section: %s' % (
-                    err,
-                    repo_name
-                )
-            )
 
         # Emplace minion config prior to installation so that it is present
         # when the minion first starts.
@@ -97,17 +81,15 @@ def connect(args):
 
         distro.pkg.install(distro, 'salt-minion')
 
-        # redhat/centos need to get the service started
-        if distro.normalized_name in ['redhat', 'centos']:
-            remoto.process.run(
-                distro.conn,
-                ['chkconfig', 'salt-minion', 'on']
-            )
+        remoto.process.run(
+            distro.conn,
+            ['systemctl', 'enable', 'salt-minion']
+        )
 
-            remoto.process.run(
-                distro.conn,
-                ['service', 'salt-minion', 'start']
-            )
+        remoto.process.run(
+            distro.conn,
+            ['systemctl', 'start', 'salt-minion']
+        )
 
         distro.conn.exit()
 
@@ -129,20 +111,9 @@ def make(parser):
         )
 
     parser.add_argument(
-        '--release',
-        nargs='?',
-        metavar='CODENAME',
-        help="Use a given release from repositories\
-                defined in ceph-deploy's configuration. Defaults to\
-                'calamari-minion'",
-
-    )
-
-    parser.add_argument(
         '--master',
-        nargs='?',
-        metavar='MASTER SERVER',
-        help="The domain for the Calamari master server"
+        required=True,
+        help="The fully qualified domain name of the Calamari server"
     )
 
     parser.add_argument(
Index: ceph-deploy-1.5.10/ceph_deploy/tests/unit/test_calamari.py
===================================================================
--- ceph-deploy-1.5.10.orig/ceph_deploy/tests/unit/test_calamari.py
+++ ceph-deploy-1.5.10/ceph_deploy/tests/unit/test_calamari.py
@@ -6,12 +6,12 @@ class TestDistroIsSupported(object):
 
     @pytest.mark.parametrize(
         "distro_name",
-        ['centos', 'redhat', 'ubuntu', 'debian'])
+        ['suse'])
     def test_distro_is_supported(self, distro_name):
         assert calamari.distro_is_supported(distro_name) is True
 
     @pytest.mark.parametrize(
         "distro_name",
-        ['fedora', 'mandriva', 'darwin', 'windows'])
+        ['centos', 'redhat', 'ubuntu', 'debian', 'fedora', 'mandriva', 'darwin', 'windows'])
     def test_distro_is_not_supported(self, distro_name):
         assert calamari.distro_is_supported(distro_name) is False
openSUSE Build Service is sponsored by