diff --git a/aws-lambda/src/databricks_cdk/resources/permissions/volume_permissions.py b/aws-lambda/src/databricks_cdk/resources/permissions/volume_permissions.py index cd53426e..0c18510e 100644 --- a/aws-lambda/src/databricks_cdk/resources/permissions/volume_permissions.py +++ b/aws-lambda/src/databricks_cdk/resources/permissions/volume_permissions.py @@ -1,3 +1,4 @@ +import logging from typing import List from databricks.sdk.service.catalog import PermissionsList, PrivilegeAssignment, SecurableType @@ -6,6 +7,8 @@ from databricks_cdk.resources.permissions.changes import get_permission_changes from databricks_cdk.utils import CnfResponse, get_workspace_client +logger = logging.getLogger(__name__) + class VolumePermissionsProperties(BaseModel): workspace_url: str @@ -17,7 +20,7 @@ def create_or_update_volume_permissions( properties: VolumePermissionsProperties, ) -> CnfResponse: """Create volume permissions on volume at databricks""" - + logger.info(f"Creating volume permissions {properties.privilege_assignments} for volume {properties.volume_name}") workspace_client = get_workspace_client(properties.workspace_url) existing_grants: PermissionsList = workspace_client.grants.get( securable_type=SecurableType.VOLUME, full_name=properties.volume_name diff --git a/aws-lambda/src/databricks_cdk/resources/unity_catalog/volumes.py b/aws-lambda/src/databricks_cdk/resources/unity_catalog/volumes.py index a504c7b5..ce1f3d4e 100644 --- a/aws-lambda/src/databricks_cdk/resources/unity_catalog/volumes.py +++ b/aws-lambda/src/databricks_cdk/resources/unity_catalog/volumes.py @@ -1,11 +1,15 @@ +import logging from typing import Optional from databricks.sdk import WorkspaceClient +from databricks.sdk.errors import NotFound from databricks.sdk.service.catalog import VolumeInfo, VolumeType from pydantic import BaseModel from databricks_cdk.utils import CnfResponse, get_workspace_client +logger = logging.getLogger(__name__) + class VolumeCreationError(Exception): pass @@ -99,5 +103,9 @@ def update_volume( def delete_volume(properties: VolumeProperties, physical_resource_id: str) -> CnfResponse: """Delete a volume on databricks""" workspace_client = get_workspace_client(properties.workspace_url) - workspace_client.volumes.delete(full_name_arg=properties.volume.full_name) + try: + workspace_client.volumes.delete(full_name_arg=properties.volume.full_name) + except NotFound: + logger.warning("Volume not found, never existed or already removed") + return CnfResponse(physical_resource_id=physical_resource_id)