From 0e07b4368081de0d9296b3f131a51299f1cd0b78 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 (cherry picked from commit d3c14a17dc5cafef199f4fc3ce657bab54d89b4a) Conflicts: src/python-common/ceph/deployment/drive_group.py src/python-common/ceph/deployment/service_spec.py --- .../ceph/deployment/drive_group.py | 4 ++- .../ceph/deployment/service_spec.py | 34 +++++++++++++------ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/python-common/ceph/deployment/drive_group.py b/src/python-common/ceph/deployment/drive_group.py index c0b343ef82a..be1d2491b85 100644 --- a/src/python-common/ceph/deployment/drive_group.py +++ b/src/python-common/ceph/deployment/drive_group.py @@ -167,12 +167,14 @@ 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]] ): assert service_type is None or service_type == 'osd' 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 1c9a9703660..d56cd17f7ae 100644 --- a/src/python-common/ceph/deployment/service_spec.py +++ b/src/python-common/ceph/deployment/service_spec.py @@ -730,12 +730,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 @@ -792,6 +793,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 @@ -802,7 +804,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 @@ -859,12 +862,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 @@ -925,13 +930,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 @@ -1053,6 +1060,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'] @@ -1060,7 +1068,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 @@ -1092,12 +1100,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. # @@ -1139,13 +1149,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 @@ -1192,6 +1204,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' @@ -1199,7 +1212,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 -- 2.47.3