This commit is contained in:
2025-08-04 16:11:16 +03:00
parent bae25296bb
commit 4b3f21d9be
239 changed files with 6585 additions and 784 deletions

View File

@@ -55,7 +55,7 @@ func flattenListExtnet(extList *extnet.ListExtNet) []map[string]interface{} {
"ipcidr": item.IPCIDR,
"milestones": item.Milestones,
"name": item.Name,
"network_id": item.NetworkID,
"network_ids": item.NetworkIDs,
"ovs_bridge": item.OVSBridge,
"pre_reservations_num": item.PreReservationsNum,
"pri_vnfdev_id": item.PriVNFDevID,
@@ -64,6 +64,10 @@ func flattenListExtnet(extList *extnet.ListExtNet) []map[string]interface{} {
"vlan_id": item.VLANID,
"check_ips": item.CheckIPs,
"vnfs": flattenExtnetVNFS(item.VNFs),
"zone_id": item.ZoneID,
"sec_vnfdev_id": item.SecVNFDevID,
"redundant": item.Redundant,
"mtu": item.MTU,
}
res = append(res, temp)
@@ -84,7 +88,7 @@ func flattenRecordExtnet(d *schema.ResourceData, recNet *extnet.RecordExtNet) {
d.Set("ipcidr", recNet.IPCIDR)
d.Set("milestones", recNet.Milestones)
d.Set("name", recNet.Name)
d.Set("network_id", recNet.NetworkID)
d.Set("network_ids", recNet.NetworkIDs)
d.Set("ntp", recNet.NTP)
d.Set("ovs_bridge", recNet.OVSBridge)
d.Set("pre_reservations_num", recNet.PreReservationsNum)
@@ -101,6 +105,11 @@ func flattenRecordExtnet(d *schema.ResourceData, recNet *extnet.RecordExtNet) {
d.Set("default_qos", flattenExtnetDefaultQos(recNet.DefaultQOS))
d.Set("vnfs", flattenExtnetVNFS(recNet.VNFs))
d.Set("reservations", flattenExtnetReservations(recNet.Reservations))
d.Set("zone_id", recNet.ZoneID)
d.Set("pre_reservations", flattenExtnetReservations(recNet.PreReservations))
d.Set("sec_vnfdev_id", recNet.SecVNFDevID)
d.Set("redundant", recNet.Redundant)
d.Set("mtu", recNet.MTU)
}
func flattenRecordExtnetResource(d *schema.ResourceData, recNet *extnet.RecordExtNet, staticRouteList *extnet.ListStaticRoutes) {
@@ -115,7 +124,7 @@ func flattenRecordExtnetResource(d *schema.ResourceData, recNet *extnet.RecordEx
d.Set("ipcidr", recNet.IPCIDR)
d.Set("milestones", recNet.Milestones)
d.Set("name", recNet.Name)
d.Set("network_id", recNet.NetworkID)
d.Set("network_ids", flattenNetworkIDs(recNet.NetworkIDs))
d.Set("ovs_bridge", recNet.OVSBridge)
d.Set("pre_reservations_num", recNet.PreReservationsNum)
d.Set("pri_vnfdev_id", recNet.PriVNFDevID)
@@ -127,11 +136,13 @@ func flattenRecordExtnetResource(d *schema.ResourceData, recNet *extnet.RecordEx
d.Set("excluded", flattenExtnetExcluded(recNet.Excluded))
d.Set("gateway", recNet.Gateway)
d.Set("network", recNet.Network)
d.Set("ntp", recNet.NTP)
d.Set("prefix", recNet.Prefix)
d.Set("default_qos", flattenExtnetDefaultQos(recNet.DefaultQOS))
d.Set("vnfs", flattenExtnetVNFS(recNet.VNFs))
d.Set("reservations", flattenExtnetReservations(recNet.Reservations))
d.Set("routes", flattenStaticRouteList(staticRouteList))
d.Set("zone_id", recNet.ZoneID)
}
func flattenExtnetExcluded(ers extnet.ListReservations) []map[string]interface{} {
@@ -245,3 +256,14 @@ func flattenExtnetReservedIp(el []extnet.RecordReservedIP) []map[string]interfac
}
return res
}
func flattenNetworkIDs(ex extnet.NetworkIDs) []map[string]interface{} {
res := make([]map[string]interface{}, 0, 1)
temp := map[string]interface{}{
"primary": ex.Primary,
"secondary": ex.Secondary,
}
res = append(res, temp)
return res
}

View File

@@ -100,6 +100,10 @@ func resourceExtnetCreate(ctx context.Context, d *schema.ResourceData, m interfa
req.Virtual = virtual.(bool)
}
if zoneID, ok := d.GetOk("zone_id"); ok {
req.ZoneID = uint64(zoneID.(int))
}
if desc, ok := d.GetOk("desc"); ok {
req.Description = desc.(string)
}
@@ -112,10 +116,6 @@ func resourceExtnetCreate(ctx context.Context, d *schema.ResourceData, m interfa
req.EndIP = end_ip.(string)
}
if vnfdev_ip, ok := d.GetOk("vnfdev_ip"); ok {
req.VNFDevIP = vnfdev_ip.(string)
}
if pre_reservations_num, ok := d.GetOk("pre_reservations_num"); ok {
req.PreReservationsNum = uint64(pre_reservations_num.(int))
}
@@ -124,6 +124,18 @@ func resourceExtnetCreate(ctx context.Context, d *schema.ResourceData, m interfa
req.OVSBridge = ovs_bridge.(string)
}
if highly_available, ok := d.GetOk("highly_available"); ok {
req.HAMode = highly_available.(bool)
}
if sec_vnfdev_ip, ok := d.GetOk("sec_vnfdev_ip"); ok {
req.SecVNFDevIP = sec_vnfdev_ip.(string)
}
if mtu, ok := d.GetOk("mtu"); ok {
req.MTU = mtu.(uint)
}
log.Debugf("cloudbroker: Sent create request")
netID, err := c.CloudBroker().ExtNet().Create(ctx, req)
if err != nil {
@@ -331,6 +343,18 @@ func resourceExtnetUpdate(ctx context.Context, d *schema.ResourceData, m interfa
}
}
if d.HasChange("zone_id") {
if err := handleZoneIDUpdate(ctx, d, c, recNet); err != nil {
return diag.FromErr(err)
}
}
if d.HasChange("highly_available") {
if err := handleHAUpdate(ctx, d, c, recNet); err != nil {
return diag.FromErr(err)
}
}
return resourceExtnetRead(ctx, d, m)
}

View File

@@ -86,6 +86,10 @@ func dataSourceExtnetListSchemaMake() map[string]*schema.Schema {
Type: schema.TypeBool,
Computed: true,
},
"zone_id": {
Type: schema.TypeInt,
Computed: true,
},
"default_qos": {
Type: schema.TypeList,
Computed: true,
@@ -142,9 +146,21 @@ func dataSourceExtnetListSchemaMake() map[string]*schema.Schema {
Type: schema.TypeString,
Computed: true,
},
"network_id": {
Type: schema.TypeInt,
"network_ids": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"primary": {
Type: schema.TypeInt,
Computed: true,
},
"secondary": {
Type: schema.TypeInt,
Computed: true,
},
},
},
},
"ovs_bridge": {
Type: schema.TypeString,
@@ -192,6 +208,18 @@ func dataSourceExtnetListSchemaMake() map[string]*schema.Schema {
Type: schema.TypeString,
},
},
"redundant": {
Type: schema.TypeBool,
Computed: true,
},
"sec_vnfdev_id": {
Type: schema.TypeInt,
Computed: true,
},
"mtu": {
Type: schema.TypeInt,
Computed: true,
},
},
},
},
@@ -351,6 +379,10 @@ func dataSourceExtnetSchemaMake() map[string]*schema.Schema {
Type: schema.TypeInt,
Computed: true,
},
"zone_id": {
Type: schema.TypeInt,
Computed: true,
},
"ipcidr": {
Type: schema.TypeString,
Computed: true,
@@ -363,9 +395,21 @@ func dataSourceExtnetSchemaMake() map[string]*schema.Schema {
Type: schema.TypeString,
Computed: true,
},
"network_id": {
Type: schema.TypeInt,
"network_ids": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"primary": {
Type: schema.TypeInt,
Computed: true,
},
"secondary": {
Type: schema.TypeInt,
Computed: true,
},
},
},
},
"ovs_bridge": {
Type: schema.TypeString,
@@ -523,6 +567,62 @@ func dataSourceExtnetSchemaMake() map[string]*schema.Schema {
Type: schema.TypeString,
},
},
"redundant": {
Type: schema.TypeBool,
Computed: true,
},
"sec_vnfdev_id": {
Type: schema.TypeInt,
Computed: true,
},
"mtu": {
Type: schema.TypeInt,
Computed: true,
},
"pre_reservations": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"account_id": {
Type: schema.TypeInt,
Computed: true,
},
"client_type": {
Type: schema.TypeString,
Computed: true,
},
"domain_name": {
Type: schema.TypeString,
Computed: true,
},
"hostname": {
Type: schema.TypeString,
Computed: true,
},
"desc": {
Type: schema.TypeString,
Computed: true,
},
"ip": {
Type: schema.TypeString,
Computed: true,
},
"mac": {
Type: schema.TypeString,
Computed: true,
},
"type": {
Type: schema.TypeString,
Computed: true,
},
"vm_id": {
Type: schema.TypeInt,
Computed: true,
},
},
},
},
}
}
@@ -595,6 +695,11 @@ func resourceExtnetSchemaMake() map[string]*schema.Schema {
Computed: true,
Description: "External network gateway IP address",
},
"zone_id": {
Type: schema.TypeInt,
Optional: true,
Computed: true,
},
"dns": {
Type: schema.TypeList,
Optional: true,
@@ -607,6 +712,7 @@ func resourceExtnetSchemaMake() map[string]*schema.Schema {
"ntp": {
Type: schema.TypeList,
Optional: true,
Computed: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
@@ -766,6 +872,21 @@ func resourceExtnetSchemaMake() map[string]*schema.Schema {
},
},
},
"highly_available": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
},
"sec_vnfdev_ip": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"mtu": {
Type: schema.TypeInt,
Optional: true,
Computed: true,
},
"ckey": {
Type: schema.TypeString,
Computed: true,
@@ -798,9 +919,21 @@ func resourceExtnetSchemaMake() map[string]*schema.Schema {
Type: schema.TypeInt,
Computed: true,
},
"network_id": {
Type: schema.TypeInt,
"network_ids": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"primary": {
Type: schema.TypeInt,
Computed: true,
},
"secondary": {
Type: schema.TypeInt,
Computed: true,
},
},
},
},
"pri_vnfdev_id": {
Type: schema.TypeInt,

View File

@@ -118,6 +118,10 @@ func handleBasicUpdate(ctx context.Context, d *schema.ResourceData, c *controlle
basiUpdateReq.Description = d.Get("desc").(string)
doBasicUpdate = true
}
if d.HasChange("mtu") {
basiUpdateReq.MTU = d.Get("mtu").(uint64)
doBasicUpdate = true
}
if doBasicUpdate {
_, err := c.CloudBroker().ExtNet().Update(ctx, basiUpdateReq)
@@ -343,6 +347,38 @@ func handleMigrateUpdate(ctx context.Context, d *schema.ResourceData, c *control
return nil
}
func handleZoneIDUpdate(ctx context.Context, d *schema.ResourceData, c *controller.ControllerCfg, recNet *extnet.RecordExtNet) error {
zoneID := uint64(d.Get("zone_id").(int))
req := extnet.MigrateToZoneRequest{
NetID: recNet.ID,
ZoneID: zoneID,
}
_, err := c.CloudBroker().ExtNet().MigrateToZone(ctx, req)
if err != nil {
return err
}
return nil
}
func handleHAUpdate(ctx context.Context, d *schema.ResourceData, c *controller.ControllerCfg, recNet *extnet.RecordExtNet) error {
highlyAvailable := d.Get("highly_available").(bool)
req := extnet.SetHAModeRequest{
NetID: recNet.ID,
HAMode: highlyAvailable,
}
_, err := c.CloudBroker().ExtNet().SetHAMode(ctx, req)
if err != nil {
return err
}
return nil
}
func checkReserveIp(ctx context.Context, d *schema.ResourceData, c *controller.ControllerCfg) error {
var err error
if d.Get("reserved_ip").(*schema.Set).Len() > 0 {