Skip to content

Commit

Permalink
add network update support
Browse files Browse the repository at this point in the history
  • Loading branch information
dhirendersingh19 authored and hkantare committed Feb 11, 2022
1 parent eade522 commit 64d65e8
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 1 deletion.
30 changes: 29 additions & 1 deletion ibm/service/power/resource_ibm_pi_network.go
Expand Up @@ -34,6 +34,7 @@ func ResourceIBMPINetwork() *schema.Resource {

Timeouts: &schema.ResourceTimeout{
Create: schema.DefaultTimeout(60 * time.Minute),
Update: schema.DefaultTimeout(60 * time.Minute),
Delete: schema.DefaultTimeout(60 * time.Minute),
},

Expand Down Expand Up @@ -181,7 +182,34 @@ func resourceIBMPINetworkRead(ctx context.Context, d *schema.ResourceData, meta
}

func resourceIBMPINetworkUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
return nil
sess, err := meta.(conns.ClientSession).IBMPISession()
if err != nil {
return diag.FromErr(err)
}

cloudInstanceID, networkID, err := splitID(d.Id())
if err != nil {
return diag.FromErr(err)
}

if d.HasChanges(helpers.PINetworkName, helpers.PINetworkDNS) {
networkC := st.NewIBMPINetworkClient(ctx, sess, cloudInstanceID)
body := &models.NetworkUpdate{
DNSServers: flex.ExpandStringList((d.Get(helpers.PINetworkDNS).(*schema.Set)).List()),
}

if d.HasChange(helpers.PINetworkName) {
name := d.Get(helpers.PINetworkName).(string)
body.Name = &name
}

_, err = networkC.Update(networkID, body)
if err != nil {
return diag.FromErr(err)
}
}

return resourceIBMPINetworkRead(ctx, d, meta)
}

func resourceIBMPINetworkDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
Expand Down
21 changes: 21 additions & 0 deletions ibm/service/power/resource_ibm_pi_network_test.go
Expand Up @@ -34,6 +34,16 @@ func TestAccIBMPINetworkbasic(t *testing.T) {
"ibm_pi_network.power_networks", "pi_network_name", name),
),
},
{
Config: testAccCheckIBMPINetworkConfigUpdateDNS(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"),
),
},
},
})
}
Expand Down Expand Up @@ -100,3 +110,14 @@ func testAccCheckIBMPINetworkConfig(name string) string {
}
`, acc.Pi_cloud_instance_id, name)
}

func testAccCheckIBMPINetworkConfigUpdateDNS(name string) string {
return fmt.Sprintf(`
resource "ibm_pi_network" "power_networks" {
pi_cloud_instance_id = "%s"
pi_network_name = "%s"
pi_network_type = "pub-vlan"
pi_dns = ["127.0.0.1"]
}
`, acc.Pi_cloud_instance_id, name)
}
1 change: 1 addition & 0 deletions website/docs/r/pi_network.html.markdown
Expand Up @@ -44,6 +44,7 @@ resource "ibm_pi_network" "power_networks" {
The `ibm_pi_network` provides the following [Timeouts](https://www.terraform.io/docs/language/resources/syntax.html) configuration options:

- **create** - (Default 60 minutes) Used for creating a network.
- **update** - (Default 60 minutes) Used for updating a network.
- **delete** - (Default 60 minutes) Used for deleting a network.

## Argument reference
Expand Down

0 comments on commit 64d65e8

Please sign in to comment.