]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rpm: split ceph-mgr-modules-core into per-module packages
authorKefu Chai <k.chai@proxmox.com>
Thu, 21 May 2026 12:45:30 +0000 (20:45 +0800)
committerKefu Chai <k.chai@proxmox.com>
Mon, 1 Jun 2026 08:00:26 +0000 (16:00 +0800)
ceph-mgr-modules-core has historically bundled always-on modules
together with optional ones, forcing users to install modules and their
dependencies even when they have no use for them. Split each optional
module into its own package so users and distributions can install only
what they need.

ceph-mgr-modules-core is trimmed to the 10 always-on modules defined
in src/mon/MgrMonitor.cc: balancer, crash, devicehealth, orchestrator,
pg_autoscaler, progress, rbd_support, status, telemetry, volumes.
Each optional module now follows the pattern of ceph-mgr-k8sevents and
ceph-mgr-rook.

New packages carry Obsoletes: ceph-mgr-modules-core < 21.0.0 for
proper upgrade path.

The split also exposes cross-module Python dependencies: modules
co-installed in ceph-mgr-modules-core could freely import each other,
but once separated into individual packages those imports require
explicit Requires entries. Now the inter-dependencies are expressed
properly in ceph.spec.in.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
ceph.spec.in

index a1022334fe199664813c1d21c6b03bc059915904..e92994fca2fc0cd45ead92ad165596c86f8fbd10 100644 (file)
@@ -657,11 +657,29 @@ Requires:       ceph-base = %{_epoch_prefix}%{version}-%{release}
 Requires:       ceph-mgr-modules-core = %{_epoch_prefix}%{version}-%{release}
 Requires:          libcephsqlite = %{_epoch_prefix}%{version}-%{release}
 %if 0%{?weak_deps}
+Recommends:    ceph-mgr-alerts = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-cephadm = %{_epoch_prefix}%{version}-%{release}
 Recommends:    ceph-mgr-dashboard = %{_epoch_prefix}%{version}-%{release}
 Recommends:    ceph-mgr-diskprediction-local = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-influx = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-insights = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-iostat = %{_epoch_prefix}%{version}-%{release}
 Recommends:    ceph-mgr-k8sevents = %{_epoch_prefix}%{version}-%{release}
-Recommends:    ceph-mgr-cephadm = %{_epoch_prefix}%{version}-%{release}
-Recommends:    python%{python3_pkgversion}-influxdb
+Recommends:    ceph-mgr-localpool = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-mds-autoscaler = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-mirroring = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-nfs = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-nvmeof = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-osd-perf-query = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-osd-support = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-prometheus = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-rgw = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-selftest = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-smb = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-snap-schedule = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-stats = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-telegraf = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-test-orchestrator = %{_epoch_prefix}%{version}-%{release}
 %endif
 %description mgr
 ceph-mgr enables python modules that provide services (such as the REST
@@ -676,6 +694,7 @@ BuildArch:      noarch
 Group:          System/Filesystems
 %endif
 Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Requires:       ceph-mgr-smb = %{_epoch_prefix}%{version}-%{release}
 Requires:       ceph-grafana-dashboards = %{_epoch_prefix}%{version}-%{release}
 Requires:       ceph-prometheus-alerts = %{_epoch_prefix}%{version}-%{release}
 %if 0%{?fedora} || 0%{?rhel} >= 9
@@ -728,18 +747,13 @@ BuildArch:      noarch
 %if 0%{?suse_version}
 Group:          System/Filesystems
 %endif
-Requires:       python%{python3_pkgversion}-bcrypt
-Requires:       python%{python3_pkgversion}-packaging
-Requires:       python%{python3_pkgversion}-pyOpenSSL
+Requires:       python%{python3_pkgversion}-prettytable
 Requires:       python%{python3_pkgversion}-requests
 Requires:       python%{python3_pkgversion}-dateutil
-Requires:       python%{python3_pkgversion}-setuptools
 %if 0%{?fedora} || 0%{?rhel} >= 8 || 0%{?openEuler}
-Requires:       python%{python3_pkgversion}-cherrypy
 Requires:       python%{python3_pkgversion}-pyyaml
 %endif
 %if 0%{?suse_version}
-Requires:       python%{python3_pkgversion}-CherryPy
 Requires:       python%{python3_pkgversion}-PyYAML
 %endif
 # RHEL8 has python 3.6 and that lacks dataclasses in the stdlib, so pull in the
@@ -761,6 +775,7 @@ Summary:        Ceph Manager module for Rook-based orchestration
 Group:          System/Filesystems
 %endif
 Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Requires:       ceph-mgr-nfs = %{_epoch_prefix}%{version}-%{release}
 Requires:       python%{python3_pkgversion}-kubernetes
 Requires:       python%{python3_pkgversion}-jsonpatch
 %description mgr-rook
@@ -786,8 +801,12 @@ BuildArch: noarch
 Group:          System/Filesystems
 %endif
 Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Requires:       ceph-mgr-nfs = %{_epoch_prefix}%{version}-%{release}
+Requires:       ceph-mgr-smb = %{_epoch_prefix}%{version}-%{release}
 Requires:       python%{python3_pkgversion}-asyncssh
+Requires:       python%{python3_pkgversion}-bcrypt
 Requires:       python%{python3_pkgversion}-natsort
+Requires:       python%{python3_pkgversion}-pyOpenSSL
 Requires:       cephadm = %{_epoch_prefix}%{version}-%{release}
 %if 0%{?suse_version}
 Requires:       openssh
@@ -803,6 +822,244 @@ Requires:       python%{python3_pkgversion}-jinja2
 ceph-mgr-cephadm is a ceph-mgr module for orchestration functions using
 the integrated cephadm deployment tool management operations.
 
+%package mgr-alerts
+BuildArch:      noarch
+Summary:        Ceph Manager module for sending alerts on health state changes
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-alerts
+ceph-mgr-alerts is a ceph-mgr module that sends email notifications
+on cluster health state changes.
+
+%package mgr-influx
+BuildArch:      noarch
+Summary:        Ceph Manager module for sending metrics to InfluxDB
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+%if 0%{?weak_deps}
+Recommends:     python%{python3_pkgversion}-influxdb
+%endif
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-influx
+ceph-mgr-influx is a ceph-mgr module that sends performance metrics
+to an InfluxDB time-series database.
+
+%package mgr-insights
+BuildArch:      noarch
+Summary:        Ceph Manager module for recording cluster health history
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-insights
+ceph-mgr-insights is a ceph-mgr module that records cluster health
+history to support cluster analysis.
+
+%package mgr-iostat
+BuildArch:      noarch
+Summary:        Ceph Manager module for displaying I/O statistics
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-iostat
+ceph-mgr-iostat is a ceph-mgr module that displays a running summary
+of I/O statistics across the cluster.
+
+%package mgr-localpool
+BuildArch:      noarch
+Summary:        Ceph Manager module for creating per-host CRUSH rules and pools
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-localpool
+ceph-mgr-localpool is a ceph-mgr module that automatically creates
+per-host CRUSH rules and pools.
+
+%package mgr-mds-autoscaler
+BuildArch:      noarch
+Summary:        Ceph Manager module for automatically scaling MDS daemons
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-mds-autoscaler
+ceph-mgr-mds-autoscaler is a ceph-mgr module that automatically scales
+the number of MDS daemons based on file system needs.
+
+%package mgr-mirroring
+BuildArch:      noarch
+Summary:        Ceph Manager module for managing CephFS mirroring
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-mirroring
+ceph-mgr-mirroring is a ceph-mgr module that provides management
+commands for CephFS mirroring.
+
+%package mgr-nfs
+BuildArch:      noarch
+Summary:        Ceph Manager module for managing NFS gateway deployments
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-nfs
+ceph-mgr-nfs is a ceph-mgr module that manages NFS gateway deployments
+on top of CephFS and RGW.
+
+%package mgr-nvmeof
+BuildArch:      noarch
+Summary:        Ceph Manager module for managing NVMe-oF gateway deployments
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-nvmeof
+ceph-mgr-nvmeof is a ceph-mgr module that manages NVMe-oF gateway
+deployments for Ceph RBD.
+
+%package mgr-osd-perf-query
+BuildArch:      noarch
+Summary:        Ceph Manager module for OSD performance counter queries
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Requires:       python%{python3_pkgversion}-prettytable
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-osd-perf-query
+ceph-mgr-osd-perf-query is a ceph-mgr module that exposes OSD
+performance counter query functionality.
+
+%package mgr-osd-support
+BuildArch:      noarch
+Summary:        Ceph Manager module for additional OSD management commands
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-osd-support
+ceph-mgr-osd-support is a ceph-mgr module that provides additional
+OSD management commands.
+
+%package mgr-prometheus
+BuildArch:      noarch
+Summary:        Ceph Manager module for exposing metrics to Prometheus
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%if 0%{?fedora} || 0%{?rhel} >= 8 || 0%{?openEuler}
+Requires:       python%{python3_pkgversion}-cherrypy
+%endif
+%if 0%{?suse_version}
+Requires:       python%{python3_pkgversion}-CherryPy
+%endif
+%description mgr-prometheus
+ceph-mgr-prometheus is a ceph-mgr module that exposes cluster metrics
+in Prometheus exposition format.
+
+%package mgr-rgw
+BuildArch:      noarch
+Summary:        Ceph Manager module for RADOS Gateway management
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-rgw
+ceph-mgr-rgw is a ceph-mgr module that provides management and status
+commands for the RADOS Gateway.
+
+%package mgr-selftest
+BuildArch:      noarch
+Summary:        Ceph Manager module for testing the manager framework
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-selftest
+ceph-mgr-selftest is a ceph-mgr module used for testing the manager
+framework.
+
+%package mgr-smb
+BuildArch:      noarch
+Summary:        Ceph Manager module for managing SMB gateway deployments
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-smb
+ceph-mgr-smb is a ceph-mgr module that manages SMB gateway
+deployments on Ceph.
+
+%package mgr-snap-schedule
+BuildArch:      noarch
+Summary:        Ceph Manager module for automated CephFS snapshot schedules
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-snap-schedule
+ceph-mgr-snap-schedule is a ceph-mgr module that manages automated
+CephFS snapshot schedules.
+
+%package mgr-stats
+BuildArch:      noarch
+Summary:        Ceph Manager module for exposing file system client I/O statistics
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-stats
+ceph-mgr-stats is a ceph-mgr module that exposes file system client
+I/O statistics.
+
+%package mgr-telegraf
+BuildArch:      noarch
+Summary:        Ceph Manager module for sending metrics to Telegraf
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-telegraf
+ceph-mgr-telegraf is a ceph-mgr module that sends performance metrics
+to a Telegraf agent.
+
+%package mgr-test-orchestrator
+BuildArch:      noarch
+Summary:        Ceph Manager module for testing the orchestrator framework
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-test-orchestrator
+ceph-mgr-test-orchestrator is a ceph-mgr module used for testing the
+orchestrator framework.
+
 %package fuse
 Summary:       Ceph fuse-based client
 %if 0%{?suse_version}
 
 %files mgr-modules-core
 %dir %{_datadir}/ceph/mgr
-%{_datadir}/ceph/mgr/alerts
 %{_datadir}/ceph/mgr/balancer
 %{_datadir}/ceph/mgr/crash
 %{_datadir}/ceph/mgr/devicehealth
+%{_datadir}/ceph/mgr/orchestrator
+%{_datadir}/ceph/mgr/pg_autoscaler
+%{_datadir}/ceph/mgr/progress
+%{_datadir}/ceph/mgr/rbd_support
+%{_datadir}/ceph/mgr/status
+%{_datadir}/ceph/mgr/telemetry
+%{_datadir}/ceph/mgr/volumes
+
+%files mgr-alerts
+%{_datadir}/ceph/mgr/alerts
+
+%ceph_mgr_module_scripts mgr-alerts
+
+%files mgr-influx
 %{_datadir}/ceph/mgr/influx
+
+%ceph_mgr_module_scripts mgr-influx
+
+%files mgr-insights
 %{_datadir}/ceph/mgr/insights
+
+%ceph_mgr_module_scripts mgr-insights
+
+%files mgr-iostat
 %{_datadir}/ceph/mgr/iostat
+
+%ceph_mgr_module_scripts mgr-iostat
+
+%files mgr-localpool
 %{_datadir}/ceph/mgr/localpool
+
+%ceph_mgr_module_scripts mgr-localpool
+
+%files mgr-mds-autoscaler
 %{_datadir}/ceph/mgr/mds_autoscaler
+
+%ceph_mgr_module_scripts mgr-mds-autoscaler
+
+%files mgr-mirroring
 %{_datadir}/ceph/mgr/mirroring
+
+%ceph_mgr_module_scripts mgr-mirroring
+
+%files mgr-nfs
 %{_datadir}/ceph/mgr/nfs
-%{_datadir}/ceph/mgr/orchestrator
+
+%ceph_mgr_module_scripts mgr-nfs
+
+%files mgr-nvmeof
+%{_datadir}/ceph/mgr/nvmeof
+
+%ceph_mgr_module_scripts mgr-nvmeof
+
+%files mgr-osd-perf-query
 %{_datadir}/ceph/mgr/osd_perf_query
+
+%ceph_mgr_module_scripts mgr-osd-perf-query
+
+%files mgr-osd-support
 %{_datadir}/ceph/mgr/osd_support
-%{_datadir}/ceph/mgr/pg_autoscaler
-%{_datadir}/ceph/mgr/progress
+
+%ceph_mgr_module_scripts mgr-osd-support
+
+%files mgr-prometheus
 %{_datadir}/ceph/mgr/prometheus
-%{_datadir}/ceph/mgr/rbd_support
+
+%ceph_mgr_module_scripts mgr-prometheus
+
+%files mgr-rgw
 %{_datadir}/ceph/mgr/rgw
+
+%ceph_mgr_module_scripts mgr-rgw
+
+%files mgr-selftest
 %{_datadir}/ceph/mgr/selftest
+
+%ceph_mgr_module_scripts mgr-selftest
+
+%files mgr-smb
 %{_datadir}/ceph/mgr/smb
+
+%ceph_mgr_module_scripts mgr-smb
+
+%files mgr-snap-schedule
 %{_datadir}/ceph/mgr/snap_schedule
+
+%ceph_mgr_module_scripts mgr-snap-schedule
+
+%files mgr-stats
 %{_datadir}/ceph/mgr/stats
-%{_datadir}/ceph/mgr/status
+
+%ceph_mgr_module_scripts mgr-stats
+
+%files mgr-telegraf
 %{_datadir}/ceph/mgr/telegraf
-%{_datadir}/ceph/mgr/telemetry
+
+%ceph_mgr_module_scripts mgr-telegraf
+
+%files mgr-test-orchestrator
 %{_datadir}/ceph/mgr/test_orchestrator
-%{_datadir}/ceph/mgr/volumes
-%{_datadir}/ceph/mgr/nvmeof
+
+%ceph_mgr_module_scripts mgr-test-orchestrator
 
 %files mgr-rook
 %{_datadir}/ceph/mgr/rook