Skip to content

Commit 17fd784

Browse files
authored
Remove dhcp option and fix arp-broadcast bug (IBM-Cloud#6380)
* Remove dhcp-vlan option and tests from network resource * Update decumentation * Fix arpbroadcast bug * Remove defunct peer test
1 parent 9a4706b commit 17fd784

File tree

4 files changed

+39
-118
lines changed

4 files changed

+39
-118
lines changed

ibm/service/power/ibm_pi_constants.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -558,7 +558,6 @@ const (
558558
DeploymentTypeVMNoStorage = "VMNoStorage"
559559
DestinationUnreach = "destination-unreach"
560560
Detach = "detach"
561-
DHCPVlan = "dhcp-vlan"
562561
Disable = "disable"
563562
Echo = "echo"
564563
EchoReply = "echo-reply"

ibm/service/power/resource_ibm_pi_network.go

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,14 @@ func ResourceIBMPINetwork() *schema.Resource {
5151
// Arguments
5252
Arg_Advertise: {
5353
Description: "Enable the network to be advertised.",
54+
Default: Enable,
5455
Optional: true,
5556
Type: schema.TypeString,
5657
ValidateFunc: validation.StringInSlice([]string{Enable, Disable}, false),
5758
},
5859
Arg_ARPBroadcast: {
5960
Description: "Enable ARP Broadcast.",
61+
Default: Disable,
6062
Optional: true,
6163
Type: schema.TypeString,
6264
ValidateFunc: validation.StringInSlice([]string{Enable, Disable}, false),
@@ -164,10 +166,10 @@ func ResourceIBMPINetwork() *schema.Resource {
164166
Type: schema.TypeList,
165167
},
166168
Arg_NetworkType: {
167-
Description: "The type of network that you want to create. Valid values are `pub-vlan`, `vlan` and `dhcp-vlan`.",
169+
Description: "The type of network that you want to create. Valid values are `pub-vlan`, and `vlan`.",
168170
Required: true,
169171
Type: schema.TypeString,
170-
ValidateFunc: validate.ValidateAllowedStringValues([]string{DHCPVlan, PubVlan, Vlan}),
172+
ValidateFunc: validate.ValidateAllowedStringValues([]string{PubVlan, Vlan}),
171173
},
172174
Arg_UserTags: {
173175
Computed: true,
@@ -252,7 +254,7 @@ func resourceIBMPINetworkCreate(ctx context.Context, d *schema.ResourceData, met
252254
body.Peer = peerModel
253255
}
254256

255-
if networktype == DHCPVlan || networktype == Vlan {
257+
if networktype == Vlan {
256258
var networkcidr string
257259
var ipBodyRanges []*models.IPAddressRange
258260
if v, ok := d.GetOk(Arg_Cidr); ok {
@@ -279,24 +281,10 @@ func resourceIBMPINetworkCreate(ctx context.Context, d *schema.ResourceData, met
279281
body.IPAddressRanges = ipBodyRanges
280282
body.Gateway = gateway
281283
body.Cidr = networkcidr
282-
283-
if networktype == Vlan {
284-
if v, ok := d.GetOk(Arg_Advertise); ok {
285-
body.Advertise = flex.PtrToString(v.(string))
286-
}
287-
if v, ok := d.GetOk(Arg_ARPBroadcast); ok {
288-
body.ArpBroadcast = flex.PtrToString(v.(string))
289-
}
290-
}
291284
}
292285

293-
if networktype == PubVlan {
294-
_, ok1 := d.GetOk(Arg_Advertise)
295-
_, ok2 := d.GetOk(Arg_ARPBroadcast)
296-
_, ok3 := d.GetOk(Arg_Cidr)
297-
if ok1 || ok2 || ok3 {
298-
return diag.Errorf("%s, %s, and %s cannot be set when %s is pub-vlan", Arg_Advertise, Arg_ARPBroadcast, Arg_Cidr, Arg_NetworkType)
299-
}
286+
if _, ok := d.GetOk(Arg_Cidr); ok && networktype == PubVlan {
287+
return diag.Errorf("%s cannot be set when %s is pub-vlan", Arg_Cidr, Arg_NetworkType)
300288
}
301289

302290
if !sess.IsOnPrem() {
@@ -310,6 +298,15 @@ func resourceIBMPINetworkCreate(ctx context.Context, d *schema.ResourceData, met
310298
if err != nil {
311299
return diag.FromErr(err)
312300
}
301+
302+
if networktype == Vlan {
303+
if v, ok := d.GetOk(Arg_Advertise); ok {
304+
body.Advertise = flex.PtrToString(v.(string))
305+
}
306+
if v, ok := d.GetOk(Arg_ARPBroadcast); ok {
307+
body.ArpBroadcast = flex.PtrToString(v.(string))
308+
}
309+
}
313310
}
314311
}
315312

@@ -364,8 +361,26 @@ func resourceIBMPINetworkRead(ctx context.Context, d *schema.ResourceData, meta
364361
}
365362
d.Set(Arg_UserTags, tags)
366363
}
367-
d.Set(Arg_Advertise, networkdata.Advertise)
368-
d.Set(Arg_ARPBroadcast, networkdata.ArpBroadcast)
364+
365+
if !sess.IsOnPrem() {
366+
wsclient := instance.NewIBMPIWorkspacesClient(ctx, sess, cloudInstanceID)
367+
wsData, err := wsclient.Get(cloudInstanceID)
368+
if err != nil {
369+
return diag.FromErr(err)
370+
}
371+
if wsData.Capabilities[PER] {
372+
_, err = waitForPERWorkspaceActive(ctx, wsclient, cloudInstanceID, d.Timeout(schema.TimeoutRead))
373+
if err != nil {
374+
return diag.FromErr(err)
375+
}
376+
377+
if *networkdata.Type == Vlan {
378+
d.Set(Arg_Advertise, networkdata.Advertise)
379+
d.Set(Arg_ARPBroadcast, networkdata.ArpBroadcast)
380+
}
381+
}
382+
}
383+
369384
d.Set(Arg_Cidr, networkdata.Cidr)
370385
d.Set(Arg_DNS, networkdata.DNSServers)
371386
d.Set(Arg_Gateway, networkdata.Gateway)

ibm/service/power/resource_ibm_pi_network_test.go

Lines changed: 0 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -120,38 +120,6 @@ func TestAccIBMPINetworkGatewaybasicSatellite(t *testing.T) {
120120
})
121121
}
122122

123-
func TestAccIBMPINetworkDHCPbasic(t *testing.T) {
124-
name := fmt.Sprintf("tf-pi-network-%d", acctest.RandIntRange(10, 100))
125-
resource.Test(t, resource.TestCase{
126-
PreCheck: func() { acc.TestAccPreCheck(t) },
127-
Providers: acc.TestAccProviders,
128-
CheckDestroy: testAccCheckIBMPINetworkDestroy,
129-
Steps: []resource.TestStep{
130-
{
131-
Config: testAccCheckIBMPINetworDHCPConfig(name),
132-
Check: resource.ComposeTestCheckFunc(
133-
testAccCheckIBMPINetworkExists("ibm_pi_network.power_networks"),
134-
resource.TestCheckResourceAttr(
135-
"ibm_pi_network.power_networks", "pi_network_name", name),
136-
resource.TestCheckResourceAttrSet("ibm_pi_network.power_networks", "pi_gateway"),
137-
resource.TestCheckResourceAttrSet("ibm_pi_network.power_networks", "id"),
138-
resource.TestCheckResourceAttrSet("ibm_pi_network.power_networks", "pi_ipaddress_range.#"),
139-
),
140-
},
141-
{
142-
Config: testAccCheckIBMPINetworkConfigGatewayDHCPUpdateDNS(name),
143-
Check: resource.ComposeTestCheckFunc(
144-
testAccCheckIBMPINetworkExists("ibm_pi_network.power_networks"),
145-
resource.TestCheckResourceAttr(
146-
"ibm_pi_network.power_networks", "pi_network_name", name),
147-
resource.TestCheckResourceAttr(
148-
"ibm_pi_network.power_networks", "pi_dns.#", "1"),
149-
),
150-
},
151-
},
152-
})
153-
}
154-
155123
func TestAccIBMPINetworkUserTags(t *testing.T) {
156124
name := fmt.Sprintf("tf-pi-network-%d", acctest.RandIntRange(10, 100))
157125
networkRes := "ibm_pi_network.power_networks"
@@ -189,27 +157,6 @@ func TestAccIBMPINetworkUserTags(t *testing.T) {
189157
})
190158
}
191159

192-
func TestAccIBMPINetworkPeerOnPrem(t *testing.T) {
193-
name := fmt.Sprintf("tf-pi-network-%d", acctest.RandIntRange(10, 100))
194-
networkRes := "ibm_pi_network.power_network_peer"
195-
resource.Test(t, resource.TestCase{
196-
PreCheck: func() { acc.TestAccPreCheck(t) },
197-
Providers: acc.TestAccProviders,
198-
CheckDestroy: testAccCheckIBMPINetworkDestroy,
199-
Steps: []resource.TestStep{
200-
{
201-
Config: testAccCheckIBMPINetworkPeerOnPrem(name),
202-
Check: resource.ComposeTestCheckFunc(
203-
testAccCheckIBMPINetworkExists(networkRes),
204-
resource.TestCheckResourceAttr(networkRes, "pi_network_name", name),
205-
resource.TestCheckResourceAttrSet(networkRes, "id"),
206-
resource.TestCheckResourceAttrSet(networkRes, "peer_id"),
207-
),
208-
},
209-
},
210-
})
211-
}
212-
213160
func TestAccIBMPINetworkAdvertiseArpBroadcast(t *testing.T) {
214161
name := fmt.Sprintf("tf-pi-network-%d", acctest.RandIntRange(10, 100))
215162
networkRes := "ibm_pi_network.power_network_advertise_arpbroadcast"
@@ -358,30 +305,6 @@ func testAccCheckIBMPINetworkConfigGatewayUpdateDNS(name string) string {
358305
`, acc.Pi_cloud_instance_id, name)
359306
}
360307

361-
func testAccCheckIBMPINetworDHCPConfig(name string) string {
362-
return fmt.Sprintf(`
363-
resource "ibm_pi_network" "power_networks" {
364-
pi_cloud_instance_id = "%s"
365-
pi_network_name = "%s"
366-
pi_network_type = "dhcp-vlan"
367-
pi_cidr = "10.1.2.0/26"
368-
pi_dns = ["10.1.0.68"]
369-
}
370-
`, acc.Pi_cloud_instance_id, name)
371-
}
372-
373-
func testAccCheckIBMPINetworkConfigGatewayDHCPUpdateDNS(name string) string {
374-
return fmt.Sprintf(`
375-
resource "ibm_pi_network" "power_networks" {
376-
pi_cloud_instance_id = "%s"
377-
pi_network_name = "%s"
378-
pi_network_type = "dhcp-vlan"
379-
pi_cidr = "10.1.2.0/26"
380-
pi_dns = ["10.1.0.69"]
381-
}
382-
`, acc.Pi_cloud_instance_id, name)
383-
}
384-
385308
func testAccCheckIBMPINetworkUserTagsConfig(name string, userTagsString string) string {
386309
return fmt.Sprintf(`
387310
resource "ibm_pi_network" "power_networks" {
@@ -393,22 +316,6 @@ func testAccCheckIBMPINetworkUserTagsConfig(name string, userTagsString string)
393316
`, acc.Pi_cloud_instance_id, name, userTagsString)
394317
}
395318

396-
func testAccCheckIBMPINetworkPeerOnPrem(name string) string {
397-
return fmt.Sprintf(`
398-
resource "ibm_pi_network" "power_network_peer" {
399-
pi_cloud_instance_id = "%s"
400-
pi_network_name = "%s"
401-
pi_network_type = "vlan"
402-
pi_cidr = "192.168.17.0/24"
403-
404-
pi_network_peer {
405-
id = "2"
406-
type = "L2"
407-
}
408-
}
409-
`, acc.Pi_cloud_instance_id, name)
410-
}
411-
412319
func testAccCheckIBMPINetworkAdvertiseArpBroadcast(name string) string {
413320
return fmt.Sprintf(`
414321
resource "ibm_pi_network" "power_network_advertise_arpbroadcast" {

website/docs/r/pi_network.html.markdown

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ The `ibm_pi_network` provides the following [Timeouts](https://www.terraform.io/
5858

5959
Review the argument references that you can specify for your resource.
6060

61-
- `pi_advertise` - (Optional, String) Enable the network to be advertised. Only supported for `vlan` network type.
62-
- `pi_arp_broadcast` - (Optional, String) Enable ARP Broadcast. Only supported for `vlan` network type.
61+
- `pi_advertise` - (Optional, String) Enable the network to be advertised. Only supported for `vlan` network type on PER enabled workspaces. Default is `enable` and is only passed in supported workspaces.
62+
- `pi_arp_broadcast` - (Optional, String) Enable ARP Broadcast. Only supported for `vlan` network type on PER enabled workspaces. Default is `disable` and is only passed in supported workspaces.
6363
- `pi_cidr` - (Optional, String) The network CIDR. Required for `vlan` network type.
6464
- `pi_cloud_instance_id` - (Required, String) The GUID of the service instance associated with an account.
6565
- `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.
@@ -69,7 +69,7 @@ Review the argument references that you can specify for your resource.
6969
- `pi_starting_ip_address` - (Required, String) The staring ip address. **Note** if the `pi_gateway` or `pi_ipaddress_range` is not provided, it will calculate the value based on CIDR respectively.
7070
- `pi_network_mtu` - (Optional, Integer) Maximum Transmission Unit option of the network. Minimum is 1450 and maximum is 9000.
7171
- `pi_network_name` - (Required, String) The name of the network.
72-
- `pi_network_type` - (Required, String) The type of network that you want to create. Valid values are `pub-vlan`, `vlan` and `dhcp-vlan`.
72+
- `pi_network_type` - (Required, String) The type of network that you want to create. Valid values are `pub-vlan`, and `vlan`.
7373
- `pi_network_peer` - (Optional, List) Network peer information (for on-prem locations only). Max items: 1.
7474

7575
Nested schema for `pi_network_peer`:

0 commit comments

Comments
 (0)