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

Commit 7eecd2b

Browse files
author
Alexandr Sokolov
committed
import gcore_loadbalancer fixed
1 parent 57f1184 commit 7eecd2b

File tree

5 files changed

+42
-15
lines changed

5 files changed

+42
-15
lines changed

docs/resources/gcore_loadbalancer.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,6 @@ Optional:
9898
Import is supported using the following syntax:
9999

100100
```shell
101-
# import using <project_id>:<region_id>:<loadbalancer_id> format
102-
terraform import gcore_loadbalancer.loadbalancer1 1:6:447d2959-8ae0-4ca0-8d47-9f050a3637d7
101+
# import using <project_id>:<region_id>:<loadbalancer_id>:<listener_id> format, listener_id - nested listener id
102+
terraform import gcore_loadbalancer.loadbalancer1 1:6:447d2959-8ae0-4ca0-8d47-9f050a3637d7:a336f28c-fbb0-4256-9545-e905bed9f48f
103103
```
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
# import using <project_id>:<region_id>:<loadbalancer_id> format
2-
terraform import gcore_loadbalancer.loadbalancer1 1:6:447d2959-8ae0-4ca0-8d47-9f050a3637d7
1+
# import using <project_id>:<region_id>:<loadbalancer_id>:<listener_id> format, listener_id - nested listener id
2+
terraform import gcore_loadbalancer.loadbalancer1 1:6:447d2959-8ae0-4ca0-8d47-9f050a3637d7:a336f28c-fbb0-4256-9545-e905bed9f48f

gcore/data_source_gcore_instance.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ func dataSourceInstanceRead(ctx context.Context, d *schema.ResourceData, m inter
223223
}
224224

225225
ifs, err := instances.ListInterfacesAll(client, instance.ID)
226+
log.Printf("instance data source interfaces: %+v", ifs)
226227
if err != nil {
227228
return diag.FromErr(err)
228229
}

gcore/resource_gcore_loadbalancer.go

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ func resourceLoadBalancer() *schema.Resource {
3333
Delete: schema.DefaultTimeout(5 * time.Minute),
3434
},
3535
Importer: &schema.ResourceImporter{
36-
StateContext: func(ctx context.Context, d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
37-
projectID, regionID, lbID, err := ImportStringParser(d.Id())
36+
StateContext: func(ctx context.Context, d *schema.ResourceData, m interface{}) ([]*schema.ResourceData, error) {
37+
projectID, regionID, lbID, listenerID, err := ImportStringParserExtended(d.Id())
3838

3939
if err != nil {
4040
return nil, err
@@ -43,6 +43,24 @@ func resourceLoadBalancer() *schema.Resource {
4343
d.Set("region_id", regionID)
4444
d.SetId(lbID)
4545

46+
config := m.(*Config)
47+
provider := config.Provider
48+
49+
listenersClient, err := CreateClient(provider, d, LBListenersPoint, versionPointV1)
50+
if err != nil {
51+
return nil, err
52+
}
53+
54+
listener, err := listeners.Get(listenersClient, listenerID).Extract()
55+
if err != nil {
56+
return nil, err
57+
}
58+
59+
l := extractListenerIntoMap(listener)
60+
if err := d.Set("listener", []interface{}{l}); err != nil {
61+
return nil, err
62+
}
63+
4664
return []*schema.ResourceData{d}, nil
4765
},
4866
},
@@ -278,12 +296,13 @@ func resourceLoadBalancerRead(ctx context.Context, d *schema.ResourceData, m int
278296
d.Set("project_id", lb.ProjectID)
279297
d.Set("region_id", lb.RegionID)
280298
d.Set("name", lb.Name)
299+
d.Set("flavor", lb.Flavor.FlavorName)
281300

282301
if lb.VipAddress != nil {
283302
d.Set("vip_address", lb.VipAddress.String())
284303
}
285304

286-
fields := []string{"flavor", "vip_network_id", "vip_subnet_id"}
305+
fields := []string{"vip_network_id", "vip_subnet_id"}
287306
revertState(d, &fields)
288307

289308
listenersClient, err := CreateClient(provider, d, LBListenersPoint, versionPointV1)
@@ -307,14 +326,9 @@ func resourceLoadBalancerRead(ctx context.Context, d *schema.ResourceData, m int
307326
if err != nil {
308327
return diag.FromErr(err)
309328
}
310-
311-
if listener.ProtocolPort == currentL["protocol_port"].(int) && listener.Protocol.String() == currentL["protocol"] {
312-
currentL["id"] = listener.ID
313-
currentL["name"] = listener.Name
314-
currentL["protocol"] = listener.Protocol.String()
315-
currentL["protocol_port"] = listener.ProtocolPort
316-
currentL["secret_id"] = listener.SecretID
317-
currentL["sni_secret_id"] = listener.SNISecretID
329+
port, _ := currentL["protocol_port"].(int)
330+
if (listener.ProtocolPort == port && listener.Protocol.String() == currentL["protocol"]) || len(cls) == 0 {
331+
currentL = extractListenerIntoMap(listener)
318332
break
319333
}
320334
}

gcore/utils.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/G-Core/gcorelabscloud-go/gcore/instance/v1/instances"
2222
"github.com/G-Core/gcorelabscloud-go/gcore/instance/v1/types"
2323
"github.com/G-Core/gcorelabscloud-go/gcore/loadbalancer/v1/lbpools"
24+
"github.com/G-Core/gcorelabscloud-go/gcore/loadbalancer/v1/listeners"
2425
typesLb "github.com/G-Core/gcorelabscloud-go/gcore/loadbalancer/v1/types"
2526
"github.com/G-Core/gcorelabscloud-go/gcore/network/v1/availablenetworks"
2627
"github.com/G-Core/gcorelabscloud-go/gcore/network/v1/networks"
@@ -733,3 +734,14 @@ func isInterfaceContains(verifiable map[string]interface{}, ifsSet []interface{}
733734
}
734735
return false
735736
}
737+
738+
func extractListenerIntoMap(listener *listeners.Listener) map[string]interface{} {
739+
l := make(map[string]interface{})
740+
l["id"] = listener.ID
741+
l["name"] = listener.Name
742+
l["protocol"] = listener.Protocol.String()
743+
l["protocol_port"] = listener.ProtocolPort
744+
l["secret_id"] = listener.SecretID
745+
l["sni_secret_id"] = listener.SNISecretID
746+
return l
747+
}

0 commit comments

Comments
 (0)