From d0df58a77b4675fe9110df8eabbb4fbbb0ce7762 Mon Sep 17 00:00:00 2001 From: Axel Ismirlian Date: Fri, 21 Jun 2024 11:49:58 -0500 Subject: [PATCH 01/10] Add dhcp-vlan to supported network types for stratos --- ibm/service/power/resource_ibm_pi_network.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ibm/service/power/resource_ibm_pi_network.go b/ibm/service/power/resource_ibm_pi_network.go index 51006a68a32..2e303d5d27d 100644 --- a/ibm/service/power/resource_ibm_pi_network.go +++ b/ibm/service/power/resource_ibm_pi_network.go @@ -47,7 +47,7 @@ func ResourceIBMPINetwork() *schema.Resource { helpers.PINetworkType: { Type: schema.TypeString, Required: true, - ValidateFunc: validate.ValidateAllowedStringValues([]string{"vlan", "pub-vlan"}), + ValidateFunc: validate.ValidateAllowedStringValues([]string{"vlan", "pub-vlan", "dhcp-vlan"}), Description: "PI network type", }, helpers.PINetworkName: { @@ -169,7 +169,7 @@ func resourceIBMPINetworkCreate(ctx context.Context, d *schema.ResourceData, met body.AccessConfig = models.AccessConfig(v.(string)) } - if networktype == "vlan" { + if networktype == "vlan" || networktype == "dhcp-vlan" { var networkcidr string var ipBodyRanges []*models.IPAddressRange if v, ok := d.GetOk(helpers.PINetworkCidr); ok { From 4ec30dcc028d513b240c6143bc0ad42abc8f051d Mon Sep 17 00:00:00 2001 From: Axel Ismirlian Date: Fri, 21 Jun 2024 11:50:18 -0500 Subject: [PATCH 02/10] Add dhcp test for stratos --- .../power/resource_ibm_pi_network_test.go | 68 +++++++++++++++++-- 1 file changed, 62 insertions(+), 6 deletions(-) diff --git a/ibm/service/power/resource_ibm_pi_network_test.go b/ibm/service/power/resource_ibm_pi_network_test.go index 249ce65615e..cc55a7af249 100644 --- a/ibm/service/power/resource_ibm_pi_network_test.go +++ b/ibm/service/power/resource_ibm_pi_network_test.go @@ -125,8 +125,39 @@ func TestAccIBMPINetworkGatewaybasicSatellite(t *testing.T) { }) } -func testAccCheckIBMPINetworkDestroy(s *terraform.State) error { +func TestAccIBMPINetworkDHCPbasic(t *testing.T) { + name := fmt.Sprintf("tf-pi-network-%d", acctest.RandIntRange(10, 100)) + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMPINetworkDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMPINetworDHCPConfig(name), + Check: resource.ComposeTestCheckFunc( + testAccCheckIBMPINetworkExists("ibm_pi_network.power_networks"), + resource.TestCheckResourceAttr( + "ibm_pi_network.power_networks", "pi_network_name", name), + resource.TestCheckResourceAttrSet("ibm_pi_network.power_networks", "pi_gateway"), + resource.TestCheckResourceAttrSet("ibm_pi_network.power_networks", "id"), + resource.TestCheckResourceAttrSet("ibm_pi_network.power_networks", "pi_ipaddress_range.#"), + ), + }, + { + Config: testAccCheckIBMPINetworkConfigGatewayDHCPUpdateDNS(name), + Check: resource.ComposeTestCheckFunc( + testAccCheckIBMPINetworkExists("ibm_pi_network.power_networks"), + resource.TestCheckResourceAttr( + "ibm_pi_network.power_networks", "pi_network_name", name), + resource.TestCheckResourceAttr( + "ibm_pi_network.power_networks", "pi_dns.#", "1"), + ), + }, + }, + }) +} +func testAccCheckIBMPINetworkDestroy(s *terraform.State) error { sess, err := acc.TestAccProvider.Meta().(conns.ClientSession).IBMPISession() if err != nil { return err @@ -148,6 +179,7 @@ func testAccCheckIBMPINetworkDestroy(s *terraform.State) error { return nil } + func testAccCheckIBMPINetworkExists(n string) resource.TestCheckFunc { return func(s *terraform.State) error { @@ -211,6 +243,19 @@ func testAccCheckIBMPINetworkGatewayConfig(name string) string { `, acc.Pi_cloud_instance_id, name) } +func testAccCheckIBMPINetworkGatewayConfigSatellite(name string) string { + return fmt.Sprintf(` + resource "ibm_pi_network" "power_networks" { + pi_cloud_instance_id = "%s" + pi_network_name = "%s" + pi_network_type = "vlan" + pi_cidr = "192.168.17.0/24" + pi_network_mtu = 6500 + pi_network_access_config = "outbound-only" + } + `, acc.Pi_cloud_instance_id, name) +} + func testAccCheckIBMPINetworkConfigGatewayUpdateDNS(name string) string { return fmt.Sprintf(` resource "ibm_pi_network" "power_networks" { @@ -228,15 +273,26 @@ func testAccCheckIBMPINetworkConfigGatewayUpdateDNS(name string) string { `, acc.Pi_cloud_instance_id, name) } -func testAccCheckIBMPINetworkGatewayConfigSatellite(name string) string { +func testAccCheckIBMPINetworDHCPConfig(name string) string { return fmt.Sprintf(` resource "ibm_pi_network" "power_networks" { pi_cloud_instance_id = "%s" pi_network_name = "%s" - pi_network_type = "vlan" - pi_cidr = "192.168.17.0/24" - pi_network_mtu = 6500 - pi_network_access_config = "outbound-only" + pi_network_type = "dhcp-vlan" + pi_cidr = "10.1.2.0/26" + pi_dns = ["10.1.0.68"] + } + `, acc.Pi_cloud_instance_id, name) +} + +func testAccCheckIBMPINetworkConfigGatewayDHCPUpdateDNS(name string) string { + return fmt.Sprintf(` + resource "ibm_pi_network" "power_networks" { + pi_cloud_instance_id = "%s" + pi_network_name = "%s" + pi_network_type = "dhcp-vlan" + pi_cidr = "10.1.2.0/26" + pi_dns = ["10.1.0.69"] } `, acc.Pi_cloud_instance_id, name) } From 53930bcc673e5f9966802c67d163c9f28e817325 Mon Sep 17 00:00:00 2001 From: Axel Ismirlian Date: Fri, 21 Jun 2024 11:50:34 -0500 Subject: [PATCH 03/10] Update markdown --- website/docs/r/pi_network.html.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/docs/r/pi_network.html.markdown b/website/docs/r/pi_network.html.markdown index a48ce11c103..b74018f7c46 100644 --- a/website/docs/r/pi_network.html.markdown +++ b/website/docs/r/pi_network.html.markdown @@ -30,7 +30,7 @@ resource "ibm_pi_network" "power_networks" { } ``` -**Note** +### Notes - Please find [supported Regions](https://cloud.ibm.com/apidocs/power-cloud#endpoint) for endpoints. - If a Power cloud instance is provisioned at `lon04`, The provider level attributes should be as follows: @@ -61,7 +61,7 @@ Review the argument references that you can specify for your resource. - `pi_cloud_instance_id` - (Required, String) The GUID of the service instance associated with an account. - `pi_network_name` - (Required, String) The name of the network. -- `pi_network_type` - (Required, String) The type of network that you want to create, such as `pub-vlan` or `vlan`. +- `pi_network_type` - (Required, String) The type of network that you want to create. Valid values are `pub-vlan`, `vlan` and `dhcp-vlan`. - `pi_dns` - (Optional, Set of String) The DNS Servers for the network. If not specified, default is 127.0.0.1 for 'vlan' (private network) and 9.9.9.9 for 'pub-vlan' (public network). A maximum of one DNS server can be specified for private networks in Power Edge Router workspaces. - `pi_cidr` - (Optional, String) The network CIDR. Required for `vlan` network type. - `pi_gateway` - (Optional, String) The gateway ip address. @@ -85,8 +85,8 @@ In addition to all argument reference list, you can access the following attribu The `ibm_pi_network` resource can be imported by using `power_instance_id` and `network_id`. -**Example** +## Example -``` -$ terraform import ibm_pi_network.example d7bec597-4726-451f-8a63-e62e6f19c32c/cea6651a-bc0a-4438-9f8a-a0770bbf3ebb +```bash +terraform import ibm_pi_network.example d7bec597-4726-451f-8a63-e62e6f19c32c/cea6651a-bc0a-4438-9f8a-a0770bbf3ebb ``` From 670422ba823d07add5b1d4d1f1de1dcc22d6322b Mon Sep 17 00:00:00 2001 From: Axel Ismirlian Date: Fri, 21 Jun 2024 16:14:46 -0500 Subject: [PATCH 04/10] Add network value constants --- ibm/service/power/ibm_pi_constants.go | 5 +++++ ibm/service/power/resource_ibm_pi_network.go | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ibm/service/power/ibm_pi_constants.go b/ibm/service/power/ibm_pi_constants.go index b9ec88a7ffd..6b3e370c65b 100644 --- a/ibm/service/power/ibm_pi_constants.go +++ b/ibm/service/power/ibm_pi_constants.go @@ -334,6 +334,11 @@ const ( Private = "private" Public = "public" + // Network Values + DHCPNetwork = "dhcp-vlan" + PrivateNetwork = "vlan" + PublicNetwork = "pub-vlan" + // States State_Active = "active" State_ACTIVE = "ACTIVE" diff --git a/ibm/service/power/resource_ibm_pi_network.go b/ibm/service/power/resource_ibm_pi_network.go index 2e303d5d27d..ccb80be3062 100644 --- a/ibm/service/power/resource_ibm_pi_network.go +++ b/ibm/service/power/resource_ibm_pi_network.go @@ -47,7 +47,7 @@ func ResourceIBMPINetwork() *schema.Resource { helpers.PINetworkType: { Type: schema.TypeString, Required: true, - ValidateFunc: validate.ValidateAllowedStringValues([]string{"vlan", "pub-vlan", "dhcp-vlan"}), + ValidateFunc: validate.ValidateAllowedStringValues([]string{DHCPNetwork, PrivateNetwork, PublicNetwork}), Description: "PI network type", }, helpers.PINetworkName: { @@ -169,7 +169,7 @@ func resourceIBMPINetworkCreate(ctx context.Context, d *schema.ResourceData, met body.AccessConfig = models.AccessConfig(v.(string)) } - if networktype == "vlan" || networktype == "dhcp-vlan" { + if networktype == DHCPNetwork || networktype == PrivateNetwork { var networkcidr string var ipBodyRanges []*models.IPAddressRange if v, ok := d.GetOk(helpers.PINetworkCidr); ok { @@ -276,7 +276,7 @@ func resourceIBMPINetworkUpdate(ctx context.Context, d *schema.ResourceData, met body := &models.NetworkUpdate{ DNSServers: flex.ExpandStringList((d.Get(helpers.PINetworkDNS).(*schema.Set)).List()), } - if d.Get(helpers.PINetworkType).(string) == "vlan" { + if d.Get(helpers.PINetworkType).(string) == PrivateNetwork { body.Gateway = flex.PtrToString(d.Get(helpers.PINetworkGateway).(string)) body.IPAddressRanges = getIPAddressRanges(d.Get(helpers.PINetworkIPAddressRange).([]interface{})) } From d9ebcb39886176931eece36ecb1dd67c005a26a3 Mon Sep 17 00:00:00 2001 From: Axel Ismirlian Date: Fri, 21 Jun 2024 16:29:48 -0500 Subject: [PATCH 05/10] Resort and rename constants --- ibm/service/power/ibm_pi_constants.go | 19 +++++++++---------- ibm/service/power/resource_ibm_pi_network.go | 6 +++--- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/ibm/service/power/ibm_pi_constants.go b/ibm/service/power/ibm_pi_constants.go index 18779cec99c..b8f2a5e6780 100644 --- a/ibm/service/power/ibm_pi_constants.go +++ b/ibm/service/power/ibm_pi_constants.go @@ -29,6 +29,7 @@ const ( Arg_InstanceName = "pi_instance_name" Arg_KeyName = "pi_key_name" Arg_LanguageCode = "pi_language_code" + Arg_LicenseRepositoryCapacity = "pi_license_repository_capacity" Arg_Name = "pi_name" Arg_NetworkName = "pi_network_name" Arg_PIInstanceSharedProcessorPool = "pi_shared_processor_pool" @@ -65,13 +66,8 @@ const ( Arg_VolumeSize = "pi_volume_size" Arg_VolumeType = "pi_volume_type" Arg_VTL = "vtl" - Arg_LicenseRepositoryCapacity = "pi_license_repository_capacity" // Attributes - Attr_MinProcessors = "min_processors" - Attr_MinMemory = "min_memory" - Attr_MaxMemory = "max_memory" - Attr_MaxProcessors = "max_processors" Attr_AccessConfig = "access_config" Attr_Action = "action" Attr_Addresses = "addresses" @@ -199,8 +195,10 @@ const ( Attr_MaxCoresAvailable = "max_cores_available" Attr_MaximumStorageAllocation = "max_storage_allocation" Attr_MaxMem = "maxmem" + Attr_MaxMemory = "max_memory" Attr_MaxMemoryAvailable = "max_memory_available" Attr_MaxProc = "maxproc" + Attr_MaxProcessors = "max_processors" Attr_MaxVirtualCores = "max_virtual_cores" Attr_Members = "members" Attr_Memory = "memory" @@ -209,7 +207,9 @@ const ( Attr_MigrationStatus = "migration_status" Attr_Min = "min" Attr_MinMem = "minmem" + Attr_MinMemory = "min_memory" Attr_MinProc = "minproc" + Attr_MinProcessors = "min_processors" Attr_MinVirtualCores = "min_virtual_cores" Attr_MirroringState = "mirroring_state" Attr_MTU = "mtu" @@ -354,11 +354,6 @@ const ( Private = "private" Public = "public" - // Network Values - DHCPNetwork = "dhcp-vlan" - PrivateNetwork = "vlan" - PublicNetwork = "pub-vlan" - // States State_Active = "active" State_ACTIVE = "ACTIVE" @@ -381,8 +376,12 @@ const ( State_Retry = "retry" // Allowed Values + DHCPVlan = "dhcp-vlan" Host = "host" HostGroup = "hostGroup" + PubVlan = "pub-vlan" + Vlan = "vlan" + // Health Health_OK = "OK" diff --git a/ibm/service/power/resource_ibm_pi_network.go b/ibm/service/power/resource_ibm_pi_network.go index ccb80be3062..6bcb875ce2c 100644 --- a/ibm/service/power/resource_ibm_pi_network.go +++ b/ibm/service/power/resource_ibm_pi_network.go @@ -47,7 +47,7 @@ func ResourceIBMPINetwork() *schema.Resource { helpers.PINetworkType: { Type: schema.TypeString, Required: true, - ValidateFunc: validate.ValidateAllowedStringValues([]string{DHCPNetwork, PrivateNetwork, PublicNetwork}), + ValidateFunc: validate.ValidateAllowedStringValues([]string{DHCPVlan, PubVlan, Vlan}), Description: "PI network type", }, helpers.PINetworkName: { @@ -169,7 +169,7 @@ func resourceIBMPINetworkCreate(ctx context.Context, d *schema.ResourceData, met body.AccessConfig = models.AccessConfig(v.(string)) } - if networktype == DHCPNetwork || networktype == PrivateNetwork { + if networktype == DHCPVlan || networktype == Vlan { var networkcidr string var ipBodyRanges []*models.IPAddressRange if v, ok := d.GetOk(helpers.PINetworkCidr); ok { @@ -276,7 +276,7 @@ func resourceIBMPINetworkUpdate(ctx context.Context, d *schema.ResourceData, met body := &models.NetworkUpdate{ DNSServers: flex.ExpandStringList((d.Get(helpers.PINetworkDNS).(*schema.Set)).List()), } - if d.Get(helpers.PINetworkType).(string) == PrivateNetwork { + if d.Get(helpers.PINetworkType).(string) == Vlan { body.Gateway = flex.PtrToString(d.Get(helpers.PINetworkGateway).(string)) body.IPAddressRanges = getIPAddressRanges(d.Get(helpers.PINetworkIPAddressRange).([]interface{})) } From f6de766055f86f19872a4ebf4395ed42e246cbb1 Mon Sep 17 00:00:00 2001 From: Axel Ismirlian Date: Mon, 24 Jun 2024 08:27:46 -0500 Subject: [PATCH 06/10] Add error checking to gateway and iprange update --- ibm/service/power/resource_ibm_pi_network.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ibm/service/power/resource_ibm_pi_network.go b/ibm/service/power/resource_ibm_pi_network.go index 6bcb875ce2c..1e4508e665f 100644 --- a/ibm/service/power/resource_ibm_pi_network.go +++ b/ibm/service/power/resource_ibm_pi_network.go @@ -276,9 +276,12 @@ func resourceIBMPINetworkUpdate(ctx context.Context, d *schema.ResourceData, met body := &models.NetworkUpdate{ DNSServers: flex.ExpandStringList((d.Get(helpers.PINetworkDNS).(*schema.Set)).List()), } - if d.Get(helpers.PINetworkType).(string) == Vlan { + networkType := d.Get(helpers.PINetworkType).(string) + if networkType == Vlan { body.Gateway = flex.PtrToString(d.Get(helpers.PINetworkGateway).(string)) body.IPAddressRanges = getIPAddressRanges(d.Get(helpers.PINetworkIPAddressRange).([]interface{})) + } else { + return diag.Errorf("%v type does not allow gateway or ip-address range update", networkType) } if d.HasChange(helpers.PINetworkName) { From 5f40566ff9f84e8a82a8d68ea39a961aa711effe Mon Sep 17 00:00:00 2001 From: Axel Ismirlian Date: Mon, 24 Jun 2024 08:37:14 -0500 Subject: [PATCH 07/10] Fix gateway and ip-range check --- ibm/service/power/resource_ibm_pi_network.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/ibm/service/power/resource_ibm_pi_network.go b/ibm/service/power/resource_ibm_pi_network.go index 1e4508e665f..149e7c769fe 100644 --- a/ibm/service/power/resource_ibm_pi_network.go +++ b/ibm/service/power/resource_ibm_pi_network.go @@ -277,11 +277,13 @@ func resourceIBMPINetworkUpdate(ctx context.Context, d *schema.ResourceData, met DNSServers: flex.ExpandStringList((d.Get(helpers.PINetworkDNS).(*schema.Set)).List()), } networkType := d.Get(helpers.PINetworkType).(string) - if networkType == Vlan { - body.Gateway = flex.PtrToString(d.Get(helpers.PINetworkGateway).(string)) - body.IPAddressRanges = getIPAddressRanges(d.Get(helpers.PINetworkIPAddressRange).([]interface{})) - } else { - return diag.Errorf("%v type does not allow gateway or ip-address range update", networkType) + if d.HasChange(helpers.PINetworkGateway) || d.HasChange(helpers.PINetworkIPAddressRange) { + if networkType == Vlan { + body.Gateway = flex.PtrToString(d.Get(helpers.PINetworkGateway).(string)) + body.IPAddressRanges = getIPAddressRanges(d.Get(helpers.PINetworkIPAddressRange).([]interface{})) + } else { + return diag.Errorf("%v type does not allow gateway or ip-address range update", networkType) + } } if d.HasChange(helpers.PINetworkName) { From 07267dc7ced4f05fce15031ca94f79eb2b1973a9 Mon Sep 17 00:00:00 2001 From: Axel Ismirlian Date: Tue, 9 Jul 2024 14:40:27 -0500 Subject: [PATCH 08/10] Remove gateway from updateable fields --- ibm/service/power/resource_ibm_pi_network.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ibm/service/power/resource_ibm_pi_network.go b/ibm/service/power/resource_ibm_pi_network.go index 149e7c769fe..81f97b19548 100644 --- a/ibm/service/power/resource_ibm_pi_network.go +++ b/ibm/service/power/resource_ibm_pi_network.go @@ -73,6 +73,7 @@ func ResourceIBMPINetwork() *schema.Resource { Optional: true, Computed: true, Description: "PI network gateway", + ForceNew: true, }, helpers.PINetworkJumbo: { Type: schema.TypeBool, @@ -271,18 +272,17 @@ func resourceIBMPINetworkUpdate(ctx context.Context, d *schema.ResourceData, met return diag.FromErr(err) } - if d.HasChanges(helpers.PINetworkName, helpers.PINetworkDNS, helpers.PINetworkGateway, helpers.PINetworkIPAddressRange) { + if d.HasChanges(helpers.PINetworkName, helpers.PINetworkDNS, helpers.PINetworkIPAddressRange) { networkC := st.NewIBMPINetworkClient(ctx, sess, cloudInstanceID) body := &models.NetworkUpdate{ DNSServers: flex.ExpandStringList((d.Get(helpers.PINetworkDNS).(*schema.Set)).List()), } networkType := d.Get(helpers.PINetworkType).(string) - if d.HasChange(helpers.PINetworkGateway) || d.HasChange(helpers.PINetworkIPAddressRange) { + if d.HasChange(helpers.PINetworkIPAddressRange) { if networkType == Vlan { - body.Gateway = flex.PtrToString(d.Get(helpers.PINetworkGateway).(string)) body.IPAddressRanges = getIPAddressRanges(d.Get(helpers.PINetworkIPAddressRange).([]interface{})) } else { - return diag.Errorf("%v type does not allow gateway or ip-address range update", networkType) + return diag.Errorf("%v type does not allow ip-address range update", networkType) } } From a97af6859a443544301be7108f96ccc3c4ebf55a Mon Sep 17 00:00:00 2001 From: Axel Ismirlian Date: Tue, 9 Jul 2024 15:00:42 -0500 Subject: [PATCH 09/10] Add wait on delete for forcenew field --- ibm/service/power/ibm_pi_constants.go | 1 + ibm/service/power/resource_ibm_pi_network.go | 34 ++++++++++++++++++-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/ibm/service/power/ibm_pi_constants.go b/ibm/service/power/ibm_pi_constants.go index b311e58fc98..24995cfdc43 100644 --- a/ibm/service/power/ibm_pi_constants.go +++ b/ibm/service/power/ibm_pi_constants.go @@ -401,6 +401,7 @@ const ( State_DELETING = "DELETING" State_Down = "down" State_Failed = "failed" + State_Found = "Found" State_Inactive = "inactive" State_InProgress = "in progress" State_InUse = "in-use" diff --git a/ibm/service/power/resource_ibm_pi_network.go b/ibm/service/power/resource_ibm_pi_network.go index 81f97b19548..51ba24ea98c 100644 --- a/ibm/service/power/resource_ibm_pi_network.go +++ b/ibm/service/power/resource_ibm_pi_network.go @@ -14,6 +14,7 @@ import ( "github.com/apparentlymart/go-cidr/cidr" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" st "github.com/IBM-Cloud/power-go-client/clients/instance" @@ -258,7 +259,6 @@ func resourceIBMPINetworkRead(ctx context.Context, d *schema.ResourceData, meta d.Set(helpers.PINetworkIPAddressRange, ipRangesMap) return nil - } func resourceIBMPINetworkUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { @@ -312,12 +312,17 @@ func resourceIBMPINetworkDelete(ctx context.Context, d *schema.ResourceData, met return diag.FromErr(err) } - networkC := st.NewIBMPINetworkClient(ctx, sess, cloudInstanceID) - err = networkC.Delete(networkID) + client := st.NewIBMPINetworkClient(ctx, sess, cloudInstanceID) + err = client.Delete(networkID) + if err != nil { + return diag.FromErr(err) + } + _, err = isWaitForIBMPINetworkDeleted(ctx, client, networkID, d.Timeout(schema.TimeoutDelete)) if err != nil { return diag.FromErr(err) } + d.SetId("") return nil } @@ -350,6 +355,29 @@ func isIBMPINetworkRefreshFunc(client *st.IBMPINetworkClient, id string) resourc } } +func isWaitForIBMPINetworkDeleted(ctx context.Context, client *st.IBMPINetworkClient, id string, timeout time.Duration) (interface{}, error) { + stateConf := &retry.StateChangeConf{ + Pending: []string{State_Found}, + Target: []string{State_NotFound}, + Refresh: isIBMPINetworkRefreshDeleteFunc(client, id), + Timeout: timeout, + Delay: 10 * time.Second, + MinTimeout: 10 * time.Second, + } + + return stateConf.WaitForStateContext(ctx) +} + +func isIBMPINetworkRefreshDeleteFunc(client *st.IBMPINetworkClient, id string) resource.StateRefreshFunc { + return func() (interface{}, string, error) { + network, err := client.Get(id) + if err != nil { + return network, State_NotFound, nil + } + return network, State_Found, nil + } +} + func generateIPData(cdir string) (gway, firstip, lastip string, err error) { _, ipv4Net, err := net.ParseCIDR(cdir) From 3cceaf636d795848916345b33acd739dcd8201c2 Mon Sep 17 00:00:00 2001 From: Axel Ismirlian Date: Mon, 15 Jul 2024 08:39:24 -0500 Subject: [PATCH 10/10] Fix linting issue --- ibm/service/power/ibm_pi_constants.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ibm/service/power/ibm_pi_constants.go b/ibm/service/power/ibm_pi_constants.go index 979e6557774..24c8e0cacc8 100644 --- a/ibm/service/power/ibm_pi_constants.go +++ b/ibm/service/power/ibm_pi_constants.go @@ -404,7 +404,7 @@ const ( Dedicated = "dedicated" DeploymentTypeEpic = "EPIC" DeploymentTypeVMNoStorage = "VMNoStorage" - DHCPVlan = "dhcp-vlan" + DHCPVlan = "dhcp-vlan" Hana = "Hana" Hard = "hard" Host = "host" @@ -415,12 +415,12 @@ const ( Prefix = "prefix" Private = "private" Public = "public" - PubVlan = "pub-vlan" + PubVlan = "pub-vlan" SAP = "SAP" Shared = "shared" Soft = "soft" Suffix = "suffix" - Vlan = "vlan" + Vlan = "vlan" vSCSI = "vSCSI" Warning = "WARNING"