Skip to content

Commit

Permalink
F #510: Add floating IP allocation
Browse files Browse the repository at this point in the history
  • Loading branch information
sk4zuzu authored and treywelsh committed Jan 3, 2024
1 parent 6c41668 commit b88e830
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 2 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
FEATURES:

* **New Resource**: `opennebula_marketplace` (#414)
* ***New Data Source**: `opennebula_marketplace` (#414)
* **New Data Source**: `opennebula_marketplace` (#414)
* **New Resource**: `opennebula_marketplace_appliance` (#476)
* **New Data Source**: `opennebula_marketplace_appliance` (#476)
* resources/opennebula_virtual_router_nic: add floating IP allocation (#510)

BUG FIXES:

Expand Down
14 changes: 14 additions & 0 deletions opennebula/resource_opennebula_virtual_router_nic.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@ func resourceOpennebulaVirtualRouterNIC() *schema.Resource {
Type: schema.TypeInt,
},
},
"floating_ip": {
Type: schema.TypeBool,
Optional: true,
Default: false,
ForceNew: true,
},
},
}
}
Expand Down Expand Up @@ -114,6 +120,11 @@ func resourceOpennebulaVirtualRouterNICCreate(ctx context.Context, d *schema.Res
secGroups := ArrayToString(v.([]interface{}), ",")
nicTpl.Add(shared.SecurityGroups, secGroups)
}
if v, ok := d.GetOk("floating_ip"); ok {
if v.(bool) {
nicTpl.Add("FLOATING_IP", "YES")
}
}

// wait before checking NIC
nicID, err := vrNICAttach(ctx, d.Timeout(schema.TimeoutCreate), controller, vRouterID, nicTpl)
Expand Down Expand Up @@ -185,13 +196,16 @@ func resourceOpennebulaVirtualRouterNICRead(ctx context.Context, d *schema.Resou
sg = append(sg, int(sgInt))
}

floatingIP, _ := nic.GetStr("FLOATING_IP")

d.Set("network_id", networkID)
d.Set("virtual_router_id", vr.ID)
d.Set("physical_device", phyDev)
d.Set("network", network)
d.Set("model", model)
d.Set("virtio_queues", virtioQueues)
d.Set("security_groups", sg)
d.Set("floating_ip", strings.ToUpper(floatingIP) == "YES")

return nil
}
Expand Down
6 changes: 6 additions & 0 deletions opennebula/resource_opennebula_virtual_router_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ func TestAccVirtualRouter(t *testing.T) {
resource.TestCheckResourceAttrSet("opennebula_virtual_router.test", "gname"),
resource.TestCheckResourceAttrSet("opennebula_virtual_router_nic.nic1", "network_id"),
resource.TestCheckResourceAttrSet("opennebula_virtual_router_nic.nic2", "network_id"),
resource.TestCheckResourceAttr("opennebula_virtual_router_nic.nic1", "floating_ip", "true"),
resource.TestCheckResourceAttr("opennebula_virtual_router_nic.nic2", "floating_ip", "false"),
testAccCheckVirtualRouterPermissions(&shared.Permissions{
OwnerU: 1,
OwnerM: 1,
Expand All @@ -124,6 +126,8 @@ func TestAccVirtualRouter(t *testing.T) {
resource.TestCheckResourceAttrSet("opennebula_virtual_router.test", "gname"),
resource.TestCheckResourceAttrSet("opennebula_virtual_router_nic.nic1", "network_id"),
resource.TestCheckResourceAttrSet("opennebula_virtual_router_nic.nic2", "network_id"),
resource.TestCheckResourceAttr("opennebula_virtual_router_nic.nic1", "floating_ip", "false"),
resource.TestCheckResourceAttr("opennebula_virtual_router_nic.nic2", "floating_ip", "false"),
testAccCheckVirtualRouterPermissions(&shared.Permissions{
OwnerU: 1,
OwnerM: 1,
Expand Down Expand Up @@ -404,6 +408,7 @@ resource "opennebula_virtual_router_nic" "nic2" {
}
resource "opennebula_virtual_router_nic" "nic1" {
floating_ip = true
virtual_router_id = opennebula_virtual_router.test.id
network_id = opennebula_virtual_network.network1.id
}
Expand Down Expand Up @@ -449,6 +454,7 @@ resource "opennebula_virtual_router_nic" "nic2" {
}
resource "opennebula_virtual_router_nic" "nic1" {
floating_ip = false
virtual_router_id = opennebula_virtual_router.test.id
network_id = opennebula_virtual_network.network1.id
}
Expand Down
10 changes: 9 additions & 1 deletion website/docs/r/virtual_router_nic.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,13 @@ resource "opennebula_virtual_network" "example" {
clusters = [0]
}
resource "opennebula_virtual_router_nic" "example" {
resource "opennebula_virtual_router_nic" "example1" {
floating_ip = true
virtual_router_id = opennebula_virtual_router.example.id
network_id = opennebula_virtual_network.example.id
}
resource "opennebula_virtual_router_nic" "example2" {
virtual_router_id = opennebula_virtual_router.example.id
network_id = opennebula_virtual_network.example.id
}
Expand All @@ -105,6 +111,7 @@ The following arguments are supported:
* `virtio_queues` - (Optional) Virtio multi-queue size. Only if `model` is `virtio`.
* `physical_device` - (Optional) Physical device hosting the virtual network.
* `security_groups` - (Optional) List of security group IDs to use on the virtual network.
* `floating_ip` - (Optional) Allocate floating IP for the NIC. Defaults to `false`.

## Attribute Reference

Expand All @@ -115,6 +122,7 @@ The following attribute are exported:
* `virtio_queues` - Virtio multi-queue size. Only if `model` is `virtio`.
* `physical_device` - Physical device hosting the virtual network.
* `security_groups` - List of security group IDs to use on the virtual network.
* `floating_ip` - Allocate floating IP for the NIC. Defaults to `false`.

## Import

Expand Down

0 comments on commit b88e830

Please sign in to comment.