66 "encoding/json"
77 "fmt"
88 "log"
9- "os"
109 "path"
1110 "regexp"
1211 "strings"
@@ -44,22 +43,13 @@ var resourcesMap map[string]importable = map[string]importable{
4443 },
4544 Body : func (ic * importContext , body * hclwrite.Body , r * resource ) error {
4645 dbfsAPI := storage .NewDbfsAPI (ic .Context , ic .Client )
47- fileBytes , err := dbfsAPI .Read (r .ID )
46+ content , err := dbfsAPI .Read (r .ID )
4847 if err != nil {
4948 return err
5049 }
51- err = os .MkdirAll (fmt .Sprintf ("%s/files" , ic .Directory ), 0755 )
52- if err != nil && ! os .IsExist (err ) {
53- return err
54- }
5550 name := ic .Importables ["databricks_dbfs_file" ].Name (r .Data )
56- fileName := ic .prefix + name
57- local , err := os .Create (fmt .Sprintf ("%s/files/%s" , ic .Directory , fileName ))
58- if err != nil {
59- return err
60- }
61- defer local .Close ()
62- _ , err = local .Write (fileBytes )
51+ fileName , err := ic .createFile (name , content )
52+ log .Printf ("Creating %s for %s" , fileName , r )
6353 if err != nil {
6454 return err
6555 }
@@ -79,14 +69,10 @@ var resourcesMap map[string]importable = map[string]importable{
7969 Service : "compute" ,
8070 Name : func (d * schema.ResourceData ) string {
8171 raw , ok := d .GetOk ("instance_pool_name" )
82- if ! ok {
72+ if ! ok || raw .( string ) == "" {
8373 return strings .Split (d .Id (), "-" )[2 ]
8474 }
85- name := raw .(string )
86- if name == "" {
87- return strings .Split (d .Id (), "-" )[2 ]
88- }
89- return name
75+ return raw .(string )
9076 },
9177 Import : func (ic * importContext , r * resource ) error {
9278 if ic .meAdmin {
@@ -147,6 +133,7 @@ var resourcesMap map[string]importable = map[string]importable{
147133 continue
148134 }
149135 if ! ic .MatchesName (c .ClusterName ) {
136+ log .Printf ("[INFO] Skipping %s because it doesn't match %s" , c .ClusterName , ic .match )
150137 continue
151138 }
152139 if c .LastActivityTime < time .Now ().Unix ()- lastActiveMs {
@@ -164,12 +151,8 @@ var resourcesMap map[string]importable = map[string]importable{
164151 Import : func (ic * importContext , r * resource ) error {
165152 var c clusters.Cluster
166153 s := ic .Resources ["databricks_cluster" ].Schema
167- if err := common .DataToStructPointer (r .Data , s , & c ); err != nil {
168- return err
169- }
170- if err := ic .importCluster (& c ); err != nil {
171- return err
172- }
154+ common .DataToStructPointer (r .Data , s , & c )
155+ ic .importCluster (& c )
173156 if ic .meAdmin {
174157 ic .Emit (& resource {
175158 Resource : "databricks_permissions" ,
@@ -203,12 +186,8 @@ var resourcesMap map[string]importable = map[string]importable{
203186 Import : func (ic * importContext , r * resource ) error {
204187 var job jobs.JobSettings
205188 s := ic .Resources ["databricks_job" ].Schema
206- if err := common .DataToStructPointer (r .Data , s , & job ); err != nil {
207- return err
208- }
209- if err := ic .importCluster (job .NewCluster ); err != nil {
210- return err
211- }
189+ common .DataToStructPointer (r .Data , s , & job )
190+ ic .importCluster (job .NewCluster )
212191 ic .Emit (& resource {
213192 Resource : "databricks_cluster" ,
214193 ID : job .ExistingClusterID ,
@@ -253,43 +232,8 @@ var resourcesMap map[string]importable = map[string]importable{
253232 return ic .importLibraries (r .Data , s )
254233 },
255234 List : func (ic * importContext ) error {
256- a := jobs .NewJobsAPI (ic .Context , ic .Client )
257- nowSeconds := time .Now ().Unix ()
258- starterAfter := (nowSeconds - (ic .lastActiveDays * 24 * 60 * 60 )) * 1000
259- if l , err := a .List (); err == nil {
260- i := 0
261- for _ , job := range l .Jobs {
262- if ! ic .MatchesName (job .Settings .Name ) {
263- continue
264- }
265- if ic .lastActiveDays != 3650 {
266- rl , err := a .RunsList (jobs.JobRunsListRequest {
267- JobID : job .JobID ,
268- CompletedOnly : true ,
269- Limit : 1 ,
270- })
271- if err != nil {
272- log .Printf ("[WARN] Failed to get runs: %s" , err )
273- continue
274- }
275- if len (rl .Runs ) == 0 {
276- log .Printf ("[INFO] Job %#v (%d) did never run. Skipping" , job .Settings .Name , job .JobID )
277- continue
278- }
279- if rl .Runs [0 ].StartTime < starterAfter {
280- log .Printf ("[INFO] Job %#v (%d) didn't run for %d days. Skipping" ,
281- job .Settings .Name , job .JobID ,
282- (nowSeconds * 1000 - rl .Runs [0 ].StartTime )/ 24 * 60 * 60 / 1000 )
283- continue
284- }
285- }
286- ic .Emit (& resource {
287- Resource : "databricks_job" ,
288- ID : job .ID (),
289- })
290- i ++
291- log .Printf ("[INFO] Imported %d of total %d jobs" , i , len (l .Jobs ))
292- }
235+ if l , err := jobs .NewJobsAPI (ic .Context , ic .Client ).List (); err == nil {
236+ ic .importJobs (l )
293237 }
294238 return nil
295239 },
@@ -345,6 +289,7 @@ var resourcesMap map[string]importable = map[string]importable{
345289 }
346290 for _ , g := range ic .allGroups {
347291 if ! ic .MatchesName (g .DisplayName ) {
292+ log .Printf ("[INFO] Group %s doesn't match %s filter" , g .DisplayName , ic .match )
348293 continue
349294 }
350295 ic .Emit (& resource {
@@ -477,12 +422,14 @@ var resourcesMap map[string]importable = map[string]importable{
477422 return nil
478423 },
479424 Import : func (ic * importContext , r * resource ) error {
480- u , err := ic .findUserByName (r .Data .Get ("user_name" ).(string ))
425+ username := r .Data .Get ("user_name" ).(string )
426+ u , err := ic .findUserByName (username )
481427 if err != nil {
482428 return err
483429 }
484430 for _ , g := range u .Groups {
485431 if g .Type != "direct" {
432+ log .Printf ("Skipping non-direct group %s/%s for user %s" , g .Value , g .Display , username )
486433 continue
487434 }
488435 ic .Emit (& resource {
@@ -515,19 +462,13 @@ var resourcesMap map[string]importable = map[string]importable{
515462 Ignore : func (ic * importContext , r * resource ) bool {
516463 var permissions permissions.PermissionsEntity
517464 s := ic .Resources ["databricks_permissions" ].Schema
518- err := common .DataToStructPointer (r .Data , s , & permissions )
519- if err != nil {
520- return false
521- }
465+ common .DataToStructPointer (r .Data , s , & permissions )
522466 return (len (permissions .AccessControlList ) == 0 )
523467 },
524468 Import : func (ic * importContext , r * resource ) error {
525469 var permissions permissions.PermissionsEntity
526470 s := ic .Resources ["databricks_permissions" ].Schema
527- err := common .DataToStructPointer (r .Data , s , & permissions )
528- if err != nil {
529- return err
530- }
471+ common .DataToStructPointer (r .Data , s , & permissions )
531472 for _ , ac := range permissions .AccessControlList {
532473 ic .Emit (& resource {
533474 Resource : "databricks_user" ,
@@ -553,6 +494,7 @@ var resourcesMap map[string]importable = map[string]importable{
553494 if scopes , err := ssAPI .List (); err == nil {
554495 for i , scope := range scopes {
555496 if ! ic .MatchesName (scope .Name ) {
497+ log .Printf ("[INFO] Secret scope %s doesn't match %s filter" , scope .Name , ic .match )
556498 continue
557499 }
558500 ic .Emit (& resource {
@@ -828,25 +770,16 @@ var resourcesMap map[string]importable = map[string]importable{
828770 if err != nil {
829771 return err
830772 }
831- err = os .Mkdir (fmt .Sprintf ("%s/files" , ic .Directory ), 0755 )
832- if err != nil && ! os .IsExist (err ) {
833- return err
834- }
835- fileName := path .Base (r .Name )
836- local , err := os .Create (fmt .Sprintf ("%s/files/gis-%s" , ic .Directory , fileName ))
773+ content , err := base64 .StdEncoding .DecodeString (gis .ContentBase64 )
837774 if err != nil {
838775 return err
839776 }
840- defer local . Close ( )
841- fileBytes , err := base64 . StdEncoding . DecodeString ( gis . ContentBase64 )
777+ fileName , err := ic . createFile ( path . Base ( r . Name ), content )
778+ log . Printf ( "Creating %s for %s" , fileName , r )
842779 if err != nil {
843780 return err
844781 }
845- _ , err = local .Write (fileBytes )
846- if err != nil {
847- return err
848- }
849- relativeFile := fmt .Sprintf ("${path.module}/files/gis-%s" , fileName )
782+ relativeFile := fmt .Sprintf ("${path.module}/files/%s" , fileName )
850783 b := body .AppendNewBlock ("resource" , []string {r .Resource , r .Name }).Body ()
851784 b .SetAttributeValue ("name" , cty .StringVal (gis .Name ))
852785 b .SetAttributeValue ("enabled" , cty .BoolVal (gis .Enabled ))
0 commit comments