Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(bm-dynamic-bandwidth): Support for bandwidth in bare metal resource creation #5493

Merged
merged 58 commits into from
Jul 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
6bbf648
Update build.sh
ujjwal-ibm Jan 24, 2024
ff09301
sdk changes
ujjwal-ibm Mar 6, 2024
021de53
Update resource_ibm_is_snapshot_consistency_group.go
ujjwal-ibm Mar 6, 2024
1fef14e
vpn 113 changes
ujjwal-ibm Mar 6, 2024
38b7e55
Update resource_ibm_is_vpn_gateway_connections.go
ujjwal-ibm Mar 7, 2024
c09ce16
some changes
ujjwal-ibm Mar 7, 2024
bb59aae
updated sdk
ujjwal-ibm Mar 8, 2024
a55ea87
Added deprecation
ujjwal-ibm Mar 8, 2024
d3dbb79
made changes to sdk
ujjwal-ibm Mar 8, 2024
01883f8
Update resource_ibm_is_vpn_gateway_connections.go
ujjwal-ibm Mar 8, 2024
ad9cc50
Update resource_ibm_is_vpn_gateway_connections.go
ujjwal-ibm Mar 8, 2024
487cdc1
Update resource_ibm_is_vpn_gateway_connections.go
ujjwal-ibm Mar 8, 2024
afb2e0a
Update is_vpn_gateway_connection.html.markdown
ujjwal-ibm Mar 14, 2024
b76e6ce
Merge branch 'master' into vpn-advanceconfig
ujjwal-ibm Mar 14, 2024
963e68e
sdk update
ujjwal-ibm Apr 1, 2024
ada59c0
sdk changes
ujjwal-ibm Apr 1, 2024
4f32b5a
set version to todays date in sdk
deepaksibm Apr 8, 2024
f594a92
temporary fix for routing protocol in sdk.
deepaksibm Apr 12, 2024
5d3061e
Merge remote-tracking branch 'origin/buildsh-forbinaries' into vpn-ad…
ujjwal-ibm Apr 17, 2024
744f904
error resolved
ujjwal-ibm Apr 25, 2024
d7d7765
go mod changes reverted
ujjwal-ibm Apr 25, 2024
6d15d7c
removed sdk
ujjwal-ibm May 14, 2024
a3d9f9d
Merge branch 'master' into vpn-advanceconfig
ujjwal-ibm May 14, 2024
12b531e
Update go.sum
ujjwal-ibm May 14, 2024
449c375
Update data_source_ibm_is_vpn_gateway_connection.go
ujjwal-ibm May 15, 2024
4816252
fixed datasource errors
ujjwal-ibm May 15, 2024
2ffd72b
gateway fix
ujjwal-ibm May 15, 2024
97aae00
Update resource_ibm_is_vpn_gateway_connections.go
ujjwal-ibm May 15, 2024
2fb797f
Merge branch 'master' into vpn-advanceconfig
ujjwal-ibm May 15, 2024
50ca95d
Update resource_ibm_is_vpn_gateway_connections.go
ujjwal-ibm May 15, 2024
0758a90
Merge branch 'master' into vpn-advanceconfig
ujjwal-ibm May 15, 2024
3a0f48e
Update resource_ibm_is_vpn_gateway_connections.go
ujjwal-ibm May 15, 2024
695b648
Merge branch 'master' into vpn-advanceconfig
ujjwal-ibm May 21, 2024
8b0e38c
Update provider.go
ujjwal-ibm May 21, 2024
c77ce8f
Update resource_ibm_is_vpn_gateway_connections.go
ujjwal-ibm May 21, 2024
e1ec21e
fixed error on setting
ujjwal-ibm May 22, 2024
8ace53f
fixed cidrs issue
ujjwal-ibm May 30, 2024
2a3bfb2
Update resource_ibm_is_vpn_gateway_connections.go
ujjwal-ibm May 30, 2024
2702764
Update resource_ibm_is_vpn_gateway_connection_test.go
ujjwal-ibm May 31, 2024
feaa6c4
Update resource_ibm_is_vpn_gateway_connection_test.go
ujjwal-ibm May 31, 2024
7cabc95
Merge branch 'master' into vpn-advanceconfig
ujjwal-ibm Jun 5, 2024
64c0be1
feat(bm-dynamic-bandwidth): Support for bandwidth while creating bare…
deepaksibm May 28, 2024
c1209c5
sdk fix
deepaksibm Jun 12, 2024
37a3fe0
compile fix
deepaksibm Jun 12, 2024
01ab394
Merge branch 'master' into dynamic-bandwidth
deepaksibm Jun 24, 2024
e3b667f
tmp
deepaksibm Jun 25, 2024
bbca4ae
sdk update
deepaksibm Jun 26, 2024
c663fc9
Merge branch 'master' into dynamic-bandwidth
deepaksibm Jun 26, 2024
f0a4fbe
uncomment replica as spec is fixed
deepaksibm Jun 26, 2024
0b92363
test case update
deepaksibm Jun 26, 2024
5c54d3f
update test
deepaksibm Jun 27, 2024
04482f5
update sdk
deepaksibm Jul 5, 2024
4d4de02
go mod changes
deepaksibm Jul 9, 2024
c85e7b2
Merge branch 'master' into dynamic-bandwidth
deepaksibm Jul 9, 2024
f75cf9f
go mod update
deepaksibm Jul 9, 2024
26b6e6d
go mod updates
deepaksibm Jul 9, 2024
f5f6ef5
test update
deepaksibm Jul 10, 2024
c0f8cdf
revert unintentional script changes
deepaksibm Jul 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ require (
github.com/IBM/schematics-go-sdk v0.2.3
github.com/IBM/secrets-manager-go-sdk/v2 v2.0.4
github.com/IBM/vpc-beta-go-sdk v0.6.0
github.com/IBM/vpc-go-sdk v0.53.0
github.com/IBM/vpc-go-sdk v0.54.0
github.com/ScaleFT/sshkeys v0.0.0-20200327173127-6142f742bca5
github.com/akamai/AkamaiOPEN-edgegrid-golang v1.2.2
github.com/akamai/AkamaiOPEN-edgegrid-golang/v5 v5.0.0
Expand Down
6 changes: 4 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -178,8 +178,8 @@ github.com/IBM/vmware-go-sdk v0.1.2 h1:5lKWFyInWz9e2hwGsoFTEoLa1jYkD30SReN0fQ10w
github.com/IBM/vmware-go-sdk v0.1.2/go.mod h1:2UGPBJju3jiv5VKKBBm9a5L6bzF/aJdKOKAzJ7HaOjA=
github.com/IBM/vpc-beta-go-sdk v0.6.0 h1:wfM3AcW3zOM3xsRtZ+EA6+sESlGUjQ6Yf4n5QQyz4uc=
github.com/IBM/vpc-beta-go-sdk v0.6.0/go.mod h1:fzHDAQIqH/5yJmYsKodKHLcqxMDT+yfH6vZjdiw8CQA=
github.com/IBM/vpc-go-sdk v0.53.0 h1:wlrROeQFTb4utkCKn72eSKGlS4zi3n5pTAJ2pcYTtwE=
github.com/IBM/vpc-go-sdk v0.53.0/go.mod h1:FoZljso53oB/A2mW7ExsfHXZ3T3XWV7c7R5JSgS4QfY=
github.com/IBM/vpc-go-sdk v0.54.0 h1:yJggwRb/WbLcyamfvJSExsWa/txS8Mct1ZZi54ZYhmA=
github.com/IBM/vpc-go-sdk v0.54.0/go.mod h1:BpIOxz9FRDsAY7NQFUYdxiPWjqvcRbBrw8fiAvzNqDE=
github.com/Jeffail/gabs v1.1.1 h1:V0uzR08Hj22EX8+8QMhyI9sX2hwRu+/RJhJUmnwda/E=
github.com/Jeffail/gabs v1.1.1/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc=
github.com/Logicalis/asn1 v0.0.0-20190312173541-d60463189a56 h1:vuquMR410psHNax14XKNWa0Ae/kYgWJcXi0IFuX60N0=
Expand Down Expand Up @@ -1915,6 +1915,8 @@ golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
Expand Down
11 changes: 11 additions & 0 deletions ibm/service/vpc/resource_ibm_is_bare_metal_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ func ResourceIBMIsBareMetalServer() *schema.Resource {
},
isBareMetalServerBandwidth: {
Type: schema.TypeInt,
Optional: true,
Computed: true,
Description: "The total bandwidth (in megabits per second)",
},
Expand Down Expand Up @@ -1240,6 +1241,10 @@ func resourceIBMISBareMetalServerCreate(context context.Context, d *schema.Resou
imageStr = image.(string)
}

if bandwidthIntf, ok := d.GetOk(isBareMetalServerBandwidth); ok {
bandwidth := int64(bandwidthIntf.(int))
options.Bandwidth = &bandwidth
}
// enable secure boot

if _, ok := d.GetOkExists(isBareMetalServerEnableSecureBoot); ok {
Expand Down Expand Up @@ -3427,6 +3432,12 @@ func bareMetalServerUpdate(context context.Context, d *schema.ResourceData, meta
bmsPatchModel := &vpcv1.BareMetalServerPatch{}
flag := false

if d.HasChange(isBareMetalServerBandwidth) && !d.IsNewResource() {
bandwidth := int64(d.Get(isBareMetalServerBandwidth).(int))
bmsPatchModel.Bandwidth = &bandwidth
flag = true
}

if d.HasChange(isBareMetalServerEnableSecureBoot) {
newEnableSecureBoot := d.Get(isBareMetalServerEnableSecureBoot).(bool)
bmsPatchModel.EnableSecureBoot = &newEnableSecureBoot
Expand Down
84 changes: 84 additions & 0 deletions ibm/service/vpc/resource_ibm_is_bare_metal_server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,48 @@ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKVmnMOlHKcZK8tpt3MP1lqOLAcqcJzhsvJcjscgVE
},
})
}

func TestAccIBMISBareMetalServer_bandwidth(t *testing.T) {
var server string
vpcname := fmt.Sprintf("tf-vpc-%d", acctest.RandIntRange(10, 100))
pipName := fmt.Sprintf("tf-vpc-pip-%d", acctest.RandIntRange(10, 100))
name := fmt.Sprintf("tf-server-%d", acctest.RandIntRange(10, 100))
subnetname := fmt.Sprintf("tfip-subnet-%d", acctest.RandIntRange(10, 100))
publicKey := strings.TrimSpace(`
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKVmnMOlHKcZK8tpt3MP1lqOLAcqcJzhsvJcjscgVERRN7/9484SOBJ3HSKxxNG5JN8owAjy5f9yYwcUg+JaUVuytn5Pv3aeYROHGGg+5G346xaq3DAwX6Y5ykr2fvjObgncQBnuU5KHWCECO/4h8uWuwh/kfniXPVjFToc+gnkqA+3RKpAecZhFXwfalQ9mMuYGFxn+fwn8cYEApsJbsEmb0iJwPiZ5hjFC8wREuiTlhPHDgkBLOiycd20op2nXzDbHfCHInquEe/gYxEitALONxm0swBOwJZwlTDOB7C6y2dzlrtxr1L59m7pCkWI4EtTRLvleehBoj3u7jB4usR
`)
sshname := fmt.Sprintf("tf-sshname-%d", acctest.RandIntRange(10, 100))

resource.Test(t, resource.TestCase{
PreCheck: func() { acc.TestAccPreCheck(t) },
Providers: acc.TestAccProviders,
CheckDestroy: testAccCheckIBMISBareMetalServerDestroy,
Steps: []resource.TestStep{
{
Config: testAccCheckIBMISBareMetalServerBandwidthConfig(vpcname, subnetname, sshname, publicKey, name, pipName, 10000),
Check: resource.ComposeTestCheckFunc(
testAccCheckIBMISBareMetalServerExists("ibm_is_bare_metal_server.testacc_bms", server),
resource.TestCheckResourceAttr(
"ibm_is_bare_metal_server.testacc_bms", "name", name),
resource.TestCheckResourceAttr(
"ibm_is_bare_metal_server.testacc_bms", "zone", acc.ISZoneName),
resource.TestCheckResourceAttr(
"ibm_is_bare_metal_server.testacc_bms", "bandwidth", "10000"),
),
},
{
Config: testAccCheckIBMISBareMetalServerBandwidthConfig(vpcname, subnetname, sshname, publicKey, name, pipName, 25000),
Check: resource.ComposeTestCheckFunc(
testAccCheckIBMISBareMetalServerExists("ibm_is_bare_metal_server.testacc_bms", server),
resource.TestCheckResourceAttr(
"ibm_is_bare_metal_server.testacc_bms", "name", name),
resource.TestCheckResourceAttr(
"ibm_is_bare_metal_server.testacc_bms", "bandwidth", "25000"),
),
},
},
})
}
func TestAccIBMISBareMetalServerVNI_basic(t *testing.T) {
var server string
vpcname := fmt.Sprintf("tf-vpc-%d", acctest.RandIntRange(10, 100))
Expand Down Expand Up @@ -486,6 +528,48 @@ func testAccCheckIBMISBareMetalServerConfig(vpcname, subnetname, sshname, public
}
`, vpcname, subnetname, acc.ISZoneName, sshname, publicKey, acc.IsBareMetalServerProfileName, name, acc.IsBareMetalServerImage, acc.ISZoneName)
}

func testAccCheckIBMISBareMetalServerBandwidthConfig(vpcname, subnetname, sshname, publicKey, name, pipName string, bandwidth int) string {
return fmt.Sprintf(`
resource "ibm_is_vpc" "testacc_vpc" {
name = "%s"
}

resource "ibm_is_subnet" "testacc_subnet" {
name = "%s"
vpc = ibm_is_vpc.testacc_vpc.id
zone = "%s"
total_ipv4_address_count = 16
}

resource "ibm_is_ssh_key" "testacc_sshkey" {
name = "%s"
public_key = "%s"
}

resource "ibm_is_bare_metal_server" "testacc_bms" {
bandwidth = %d
profile = "%s"
name = "%s"
image = "%s"
zone = "%s"
keys = [ibm_is_ssh_key.testacc_sshkey.id]
primary_network_attachment {
virtual_network_interface {
auto_delete = true
enable_infrastructure_nat = true
primary_ip {
name = "%s"
}
subnet = ibm_is_subnet.testacc_subnet.id
}
allowed_vlans = [100, 102]
}
vpc = ibm_is_vpc.testacc_vpc.id
}
`, vpcname, subnetname, acc.ISZoneName, sshname, publicKey, bandwidth, acc.IsBareMetalServerProfileName, name, acc.IsBareMetalServerImage, acc.ISZoneName, pipName)
}

func testAccCheckIBMISBareMetalServerVNIConfig(vpcname, subnetname, sshname, publicKey, vniname, name string) string {
return fmt.Sprintf(`
resource "ibm_is_vpc" "testacc_vpc" {
Expand Down
22 changes: 22 additions & 0 deletions website/docs/r/is_bare_metal_server.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,27 @@ resource "ibm_is_bare_metal_server" "bms" {

```

### Create bare metal server with bandwidth
```terraform
resource "ibm_is_bare_metal_server" "bms" {
bandwidth = 25000
profile = "bx3-metal-48x256"
name = "example-bms"
image = "r134-31c8ca90-2623-48d7-8cf7-737be6fc4c3e"
zone = "us-south-3"
keys = [ibm_is_ssh_key.example.id]
primary_network_attachment {
name = "test-vni-100-102"
virtual_network_interface {
id = ibm_is_virtual_network_interface.testacc_vni.id
}
allowed_vlans = [100, 102]
}
vpc = ibm_is_vpc.example.id
}

```

## Timeouts

ibm_is_bare-metal_server provides the following [Timeouts](https://www.terraform.io/docs/configuration/resources.html#timeouts) configuration options:
Expand All @@ -117,6 +138,7 @@ Review the argument references that you can specify for your resource.
**&#x2022;** For more information, about creating access tags, see [working with tags](https://cloud.ibm.com/docs/account?topic=account-tag&interface=ui#create-access-console).</br>
**&#x2022;** You must have the access listed in the [Granting users access to tag resources](https://cloud.ibm.com/docs/account?topic=account-access) for `access_tags`</br>
**&#x2022;** `access_tags` must be in the format `key:value`.
- `bandwidth` - (Integer) The total bandwidth (in megabits per second) shared across the bare metal server's network interfaces. The specified value must match one of the bandwidth values in the bare metal server's profile.
- `delete_type` - (Optional, String) Type of deletion on destroy. **soft** signals running operating system to quiesce and shutdown cleanly, **hard** immediately stop the server. By default its `hard`.
- `enable_secure_boot` - (Optional, Boolean) Indicates whether secure boot is enabled. If enabled, the image must support secure boot or the server will fail to boot. Updating `enable_secure_boot` requires the server to be stopped and then it would be started.
- `image` - (Required, String) ID of the image.
Expand Down
Loading