]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cephadm: allow list_daemons for only a specific daemon
authorAdam King <adking@redhat.com>
Mon, 11 Mar 2024 18:44:17 +0000 (14:44 -0400)
committerAdam King <adking@redhat.com>
Tue, 26 Mar 2024 19:43:21 +0000 (15:43 -0400)
At the moment, my thoughts are to use this internally
in the binary for when we need infor from list_daemons
but only for a specific daemon. I could also see wanting
this just on the command line to get info on a certain
daemon, so I've added it as a flag for `cephadm ls` as well

Signed-off-by: Adam King <adking@redhat.com>
(cherry picked from commit f9c280ce593fdde2914a93262fb3d9bc525f7947)

Conflicts:
src/cephadm/cephadm.py

src/cephadm/cephadm.py

index c718106400f192ed42064f2eded12e7d177e5966..74a3146bba1fa9f4b10118d7375b914c445bedb8 100755 (executable)
@@ -7295,7 +7295,8 @@ def command_list_networks(ctx):
 def command_ls(ctx):
     # type: (CephadmContext) -> None
     ls = list_daemons(ctx, detail=not ctx.no_detail,
-                      legacy_dir=ctx.legacy_dir)
+                      legacy_dir=ctx.legacy_dir,
+                      daemon_name=ctx.name)
     print(json.dumps(ls, indent=4))
 
 
@@ -7320,8 +7321,12 @@ def with_units_to_int(v: str) -> int:
     return int(float(v) * mult)
 
 
-def list_daemons(ctx, detail=True, legacy_dir=None):
-    # type: (CephadmContext, bool, Optional[str]) -> List[Dict[str, str]]
+def list_daemons(
+    ctx: CephadmContext,
+    detail: bool = True,
+    legacy_dir: Optional[str] = None,
+    daemon_name: Optional[str] = None,
+) -> List[Dict[str, str]]:
     host_version: Optional[str] = None
     ls = []
     container_path = ctx.container_engine.path
@@ -7390,6 +7395,8 @@ def list_daemons(ctx, detail=True, legacy_dir=None):
                 for j in os.listdir(os.path.join(data_dir, i)):
                     if '.' in j and os.path.isdir(os.path.join(data_dir, fsid, j)):
                         name = j
+                        if daemon_name and name != daemon_name:
+                            continue
                         (daemon_type, daemon_id) = j.split('.', 1)
                         unit_name = get_unit_name(fsid,
                                                   daemon_type,
@@ -10216,6 +10223,9 @@ def _get_parser():
         '--legacy-dir',
         default='/',
         help='base directory for legacy daemon data')
+    parser_ls.add_argument(
+        '--name', '-n',
+        help='Only get data for specific daemon. Format of daemon name: (type.id)')
 
     parser_list_networks = subparsers.add_parser(
         'list-networks', help='list IP networks')