@@ -1704,6 +1704,157 @@ func TestAccInstance_EngineUpgrade(t *testing.T) {
17041704 })
17051705}
17061706
1707+ func TestAccInstance_PrivateNetworkWithStandaloneIP (t * testing.T ) {
1708+ tt := acctest .NewTestTools (t )
1709+ defer tt .Cleanup ()
1710+
1711+ latestEngineVersion := rdbchecks .GetLatestEngineVersion (tt , postgreSQLEngineName )
1712+
1713+ resource .ParallelTest (t , resource.TestCase {
1714+ PreCheck : func () { acctest .PreCheck (t ) },
1715+ ProtoV6ProviderFactories : tt .ProviderFactories ,
1716+ CheckDestroy : resource .ComposeTestCheckFunc (
1717+ rdbchecks .IsInstanceDestroyed (tt ),
1718+ vpcchecks .CheckPrivateNetworkDestroy (tt ),
1719+ ),
1720+ Steps : []resource.TestStep {
1721+ // Test with standalone IP address (without CIDR notation)
1722+ {
1723+ Config : fmt .Sprintf (`
1724+ resource "scaleway_vpc" "main" {
1725+ name = "test-rdb-standalone-ip"
1726+ }
1727+
1728+ resource "scaleway_vpc_private_network" "pn" {
1729+ name = "test-pn-standalone-ip"
1730+ vpc_id = scaleway_vpc.main.id
1731+ ipv4_subnet {
1732+ subnet = "10.213.254.0/24"
1733+ }
1734+ }
1735+
1736+ resource "scaleway_rdb_instance" "main" {
1737+ name = "test-rdb-standalone-ip"
1738+ node_type = "db-dev-s"
1739+ engine = %q
1740+ is_ha_cluster = false
1741+ disable_backup = true
1742+ user_name = "test_user"
1743+ password = "thiZ_is_v&ry_s3cret"
1744+ tags = ["terraform-test", "rdb-standalone-ip"]
1745+ volume_type = "sbs_5k"
1746+ volume_size_in_gb = 10
1747+
1748+ private_network {
1749+ ip_net = "10.213.254.4/28"
1750+ pn_id = scaleway_vpc_private_network.pn.id
1751+ port = 5432
1752+ }
1753+ }
1754+ ` , latestEngineVersion ),
1755+ Check : resource .ComposeTestCheckFunc (
1756+ vpcchecks .IsPrivateNetworkPresent (tt , "scaleway_vpc_private_network.pn" ),
1757+ isInstancePresent (tt , "scaleway_rdb_instance.main" ),
1758+ resource .TestCheckResourceAttr ("scaleway_rdb_instance.main" , "private_network.#" , "1" ),
1759+ resource .TestCheckResourceAttr ("scaleway_rdb_instance.main" , "private_network.0.enable_ipam" , "false" ),
1760+ resource .TestCheckResourceAttr ("scaleway_rdb_instance.main" , "private_network.0.port" , "5432" ),
1761+ resource .TestCheckResourceAttrPair ("scaleway_rdb_instance.main" , "private_network.0.pn_id" , "scaleway_vpc_private_network.pn" , "id" ),
1762+ resource .TestCheckResourceAttr ("scaleway_rdb_instance.main" , "private_network.0.ip_net" , "10.213.254.4/28" ),
1763+ resource .TestCheckResourceAttrSet ("scaleway_rdb_instance.main" , "private_network.0.ip" ),
1764+ ),
1765+ },
1766+ // Test with explicit CIDR notation /28
1767+ {
1768+ Config : fmt .Sprintf (`
1769+ resource "scaleway_vpc" "main" {
1770+ name = "test-rdb-standalone-ip"
1771+ }
1772+
1773+ resource "scaleway_vpc_private_network" "pn" {
1774+ name = "test-pn-standalone-ip"
1775+ vpc_id = scaleway_vpc.main.id
1776+ ipv4_subnet {
1777+ subnet = "10.213.254.0/24"
1778+ }
1779+ }
1780+
1781+ resource "scaleway_rdb_instance" "main" {
1782+ name = "test-rdb-standalone-ip"
1783+ node_type = "db-dev-s"
1784+ engine = %q
1785+ is_ha_cluster = false
1786+ disable_backup = true
1787+ user_name = "test_user"
1788+ password = "thiZ_is_v&ry_s3cret"
1789+ tags = ["terraform-test", "rdb-standalone-ip"]
1790+ volume_type = "sbs_5k"
1791+ volume_size_in_gb = 10
1792+
1793+ private_network {
1794+ ip_net = "10.213.254.20/28"
1795+ pn_id = scaleway_vpc_private_network.pn.id
1796+ port = 5432
1797+ }
1798+ }
1799+ ` , latestEngineVersion ),
1800+ Check : resource .ComposeTestCheckFunc (
1801+ vpcchecks .IsPrivateNetworkPresent (tt , "scaleway_vpc_private_network.pn" ),
1802+ isInstancePresent (tt , "scaleway_rdb_instance.main" ),
1803+ resource .TestCheckResourceAttr ("scaleway_rdb_instance.main" , "private_network.#" , "1" ),
1804+ resource .TestCheckResourceAttr ("scaleway_rdb_instance.main" , "private_network.0.enable_ipam" , "false" ),
1805+ resource .TestCheckResourceAttr ("scaleway_rdb_instance.main" , "private_network.0.port" , "5432" ),
1806+ resource .TestCheckResourceAttrPair ("scaleway_rdb_instance.main" , "private_network.0.pn_id" , "scaleway_vpc_private_network.pn" , "id" ),
1807+ resource .TestCheckResourceAttr ("scaleway_rdb_instance.main" , "private_network.0.ip_net" , "10.213.254.20/28" ),
1808+ resource .TestCheckResourceAttrSet ("scaleway_rdb_instance.main" , "private_network.0.ip" ),
1809+ ),
1810+ },
1811+ // Test update with a different CIDR
1812+ {
1813+ Config : fmt .Sprintf (`
1814+ resource "scaleway_vpc" "main" {
1815+ name = "test-rdb-standalone-ip"
1816+ }
1817+
1818+ resource "scaleway_vpc_private_network" "pn" {
1819+ name = "test-pn-standalone-ip"
1820+ vpc_id = scaleway_vpc.main.id
1821+ ipv4_subnet {
1822+ subnet = "10.213.254.0/24"
1823+ }
1824+ }
1825+
1826+ resource "scaleway_rdb_instance" "main" {
1827+ name = "test-rdb-standalone-ip"
1828+ node_type = "db-dev-s"
1829+ engine = %q
1830+ is_ha_cluster = false
1831+ disable_backup = true
1832+ user_name = "test_user"
1833+ password = "thiZ_is_v&ry_s3cret"
1834+ tags = ["terraform-test", "rdb-standalone-ip"]
1835+ volume_type = "sbs_5k"
1836+ volume_size_in_gb = 10
1837+
1838+ private_network {
1839+ ip_net = "10.213.254.36/28"
1840+ pn_id = scaleway_vpc_private_network.pn.id
1841+ port = 5432
1842+ }
1843+ }
1844+ ` , latestEngineVersion ),
1845+ Check : resource .ComposeTestCheckFunc (
1846+ vpcchecks .IsPrivateNetworkPresent (tt , "scaleway_vpc_private_network.pn" ),
1847+ isInstancePresent (tt , "scaleway_rdb_instance.main" ),
1848+ resource .TestCheckResourceAttr ("scaleway_rdb_instance.main" , "private_network.#" , "1" ),
1849+ resource .TestCheckResourceAttr ("scaleway_rdb_instance.main" , "private_network.0.enable_ipam" , "false" ),
1850+ resource .TestCheckResourceAttr ("scaleway_rdb_instance.main" , "private_network.0.ip_net" , "10.213.254.36/28" ),
1851+ resource .TestCheckResourceAttrSet ("scaleway_rdb_instance.main" , "private_network.0.ip" ),
1852+ ),
1853+ },
1854+ },
1855+ })
1856+ }
1857+
17071858func isInstancePresent (tt * acctest.TestTools , n string ) resource.TestCheckFunc {
17081859 return func (s * terraform.State ) error {
17091860 rs , ok := s .RootModule ().Resources [n ]
0 commit comments