@@ -2390,7 +2390,11 @@ var resourcesMap map[string]importable = map[string]importable{
23902390 common .DataToStructPointer (r .Data , s , & cat )
23912391
23922392 // Emit: UC Connection, List schemas, Catalog grants, ...
2393- ic .emitUCGrantsWithOwner ("catalog/" + cat .Name , r )
2393+ owner , catalogGrantsResource := ic .emitUCGrantsWithOwner ("catalog/" + cat .Name , r )
2394+ dependsOn := []* resource {}
2395+ if owner != "" && owner != ic .meUserName {
2396+ dependsOn = append (dependsOn , catalogGrantsResource )
2397+ }
23942398 // TODO: emit owner? Should we do this? Because it's a account-level identity... Create a separate function for that...
23952399 if cat .ConnectionName != "" {
23962400 ic .Emit (& resource {
@@ -2409,8 +2413,9 @@ var resourcesMap map[string]importable = map[string]importable{
24092413 continue
24102414 }
24112415 ic .EmitIfUpdatedAfterMillis (& resource {
2412- Resource : "databricks_schema" ,
2413- ID : schema .FullName ,
2416+ Resource : "databricks_schema" ,
2417+ ID : schema .FullName ,
2418+ DependsOn : dependsOn ,
24142419 }, schema .UpdatedAt , fmt .Sprintf ("schema '%s'" , schema .FullName ))
24152420 }
24162421 }
@@ -2470,14 +2475,20 @@ var resourcesMap map[string]importable = map[string]importable{
24702475 schemaFullName := r .ID
24712476 catalogName := r .Data .Get ("catalog_name" ).(string )
24722477 schemaName := r .Data .Get ("name" ).(string )
2473- ic .emitUCGrantsWithOwner ("schema/" + schemaFullName , r )
2478+ owner , schemaGrantResource := ic .emitUCGrantsWithOwner ("schema/" + schemaFullName , r )
2479+ dependsOn := []* resource {}
2480+ if owner != "" && owner != ic .meUserName {
2481+ dependsOn = append (dependsOn , schemaGrantResource )
2482+ }
2483+ // TODO: think if we need to emit upstream dependencies in case if we're going bottom-up
24742484 ic .Emit (& resource {
24752485 Resource : "databricks_catalog" ,
24762486 ID : catalogName ,
24772487 })
2488+ // r.AddDependsOn(&resource{Resource: "databricks_grants", ID: "catalog/" + catalogName})
2489+
2490+ // TODO: somehow add depends on catalog's grant...
24782491 // TODO: emit owner? See comment in catalog resource
2479- // TODO: list tables
2480- // list registered models
24812492 models , err := ic .workspaceClient .RegisteredModels .ListAll (ic .Context ,
24822493 catalog.ListRegisteredModelsRequest {
24832494 CatalogName : catalogName ,
@@ -2488,8 +2499,9 @@ var resourcesMap map[string]importable = map[string]importable{
24882499 }
24892500 for _ , model := range models {
24902501 ic .EmitIfUpdatedAfterMillis (& resource {
2491- Resource : "databricks_registered_model" ,
2492- ID : model .FullName ,
2502+ Resource : "databricks_registered_model" ,
2503+ ID : model .FullName ,
2504+ DependsOn : dependsOn ,
24932505 }, model .UpdatedAt , fmt .Sprintf ("registered model '%s'" , model .FullName ))
24942506 }
24952507 // list volumes
@@ -2503,11 +2515,12 @@ var resourcesMap map[string]importable = map[string]importable{
25032515 }
25042516 for _ , volume := range volumes {
25052517 ic .EmitIfUpdatedAfterMillis (& resource {
2506- Resource : "databricks_volume" ,
2507- ID : volume .FullName ,
2518+ Resource : "databricks_volume" ,
2519+ ID : volume .FullName ,
2520+ DependsOn : dependsOn ,
25082521 }, volume .UpdatedAt , fmt .Sprintf ("volume '%s'" , volume .FullName ))
25092522 }
2510-
2523+ // list tables
25112524 tables , err := ic .workspaceClient .Tables .ListAll (ic .Context , catalog.ListTablesRequest {
25122525 CatalogName : catalogName ,
25132526 SchemaName : schemaName ,
@@ -2519,13 +2532,17 @@ var resourcesMap map[string]importable = map[string]importable{
25192532 switch table .TableType {
25202533 case "MANAGED" , "EXTERNAL" , "VIEW" :
25212534 ic .EmitIfUpdatedAfterMillis (& resource {
2522- Resource : "databricks_sql_table" ,
2523- ID : table .FullName ,
2535+ Resource : "databricks_sql_table" ,
2536+ ID : table .FullName ,
2537+ DependsOn : dependsOn ,
25242538 }, table .UpdatedAt , fmt .Sprintf ("table '%s'" , table .FullName ))
25252539 default :
25262540 log .Printf ("[DEBUG] Skipping table %s of type %s" , table .FullName , table .TableType )
25272541 }
25282542 }
2543+ // TODO: list VectorSearch indexes
2544+
2545+ // TODO: list online tables
25292546
25302547 return nil
25312548 },
@@ -2543,15 +2560,12 @@ var resourcesMap map[string]importable = map[string]importable{
25432560 volumeFullName := r .ID
25442561 ic .emitUCGrantsWithOwner ("volume/" + volumeFullName , r )
25452562
2546- catalogName := r .Data .Get ("catalog_name" ).(string )
2563+ schemaFullName := r .Data .Get ("catalog_name" ).( string ) + "." + r . Data . Get ( "schema_name " ).(string )
25472564 ic .Emit (& resource {
25482565 Resource : "databricks_schema" ,
2549- ID : catalogName + "." + r .Data .Get ("schema_name" ).(string ),
2550- })
2551- ic .Emit (& resource {
2552- Resource : "databricks_catalog" ,
2553- ID : catalogName ,
2566+ ID : schemaFullName ,
25542567 })
2568+ // r.AddDependsOn(&resource{Resource: "databricks_grants", ID: "schema/" + schemaFullName})
25552569 // TODO: emit owner? See comment in catalog resource
25562570 return nil
25572571 },
@@ -2576,15 +2590,12 @@ var resourcesMap map[string]importable = map[string]importable{
25762590 Import : func (ic * importContext , r * resource ) error {
25772591 tableFullName := r .ID
25782592 ic .emitUCGrantsWithOwner ("table/" + tableFullName , r )
2579- catalogName := r .Data .Get ("catalog_name" ).(string )
2593+ schemaFullName := r .Data .Get ("catalog_name" ).( string ) + "." + r . Data . Get ( "schema_name " ).(string )
25802594 ic .Emit (& resource {
25812595 Resource : "databricks_schema" ,
2582- ID : catalogName + "." + r .Data .Get ("schema_name" ).(string ),
2583- })
2584- ic .Emit (& resource {
2585- Resource : "databricks_catalog" ,
2586- ID : catalogName ,
2596+ ID : schemaFullName ,
25872597 })
2598+ // r.AddDependsOn(&resource{Resource: "databricks_grants", ID: "schema/" + schemaFullName})
25882599 // TODO: emit owner? See comment in catalog resource
25892600 return nil
25902601 },
@@ -2702,10 +2713,12 @@ var resourcesMap map[string]importable = map[string]importable{
27022713 Service : "uc-external-locations" ,
27032714 Import : func (ic * importContext , r * resource ) error {
27042715 ic .emitUCGrantsWithOwner ("external_location/" + r .ID , r )
2716+ credentialName := r .Data .Get ("credential_name" ).(string )
27052717 ic .Emit (& resource {
27062718 Resource : "databricks_storage_credential" ,
2707- ID : r . Data . Get ( "credential_name" ).( string ) ,
2719+ ID : credentialName ,
27082720 })
2721+ // r.AddDependsOn(&resource{Resource: "databricks_grants", ID: "storage_credential/" + credentialName})
27092722 return nil
27102723 },
27112724 List : func (ic * importContext ) error {
@@ -2862,15 +2875,12 @@ var resourcesMap map[string]importable = map[string]importable{
28622875 Import : func (ic * importContext , r * resource ) error {
28632876 modelFullName := r .ID
28642877 ic .emitUCGrantsWithOwner ("model/" + modelFullName , r )
2865- catalogName := r .Data .Get ("catalog_name" ).(string )
2878+ schemaFullName := r .Data .Get ("catalog_name" ).( string ) + "." + r . Data . Get ( "schema_name " ).(string )
28662879 ic .Emit (& resource {
28672880 Resource : "databricks_schema" ,
2868- ID : catalogName + "." + r .Data .Get ("catalog_name" ).(string ),
2869- })
2870- ic .Emit (& resource {
2871- Resource : "databricks_catalog" ,
2872- ID : catalogName ,
2881+ ID : schemaFullName ,
28732882 })
2883+ // r.AddDependsOn(&resource{Resource: "databricks_grants", ID: "schema/" + schemaFullName})
28742884 // TODO: emit owner? See comment in catalog resource
28752885 return nil
28762886 },
@@ -2985,6 +2995,7 @@ var resourcesMap map[string]importable = map[string]importable{
29852995 Resource : "databricks_volume" ,
29862996 ID : volumeId ,
29872997 })
2998+ // r.AddDependsOn(&resource{Resource: "databricks_grants", ID: "volume/" + volumeId})
29882999 }
29893000
29903001 // download & store file
0 commit comments