]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/orch: add 'subcluster' property to RGWSpec
authorSage Weil <sage@redhat.com>
Thu, 19 Mar 2020 20:13:07 +0000 (16:13 -0400)
committerSage Weil <sage@redhat.com>
Fri, 20 Mar 2020 20:40:12 +0000 (16:40 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
src/pybind/mgr/cephadm/module.py
src/pybind/mgr/orchestrator/module.py
src/pybind/mgr/rook/rook_cluster.py
src/python-common/ceph/deployment/service_spec.py

index d91bcb52b1e535280167a1a061d5a52351951111..7a18e3dbaa4515a61f44e15872c95458efbf95b9 100644 (file)
@@ -1770,7 +1770,6 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
             for name, dd in dm.items():
                 if service_type and service_type != dd.daemon_type:
                     continue
-                # <name> i.e. rgw.realm.zone
                 n: str = dd.service_name()
                 if service_name and service_name != n:
                     continue
index 52e2ffa6932ce359238a5c8b0da9dbb843ae3f42..443ece912d4a970504e0c47995a397301553eae5 100644 (file)
@@ -762,12 +762,14 @@ Usage:
         'orch apply rgw',
         'name=realm_name,type=CephString '
         'name=zone_name,type=CephString '
+        'name=subcluster,type=CephString,req=false '
         'name=port,type=CephInt,req=false '
         'name=ssl,type=CephBool,req=false '
         'name=placement,type=CephString,req=false '
         'name=unmanaged,type=CephBool,req=false',
         'Update the number of RGW instances for the given zone')
     def _apply_rgw(self, zone_name, realm_name,
+                   subcluster=None,
                    port=None,
                    ssl=False,
                    placement=None,
@@ -775,6 +777,7 @@ Usage:
         spec = RGWSpec(
             rgw_realm=realm_name,
             rgw_zone=zone_name,
+            subcluster=subcluster,
             placement=PlacementSpec.from_string(placement),
             unmanaged=unmanaged,
             rgw_frontend_port=port,
index 414e6709f07ce0adadb58d8c3b789b1bdf8875a6..5d0923e9d1045675d2c812290ee411cad7565052 100644 (file)
@@ -416,6 +416,7 @@ class RookCluster(object):
         # For now, assert that realm==zone.
         (realm, zone) = spec.service_id.split('.', 1)
         assert realm == zone
+        assert spec.subcluster is None
         name = realm
 
         def _create_zone():
index b7344c463ad314a447125fa96db381ecda66eff3..b6034117a09ab00c002a2fb7546295403b120467 100644 (file)
@@ -414,6 +414,7 @@ class RGWSpec(ServiceSpec):
     def __init__(self,
                  rgw_realm=None,  # type: Optional[str]
                  rgw_zone=None,  # type: Optional[str]
+                 subcluster=None,  # type: Optional[str]
                  service_id=None,  # type: Optional[str]
                  placement=None,
                  service_type='rgw',
@@ -423,15 +424,23 @@ class RGWSpec(ServiceSpec):
                  ):
         assert service_type == 'rgw'
         if service_id:
-            (rgw_realm, rgw_zone) = service_id.split('.', 1)
+            a = service_id.split('.', 2)
+            rgw_realm = a[0]
+            rgw_zone = a[1]
+            if len(a) > 2:
+                subcluster = a[2]
         else:
-            service_id = '%s.%s' % (rgw_realm, rgw_zone)
+            if subcluster:
+                service_id = '%s.%s.%s' % (rgw_realm, rgw_zone, subcluster)
+            else:
+                service_id = '%s.%s' % (rgw_realm, rgw_zone)
         super(RGWSpec, self).__init__(
             'rgw', service_id=service_id,
             placement=placement, unmanaged=unmanaged)
 
         self.rgw_realm = rgw_realm
         self.rgw_zone = rgw_zone
+        self.subcluster = subcluster
         self.rgw_frontend_port = rgw_frontend_port
         self.ssl = ssl