Skip to content

Commit a41353c

Browse files
committed
Add subcommand explore permissions
1 parent ffd6200 commit a41353c

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

CHANGES.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ in progress
99
- OCI: Removed builds for linux/arm/v7
1010
- Dependencies: Use ``verlib2`` instead of ``packaging``
1111
- Dependencies: Updated to ``docopt-ng``
12+
- Add subcommand ``explore permissions``. Thanks, @meyerder.
1213

1314
2024-03-07 0.18.0
1415
=================

grafana_wtf/commands.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def run():
3434
grafana-wtf [options] info
3535
grafana-wtf [options] explore datasources
3636
grafana-wtf [options] explore dashboards [--data-details] [--queries-only]
37+
grafana-wtf [options] explore permissions
3738
grafana-wtf [options] find [<search-expression>]
3839
grafana-wtf [options] replace <search-expression> <replacement> [--dry-run]
3940
grafana-wtf [options] log [<dashboard_uid>] [--number=<count>] [--head=<count>] [--tail=<count>] [--reverse] [--sql=<sql>]
@@ -319,6 +320,10 @@ def run():
319320
results = engine.explore_dashboards(with_data_details=options.data_details, queries_only=options.queries_only)
320321
output_results(output_format, results)
321322

323+
if options.explore and options.permissions:
324+
results = engine.explore_permissions()
325+
output_results(output_format, results)
326+
322327
if options.info:
323328
response = engine.info()
324329
output_results(output_format, response)

grafana_wtf/core.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,23 @@ def explore_dashboards(self, with_data_details: bool = False, queries_only: bool
492492

493493
return results
494494

495+
def explore_permissions(self):
496+
self.scan_folders()
497+
self.scan_dashboards()
498+
499+
items = []
500+
for folder in self.data.folders:
501+
perms = self.grafana.folder.get_folder_permissions(folder["uid"])
502+
item = OrderedDict(item=folder, type="folder", permissions=perms)
503+
items.append(item)
504+
505+
for dashboard in self.data.dashboards:
506+
perms = self.grafana.dashboard.get_permissions_by_uid(dashboard["dashboard"]["uid"])
507+
item = OrderedDict(item=dashboard["meta"], type="dashboard", permissions=perms)
508+
items.append(item)
509+
510+
return items
511+
495512
def plugins_list(self):
496513
return self.grafana.plugin.list()
497514

0 commit comments

Comments
 (0)