from mgr_util import build_url
from typing import Dict, List, TYPE_CHECKING, cast, Collection, Callable, NamedTuple, Optional, IO
from cephadm.services.nfs import NFSService
-from cephadm.services.smb import SMBService
from cephadm.services.monitoring import AlertmanagerService, NodeExporterService, PrometheusService
import secrets
from mgr_util import verify_tls_files
from cephadm.services.cephadmservice import CephExporterService
from cephadm.services.nvmeof import NvmeofService
+from ceph.deployment.service_spec import SMBSpec
+
if TYPE_CHECKING:
from cephadm.module import CephadmOrchestrator
srv_entries = []
for dd in self.mgr.cache.get_daemons_by_type('smb'):
assert dd.hostname is not None
+ try:
+ spec = cast(SMBSpec, self.mgr.spec_store[dd.service_name()].spec)
+ except KeyError:
+ # TODO: logging
+ continue
+ # TODO: needs updating once ip control/colocation is present
addr = dd.ip if dd.ip else self.mgr.inventory.get_addr(dd.hostname)
- port = SMBService.DEFAULT_EXPORTER_PORT
+ port = spec.metrics_exporter_port()
srv_entries.append({
'targets': [build_url(host=addr, port=port).lstrip('/')],
'labels': {'instance': dd.hostname}