mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-07-06 14:03:58 +00:00
89 lines
3.9 KiB
Go
89 lines
3.9 KiB
Go
package sdn
|
|
|
|
import (
|
|
"github.com/bpg/terraform-provider-proxmox/fwprovider/helpers/ptrConversion"
|
|
"github.com/bpg/terraform-provider-proxmox/proxmox/cluster/sdn/zones"
|
|
"github.com/hashicorp/terraform-plugin-framework/types"
|
|
)
|
|
|
|
type sdnZoneModel struct {
|
|
ID types.String `tfsdk:"id"`
|
|
Name types.String `tfsdk:"name"`
|
|
Type types.String `tfsdk:"type"`
|
|
IPAM types.String `tfsdk:"ipam"`
|
|
DNS types.String `tfsdk:"dns"`
|
|
ReverseDNS types.String `tfsdk:"reversedns"`
|
|
DNSZone types.String `tfsdk:"dns_zone"`
|
|
Nodes types.String `tfsdk:"nodes"`
|
|
MTU types.Int64 `tfsdk:"mtu"`
|
|
// VLAN.
|
|
Bridge types.String `tfsdk:"bridge"`
|
|
// QinQ.
|
|
ServiceVLAN types.Int64 `tfsdk:"tag"`
|
|
ServiceVLANProtocol types.String `tfsdk:"vlan_protocol"`
|
|
// VXLAN.
|
|
Peers types.String `tfsdk:"peers"`
|
|
// EVPN.
|
|
Controller types.String `tfsdk:"controller"`
|
|
ExitNodes types.String `tfsdk:"exit_nodes"`
|
|
PrimaryExitNode types.String `tfsdk:"primary_exit_node"`
|
|
RouteTargetImport types.String `tfsdk:"rt_import"`
|
|
VRFVXLANID types.Int64 `tfsdk:"vrf_vxlan"`
|
|
ExitNodesLocalRouting types.Bool `tfsdk:"exit_nodes_local_routing"`
|
|
AdvertiseSubnets types.Bool `tfsdk:"advertise_subnets"`
|
|
DisableARPNDSuppression types.Bool `tfsdk:"disable_arp_nd_suppression"`
|
|
}
|
|
|
|
func (m *sdnZoneModel) importFromAPI(name string, data *zones.ZoneData) {
|
|
m.ID = types.StringValue(name)
|
|
m.Name = types.StringValue(name)
|
|
|
|
m.Type = types.StringPointerValue(data.Type)
|
|
m.IPAM = types.StringPointerValue(data.IPAM)
|
|
m.DNS = types.StringPointerValue(data.DNS)
|
|
m.ReverseDNS = types.StringPointerValue(data.ReverseDNS)
|
|
m.DNSZone = types.StringPointerValue(data.DNSZone)
|
|
m.Nodes = types.StringPointerValue(data.Nodes)
|
|
m.MTU = types.Int64PointerValue(data.MTU)
|
|
m.Bridge = types.StringPointerValue(data.Bridge)
|
|
m.ServiceVLAN = types.Int64PointerValue(data.ServiceVLAN)
|
|
m.ServiceVLANProtocol = types.StringPointerValue(data.ServiceVLANProtocol)
|
|
m.Peers = types.StringPointerValue(data.Peers)
|
|
m.Controller = types.StringPointerValue(data.Controller)
|
|
m.ExitNodes = types.StringPointerValue(data.ExitNodes)
|
|
m.PrimaryExitNode = types.StringPointerValue(data.PrimaryExitNode)
|
|
m.RouteTargetImport = types.StringPointerValue(data.RouteTargetImport)
|
|
m.VRFVXLANID = types.Int64PointerValue(data.VRFVXLANID)
|
|
m.ExitNodesLocalRouting = types.BoolPointerValue(ptrConversion.Int64ToBoolPtr(data.ExitNodesLocalRouting))
|
|
m.AdvertiseSubnets = types.BoolPointerValue(ptrConversion.Int64ToBoolPtr(data.AdvertiseSubnets))
|
|
m.DisableARPNDSuppression = types.BoolPointerValue(ptrConversion.Int64ToBoolPtr(data.DisableARPNDSuppression))
|
|
}
|
|
|
|
func (m *sdnZoneModel) toAPIRequestBody() *zones.ZoneRequestData {
|
|
data := &zones.ZoneRequestData{}
|
|
|
|
data.ID = m.Name.ValueString()
|
|
|
|
data.Type = m.Type.ValueStringPointer()
|
|
data.IPAM = m.IPAM.ValueStringPointer()
|
|
data.DNS = m.DNS.ValueStringPointer()
|
|
data.ReverseDNS = m.ReverseDNS.ValueStringPointer()
|
|
data.DNSZone = m.DNSZone.ValueStringPointer()
|
|
data.Nodes = m.Nodes.ValueStringPointer()
|
|
data.MTU = m.MTU.ValueInt64Pointer()
|
|
data.Bridge = m.Bridge.ValueStringPointer()
|
|
data.ServiceVLAN = m.ServiceVLAN.ValueInt64Pointer()
|
|
data.ServiceVLANProtocol = m.ServiceVLANProtocol.ValueStringPointer()
|
|
data.Peers = m.Peers.ValueStringPointer()
|
|
data.Controller = m.Controller.ValueStringPointer()
|
|
data.ExitNodes = m.ExitNodes.ValueStringPointer()
|
|
data.PrimaryExitNode = m.PrimaryExitNode.ValueStringPointer()
|
|
data.RouteTargetImport = m.RouteTargetImport.ValueStringPointer()
|
|
data.VRFVXLANID = m.VRFVXLANID.ValueInt64Pointer()
|
|
data.ExitNodesLocalRouting = ptrConversion.BoolToInt64Ptr(m.ExitNodesLocalRouting.ValueBoolPointer())
|
|
data.AdvertiseSubnets = ptrConversion.BoolToInt64Ptr(m.AdvertiseSubnets.ValueBoolPointer())
|
|
data.DisableARPNDSuppression = ptrConversion.BoolToInt64Ptr(m.DisableARPNDSuppression.ValueBoolPointer())
|
|
|
|
return data
|
|
}
|