Skip to content

Commit

Permalink
convert resource to v3 entirely
Browse files Browse the repository at this point in the history
  • Loading branch information
sauterp committed Jul 30, 2024
1 parent e5c6c34 commit cfaa418
Showing 1 changed file with 58 additions and 49 deletions.
107 changes: 58 additions & 49 deletions exoscale/resource_exoscale_sks_nodepool.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -463,25 +461,28 @@ 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
}
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
}
}
Expand Down Expand Up @@ -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)
}

Expand All @@ -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
}
Expand All @@ -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
}(),
Expand All @@ -760,49 +765,53 @@ 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 {
return err
}
}

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
}

Expand Down

0 comments on commit cfaa418

Please sign in to comment.