]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: gather and report ports in 'orch ps' output
authorSage Weil <sage@newdream.net>
Mon, 8 Mar 2021 19:14:49 +0000 (14:14 -0500)
committerSage Weil <sage@newdream.net>
Mon, 15 Mar 2021 22:55:16 +0000 (18:55 -0400)
Signed-off-by: Sage Weil <sage@newdream.net>
src/pybind/mgr/cephadm/serve.py
src/pybind/mgr/cephadm/tests/test_cephadm.py
src/pybind/mgr/orchestrator/_interface.py
src/pybind/mgr/orchestrator/module.py

index 121cb3912ee7a85e39d75544d3f2b8c1ffad1069..5fc0ae35ebfe3163c2021360cfbc32432d201009 100644 (file)
@@ -281,6 +281,8 @@ class CephadmServe:
             sd.memory_limit = d.get('memory_limit')
             sd._service_name = d.get('service_name')
             sd.version = d.get('version')
+            sd.ports = d.get('ports')
+            sd.ip = d.get('ip')
             if sd.daemon_type == 'osd':
                 sd.osdspec_affinity = self.mgr.osd_service.get_osdspec_affinity(sd.daemon_id)
             if 'state' in d:
index 0372924dcc9bdd76acc9d49f70d1c3a7c0497161..2b396c8547e7e3a64856b53539cb396cde251cca 100644 (file)
@@ -122,7 +122,9 @@ class TestCephadm(object):
                         'hostname': 'test',
                         'status': 1,
                         'status_desc': 'starting',
-                        'is_active': False}
+                        'is_active': False,
+                        'ports': [],
+                    }
                 ]
 
                 with with_service(cephadm_module, ServiceSpec('rgw', 'r.z'), CephadmOrchestrator.apply_rgw, 'test'):
@@ -287,7 +289,7 @@ class TestCephadm(object):
                 _run_cephadm.assert_called_with(
                     'test', 'mon.test', 'deploy', [
                         '--name', 'mon.test',
-                        '--meta-json', '{"service_name": "mon"}',
+                        '--meta-json', '{"service_name": "mon", "ports": [], "ip": null}',
                         '--config-json', '-',
                         '--reconfig',
                     ],
index 29b8603818ea3c4a70a7d1119569866a911ce9c4..16fcf2fa6408c6443f7f21c0e4d0fbec18efa3a1 100644 (file)
@@ -790,6 +790,8 @@ class DaemonDescription(object):
                  memory_request: Optional[int] = None,
                  memory_limit: Optional[int] = None,
                  service_name: Optional[str] = None,
+                 ports: Optional[List[int]] = None,
+                 ip: Optional[str] = None,
                  ) -> None:
 
         # Host is at the same granularity as InventoryHost
@@ -842,8 +844,18 @@ class DaemonDescription(object):
         self.memory_request: Optional[int] = memory_request
         self.memory_limit: Optional[int] = memory_limit
 
+        self.ports: Optional[List[int]] = ports
+        self.ip: Optional[str] = ip
+
         self.is_active = is_active
 
+    def get_port_summary(self) -> str:
+        if not self.ports:
+            return ''
+        return ' '.join([
+            f"{self.ip or '*'}:{p}" for p in self.ports
+        ])
+
     def name(self) -> str:
         return '%s.%s' % (self.daemon_type, self.daemon_id)
 
@@ -950,6 +962,8 @@ class DaemonDescription(object):
         if self.daemon_type == 'osd':
             out['osdspec_affinity'] = self.osdspec_affinity
         out['is_active'] = self.is_active
+        out['ports'] = self.ports
+        out['ip'] = self.ip
 
         for k in ['last_refresh', 'created', 'started', 'last_deployed',
                   'last_configured']:
index d314dc27ae11832105f8a418641535b524dab03b..9861a929fa519f51ff0f47b36ec6269229774630 100644 (file)
@@ -626,7 +626,7 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
 
             now = datetime_now()
             table = PrettyTable(
-                ['NAME', 'HOST', 'STATUS', 'REFRESHED', 'AGE',
+                ['NAME', 'HOST', 'STATUS', 'REFRESHED', 'AGE', 'PORTS',
                  'VERSION', 'IMAGE NAME', 'IMAGE ID', 'CONTAINER ID'],
                 border=False)
             table.align = 'l'
@@ -651,6 +651,7 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
                     status,
                     nice_delta(now, s.last_refresh, ' ago'),
                     nice_delta(now, s.created),
+                    s.get_port_summary() or '-',
                     ukn(s.version),
                     ukn(s.container_image_name),
                     ukn(s.container_image_id)[0:12],