This is an automated email from the ASF dual-hosted git repository.

sureshanaparti pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/cloudstack-terraform-provider.git


The following commit(s) were added to refs/heads/main by this push:
     new 7b2f74b  Add VR address parameter to network (#326)
7b2f74b is described below

commit 7b2f74b8adbbb2b6f70183a7ee162d4c1b9f2f07
Author: bddvlpr <[email protected]>
AuthorDate: Wed Sep 2 06:51:27 2026 +0200

    Add VR address parameter to network (#326)
---
 cloudstack/resource_cloudstack_network.go      | 20 ++++++++++
 cloudstack/resource_cloudstack_network_test.go | 53 ++++++++++++++++++++++++++
 website/docs/r/network.html.markdown           | 20 ++++++++--
 3 files changed, 90 insertions(+), 3 deletions(-)

diff --git a/cloudstack/resource_cloudstack_network.go 
b/cloudstack/resource_cloudstack_network.go
index 1aebe76..f530a1d 100644
--- a/cloudstack/resource_cloudstack_network.go
+++ b/cloudstack/resource_cloudstack_network.go
@@ -120,6 +120,18 @@ func resourceCloudStackNetwork() *schema.Resource {
                                ForceNew: true,
                        },
 
+                       "routerip": {
+                               Type:     schema.TypeString,
+                               Optional: true,
+                               ForceNew: true,
+                       },
+
+                       "routeripv6": {
+                               Type:     schema.TypeString,
+                               Optional: true,
+                               ForceNew: true,
+                       },
+
                        "startip": {
                                Type:         schema.TypeString,
                                Optional:     true,
@@ -293,6 +305,14 @@ func resourceCloudStackNetworkCreate(d 
*schema.ResourceData, meta interface{}) e
                }
        }
 
+       if routerip, ok := d.GetOk("routerip"); ok {
+               p.SetRouterip(routerip.(string))
+       }
+
+       if routeripv6, ok := d.GetOk("routeripv6"); ok {
+               p.SetRouteripv6(routeripv6.(string))
+       }
+
        // Set the network domain if we have one
        if networkDomain, ok := d.GetOk("network_domain"); ok {
                p.SetNetworkdomain(networkDomain.(string))
diff --git a/cloudstack/resource_cloudstack_network_test.go 
b/cloudstack/resource_cloudstack_network_test.go
index 6fc82ac..de06b8e 100644
--- a/cloudstack/resource_cloudstack_network_test.go
+++ b/cloudstack/resource_cloudstack_network_test.go
@@ -285,6 +285,27 @@ func TestAccCloudStackNetwork_ipv6_custom_gateway(t 
*testing.T) {
        })
 }
 
+func TestAccCloudStackNetwork_routerIPs(t *testing.T) {
+       var network cloudstack.Network
+
+       resource.Test(t, resource.TestCase{
+               PreCheck:     func() { testAccPreCheck(t) },
+               Providers:    testAccProviders,
+               CheckDestroy: testAccCheckCloudStackNetworkDestroy,
+               Steps: []resource.TestStep{
+                       {
+                               Config: testAccCloudStackNetwork_routerIPs,
+                               Check: resource.ComposeTestCheckFunc(
+                                       testAccCheckCloudStackNetworkExists(
+                                               
"cloudstack_network.router_ips", &network),
+                                       resource.TestCheckResourceAttr(
+                                               
"cloudstack_network.router_ips", "routerip", "10.20.0.2"),
+                               ),
+                       },
+               },
+       })
+}
+
 func testAccCheckCloudStackNetworkExists(
        n string, network *cloudstack.Network) resource.TestCheckFunc {
        return func(s *terraform.State) error {
@@ -633,6 +654,38 @@ resource "cloudstack_network" "foo" {
   zone = "Sandbox-simulator"
 }`
 
+const testAccCloudStackNetwork_routerIPs = `
+resource "cloudstack_network_offering" "router_ips" {
+  name                = "terraform-router-ip-network-offering"
+  display_text        = "Terraform Router IP Network Offering"
+  guest_ip_type       = "Shared"
+  traffic_type        = "Guest"
+  network_rate        = 200
+  conserve_mode       = true
+  enable              = true
+  specify_vlan        = true
+  specify_ip_ranges   = true
+  supported_services  = ["Dhcp", "Dns", "UserData"]
+  service_provider_list = {
+    Dhcp     = "VirtualRouter"
+    Dns      = "VirtualRouter"
+    UserData = "VirtualRouter"
+  }
+}
+
+resource "cloudstack_network" "router_ips" {
+  name             = "terraform-router-ip-network"
+  display_text     = "terraform-router-ip-network"
+  cidr             = "10.20.0.0/24"
+  gateway          = "10.20.0.1"
+  startip          = "10.20.0.2"
+  endip            = "10.20.0.250"
+  routerip         = "10.20.0.2"
+  network_offering = cloudstack_network_offering.router_ips.id
+  zone             = "Sandbox-simulator"
+  vlan             = 300
+}`
+
 const testAccCloudStackNetwork_vpcProjectInheritance = `
 resource "cloudstack_vpc" "foo" {
   name = "terraform-vpc"
diff --git a/website/docs/r/network.html.markdown 
b/website/docs/r/network.html.markdown
index 4adae63..ad3031c 100644
--- a/website/docs/r/network.html.markdown
+++ b/website/docs/r/network.html.markdown
@@ -23,14 +23,20 @@ resource "cloudstack_network" "default" {
 }
 ```
 
-With IPv6 support:
+Shared network with explicit IPv4 and IPv6 router addresses:
 
 ```hcl
-resource "cloudstack_network" "ipv6" {
+resource "cloudstack_network" "shared" {
   name             = "test-network-ipv6"
   cidr             = "10.0.0.0/16"
+  startip          = "10.0.0.2"
+  endip            = "10.0.255.254"
   ip6cidr          = "2001:db8::/64"
-  network_offering = "Default Network"
+  startipv6        = "2001:db8::2"
+  endipv6          = "2001:db8::ffff"
+  routerip         = "10.0.0.2"
+  routeripv6       = "2001:db8::2"
+  network_offering = "Shared Network Offering"
   zone             = "zone-1"
 }
 ```
@@ -86,6 +92,14 @@ The following arguments are supported:
     in this network. Must fall within `ip6cidr`. Defaults to the second address
     in the subnet (network address + 1, e.g., 2001:db8::1 for 2001:db8::/64).
 
+* `routerip` - (Optional) IPv4 address to assign to the router in a shared
+    network. Requires CloudStack 4.16 or later. Changing this forces a new
+    resource to be created.
+
+* `routeripv6` - (Optional) IPv6 address to assign to the router in a shared
+    network. Requires CloudStack 4.16 or later. Changing this forces a new
+    resource to be created.
+
 * `startipv6` - (Optional) Start of the IPv6 block that will be available on 
the
     network. Must fall within `ip6cidr`. Only applied when the network offering
     has `specifyipranges` enabled; in that case it defaults to the second

Reply via email to