Skip to content

Commit

Permalink
Update resource_ibm_is_dedicated_host_group.go
Browse files Browse the repository at this point in the history
  • Loading branch information
uibm committed Feb 6, 2025
1 parent cc88e2a commit f757e7e
Showing 1 changed file with 61 additions and 35 deletions.
96 changes: 61 additions & 35 deletions ibm/service/vpc/resource_ibm_is_dedicated_host_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"log"

"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns"
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/validate"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
Expand Down Expand Up @@ -178,7 +179,9 @@ func ResourceIbmIsDedicatedHostGroupValidator() *validate.ResourceValidator {
func resourceIbmIsDedicatedHostGroupCreate(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
vpcClient, err := meta.(conns.ClientSession).VpcV1API()
if err != nil {
return diag.FromErr(err)
tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "create", "initialize-client")
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
return tfErr.GetDiag()
}

createDedicatedHostGroupOptions := &vpcv1.CreateDedicatedHostGroupOptions{}
Expand Down Expand Up @@ -209,8 +212,9 @@ func resourceIbmIsDedicatedHostGroupCreate(context context.Context, d *schema.Re

dedicatedHostGroup, response, err := vpcClient.CreateDedicatedHostGroupWithContext(context, createDedicatedHostGroupOptions)
if err != nil {
log.Printf("[DEBUG] CreateDedicatedHostGroupWithContext failed %s\n%s", err, response)
return diag.FromErr(err)
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("CreateDedicatedHostGroupWithContext failed: %s\n%s", err, response), "ibm_is_dedicated_host_group", "create")
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
return tfErr.GetDiag()
}

d.SetId(*dedicatedHostGroup.ID)
Expand All @@ -236,74 +240,88 @@ func resourceIbmIsDedicatedHostGroupMapToResourceGroupIdentityByID(resourceGroup
return resourceGroupIdentityByID
}

func resourceIbmIsDedicatedHostGroupRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
func resourceIbmIsDedicatedHostGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
vpcClient, err := meta.(conns.ClientSession).VpcV1API()
if err != nil {
return diag.FromErr(err)
tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "read", "initialize-client")
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
return tfErr.GetDiag()
}

getDedicatedHostGroupOptions := &vpcv1.GetDedicatedHostGroupOptions{}

getDedicatedHostGroupOptions.SetID(d.Id())

dedicatedHostGroup, response, err := vpcClient.GetDedicatedHostGroupWithContext(context, getDedicatedHostGroupOptions)
dedicatedHostGroup, response, err := vpcClient.GetDedicatedHostGroupWithContext(ctx, getDedicatedHostGroupOptions)
if err != nil {
if response != nil && response.StatusCode == 404 {
d.SetId("")
return nil
}
log.Printf("[DEBUG] GetDedicatedHostGroupWithContext failed %s\n%s", err, response)
return diag.FromErr(err)
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetDedicatedHostGroupWithContext failed: %s\n%s", err, response), "ibm_is_dedicated_host_group", "read")
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
return tfErr.GetDiag()
}

if err = d.Set("class", dedicatedHostGroup.Class); err != nil {
return diag.FromErr(fmt.Errorf("[ERROR] Error setting class: %s", err))
err = fmt.Errorf("Error setting class: %s", err)
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "read", "set-class").GetDiag()
}
if err = d.Set("family", dedicatedHostGroup.Family); err != nil {
return diag.FromErr(fmt.Errorf("[ERROR] Error setting family: %s", err))
err = fmt.Errorf("Error setting family: %s", err)
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "read", "set-family").GetDiag()
}
if err = d.Set("name", dedicatedHostGroup.Name); err != nil {
return diag.FromErr(fmt.Errorf("[ERROR] Error setting name: %s", err))
err = fmt.Errorf("Error setting name: %s", err)
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "read", "set-name").GetDiag()
}
if dedicatedHostGroup.ResourceGroup != nil {
resourceGroupID := *dedicatedHostGroup.ResourceGroup.ID
if err = d.Set("resource_group", resourceGroupID); err != nil {
return diag.FromErr(fmt.Errorf("[ERROR] Error setting resource_group: %s", err))
err = fmt.Errorf("Error setting resource_group: %s", err)
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "read", "set-resource_group").GetDiag()
}
}
if dedicatedHostGroup.Zone != nil {
zoneName := *dedicatedHostGroup.Zone.Name
if err = d.Set("zone", zoneName); err != nil {
return diag.FromErr(fmt.Errorf("[ERROR] Error setting zone: %s", err))
err = fmt.Errorf("Error setting zone: %s", err)
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "read", "set-zone").GetDiag()
}
}
if err = d.Set("created_at", dedicatedHostGroup.CreatedAt.String()); err != nil {
return diag.FromErr(fmt.Errorf("[ERROR] Error setting created_at: %s", err))
err = fmt.Errorf("Error setting created_at: %s", err)
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "read", "set-created_at").GetDiag()
}
if err = d.Set("crn", dedicatedHostGroup.CRN); err != nil {
return diag.FromErr(fmt.Errorf("[ERROR] Error setting crn: %s", err))
err = fmt.Errorf("Error setting crn: %s", err)
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "read", "set-crn").GetDiag()
}
dedicatedHosts := []map[string]interface{}{}
for _, dedicatedHostsItem := range dedicatedHostGroup.DedicatedHosts {
dedicatedHostsItemMap := resourceIbmIsDedicatedHostGroupDedicatedHostReferenceToMap(dedicatedHostsItem)
dedicatedHosts = append(dedicatedHosts, dedicatedHostsItemMap)
}
if err = d.Set("dedicated_hosts", dedicatedHosts); err != nil {
return diag.FromErr(fmt.Errorf("[ERROR] Error setting dedicated_hosts: %s", err))
err = fmt.Errorf("Error setting dedicated_hosts: %s", err)
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "read", "set-dedicated_hosts").GetDiag()
}
if err = d.Set("href", dedicatedHostGroup.Href); err != nil {
return diag.FromErr(fmt.Errorf("[ERROR] Error setting href: %s", err))
err = fmt.Errorf("Error setting href: %s", err)
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "read", "set-href").GetDiag()
}
if err = d.Set("resource_type", dedicatedHostGroup.ResourceType); err != nil {
return diag.FromErr(fmt.Errorf("[ERROR] Error setting resource_type: %s", err))
err = fmt.Errorf("Error setting resource_type: %s", err)
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "read", "set-resource_type").GetDiag()
}
supportedInstanceProfiles := []map[string]interface{}{}
for _, supportedInstanceProfilesItem := range dedicatedHostGroup.SupportedInstanceProfiles {
supportedInstanceProfilesItemMap := resourceIbmIsDedicatedHostGroupInstanceProfileReferenceToMap(supportedInstanceProfilesItem)
supportedInstanceProfiles = append(supportedInstanceProfiles, supportedInstanceProfilesItemMap)
}
if err = d.Set("supported_instance_profiles", supportedInstanceProfiles); err != nil {
return diag.FromErr(fmt.Errorf("[ERROR] Error setting supported_instance_profiles: %s", err))
err = fmt.Errorf("Error setting supported_instance_profiles: %s", err)
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "read", "set-supported_instance_profiles").GetDiag()
}

return nil
Expand Down Expand Up @@ -383,10 +401,12 @@ func resourceIbmIsDedicatedHostGroupInstanceProfileReferenceToMap(instanceProfil
return instanceProfileReferenceMap
}

func resourceIbmIsDedicatedHostGroupUpdate(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
func resourceIbmIsDedicatedHostGroupUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
vpcClient, err := meta.(conns.ClientSession).VpcV1API()
if err != nil {
return diag.FromErr(err)
tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "update", "initialize-client")
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
return tfErr.GetDiag()
}

updateDedicatedHostGroupOptions := &vpcv1.UpdateDedicatedHostGroupOptions{}
Expand All @@ -402,52 +422,58 @@ func resourceIbmIsDedicatedHostGroupUpdate(context context.Context, d *schema.Re
}
dedicatedHostGroupPatch, err := dedicatedHostGroupPatchModel.AsPatch()
if err != nil {
log.Printf("[DEBUG] Error calling asPatch for DedicatedHostGroupPatch: %s", err)
return diag.FromErr(err)
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Error calling asPatch for DedicatedHostGroupPatch: %s", err), "ibm_is_dedicated_host_group", "update")
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
return tfErr.GetDiag()
}
updateDedicatedHostGroupOptions.DedicatedHostGroupPatch = dedicatedHostGroupPatch
hasChange = true
}

if hasChange {
_, response, err := vpcClient.UpdateDedicatedHostGroupWithContext(context, updateDedicatedHostGroupOptions)
_, response, err := vpcClient.UpdateDedicatedHostGroupWithContext(ctx, updateDedicatedHostGroupOptions)
if err != nil {
log.Printf("[DEBUG] UpdateDedicatedHostGroupWithContext failed %s\n%s", err, response)
return diag.FromErr(err)
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("UpdateDedicatedHostGroupWithContext failed: %s\n%s", err, response), "ibm_is_dedicated_host_group", "update")
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
return tfErr.GetDiag()
}
}

return resourceIbmIsDedicatedHostGroupRead(context, d, meta)
return resourceIbmIsDedicatedHostGroupRead(ctx, d, meta)
}

func resourceIbmIsDedicatedHostGroupDelete(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
func resourceIbmIsDedicatedHostGroupDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
vpcClient, err := meta.(conns.ClientSession).VpcV1API()
if err != nil {
return diag.FromErr(err)
tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_group", "delete", "initialize-client")
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
return tfErr.GetDiag()
}

getDedicatedHostGroupOptions := &vpcv1.GetDedicatedHostGroupOptions{}

getDedicatedHostGroupOptions.SetID(d.Id())

_, response, err := vpcClient.GetDedicatedHostGroupWithContext(context, getDedicatedHostGroupOptions)
_, response, err := vpcClient.GetDedicatedHostGroupWithContext(ctx, getDedicatedHostGroupOptions)
if err != nil {
if response != nil && response.StatusCode == 404 {
d.SetId("")
return nil
}
log.Printf("[DEBUG] GetDedicatedHostGroupWithContext failed %s\n%s", err, response)
return diag.FromErr(err)
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetDedicatedHostGroupWithContext failed: %s\n%s", err, response), "ibm_is_dedicated_host_group", "delete")
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
return tfErr.GetDiag()
}

deleteDedicatedHostGroupOptions := &vpcv1.DeleteDedicatedHostGroupOptions{}

deleteDedicatedHostGroupOptions.SetID(d.Id())

response, err = vpcClient.DeleteDedicatedHostGroupWithContext(context, deleteDedicatedHostGroupOptions)
response, err = vpcClient.DeleteDedicatedHostGroupWithContext(ctx, deleteDedicatedHostGroupOptions)
if err != nil {
log.Printf("[DEBUG] DeleteDedicatedHostGroupWithContext failed %s\n%s", err, response)
return diag.FromErr(err)
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("DeleteDedicatedHostGroupWithContext failed: %s\n%s", err, response), "ibm_is_dedicated_host_group", "delete")
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
return tfErr.GetDiag()
}

d.SetId("")
Expand Down

0 comments on commit f757e7e

Please sign in to comment.