From d3c14a17dc5cafef199f4fc3ce657bab54d89b4a Mon Sep 17 00:00:00 2001 From: Adam King Date: Wed, 23 Feb 2022 15:43:30 -0500 Subject: [PATCH] mgr/cephadm: extend extra_container_args to other service types Otherwise, without this change, this can only be used for mgr, mon and crash (daemons without their own service spec class) Fixes: https://tracker.ceph.com/issues/54390 Signed-off-by: Adam King --- .../ceph/deployment/drive_group.py | 4 +- .../ceph/deployment/service_spec.py | 38 +++++++++++++------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/python-common/ceph/deployment/drive_group.py b/src/python-common/ceph/deployment/drive_group.py index f9bdaef430738..f64f48abafc99 100644 --- a/src/python-common/ceph/deployment/drive_group.py +++ b/src/python-common/ceph/deployment/drive_group.py @@ -174,6 +174,7 @@ class DriveGroupSpec(ServiceSpec): unmanaged=False, # type: bool filter_logic='AND', # type: str preview_only=False, # type: bool + extra_container_args=None, # type: Optional[List[str]] data_allocate_fraction=None, # type: Optional[float] method=None, # type: Optional[OSDMethod] ): @@ -181,7 +182,8 @@ class DriveGroupSpec(ServiceSpec): super(DriveGroupSpec, self).__init__('osd', service_id=service_id, placement=placement, unmanaged=unmanaged, - preview_only=preview_only) + preview_only=preview_only, + extra_container_args=extra_container_args) #: A :class:`ceph.deployment.drive_group.DeviceSelection` self.data_devices = data_devices diff --git a/src/python-common/ceph/deployment/service_spec.py b/src/python-common/ceph/deployment/service_spec.py index 6b9d108fc1714..eed173579078f 100644 --- a/src/python-common/ceph/deployment/service_spec.py +++ b/src/python-common/ceph/deployment/service_spec.py @@ -731,12 +731,13 @@ class NFSServiceSpec(ServiceSpec): config: Optional[Dict[str, str]] = None, networks: Optional[List[str]] = None, port: Optional[int] = None, + extra_container_args: Optional[List[str]] = None, ): assert service_type == 'nfs' super(NFSServiceSpec, self).__init__( 'nfs', service_id=service_id, placement=placement, unmanaged=unmanaged, preview_only=preview_only, - config=config, networks=networks) + config=config, networks=networks, extra_container_args=extra_container_args) self.port = port @@ -793,6 +794,7 @@ class RGWSpec(ServiceSpec): config: Optional[Dict[str, str]] = None, networks: Optional[List[str]] = None, subcluster: Optional[str] = None, # legacy, only for from_json on upgrade + extra_container_args: Optional[List[str]] = None, ): assert service_type == 'rgw', service_type @@ -803,7 +805,8 @@ class RGWSpec(ServiceSpec): super(RGWSpec, self).__init__( 'rgw', service_id=service_id, placement=placement, unmanaged=unmanaged, - preview_only=preview_only, config=config, networks=networks) + preview_only=preview_only, config=config, networks=networks, + extra_container_args=extra_container_args) #: The RGW realm associated with this service. Needs to be manually created self.rgw_realm: Optional[str] = rgw_realm @@ -860,12 +863,14 @@ class IscsiServiceSpec(ServiceSpec): preview_only: bool = False, config: Optional[Dict[str, str]] = None, networks: Optional[List[str]] = None, + extra_container_args: Optional[List[str]] = None, ): assert service_type == 'iscsi' super(IscsiServiceSpec, self).__init__('iscsi', service_id=service_id, placement=placement, unmanaged=unmanaged, preview_only=preview_only, - config=config, networks=networks) + config=config, networks=networks, + extra_container_args=extra_container_args) #: RADOS pool where ceph-iscsi config data is stored. self.pool = pool @@ -926,13 +931,15 @@ class IngressSpec(ServiceSpec): virtual_ip: Optional[str] = None, virtual_interface_networks: Optional[List[str]] = [], unmanaged: bool = False, - ssl: bool = False + ssl: bool = False, + extra_container_args: Optional[List[str]] = None, ): assert service_type == 'ingress' super(IngressSpec, self).__init__( 'ingress', service_id=service_id, placement=placement, config=config, - networks=networks + networks=networks, + extra_container_args=extra_container_args ) self.backend_service = backend_service self.frontend_port = frontend_port @@ -1054,6 +1061,7 @@ class MonitoringSpec(ServiceSpec): unmanaged: bool = False, preview_only: bool = False, port: Optional[int] = None, + extra_container_args: Optional[List[str]] = None, ): assert service_type in ['grafana', 'node-exporter', 'prometheus', 'alertmanager'] @@ -1061,7 +1069,7 @@ class MonitoringSpec(ServiceSpec): service_type, service_id, placement=placement, unmanaged=unmanaged, preview_only=preview_only, config=config, - networks=networks) + networks=networks, extra_container_args=extra_container_args) self.service_type = service_type self.port = port @@ -1093,12 +1101,14 @@ class AlertManagerSpec(MonitoringSpec): config: Optional[Dict[str, str]] = None, networks: Optional[List[str]] = None, port: Optional[int] = None, + extra_container_args: Optional[List[str]] = None, ): assert service_type == 'alertmanager' super(AlertManagerSpec, self).__init__( 'alertmanager', service_id=service_id, placement=placement, unmanaged=unmanaged, - preview_only=preview_only, config=config, networks=networks, port=port) + preview_only=preview_only, config=config, networks=networks, port=port, + extra_container_args=extra_container_args) # Custom configuration. # @@ -1140,13 +1150,15 @@ class GrafanaSpec(MonitoringSpec): config: Optional[Dict[str, str]] = None, networks: Optional[List[str]] = None, port: Optional[int] = None, - initial_admin_password: Optional[str] = None + initial_admin_password: Optional[str] = None, + extra_container_args: Optional[List[str]] = None, ): assert service_type == 'grafana' super(GrafanaSpec, self).__init__( 'grafana', service_id=service_id, placement=placement, unmanaged=unmanaged, - preview_only=preview_only, config=config, networks=networks, port=port) + preview_only=preview_only, config=config, networks=networks, port=port, + extra_container_args=extra_container_args) self.initial_admin_password = initial_admin_password @@ -1193,6 +1205,7 @@ class SNMPGatewaySpec(ServiceSpec): unmanaged: bool = False, preview_only: bool = False, port: Optional[int] = None, + extra_container_args: Optional[List[str]] = None, ): assert service_type == 'snmp-gateway' @@ -1200,7 +1213,8 @@ class SNMPGatewaySpec(ServiceSpec): service_type, placement=placement, unmanaged=unmanaged, - preview_only=preview_only) + preview_only=preview_only, + extra_container_args=extra_container_args) self.service_type = service_type self.snmp_version = snmp_version @@ -1309,12 +1323,14 @@ class MDSSpec(ServiceSpec): placement: Optional[PlacementSpec] = None, unmanaged: bool = False, preview_only: bool = False, + extra_container_args: Optional[List[str]] = None, ): assert service_type == 'mds' super(MDSSpec, self).__init__('mds', service_id=service_id, placement=placement, unmanaged=unmanaged, - preview_only=preview_only) + preview_only=preview_only, + extra_container_args=extra_container_args) def validate(self) -> None: super(MDSSpec, self).validate() -- 2.39.5