]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cephadm: update default image imports to point to common location 60377/head
authorAdam King <adking@redhat.com>
Mon, 21 Oct 2024 15:06:51 +0000 (11:06 -0400)
committerAdam King <adking@redhat.com>
Wed, 30 Oct 2024 14:12:11 +0000 (10:12 -0400)
Additionally, remove the image defaults from the two previous locations
and update the check for the number of instances of "quay" and "docker"
in these areas respectively.

Fixes: https://tracker.ceph.com/issues/68120
Signed-off-by: Adam King <adking@redhat.com>
13 files changed:
src/cephadm/cephadmlib/constants.py
src/cephadm/cephadmlib/container_types.py
src/cephadm/cephadmlib/daemons/ingress.py
src/cephadm/cephadmlib/daemons/mgmt_gateway.py
src/cephadm/cephadmlib/daemons/monitoring.py
src/cephadm/cephadmlib/daemons/nvmeof.py
src/cephadm/cephadmlib/daemons/oauth2_proxy.py
src/cephadm/cephadmlib/daemons/smb.py
src/cephadm/cephadmlib/daemons/snmp.py
src/cephadm/cephadmlib/daemons/tracing.py
src/cephadm/tox.ini
src/pybind/mgr/cephadm/module.py
src/pybind/mgr/tox.ini

index c53e89438a8dd51ad4d5d3edc9106b775b57d2b2..215d207729d21e4ab82f978acc7dab35f07a5279 100644 (file)
@@ -4,24 +4,6 @@
 DEFAULT_IMAGE = 'quay.ceph.io/ceph-ci/ceph:main'
 DEFAULT_IMAGE_IS_MAIN = True
 DEFAULT_IMAGE_RELEASE = 'squid'
-DEFAULT_PROMETHEUS_IMAGE = 'quay.io/prometheus/prometheus:v2.51.0'
-DEFAULT_LOKI_IMAGE = 'quay.io/ceph/loki:3.0.0'
-DEFAULT_PROMTAIL_IMAGE = 'quay.io/ceph/promtail:3.0.0'
-DEFAULT_NODE_EXPORTER_IMAGE = 'quay.io/prometheus/node-exporter:v1.7.0'
-DEFAULT_ALERT_MANAGER_IMAGE = 'quay.io/prometheus/alertmanager:v0.27.0'
-DEFAULT_GRAFANA_IMAGE = 'quay.io/ceph/grafana:10.4.8'
-DEFAULT_HAPROXY_IMAGE = 'quay.io/ceph/haproxy:2.3'
-DEFAULT_KEEPALIVED_IMAGE = 'quay.io/ceph/keepalived:2.2.4'
-DEFAULT_NVMEOF_IMAGE = 'quay.io/ceph/nvmeof:1.3.3'
-DEFAULT_SNMP_GATEWAY_IMAGE = 'quay.io/ceph/snmp-notifier:v1.2.1'
-DEFAULT_ELASTICSEARCH_IMAGE = 'quay.io/omrizeneva/elasticsearch:6.8.23'
-DEFAULT_JAEGER_COLLECTOR_IMAGE = 'quay.io/jaegertracing/jaeger-collector:1.29'
-DEFAULT_JAEGER_AGENT_IMAGE = 'quay.io/jaegertracing/jaeger-agent:1.29'
-DEFAULT_JAEGER_QUERY_IMAGE = 'quay.io/jaegertracing/jaeger-query:1.29'
-DEFAULT_SMB_IMAGE = 'quay.io/samba.org/samba-server:devbuilds-centos-amd64'
-DEFAULT_SMBMETRICS_IMAGE = 'quay.io/samba.org/samba-metrics:latest'
-DEFAULT_NGINX_IMAGE = 'quay.io/ceph/nginx:sclorg-nginx-126'
-DEFAULT_OAUTH2_PROXY_IMAGE = 'quay.io/oauth2-proxy/oauth2-proxy:v7.6.0'
 DEFAULT_REGISTRY = 'quay.io'  # normalize unqualified digests to this
 # ------------------------------------------------------------------------------
 
index 791a545538a3c75b8e1c9b56686b0d0a1171ab04..f1e829cbdf7ba5683482f04a93af412ececca7d9 100644 (file)
@@ -8,28 +8,8 @@ import os
 from typing import Dict, List, Optional, Any, Union, Tuple, Iterable, cast
 
 from .call_wrappers import call, call_throws, CallVerbosity
-from .constants import (
-    DEFAULT_TIMEOUT,
-    # default container images
-    DEFAULT_ALERT_MANAGER_IMAGE,
-    DEFAULT_GRAFANA_IMAGE,
-    DEFAULT_LOKI_IMAGE,
-    DEFAULT_NODE_EXPORTER_IMAGE,
-    DEFAULT_PROMETHEUS_IMAGE,
-    DEFAULT_PROMTAIL_IMAGE,
-    DEFAULT_HAPROXY_IMAGE,
-    DEFAULT_KEEPALIVED_IMAGE,
-    DEFAULT_NVMEOF_IMAGE,
-    DEFAULT_SNMP_GATEWAY_IMAGE,
-    DEFAULT_ELASTICSEARCH_IMAGE,
-    DEFAULT_JAEGER_COLLECTOR_IMAGE,
-    DEFAULT_JAEGER_AGENT_IMAGE,
-    DEFAULT_JAEGER_QUERY_IMAGE,
-    DEFAULT_SMB_IMAGE,
-    DEFAULT_SMBMETRICS_IMAGE,
-    DEFAULT_NGINX_IMAGE,
-    DEFAULT_OAUTH2_PROXY_IMAGE,
-)
+from .constants import DEFAULT_TIMEOUT
+import ceph.cephadm.images as default_images
 from .container_engines import Docker, Podman
 from .context import CephadmContext
 from .daemon_identity import DaemonIdentity, DaemonSubIdentity
@@ -687,24 +667,12 @@ def get_mgr_images() -> dict:
     """Return dict of default mgr images"""
     mgr_prefix = 'mgr/cephadm/container_image_'
     mgr_images = {}
-    mgr_images[mgr_prefix + 'prometheus'] = DEFAULT_PROMETHEUS_IMAGE
-    mgr_images[mgr_prefix + 'alertmanager'] = DEFAULT_ALERT_MANAGER_IMAGE
-    mgr_images[mgr_prefix + 'graphana'] = DEFAULT_GRAFANA_IMAGE
-    mgr_images[mgr_prefix + 'loki'] = DEFAULT_LOKI_IMAGE
-    mgr_images[mgr_prefix + 'promtail'] = DEFAULT_PROMTAIL_IMAGE
-    mgr_images[mgr_prefix + 'node_exporter'] = DEFAULT_NODE_EXPORTER_IMAGE
-    mgr_images[mgr_prefix + 'haproxy'] = DEFAULT_HAPROXY_IMAGE
-    mgr_images[mgr_prefix + 'keepalived'] = DEFAULT_KEEPALIVED_IMAGE
-    mgr_images[mgr_prefix + 'nvmeof'] = DEFAULT_NVMEOF_IMAGE
-    mgr_images[mgr_prefix + 'snmp_gateway'] = DEFAULT_SNMP_GATEWAY_IMAGE
-    mgr_images[mgr_prefix + 'elasticsearch'] = DEFAULT_ELASTICSEARCH_IMAGE
-    mgr_images[
-        mgr_prefix + 'jaeger_collector'
-    ] = DEFAULT_JAEGER_COLLECTOR_IMAGE
-    mgr_images[mgr_prefix + 'jaeger_agent'] = DEFAULT_JAEGER_AGENT_IMAGE
-    mgr_images[mgr_prefix + 'jaeger_query'] = DEFAULT_JAEGER_QUERY_IMAGE
-    mgr_images[mgr_prefix + 'smb'] = DEFAULT_SMB_IMAGE
-    mgr_images[mgr_prefix + 'smbmetrics'] = DEFAULT_SMBMETRICS_IMAGE
-    mgr_images[mgr_prefix + 'nginx'] = DEFAULT_NGINX_IMAGE
-    mgr_images[mgr_prefix + 'oauth2_proxy'] = DEFAULT_OAUTH2_PROXY_IMAGE
+    images = vars(default_images)
+    for key, value in images.items():
+        if key.startswith('DEFAULT_') and key.endswith('_IMAGE'):
+            # flake8 and black disagree about spaces around ":" hence the noqa comment
+            suffix = key[
+                len('DEFAULT_') : -len('_IMAGE')  # noqa: E203
+            ].lower()
+            mgr_images[mgr_prefix + suffix] = value
     return mgr_images
index 6064cf538fb05611841f4284df1ea440adee2e1e..8f4f6b089913a1a416677d358ea32b958769eec8 100644 (file)
@@ -2,9 +2,11 @@ import os
 
 from typing import Dict, List, Optional, Tuple, Union
 
-from ..constants import (
+from ceph.cephadm.images import (
     DEFAULT_HAPROXY_IMAGE,
     DEFAULT_KEEPALIVED_IMAGE,
+)
+from ..constants import (
     DATA_DIR_MODE,
 )
 from ..container_daemon_form import ContainerDaemonForm, daemon_to_container
index 01c68a83ba85ab89ff441e969e27b576abb6b313..85f7249590973c158eaaada3f6ba2361394aa7e2 100644 (file)
@@ -11,7 +11,7 @@ from ..context_getters import fetch_configs
 from ..daemon_form import register as register_daemon_form
 from ..daemon_identity import DaemonIdentity
 from ..deployment_utils import to_deployment_container
-from ..constants import DEFAULT_NGINX_IMAGE
+from ceph.cephadm.images import DEFAULT_NGINX_IMAGE
 from ..data_utils import dict_get, is_fsid
 from ..file_utils import populate_files, makedirs, recursive_chown
 from ..exceptions import Error
index fca4da406e5deb01d80a2fafb8a76f2a713e6d0d..710093f0f4674a5ed8f2ff8d8efc1d2c31606732 100644 (file)
@@ -3,13 +3,15 @@ import os
 from typing import Dict, List, Tuple
 
 from ..call_wrappers import call, CallVerbosity
-from ..constants import (
-    DEFAULT_ALERT_MANAGER_IMAGE,
+from ceph.cephadm.images import (
+    DEFAULT_ALERTMANAGER_IMAGE,
     DEFAULT_GRAFANA_IMAGE,
     DEFAULT_LOKI_IMAGE,
     DEFAULT_NODE_EXPORTER_IMAGE,
     DEFAULT_PROMETHEUS_IMAGE,
     DEFAULT_PROMTAIL_IMAGE,
+)
+from ..constants import (
     UID_NOBODY,
     GID_NOGROUP,
 )
@@ -91,7 +93,7 @@ class Monitoring(ContainerDaemonForm):
             ],
         },
         'alertmanager': {
-            'image': DEFAULT_ALERT_MANAGER_IMAGE,
+            'image': DEFAULT_ALERTMANAGER_IMAGE,
             'cpus': '2',
             'memory': '2GB',
             'args': [
index 9bce32201bb6fbbd5d95c7ed723e6ca75c23c36c..2c20a900f45cedf5834f77c55767488d97ffb846 100644 (file)
@@ -8,7 +8,7 @@ from ..container_types import CephContainer
 from ..context_getters import fetch_configs, get_config_and_keyring
 from ..daemon_form import register as register_daemon_form
 from ..daemon_identity import DaemonIdentity
-from ..constants import DEFAULT_NVMEOF_IMAGE
+from ceph.cephadm.images import DEFAULT_NVMEOF_IMAGE
 from ..context import CephadmContext
 from ..data_utils import dict_get, is_fsid
 from ..deployment_utils import to_deployment_container
index 2b61df9d2e7404eeb1e65f311fdd2ba67ece0962..14202111c14ec6257354b2562515df25a16f49c1 100644 (file)
@@ -11,7 +11,8 @@ from ..context_getters import fetch_configs
 from ..daemon_form import register as register_daemon_form
 from ..daemon_identity import DaemonIdentity
 from ..deployment_utils import to_deployment_container
-from ..constants import DEFAULT_OAUTH2_PROXY_IMAGE, UID_NOBODY, GID_NOGROUP
+from ceph.cephadm.images import DEFAULT_OAUTH2_PROXY_IMAGE
+from ..constants import UID_NOBODY, GID_NOGROUP
 from ..data_utils import dict_get, is_fsid
 from ..file_utils import populate_files, makedirs, recursive_chown
 from ..exceptions import Error
index 82f886e72ecd4d1c6f28dc25bf0680910ec2ff53..6b253054ede4c357d2b11bfa72d660067c0fb5f4 100644 (file)
@@ -13,7 +13,7 @@ from .. import data_utils
 from .. import deployment_utils
 from .. import file_utils
 from ..call_wrappers import call, CallVerbosity
-from ..constants import DEFAULT_SMB_IMAGE
+from ceph.cephadm.images import DEFAULT_SAMBA_IMAGE
 from ..container_daemon_form import ContainerDaemonForm, daemon_to_container
 from ..container_engines import Podman
 from ..container_types import (
@@ -418,7 +418,7 @@ class SMB(ContainerDaemonForm):
 
     daemon_type = 'smb'
     daemon_base = '/usr/sbin/smbd'
-    default_image = DEFAULT_SMB_IMAGE
+    default_image = DEFAULT_SAMBA_IMAGE
 
     @classmethod
     def for_daemon_type(cls, daemon_type: str) -> bool:
index f334e5f76522120b7ccd4ba780bcd5e41f169a05..ab84a302f2c9d40739d187105f5c631086d37ca4 100644 (file)
@@ -5,7 +5,7 @@ from typing import Any, Dict, List, Optional, Tuple, Union
 from urllib.error import HTTPError, URLError
 from urllib.request import urlopen
 
-from ..constants import DEFAULT_SNMP_GATEWAY_IMAGE
+from ceph.cephadm.images import DEFAULT_SNMP_GATEWAY_IMAGE
 from ..container_daemon_form import ContainerDaemonForm, daemon_to_container
 from ..container_types import CephContainer
 from ..context import CephadmContext
index 365458a9c57b441b16009848d799020ece56f84c..4cf7433945567e69b2507b764a853ef0655e0c54 100644 (file)
@@ -2,7 +2,7 @@ import logging
 
 from typing import Any, Dict, List, Tuple
 
-from ..constants import (
+from ceph.cephadm.images import (
     DEFAULT_ELASTICSEARCH_IMAGE,
     DEFAULT_JAEGER_AGENT_IMAGE,
     DEFAULT_JAEGER_COLLECTOR_IMAGE,
index 7658b3b31f9a8cfea317a85a47aa3ad813ea688b..b999a0f552b321e974b88cb60a3667f6fdb2aeed 100644 (file)
@@ -58,7 +58,7 @@ deps =
 commands =
     flake8 --config=tox.ini {posargs:cephadm.py cephadmlib}
     bash -c 'test $(git ls-files 'cephadm.py' 'cephadmlib/*.py' | sort -u | xargs grep "docker.io" | wc -l) == 1'
-    bash -c 'test $(git ls-files 'cephadm.py' 'cephadmlib/*.py' | sort -u | xargs grep "quay.io" | wc -l) == 25'
+    bash -c 'test $(git ls-files 'cephadm.py' 'cephadmlib/*.py' | sort -u | xargs grep "quay.io" | wc -l) == 7'
 # Downstream distributions may choose to alter this "docker.io" number,
 # to make sure no new references to docker.io are creeping in unnoticed.
 
index e7e429e88cdb564b3ce0a5318c5b8d7791beafa6..15079c40be6b178f47a9e5a7e485e7fdcdd8d225 100644 (file)
@@ -30,6 +30,7 @@ import multiprocessing.pool
 import subprocess
 from prettytable import PrettyTable
 
+import ceph.cephadm.images as default_images
 from ceph.deployment import inventory
 from ceph.deployment.drive_group import DriveGroupSpec
 from ceph.deployment.service_spec import \
@@ -130,28 +131,7 @@ def os_exit_noop(status: int) -> None:
 
 os._exit = os_exit_noop   # type: ignore
 
-
-# Default container images -----------------------------------------------------
 DEFAULT_IMAGE = 'quay.io/ceph/ceph'
-DEFAULT_PROMETHEUS_IMAGE = 'quay.io/prometheus/prometheus:v2.51.0'
-DEFAULT_NODE_EXPORTER_IMAGE = 'quay.io/prometheus/node-exporter:v1.7.0'
-DEFAULT_NVMEOF_IMAGE = 'quay.io/ceph/nvmeof:1.3.3'
-DEFAULT_LOKI_IMAGE = 'quay.io/ceph/loki:3.0.0'
-DEFAULT_PROMTAIL_IMAGE = 'quay.io/ceph/promtail:3.0.0'
-DEFAULT_ALERT_MANAGER_IMAGE = 'quay.io/prometheus/alertmanager:v0.27.0'
-DEFAULT_GRAFANA_IMAGE = 'quay.io/ceph/grafana:10.4.8'
-DEFAULT_HAPROXY_IMAGE = 'quay.io/ceph/haproxy:2.3'
-DEFAULT_KEEPALIVED_IMAGE = 'quay.io/ceph/keepalived:2.2.4'
-DEFAULT_SNMP_GATEWAY_IMAGE = 'quay.io/ceph/snmp-notifier:v1.2.1'
-DEFAULT_ELASTICSEARCH_IMAGE = 'quay.io/omrizeneva/elasticsearch:6.8.23'
-DEFAULT_JAEGER_COLLECTOR_IMAGE = 'quay.io/jaegertracing/jaeger-collector:1.29'
-DEFAULT_JAEGER_AGENT_IMAGE = 'quay.io/jaegertracing/jaeger-agent:1.29'
-DEFAULT_NGINX_IMAGE = 'quay.io/ceph/nginx:sclorg-nginx-126'
-DEFAULT_OAUTH2_PROXY_IMAGE = 'quay.io/oauth2-proxy/oauth2-proxy:v7.6.0'
-DEFAULT_JAEGER_QUERY_IMAGE = 'quay.io/jaegertracing/jaeger-query:1.29'
-DEFAULT_SAMBA_IMAGE = 'quay.io/samba.org/samba-server:devbuilds-centos-amd64'
-DEFAULT_SAMBA_METRICS_IMAGE = 'quay.io/samba.org/samba-metrics:latest'
-# ------------------------------------------------------------------------------
 
 
 def host_exists(hostname_position: int = 1) -> Callable:
@@ -239,92 +219,92 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule,
         ),
         Option(
             'container_image_prometheus',
-            default=DEFAULT_PROMETHEUS_IMAGE,
+            default=default_images.DEFAULT_PROMETHEUS_IMAGE,
             desc='Prometheus container image',
         ),
         Option(
             'container_image_nvmeof',
-            default=DEFAULT_NVMEOF_IMAGE,
+            default=default_images.DEFAULT_NVMEOF_IMAGE,
             desc='Nvme-of container image',
         ),
         Option(
             'container_image_grafana',
-            default=DEFAULT_GRAFANA_IMAGE,
+            default=default_images.DEFAULT_GRAFANA_IMAGE,
             desc='Prometheus container image',
         ),
         Option(
             'container_image_alertmanager',
-            default=DEFAULT_ALERT_MANAGER_IMAGE,
+            default=default_images.DEFAULT_ALERTMANAGER_IMAGE,
             desc='Prometheus container image',
         ),
         Option(
             'container_image_node_exporter',
-            default=DEFAULT_NODE_EXPORTER_IMAGE,
+            default=default_images.DEFAULT_NODE_EXPORTER_IMAGE,
             desc='Prometheus container image',
         ),
         Option(
             'container_image_loki',
-            default=DEFAULT_LOKI_IMAGE,
+            default=default_images.DEFAULT_LOKI_IMAGE,
             desc='Loki container image',
         ),
         Option(
             'container_image_promtail',
-            default=DEFAULT_PROMTAIL_IMAGE,
+            default=default_images.DEFAULT_PROMTAIL_IMAGE,
             desc='Promtail container image',
         ),
         Option(
             'container_image_haproxy',
-            default=DEFAULT_HAPROXY_IMAGE,
+            default=default_images.DEFAULT_HAPROXY_IMAGE,
             desc='HAproxy container image',
         ),
         Option(
             'container_image_keepalived',
-            default=DEFAULT_KEEPALIVED_IMAGE,
+            default=default_images.DEFAULT_KEEPALIVED_IMAGE,
             desc='Keepalived container image',
         ),
         Option(
             'container_image_snmp_gateway',
-            default=DEFAULT_SNMP_GATEWAY_IMAGE,
+            default=default_images.DEFAULT_SNMP_GATEWAY_IMAGE,
             desc='SNMP Gateway container image',
         ),
         Option(
             'container_image_nginx',
-            default=DEFAULT_NGINX_IMAGE,
+            default=default_images.DEFAULT_NGINX_IMAGE,
             desc='Nginx container image',
         ),
         Option(
             'container_image_oauth2_proxy',
-            default=DEFAULT_OAUTH2_PROXY_IMAGE,
+            default=default_images.DEFAULT_OAUTH2_PROXY_IMAGE,
             desc='oauth2-proxy container image',
         ),
         Option(
             'container_image_elasticsearch',
-            default=DEFAULT_ELASTICSEARCH_IMAGE,
+            default=default_images.DEFAULT_ELASTICSEARCH_IMAGE,
             desc='elasticsearch container image',
         ),
         Option(
             'container_image_jaeger_agent',
-            default=DEFAULT_JAEGER_AGENT_IMAGE,
+            default=default_images.DEFAULT_JAEGER_AGENT_IMAGE,
             desc='Jaeger agent container image',
         ),
         Option(
             'container_image_jaeger_collector',
-            default=DEFAULT_JAEGER_COLLECTOR_IMAGE,
+            default=default_images.DEFAULT_JAEGER_COLLECTOR_IMAGE,
             desc='Jaeger collector container image',
         ),
         Option(
             'container_image_jaeger_query',
-            default=DEFAULT_JAEGER_QUERY_IMAGE,
+            default=default_images.DEFAULT_JAEGER_QUERY_IMAGE,
             desc='Jaeger query container image',
         ),
         Option(
             'container_image_samba',
-            default=DEFAULT_SAMBA_IMAGE,
+            default=default_images.DEFAULT_SAMBA_IMAGE,
             desc='Samba/SMB container image',
         ),
         Option(
             'container_image_samba_metrics',
-            default=DEFAULT_SAMBA_METRICS_IMAGE,
+            default=default_images.DEFAULT_SAMBA_METRICS_IMAGE,
             desc='Samba/SMB metrics exporter container image',
         ),
         Option(
index 45d8dbd487109b1e30ad477ce82cf2dcf7494897..5afbe93ace004905cee391feececf20a29118c42 100644 (file)
@@ -160,7 +160,7 @@ commands =
     flake8 --config=tox.ini {posargs} \
       {posargs:{[testenv:flake8]modules}}
     bash -c 'test $(git ls-files cephadm | grep ".py$" | grep -v tests | xargs grep "docker.io" | wc -l) == 3'
-    bash -c 'test $(git ls-files cephadm | grep ".py$" | grep -v tests | xargs grep "quay.io" | wc -l) == 26'
+    bash -c 'test $(git ls-files cephadm | grep ".py$" | grep -v tests | xargs grep "quay.io" | wc -l) == 8'
 
 [testenv:jinjalint]
 deps =