diff --git a/exoscale/resource_exoscale_sks_nodepool.go b/exoscale/resource_exoscale_sks_nodepool.go index ed437f71..0d6fbd30 100644 --- a/exoscale/resource_exoscale_sks_nodepool.go +++ b/exoscale/resource_exoscale_sks_nodepool.go @@ -10,8 +10,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - egoscale "github.com/exoscale/egoscale/v2" - exoapi "github.com/exoscale/egoscale/v2/api" v3 "github.com/exoscale/egoscale/v3" "github.com/exoscale/terraform-provider-exoscale/pkg/config" "github.com/exoscale/terraform-provider-exoscale/pkg/general" @@ -463,14 +461,17 @@ func resourceSKSNodepoolRead(ctx context.Context, d *schema.ResourceData, meta i zone := d.Get(resSKSNodepoolAttrZone).(string) ctx, cancel := context.WithTimeout(ctx, d.Timeout(schema.TimeoutRead)) - ctx = exoapi.WithEndpoint(ctx, exoapi.NewReqEndpoint(getEnvironment(meta), zone)) defer cancel() - client := getClient(meta) + client, err := config.GetClientV3WithZone(ctx, meta, zone) + if err != nil { + return diag.FromErr(err) + } - sks, err := client.GetSKSCluster(ctx, zone, d.Get(resSKSNodepoolAttrClusterID).(string)) + clusterID := v3.UUID(d.Get(resSKSNodepoolAttrClusterID).(string)) + sks, err := client.GetSKSCluster(ctx, clusterID) if err != nil { - if errors.Is(err, exoapi.ErrNotFound) { + if errors.Is(err, v3.ErrNotFound) { // Parent SKS cluster doesn't exist anymore, so does the SKS Nodepool. d.SetId("") return nil @@ -478,10 +479,10 @@ func resourceSKSNodepoolRead(ctx context.Context, d *schema.ResourceData, meta i return diag.FromErr(err) } - var sksNodepool *egoscale.SKSNodepool + var sksNodepool *v3.SKSNodepool for _, np := range sks.Nodepools { - if *np.ID == d.Id() { - sksNodepool = np + if np.ID == v3.UUID(d.Id()) { + sksNodepool = &np break } } @@ -655,18 +656,21 @@ func resourceSKSNodepoolDelete(ctx context.Context, d *schema.ResourceData, meta zone := d.Get(resSKSNodepoolAttrZone).(string) ctx, cancel := context.WithTimeout(ctx, d.Timeout(schema.TimeoutDelete)) - ctx = exoapi.WithEndpoint(ctx, exoapi.NewReqEndpoint(getEnvironment(meta), zone)) defer cancel() - client := getClient(meta) + client, err := config.GetClientV3WithZone(ctx, meta, zone) + if err != nil { + return diag.FromErr(err) + } - sksCluster, err := client.GetSKSCluster(ctx, zone, d.Get(resSKSNodepoolAttrClusterID).(string)) + clusterID := v3.UUID(d.Get(resSKSNodepoolAttrClusterID).(string)) + _, err = client.GetSKSCluster(ctx, clusterID) if err != nil { return diag.FromErr(err) } - sksNodepoolID := d.Id() - if err = client.DeleteSKSNodepool(ctx, zone, sksCluster, &egoscale.SKSNodepool{ID: &sksNodepoolID}); err != nil { + sksNodepoolID := v3.UUID(d.Id()) + if err := await(ctx, client)(client.DeleteSKSNodepool(ctx, clusterID, sksNodepoolID)); err != nil { return diag.FromErr(err) } @@ -679,60 +683,61 @@ func resourceSKSNodepoolDelete(ctx context.Context, d *schema.ResourceData, meta func resourceSKSNodepoolApply( ctx context.Context, - client *egoscale.Client, + client *v3.Client, d *schema.ResourceData, - sksNodepool *egoscale.SKSNodepool, + sksNodepool *v3.SKSNodepool, ) error { - if sksNodepool.AntiAffinityGroupIDs != nil { - antiAffinityGroupIDs := make([]string, len(*sksNodepool.AntiAffinityGroupIDs)) - copy(antiAffinityGroupIDs, *sksNodepool.AntiAffinityGroupIDs) + if len(sksNodepool.AntiAffinityGroups) > 0 { + antiAffinityGroupIDs := make([]string, 0, len(sksNodepool.AntiAffinityGroups)) + for _, aag := range sksNodepool.AntiAffinityGroups { + antiAffinityGroupIDs = append(antiAffinityGroupIDs, aag.ID.String()) + } if err := d.Set(resSKSNodepoolAttrAntiAffinityGroupIDs, antiAffinityGroupIDs); err != nil { return err } } - if sksNodepool.AddOns != nil { - if err := d.Set(resSKSNodepoolAttrStorageLVM, in(*sksNodepool.AddOns, sksNodepoolAddonStorageLVM)); err != nil { + if len(sksNodepool.Addons) > 0 { + if err := d.Set(resSKSNodepoolAttrStorageLVM, in(sksNodepool.Addons, sksNodepoolAddonStorageLVM)); err != nil { return err } } - if err := d.Set(resSKSNodepoolAttrCreatedAt, sksNodepool.CreatedAt.String()); err != nil { + if err := d.Set(resSKSNodepoolAttrCreatedAt, sksNodepool.CreatedAT.String()); err != nil { return err } - if err := d.Set(resSKSNodepoolAttrDeployTargetID, defaultString(sksNodepool.DeployTargetID, "")); err != nil { + if err := d.Set(resSKSNodepoolAttrDeployTargetID, sksNodepool.DeployTarget.ID); err != nil { return err } - if err := d.Set(resSKSNodepoolAttrDescription, defaultString(sksNodepool.Description, "")); err != nil { + if err := d.Set(resSKSNodepoolAttrDescription, sksNodepool.Description); err != nil { return err } - if err := d.Set(resSKSNodepoolAttrDiskSize, *sksNodepool.DiskSize); err != nil { + if err := d.Set(resSKSNodepoolAttrDiskSize, sksNodepool.DiskSize); err != nil { return err } - if err := d.Set(resSKSNodepoolAttrInstancePoolID, *sksNodepool.InstancePoolID); err != nil { + if err := d.Set(resSKSNodepoolAttrInstancePoolID, sksNodepool.InstancePool.ID); err != nil { return err } - if err := d.Set(resSKSNodepoolAttrInstancePrefix, defaultString(sksNodepool.InstancePrefix, "")); err != nil { + if err := d.Set(resSKSNodepoolAttrInstancePrefix, sksNodepool.InstancePrefix); err != nil { return err } instanceType, err := client.GetInstanceType( ctx, - d.Get(resSKSNodepoolAttrZone).(string), - *sksNodepool.InstanceTypeID, + sksNodepool.InstanceType.ID, ) if err != nil { return fmt.Errorf("error retrieving instance type: %w", err) } if err := d.Set(resSKSNodepoolAttrInstanceType, fmt.Sprintf( "%s.%s", - strings.ToLower(*instanceType.Family), - strings.ToLower(*instanceType.Size), + strings.ToLower(string(instanceType.Family)), + strings.ToLower(string(instanceType.Size)), )); err != nil { return err } @@ -741,14 +746,14 @@ func resourceSKSNodepoolApply( if err := d.Set(resSKSNodepoolAttrKubeletGC, schema.NewSet(kubeletGc.F, []interface{}{ func() map[string]interface{} { i := map[string]interface{}{} - if sksNodepool.KubeletImageGc.MinAge != nil { - i[resSKSNodepoolAttrKubeletGCMinAge] = *sksNodepool.KubeletImageGc.MinAge + if sksNodepool.KubeletImageGC.MinAge != "" { + i[resSKSNodepoolAttrKubeletGCMinAge] = sksNodepool.KubeletImageGC.MinAge } - if sksNodepool.KubeletImageGc.HighThreshold != nil { - i[resSKSNodepoolAttrKubeletGCHighThreshold] = int(*sksNodepool.KubeletImageGc.HighThreshold) + if sksNodepool.KubeletImageGC.HighThreshold != 0 { + i[resSKSNodepoolAttrKubeletGCHighThreshold] = int(sksNodepool.KubeletImageGC.HighThreshold) } - if sksNodepool.KubeletImageGc.LowThreshold != nil { - i[resSKSNodepoolAttrKubeletGCLowThreshold] = int(*sksNodepool.KubeletImageGc.LowThreshold) + if sksNodepool.KubeletImageGC.LowThreshold != 0 { + i[resSKSNodepoolAttrKubeletGCLowThreshold] = int(sksNodepool.KubeletImageGC.LowThreshold) } return i }(), @@ -760,37 +765,41 @@ func resourceSKSNodepoolApply( return err } - if err := d.Set(resSKSNodepoolAttrName, *sksNodepool.Name); err != nil { + if err := d.Set(resSKSNodepoolAttrName, sksNodepool.Name); err != nil { return err } - if sksNodepool.PrivateNetworkIDs != nil { - privateNetworkIDs := make([]string, len(*sksNodepool.PrivateNetworkIDs)) - copy(privateNetworkIDs, *sksNodepool.PrivateNetworkIDs) + if len(sksNodepool.PrivateNetworks) > 0 { + privateNetworkIDs := make([]string, 0, len(sksNodepool.PrivateNetworks)) + for _, pn := range sksNodepool.PrivateNetworks { + privateNetworkIDs = append(privateNetworkIDs, pn.ID.String()) + } if err := d.Set(resSKSNodepoolAttrPrivateNetworkIDs, privateNetworkIDs); err != nil { return err } } - if sksNodepool.SecurityGroupIDs != nil { - securityGroupIDs := make([]string, len(*sksNodepool.SecurityGroupIDs)) - copy(securityGroupIDs, *sksNodepool.SecurityGroupIDs) + if len(sksNodepool.SecurityGroups) > 0 { + securityGroupIDs := make([]string, 0, len(sksNodepool.SecurityGroups)) + for _, sg := range sksNodepool.SecurityGroups { + securityGroupIDs = append(securityGroupIDs, sg.ID.String()) + } if err := d.Set(resSKSNodepoolAttrSecurityGroupIDs, securityGroupIDs); err != nil { return err } } - if err := d.Set(resSKSNodepoolAttrSize, *sksNodepool.Size); err != nil { + if err := d.Set(resSKSNodepoolAttrSize, sksNodepool.Size); err != nil { return err } - if err := d.Set(resSKSNodepoolAttrState, *sksNodepool.State); err != nil { + if err := d.Set(resSKSNodepoolAttrState, sksNodepool.State); err != nil { return err } if sksNodepool.Taints != nil { taints := make(map[string]string) - for k, v := range *sksNodepool.Taints { + for k, v := range sksNodepool.Taints { taints[k] = fmt.Sprintf("%s:%s", v.Value, v.Effect) } if err := d.Set(resSKSNodepoolAttrTaints, taints); err != nil { @@ -798,11 +807,11 @@ func resourceSKSNodepoolApply( } } - if err := d.Set(resSKSNodepoolAttrTemplateID, *sksNodepool.TemplateID); err != nil { + if err := d.Set(resSKSNodepoolAttrTemplateID, sksNodepool.Template.ID); err != nil { return err } - if err := d.Set(resSKSNodepoolAttrVersion, *sksNodepool.Version); err != nil { + if err := d.Set(resSKSNodepoolAttrVersion, sksNodepool.Version); err != nil { return err }