diff --git a/mysql.go b/mysql.go index 8fbf3bb3e..02522bcba 100644 --- a/mysql.go +++ b/mysql.go @@ -427,7 +427,7 @@ type MySQLUpdateOptions struct { ClusterSize int `json:"cluster_size,omitempty"` Version string `json:"version,omitempty"` EngineConfig *MySQLDatabaseEngineConfig `json:"engine_config,omitempty"` - PrivateNetwork *DatabasePrivateNetwork `json:"private_network,omitempty"` + PrivateNetwork **DatabasePrivateNetwork `json:"private_network,omitempty"` } // MySQLDatabaseBackup is information for interacting with a backup for the existing MySQL Database diff --git a/test/unit/fixtures/vpc_get.json b/test/unit/fixtures/vpc_get.json index 11da7e1b2..111f9a72f 100644 --- a/test/unit/fixtures/vpc_get.json +++ b/test/unit/fixtures/vpc_get.json @@ -27,6 +27,13 @@ ] } ], + "databases": [ + { + "id": 123, + "ipv4_range": "10.0.0.4/32", + "ipv6_range": null + } + ], "updated": "2023-09-11T00:00:00" } ], diff --git a/test/unit/fixtures/vpc_list.json b/test/unit/fixtures/vpc_list.json index 47a254bd7..d4fc2c49a 100644 --- a/test/unit/fixtures/vpc_list.json +++ b/test/unit/fixtures/vpc_list.json @@ -34,6 +34,13 @@ ] } ], + "databases": [ + { + "id": 123, + "ipv4_range": "10.0.0.4/32", + "ipv6_range": null + } + ], "updated": "2023-09-11T00:00:00" } ], diff --git a/test/unit/fixtures/vpc_subnet_create.json b/test/unit/fixtures/vpc_subnet_create.json index db67569a1..efdae162b 100644 --- a/test/unit/fixtures/vpc_subnet_create.json +++ b/test/unit/fixtures/vpc_subnet_create.json @@ -8,6 +8,7 @@ } ], "linodes": [], + "databases": [], "created": "2025-01-01T12:00:00", "updated": "2025-01-01T12:00:00" } \ No newline at end of file diff --git a/test/unit/fixtures/vpc_subnet_get.json b/test/unit/fixtures/vpc_subnet_get.json index 33534f961..1b9f23f46 100644 --- a/test/unit/fixtures/vpc_subnet_get.json +++ b/test/unit/fixtures/vpc_subnet_get.json @@ -24,6 +24,13 @@ ] } ], + "databases": [ + { + "id": 123, + "ipv4_range": "10.0.0.4/32", + "ipv6_range": null + } + ], "created": "2025-01-01T10:00:00", "updated": "2025-01-02T10:00:00" } \ No newline at end of file diff --git a/test/unit/fixtures/vpc_subnets_list.json b/test/unit/fixtures/vpc_subnets_list.json index ccedc7604..5d8498616 100644 --- a/test/unit/fixtures/vpc_subnets_list.json +++ b/test/unit/fixtures/vpc_subnets_list.json @@ -26,7 +26,8 @@ } ] } - ] + ], + "databases": [] }, { "id": 124, @@ -34,6 +35,13 @@ "ipv4": "192.168.4.0/24", "ipv6": [], "linodes": [], + "databases": [ + { + "id": 123, + "ipv4_range": "10.0.0.4/32", + "ipv6_range": null + } + ], "updated": "2023-09-11T00:00:00" } ], diff --git a/test/unit/mysql_test.go b/test/unit/mysql_test.go index 1da319143..4fdb5e8c0 100644 --- a/test/unit/mysql_test.go +++ b/test/unit/mysql_test.go @@ -102,11 +102,13 @@ func TestDatabaseMySQL_Update(t *testing.T) { ConnectTimeout: linodego.Pointer(20), }, }, - PrivateNetwork: &linodego.DatabasePrivateNetwork{ - VPCID: 1234, - SubnetID: 5678, - PublicAccess: true, - }, + PrivateNetwork: linodego.DoublePointer( + linodego.DatabasePrivateNetwork{ + VPCID: 1234, + SubnetID: 5678, + PublicAccess: true, + }, + ), } base.MockPut("databases/mysql/instances/123", fixtureData) diff --git a/test/unit/vpc_subnets_test.go b/test/unit/vpc_subnets_test.go index 5398e4261..9c6c3b635 100644 --- a/test/unit/vpc_subnets_test.go +++ b/test/unit/vpc_subnets_test.go @@ -70,6 +70,10 @@ func TestVPCSubnet_Get(t *testing.T) { assert.Equal(t, 422, subnet.Linodes[0].Interfaces[1].ID) assert.False(t, subnet.Linodes[0].Interfaces[1].Active, "Expected interface to be inactive") assert.Nil(t, subnet.Linodes[0].Interfaces[1].ConfigID) + + assert.Equal(t, 123, subnet.Databases[0].ID) + assert.Equal(t, "10.0.0.4/32", *subnet.Databases[0].IPv4Range) + assert.Nil(t, subnet.Databases[0].IPv6Range) } func TestVPCSubnets_List(t *testing.T) { @@ -112,6 +116,10 @@ func TestVPCSubnets_List(t *testing.T) { assert.Equal(t, "192.168.4.0/24", subnet.IPv4, "Expected second subnet IPv4 to match") assert.Empty(t, subnet.IPv6, 0, "Expected second subnet to not support IPv6") assert.Empty(t, subnet.Linodes, 0, "Expected second subnet to not have Linodes") + + assert.Equal(t, 123, subnet.Databases[0].ID) + assert.Equal(t, "10.0.0.4/32", *subnet.Databases[0].IPv4Range) + assert.Nil(t, subnet.Databases[0].IPv6Range) } func TestVPCSubnet_Update(t *testing.T) { diff --git a/test/unit/vpc_test.go b/test/unit/vpc_test.go index 8b82a932e..9384d080f 100644 --- a/test/unit/vpc_test.go +++ b/test/unit/vpc_test.go @@ -89,6 +89,10 @@ func TestVPC_Get(t *testing.T) { assert.Equal(t, true, vpc.Subnets[0].Linodes[0].Interfaces[0].Active) assert.Equal(t, 4567, *vpc.Subnets[0].Linodes[0].Interfaces[0].ConfigID) assert.Equal(t, 421, vpc.Subnets[0].Linodes[0].Interfaces[0].ID) + + assert.Equal(t, 123, vpc.Subnets[0].Databases[0].ID) + assert.Equal(t, "10.0.0.4/32", *vpc.Subnets[0].Databases[0].IPv4Range) + assert.Nil(t, vpc.Subnets[0].Databases[0].IPv6Range) } func TestVPC_List(t *testing.T) { @@ -127,6 +131,10 @@ func TestVPC_List(t *testing.T) { assert.Equal(t, true, vpc.Subnets[0].Linodes[0].Interfaces[0].Active) assert.Equal(t, 4567, *vpc.Subnets[0].Linodes[0].Interfaces[0].ConfigID) assert.Equal(t, 421, vpc.Subnets[0].Linodes[0].Interfaces[0].ID) + + assert.Equal(t, 123, vpc.Subnets[0].Databases[0].ID) + assert.Equal(t, "10.0.0.4/32", *vpc.Subnets[0].Databases[0].IPv4Range) + assert.Nil(t, vpc.Subnets[0].Databases[0].IPv6Range) } func TestVPC_Update(t *testing.T) { diff --git a/vpc_subnet.go b/vpc_subnet.go index 71b2b5519..58ddd0a2e 100644 --- a/vpc_subnet.go +++ b/vpc_subnet.go @@ -22,6 +22,13 @@ type VPCSubnetLinode struct { Interfaces []VPCSubnetLinodeInterface `json:"interfaces"` } +// VPCSubnetDatabase represents a Linode currently assigned to a VPC subnet. +type VPCSubnetDatabase struct { + ID int `json:"id"` + IPv4Range *string `json:"ipv4_range"` + IPv6Range *string `json:"ipv6_range"` +} + type VPCSubnet struct { ID int `json:"id"` Label string `json:"label"` @@ -30,9 +37,11 @@ type VPCSubnet struct { // NOTE: IPv6 VPCs may not currently be available to all users. IPv6 []VPCIPv6Range `json:"ipv6"` - Linodes []VPCSubnetLinode `json:"linodes"` - Created *time.Time `json:"-"` - Updated *time.Time `json:"-"` + Linodes []VPCSubnetLinode `json:"linodes"` + Databases []VPCSubnetDatabase `json:"databases"` + + Created *time.Time `json:"-"` + Updated *time.Time `json:"-"` } type VPCSubnetCreateOptions struct {