@@ -1734,3 +1734,184 @@ func testAccCheckIBMISVPCCustomResolverDelegatedWithNameVPCCrnConfig(vpcname1, v
17341734 }
17351735 ` , vpcname1 , acc .ISZoneName , acc .ISZoneName , vpcname2 , dnsName )
17361736}
1737+
1738+ func TestAccIBMISVPC_DnsResolverUpdate (t * testing.T ) {
1739+ var hubVpc , delegatedVpc string
1740+ hubVpcName := fmt .Sprintf ("test-vpc-hub-%d" , acctest .RandIntRange (10 , 100 ))
1741+ delegatedVpcName := fmt .Sprintf ("test-vpc-spoke-%d" , acctest .RandIntRange (10 , 100 ))
1742+ dnsInstanceName := fmt .Sprintf ("dns-cr-instance-%d" , acctest .RandIntRange (10 , 100 ))
1743+ customResolverName := fmt .Sprintf ("test-hub-true-customresolver-%d" , acctest .RandIntRange (10 , 100 ))
1744+ region := acc .ISZoneName [:len (acc .ISZoneName )- 2 ] // Extract region from zone
1745+
1746+ resource .Test (t , resource.TestCase {
1747+ PreCheck : func () { acc .TestAccPreCheck (t ) },
1748+ Providers : acc .TestAccProviders ,
1749+ CheckDestroy : testAccCheckIBMISVPCDestroy ,
1750+ Steps : []resource.TestStep {
1751+ {
1752+ Config : testAccCheckIBMISVPCDnsResolverSystemConfig (hubVpcName , delegatedVpcName , dnsInstanceName , customResolverName , region ),
1753+ Check : resource .ComposeTestCheckFunc (
1754+ testAccCheckIBMISVPCExists ("ibm_is_vpc.hub_true" , hubVpc ),
1755+ testAccCheckIBMISVPCExists ("ibm_is_vpc.hub_false_delegated" , delegatedVpc ),
1756+ resource .TestCheckResourceAttr ("ibm_is_vpc.hub_true" , "name" , hubVpcName ),
1757+ resource .TestCheckResourceAttr ("ibm_is_vpc.hub_true" , "dns.0.enable_hub" , "true" ),
1758+ resource .TestCheckResourceAttr ("ibm_is_vpc.hub_false_delegated" , "name" , delegatedVpcName ),
1759+ resource .TestCheckResourceAttr ("ibm_is_vpc.hub_false_delegated" , "dns.0.enable_hub" , "false" ),
1760+ resource .TestCheckResourceAttr ("ibm_is_vpc.hub_false_delegated" , "dns.0.resolver.0.type" , "system" ),
1761+ resource .TestCheckResourceAttrSet ("ibm_dns_custom_resolver.test_hub_true" , "id" ),
1762+ resource .TestCheckResourceAttr ("ibm_dns_custom_resolver.test_hub_true" , "name" , customResolverName ),
1763+ resource .TestCheckResourceAttr ("ibm_dns_custom_resolver.test_hub_true" , "enabled" , "true" ),
1764+ resource .TestCheckResourceAttr ("ibm_dns_custom_resolver.test_hub_true" , "high_availability" , "true" ),
1765+ ),
1766+ },
1767+ {
1768+ Config : testAccCheckIBMISVPCDnsResolverDelegatedConfig (hubVpcName , delegatedVpcName , dnsInstanceName , customResolverName , region ),
1769+ Check : resource .ComposeTestCheckFunc (
1770+ testAccCheckIBMISVPCExists ("ibm_is_vpc.hub_true" , hubVpc ),
1771+ testAccCheckIBMISVPCExists ("ibm_is_vpc.hub_false_delegated" , delegatedVpc ),
1772+ resource .TestCheckResourceAttr ("ibm_is_vpc.hub_true" , "name" , hubVpcName ),
1773+ resource .TestCheckResourceAttr ("ibm_is_vpc.hub_true" , "dns.0.enable_hub" , "true" ),
1774+ resource .TestCheckResourceAttr ("ibm_is_vpc.hub_false_delegated" , "name" , delegatedVpcName ),
1775+ resource .TestCheckResourceAttr ("ibm_is_vpc.hub_false_delegated" , "dns.0.enable_hub" , "false" ),
1776+ resource .TestCheckResourceAttr ("ibm_is_vpc.hub_false_delegated" , "dns.0.resolver.0.type" , "delegated" ),
1777+ resource .TestCheckResourceAttr ("ibm_is_vpc.hub_false_delegated" , "dns.0.resolver.0.dns_binding_name" , "test-dns-binding" ),
1778+ resource .TestCheckResourceAttrPair ("ibm_is_vpc.hub_false_delegated" , "dns.0.resolver.0.vpc_crn" , "ibm_is_vpc.hub_true" , "crn" ),
1779+ resource .TestCheckResourceAttrSet ("ibm_dns_custom_resolver.test_hub_true" , "id" ),
1780+ resource .TestCheckResourceAttr ("ibm_dns_custom_resolver.test_hub_true" , "name" , customResolverName ),
1781+ resource .TestCheckResourceAttr ("ibm_dns_custom_resolver.test_hub_true" , "enabled" , "true" ),
1782+ resource .TestCheckResourceAttr ("ibm_dns_custom_resolver.test_hub_true" , "high_availability" , "true" ),
1783+ ),
1784+ },
1785+ },
1786+ })
1787+ }
1788+
1789+ func testAccCheckIBMISVPCDnsResolverSystemConfig (hubVpcName , delegatedVpcName , dnsInstanceName , customResolverName , region string ) string {
1790+ return fmt .Sprintf (`
1791+ data "ibm_resource_group" "rg" {
1792+ is_default = true
1793+ }
1794+
1795+ resource "ibm_is_vpc" "hub_true" {
1796+ name = "%s"
1797+ dns {
1798+ enable_hub = true
1799+ }
1800+ }
1801+
1802+ resource "ibm_is_subnet" "hub_true_sub1" {
1803+ name = "hub-true-subnet1"
1804+ vpc = ibm_is_vpc.hub_true.id
1805+ zone = "%s-1"
1806+ total_ipv4_address_count = 16
1807+ }
1808+
1809+ resource "ibm_is_subnet" "hub_true_sub2" {
1810+ name = "hub-true-subnet2"
1811+ vpc = ibm_is_vpc.hub_true.id
1812+ zone = "%s-1"
1813+ total_ipv4_address_count = 16
1814+ }
1815+
1816+ resource "ibm_resource_instance" "dns-cr-instance" {
1817+ name = "%s"
1818+ resource_group_id = data.ibm_resource_group.rg.id
1819+ location = "global"
1820+ service = "dns-svcs"
1821+ plan = "standard-dns"
1822+ }
1823+
1824+ resource "ibm_dns_custom_resolver" "test_hub_true" {
1825+ name = "%s"
1826+ instance_id = ibm_resource_instance.dns-cr-instance.guid
1827+ description = "new test CR - TF"
1828+ high_availability = true
1829+ enabled = true
1830+ locations {
1831+ subnet_crn = ibm_is_subnet.hub_true_sub1.crn
1832+ enabled = true
1833+ }
1834+ locations {
1835+ subnet_crn = ibm_is_subnet.hub_true_sub2.crn
1836+ enabled = true
1837+ }
1838+ }
1839+
1840+ resource "ibm_is_vpc" "hub_false_delegated" {
1841+ depends_on = [ibm_dns_custom_resolver.test_hub_true]
1842+ name = "%s"
1843+ dns {
1844+ enable_hub = false
1845+ resolver {
1846+ type = "system"
1847+ }
1848+ }
1849+ }
1850+ ` , hubVpcName , region , region , dnsInstanceName , customResolverName , delegatedVpcName )
1851+ }
1852+
1853+ func testAccCheckIBMISVPCDnsResolverDelegatedConfig (hubVpcName , delegatedVpcName , dnsInstanceName , customResolverName , region string ) string {
1854+ return fmt .Sprintf (`
1855+ data "ibm_resource_group" "rg" {
1856+ is_default = true
1857+ }
1858+
1859+ resource "ibm_is_vpc" "hub_true" {
1860+ name = "%s"
1861+ dns {
1862+ enable_hub = true
1863+ }
1864+ }
1865+
1866+ resource "ibm_is_subnet" "hub_true_sub1" {
1867+ name = "hub-true-subnet1"
1868+ vpc = ibm_is_vpc.hub_true.id
1869+ zone = "%s-1"
1870+ total_ipv4_address_count = 16
1871+ }
1872+
1873+ resource "ibm_is_subnet" "hub_true_sub2" {
1874+ name = "hub-true-subnet2"
1875+ vpc = ibm_is_vpc.hub_true.id
1876+ zone = "%s-1"
1877+ total_ipv4_address_count = 16
1878+ }
1879+
1880+ resource "ibm_resource_instance" "dns-cr-instance" {
1881+ name = "%s"
1882+ resource_group_id = data.ibm_resource_group.rg.id
1883+ location = "global"
1884+ service = "dns-svcs"
1885+ plan = "standard-dns"
1886+ }
1887+
1888+ resource "ibm_dns_custom_resolver" "test_hub_true" {
1889+ name = "%s"
1890+ instance_id = ibm_resource_instance.dns-cr-instance.guid
1891+ description = "new test CR - TF"
1892+ high_availability = true
1893+ enabled = true
1894+ locations {
1895+ subnet_crn = ibm_is_subnet.hub_true_sub1.crn
1896+ enabled = true
1897+ }
1898+ locations {
1899+ subnet_crn = ibm_is_subnet.hub_true_sub2.crn
1900+ enabled = true
1901+ }
1902+ }
1903+
1904+ resource "ibm_is_vpc" "hub_false_delegated" {
1905+ depends_on = [ibm_dns_custom_resolver.test_hub_true]
1906+ name = "%s"
1907+ dns {
1908+ enable_hub = false
1909+ resolver {
1910+ type = "delegated"
1911+ dns_binding_name = "test-dns-binding"
1912+ vpc_crn = ibm_is_vpc.hub_true.crn
1913+ }
1914+ }
1915+ }
1916+ ` , hubVpcName , region , region , dnsInstanceName , customResolverName , delegatedVpcName )
1917+ }
0 commit comments