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
'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,
spec = RGWSpec(
rgw_realm=realm_name,
rgw_zone=zone_name,
+ subcluster=subcluster,
placement=PlacementSpec.from_string(placement),
unmanaged=unmanaged,
rgw_frontend_port=port,
# 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():
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',
):
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