@@ -110,7 +110,7 @@ func resourceHibernationSchedule() *schema.Resource {
110110 },
111111
112112 Schema : map [string ]* schema.Schema {
113- FieldServiceAccountOrganizationID : {
113+ FieldHibernationScheduleOrganizationID : {
114114 Type : schema .TypeString ,
115115 Optional : true ,
116116 Description : "ID of the organization. If not provided, then will attempt to infer it using CAST AI API client." ,
@@ -378,19 +378,24 @@ func resourceHibernationSchedule() *schema.Resource {
378378}
379379
380380func hibernationScheduleStateImporter (ctx context.Context , d * schema.ResourceData , meta any ) ([]* schema.ResourceData , error ) {
381- organizationID , err := getHibernationScheduleOrganizationID (ctx , d , meta )
382- if err != nil {
383- return nil , err
381+ organizationID , id := parseImportID (d )
382+ if organizationID == "" {
383+ stateOrganizationID , err := getHibernationScheduleOrganizationID (ctx , d , meta )
384+ if err != nil {
385+ return nil , err
386+ }
387+
388+ organizationID = stateOrganizationID
384389 }
385390
386391 // if importing by UUID, nothing to do; if importing by name, fetch schedule ID and set that as resource ID
387- if _ , err := uuid .Parse (d . Id () ); err != nil {
392+ if _ , err := uuid .Parse (id ); err != nil {
388393 tflog .Info (ctx , "provided schedule ID is not a UUID, will import by name" )
389- schedule , err := getHibernationScheduleByName (ctx , meta , organizationID , d . Id () )
394+ schedule , err := getHibernationScheduleByName (ctx , meta , organizationID , id )
390395 if err != nil {
391396 return nil , err
392397 } else if schedule == nil {
393- return nil , fmt .Errorf ("could not find schedule by name: %s" , d . Id () )
398+ return nil , fmt .Errorf ("could not find schedule by name: %s" , id )
394399 }
395400
396401 d .SetId (lo .FromPtr (schedule .Id ))
@@ -422,7 +427,7 @@ func resourceHibernationScheduleUpdate(ctx context.Context, d *schema.ResourceDa
422427
423428 resp , err := client .HibernationSchedulesAPIUpdateHibernationScheduleWithResponse (ctx , organizationID , d .Id (), req )
424429 if checkErr := sdk .CheckOKResponse (resp , err ); checkErr != nil {
425- return diag .FromErr (checkErr )
430+ return diag .FromErr (fmt . Errorf ( "could not update hibernation schedule in organization %s: %v" , organizationID , checkErr ) )
426431 }
427432
428433 return readHibernationScheduleIntoState (ctx , d , meta , organizationID , d .Id ())
@@ -448,17 +453,17 @@ func resourceHibernationScheduleCreate(ctx context.Context, d *schema.ResourceDa
448453
449454 organizationID , err := getHibernationScheduleOrganizationID (ctx , d , meta )
450455 if err != nil {
451- return diag .FromErr (err )
456+ return diag .FromErr (fmt . Errorf ( "could not determine organization id: %v" , err ) )
452457 }
453458
454459 schedule , err := stateToHibernationSchedule (d )
455460 if err != nil {
456- return diag .FromErr (err )
461+ return diag .FromErr (fmt . Errorf ( "could not map state to hibernation schedule: %v" , err ) )
457462 }
458463
459464 resp , err := client .HibernationSchedulesAPICreateHibernationScheduleWithResponse (ctx , organizationID , * schedule )
460465 if checkErr := sdk .CheckOKResponse (resp , err ); checkErr != nil {
461- return diag .FromErr (checkErr )
466+ return diag .FromErr (fmt . Errorf ( "could not create hibernation schedule in organization %s: %v" , organizationID , checkErr ) )
462467 }
463468
464469 d .SetId (* resp .JSON200 .Id )
@@ -478,7 +483,7 @@ func resourceHibernationScheduleRead(ctx context.Context, d *schema.ResourceData
478483func readHibernationScheduleIntoState (ctx context.Context , d * schema.ResourceData , meta any , organizationID , id string ) diag.Diagnostics {
479484 schedule , err := getHibernationScheduleById (ctx , meta , organizationID , id )
480485 if err != nil {
481- return diag .FromErr (err )
486+ return diag .FromErr (fmt . Errorf ( "could not retrieve hibernation schedule by id in organization %s: %v" , organizationID , err ) )
482487 }
483488 if ! d .IsNewResource () && schedule == nil {
484489 tflog .Warn (ctx , "Hibernation schedule not found, removing from state" , map [string ]any {"id" : d .Id ()})
@@ -840,7 +845,7 @@ func sectionToNodeConfig(section map[string]interface{}) cluster_autoscaler.Node
840845 ConfigName : lo .Ternary (configName != "" , & configName , nil ),
841846 SubnetId : lo .Ternary (subnetId != "" , & subnetId , nil ),
842847 Zone : lo .Ternary (zone != "" , & zone , nil ),
843- KubernetesLabels : lo .Ternary (kubernetesLabels != nil && len (kubernetesLabels ) != 0 , & kubernetesLabels , nil ),
848+ KubernetesLabels : lo .Ternary (len (kubernetesLabels ) != 0 , & kubernetesLabels , nil ),
844849 GpuConfig : nodeConfigSectionToGPUConfig (section ),
845850 NodeAffinity : nodeConfigSectionToNodeAffinity (section ),
846851 KubernetesTaints : nodeConfigSectionToKubernetesTaints (section ),
@@ -951,3 +956,15 @@ func getHibernationScheduleByName(ctx context.Context, meta interface{}, organiz
951956
952957 return nil , nil
953958}
959+
960+ func parseImportID (d * schema.ResourceData ) (string , string ) {
961+ id := d .Id ()
962+
963+ if strings .Contains (id , "/" ) {
964+ if parts := strings .Split (id , "/" ); len (parts ) > 1 {
965+ return parts [0 ], parts [1 ]
966+ }
967+ }
968+
969+ return "" , id
970+ }
0 commit comments