Skip to content
This repository was archived by the owner on Mar 1, 2023. It is now read-only.

Commit afe9548

Browse files
Alexandr Sokolovalexk53
authored andcommitted
baremetal interface updated, set -> list
1 parent a3e57d9 commit afe9548

File tree

3 files changed

+39
-16
lines changed

3 files changed

+39
-16
lines changed

gcore/resource_gcore_baremetal.go

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ func resourceBmInstance() *schema.Resource {
121121
},
122122
},
123123
"interface": &schema.Schema{
124-
Type: schema.TypeSet,
125-
Set: interfaceUniqueID,
124+
Type: schema.TypeList,
125+
//Set: interfaceUniqueID,
126126
Required: true,
127127
Elem: &schema.Resource{
128128
Schema: map[string]*schema.Schema{
@@ -276,7 +276,7 @@ func resourceBmInstanceCreate(ctx context.Context, d *schema.ResourceData, m int
276276
return diag.FromErr(err)
277277
}
278278

279-
ifs := d.Get("interface").(*schema.Set).List()
279+
ifs := d.Get("interface").([]interface{})
280280
//sort interfaces by 'is_parent' at first and by 'order' key to attach it in right order
281281
sort.Sort(instanceInterfaces(ifs))
282282
newInterface := make([]bminstances.InterfaceOpts, len(ifs))
@@ -404,7 +404,7 @@ func resourceBmInstanceRead(ctx context.Context, d *schema.ResourceData, m inter
404404
return diag.FromErr(err)
405405
}
406406

407-
interfaces, err := extractInstanceInterfaceIntoMap(d.Get("interface").(*schema.Set).List())
407+
interfaces, err := extractInstanceInterfaceIntoMap(d.Get("interface").([]interface{}))
408408
if err != nil {
409409
return diag.FromErr(err)
410410
}
@@ -491,7 +491,7 @@ func resourceBmInstanceRead(ctx context.Context, d *schema.ResourceData, m inter
491491
}
492492
}
493493
}
494-
if err := d.Set("interface", schema.NewSet(interfaceUniqueID, cleanInterfaces)); err != nil {
494+
if err := d.Set("interface", cleanInterfaces); err != nil {
495495
return diag.FromErr(err)
496496
}
497497

@@ -633,16 +633,16 @@ func resourceBmInstanceUpdate(ctx context.Context, d *schema.ResourceData, m int
633633
if d.HasChange("interface") {
634634
ifsOldRaw, ifsNewRaw := d.GetChange("interface")
635635

636-
ifsOld := ifsOldRaw.(*schema.Set)
637-
ifsNew := ifsNewRaw.(*schema.Set)
636+
ifsOld := ifsOldRaw.([]interface{})
637+
ifsNew := ifsNewRaw.([]interface{})
638638

639-
for _, i := range ifsOld.List() {
640-
if ifsNew.Contains(i) {
639+
for _, i := range ifsOld {
640+
iface := i.(map[string]interface{})
641+
if isInterfaceContains(iface, ifsNew) {
641642
log.Println("[DEBUG] Skipped, dont need detach")
642643
continue
643644
}
644645

645-
iface := i.(map[string]interface{})
646646
if iface["is_parent"].(bool) {
647647
return diag.Errorf("could not detach trunk interface")
648648
}
@@ -675,14 +675,13 @@ func resourceBmInstanceUpdate(ctx context.Context, d *schema.ResourceData, m int
675675
return diag.FromErr(err)
676676
}
677677

678-
sortedNewIfs := ifsNew.List()
679-
sort.Sort(instanceInterfaces(sortedNewIfs))
680-
for _, i := range sortedNewIfs {
681-
if ifsOld.Contains(i) {
678+
sort.Sort(instanceInterfaces(ifsNew))
679+
for _, i := range ifsNew {
680+
iface := i.(map[string]interface{})
681+
if isInterfaceContains(iface, ifsOld) {
682682
log.Println("[DEBUG] Skipped, dont need attach")
683683
continue
684684
}
685-
iface := i.(map[string]interface{})
686685
if isInterfaceAttached(currentIfs, iface) {
687686
continue
688687
}

gcore/resource_gcore_network.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,11 @@ func resourceNetworkCreate(ctx context.Context, d *schema.ResourceData, m interf
115115

116116
var createRouter bool
117117
//for backwards compatibility
118-
createRouter, _ = d.Get("create_router").(bool)
118+
if createRouterValue, ok := d.GetOk("create_router"); !ok {
119+
createRouter = true
120+
} else {
121+
createRouter = createRouterValue.(bool)
122+
}
119123

120124
createOpts := networks.CreateOpts{
121125
Name: d.Get("name").(string),

gcore/utils.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -713,3 +713,23 @@ func isInterfaceAttached(ifs []instances.Interface, ifs2 map[string]interface{})
713713
}
714714
return false
715715
}
716+
717+
func isInterfaceContains(verifiable map[string]interface{}, ifsSet []interface{}) bool {
718+
verifiableType := verifiable["type"].(string)
719+
verifiableSubnetID, _ := verifiable["subnet_id"].(string)
720+
for _, e := range ifsSet {
721+
i := e.(map[string]interface{})
722+
iType := i["type"].(string)
723+
subnetID, _ := i["subnet_id"].(string)
724+
if iType == types.ExternalInterfaceType.String() && verifiableType == types.ExternalInterfaceType.String() {
725+
return true
726+
}
727+
728+
if iType == verifiableType {
729+
if subnetID == verifiableSubnetID {
730+
return true
731+
}
732+
}
733+
}
734+
return false
735+
}

0 commit comments

Comments
 (0)