]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/orch: match last occurance of hostname in service_id 34778/head
authorMichael Fritch <mfritch@suse.com>
Mon, 27 Apr 2020 17:44:44 +0000 (11:44 -0600)
committerMichael Fritch <mfritch@suse.com>
Mon, 4 May 2020 21:41:06 +0000 (15:41 -0600)
The RGW realm/zone might have a substr that matches the hostname

Fixes: https://tracker.ceph.com/issues/45294
Signed-off-by: Michael Fritch <mfritch@suse.com>
src/pybind/mgr/cephadm/tests/test_spec.py
src/pybind/mgr/orchestrator/_interface.py

index 3d0826391e0f70abf7cf87dd583bc3ec80fc813a..530dae1fb5a2be8841cb83976b6242f9d09f737f 100644 (file)
@@ -282,6 +282,21 @@ def test_spec_octopus():
         ),
         False
     ),
+    (
+        # zone contains hostname
+        # https://tracker.ceph.com/issues/45294
+        RGWSpec(
+            rgw_realm="default.rgw.realm",
+            rgw_zone="ceph.001",
+            subcluster='1',
+        ),
+        DaemonDescription(
+            daemon_type='rgw',
+            daemon_id="default.rgw.realm.ceph.001.1.ceph.001.ytywjo",
+            hostname="ceph.001",
+        ),
+        True
+    ),
 
     # https://tracker.ceph.com/issues/45293
     (
index ee482adee61eb90aa1e82c0464f5c1a0c0517e17..0e18882e7fe22a8b3c506a3474d43e06ba1a3d5a 100644 (file)
@@ -1304,25 +1304,12 @@ class DaemonDescription(object):
                 if m:
                     return m.group(1)
 
-        if self.daemon_type == 'rgw':
-            if self.hostname and self.hostname in self.daemon_id:
-                pre, post_ = self.daemon_id.split(self.hostname)
-                return pre[:-1]
-            else:
-                # daemon_id == "realm.zone.host.random"
-                v = self.daemon_id.split('.')
-                if len(v) == 4:
-                    return '.'.join(v[0:2])
-                # subcluster or fqdn? undecidable.
-                raise OrchestratorError(f"DaemonDescription: Cannot calculate service_id: {v}")
-
-        if self.daemon_type in ['mds', 'nfs', 'iscsi']:
-            service_id = _match()
-            if service_id:
-                return service_id
             raise OrchestratorError("DaemonDescription: Cannot calculate service_id: " \
                     f"daemon_id='{self.daemon_id}' hostname='{self.hostname}'")
 
+        if self.daemon_type in ['mds', 'nfs', 'iscsi', 'rgw']:
+            return _match()
+
         return self.daemon_id
 
     def service_name(self):