Skip to content

Commit dd79c75

Browse files
authored
Add flag for UC get-effective-permissions (#511)
* Add flag for UC get-effective-permissions * Remove -e flag, add help
1 parent 4647753 commit dd79c75

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

databricks_cli/unity_catalog/api.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,9 @@ def list_provider_shares(self, name):
235235
def get_permissions(self, sec_type, sec_name):
236236
return self.client.get_permissions(sec_type, sec_name)
237237

238+
def get_effective_permissions(self, sec_type, sec_name):
239+
return self.client.get_effective_permissions(sec_type, sec_name)
240+
238241
def update_permissions(self, sec_type, sec_name, diff_spec):
239242
return self.client.update_permissions(sec_type, sec_name, diff_spec)
240243

databricks_cli/unity_catalog/perms_cli.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,19 +67,24 @@ def _get_perm_securable_name_and_type(catalog_name, schema_full_name, table_full
6767
@click.option('--external-location', cls=OneOfOption, default=None,
6868
one_of=PERMISSIONS_OBJ_TYPES,
6969
help='Name of the external location of interest')
70+
@click.option('--effective', is_flag=True, default=False,
71+
help='Get effective permissions (including inherited privileges)')
7072
@debug_option
7173
@profile_option
7274
@eat_exceptions
7375
@provide_api_client
7476
def get_permissions_cli(api_client, catalog, schema, table, storage_credential,
75-
external_location):
77+
external_location, effective):
7678
"""
7779
Get permissions on a securable.
7880
"""
7981
sec_type, sec_name = _get_perm_securable_name_and_type(catalog, schema, table,
8082
storage_credential, external_location)
8183

82-
perm_json = UnityCatalogApi(api_client).get_permissions(sec_type, sec_name)
84+
if effective:
85+
perm_json = UnityCatalogApi(api_client).get_effective_permissions(sec_type, sec_name)
86+
else:
87+
perm_json = UnityCatalogApi(api_client).get_permissions(sec_type, sec_name)
8388
click.echo(mc_pretty_format(perm_json))
8489

8590

databricks_cli/unity_catalog/uc_service.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -474,14 +474,23 @@ def list_provider_shares(self, name, headers=None):
474474

475475
# Permissions Operations
476476

477-
def _permissions_url(self, sec_type, sec_name):
478-
return '/unity-catalog/permissions/%s/%s' % (sec_type, sec_name)
477+
def _permissions_url(self, sec_type, sec_name, effective=False):
478+
if effective:
479+
return '/unity-catalog/effective-permissions/%s/%s' % (sec_type, sec_name)
480+
else:
481+
return '/unity-catalog/permissions/%s/%s' % (sec_type, sec_name)
479482

480483
def get_permissions(self, sec_type, sec_name, headers=None):
481484
_data = {}
482485
return self.client.perform_query('GET', self._permissions_url(sec_type, sec_name),
483486
data=_data, headers=headers)
484487

488+
def get_effective_permissions(self, sec_type, sec_name, headers=None):
489+
_data = {}
490+
return self.client.perform_query('GET', self._permissions_url(sec_type, sec_name,
491+
effective=True),
492+
data=_data, headers=headers)
493+
485494
def update_permissions(self, sec_type, sec_name, perm_diff_spec, headers=None):
486495
_data = perm_diff_spec
487496
return self.client.perform_query('PATCH', self._permissions_url(sec_type, sec_name),

0 commit comments

Comments
 (0)