From 66de37d5658808cd33b3bf519eaa1c768dcb5c93 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 19 Mar 2020 16:13:07 -0400 Subject: [PATCH] mgr/orch: add 'subcluster' property to RGWSpec Signed-off-by: Sage Weil --- src/pybind/mgr/cephadm/module.py | 1 - src/pybind/mgr/orchestrator/module.py | 3 +++ src/pybind/mgr/rook/rook_cluster.py | 1 + src/python-common/ceph/deployment/service_spec.py | 13 +++++++++++-- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index d91bcb52b1e53..7a18e3dbaa451 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -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 - # i.e. rgw.realm.zone n: str = dd.service_name() if service_name and service_name != n: continue diff --git a/src/pybind/mgr/orchestrator/module.py b/src/pybind/mgr/orchestrator/module.py index 52e2ffa6932ce..443ece912d4a9 100644 --- a/src/pybind/mgr/orchestrator/module.py +++ b/src/pybind/mgr/orchestrator/module.py @@ -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, diff --git a/src/pybind/mgr/rook/rook_cluster.py b/src/pybind/mgr/rook/rook_cluster.py index 414e6709f07ce..5d0923e9d1045 100644 --- a/src/pybind/mgr/rook/rook_cluster.py +++ b/src/pybind/mgr/rook/rook_cluster.py @@ -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(): diff --git a/src/python-common/ceph/deployment/service_spec.py b/src/python-common/ceph/deployment/service_spec.py index b7344c463ad31..b6034117a09ab 100644 --- a/src/python-common/ceph/deployment/service_spec.py +++ b/src/python-common/ceph/deployment/service_spec.py @@ -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 -- 2.39.5