]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/orch: allow '.' char in hostname
authorMichael Fritch <mfritch@suse.com>
Mon, 1 Jun 2020 21:24:35 +0000 (15:24 -0600)
committerSebastian Wagner <sebastian.wagner@suse.com>
Mon, 8 Jun 2020 11:52:24 +0000 (13:52 +0200)
Fixes: https://tracker.ceph.com/issues/45399
Signed-off-by: Michael Fritch <mfritch@suse.com>
(cherry picked from commit 9c14f0d1cdf123ae9216029c9aaef1e09fd81c24)

src/pybind/mgr/cephadm/services/nfs.py
src/pybind/mgr/cephadm/tests/test_spec.py
src/pybind/mgr/orchestrator/_interface.py

index cc786d33ed6a00f6dbbcd6ba0720566d62c50cf3..551c9fe8420c42f767f375666e880da560246ba3 100644 (file)
@@ -61,12 +61,13 @@ class NFSService(CephadmService):
 
     def config(self, spec):
         self.mgr._check_pool_exists(spec.pool, spec.service_name())
-
         logger.info('Saving service %s spec with placement %s' % (
             spec.service_name(), spec.placement.pretty_str()))
         self.mgr.spec_store.save(spec)
 
     def create(self, daemon_id, host, spec):
+        logger.info('Create daemon %s on host %s with spec %s' % (
+            daemon_id, host, spec))
         return self.mgr._create_daemon('nfs', daemon_id, host)
 
 
index cda89ef02c4c2317e602f8ae776787c10dfb5441..ea4e8c8f73425c98dde26bf22d2c07d6503009bd 100644 (file)
@@ -366,6 +366,31 @@ def test_spec_octopus():
         True
     ),
 
+    # https://tracker.ceph.com/issues/45399
+    (
+        # daemon_id only contains hostname
+        ServiceSpec(
+            service_type='mds',
+            service_id="a",
+        ),
+        DaemonDescription(
+            daemon_type='mds',
+            daemon_id="a.host1.abc123",
+            hostname="host1.site",
+        ),
+        True
+    ),
+    (
+        NFSServiceSpec(
+            service_id="a",
+        ),
+        DaemonDescription(
+            daemon_type='nfs',
+            daemon_id="a.host1",
+            hostname="host1.site",
+        ),
+        True
+    ),
 
     # https://tracker.ceph.com/issues/45293
     (
index fd854b04c236f85edfbac76f66428aa06f767f89..9ebe16752e7fa0a219ab6b4ff459323c159b21a4 100644 (file)
@@ -1313,19 +1313,22 @@ class DaemonDescription(object):
                 # TODO: can a DaemonDescription exist without a hostname?
                 raise err
 
-            if self.hostname == self.daemon_id:
-                # daemon_id == "hostname"
+            # use the bare hostname, not the FQDN.
+            host = self.hostname.split('.')[0]
+
+            if host == self.daemon_id:
+                # daemon_id == "host"
                 return self.daemon_id
 
-            elif self.hostname in self.daemon_id:
-                # daemon_id == "service_id.hostname"
-                # daemon_id == "service_id.hostname.random"
-                pre, post = self.daemon_id.rsplit(self.hostname, 1)
+            elif host in self.daemon_id:
+                # daemon_id == "service_id.host"
+                # daemon_id == "service_id.host.random"
+                pre, post = self.daemon_id.rsplit(host, 1)
                 if not pre.endswith('.'):
-                    # '.' sep missing at front of hostname
+                    # '.' sep missing at front of host
                     raise err
                 elif post and not post.startswith('.'):
-                    # '.' sep missing at end of hostname
+                    # '.' sep missing at end of host
                     raise err
                 return pre[:-1]