Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions databricks_cli/unity_catalog/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,9 @@ def list_provider_shares(self, name):
def get_permissions(self, sec_type, sec_name):
return self.client.get_permissions(sec_type, sec_name)

def get_effective_permissions(self, sec_type, sec_name):
return self.client.get_effective_permissions(sec_type, sec_name)

def update_permissions(self, sec_type, sec_name, diff_spec):
return self.client.update_permissions(sec_type, sec_name, diff_spec)

Expand Down
9 changes: 7 additions & 2 deletions databricks_cli/unity_catalog/perms_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,19 +67,24 @@ def _get_perm_securable_name_and_type(catalog_name, schema_full_name, table_full
@click.option('--external-location', cls=OneOfOption, default=None,
one_of=PERMISSIONS_OBJ_TYPES,
help='Name of the external location of interest')
@click.option('--effective', is_flag=True, default=False,
help='Get effective permissions (including inherited privileges)')
@debug_option
@profile_option
@eat_exceptions
@provide_api_client
def get_permissions_cli(api_client, catalog, schema, table, storage_credential,
external_location):
external_location, effective):
"""
Get permissions on a securable.
"""
sec_type, sec_name = _get_perm_securable_name_and_type(catalog, schema, table,
storage_credential, external_location)

perm_json = UnityCatalogApi(api_client).get_permissions(sec_type, sec_name)
if effective:
perm_json = UnityCatalogApi(api_client).get_effective_permissions(sec_type, sec_name)
else:
perm_json = UnityCatalogApi(api_client).get_permissions(sec_type, sec_name)
click.echo(mc_pretty_format(perm_json))


Expand Down
13 changes: 11 additions & 2 deletions databricks_cli/unity_catalog/uc_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -474,14 +474,23 @@ def list_provider_shares(self, name, headers=None):

# Permissions Operations

def _permissions_url(self, sec_type, sec_name):
return '/unity-catalog/permissions/%s/%s' % (sec_type, sec_name)
def _permissions_url(self, sec_type, sec_name, effective=False):
if effective:
return '/unity-catalog/effective-permissions/%s/%s' % (sec_type, sec_name)
else:
return '/unity-catalog/permissions/%s/%s' % (sec_type, sec_name)

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

def get_effective_permissions(self, sec_type, sec_name, headers=None):
_data = {}
return self.client.perform_query('GET', self._permissions_url(sec_type, sec_name,
effective=True),
data=_data, headers=headers)

def update_permissions(self, sec_type, sec_name, perm_diff_spec, headers=None):
_data = perm_diff_spec
return self.client.perform_query('PATCH', self._permissions_url(sec_type, sec_name),
Expand Down