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

Commit a1a84fd

Browse files
committed
resource_gcore_loadbalancer.listener updated
limited to 1, updated method fixed secret_id, sni_secret_id added to listeners
1 parent c55a74a commit a1a84fd

File tree

4 files changed

+174
-38
lines changed

4 files changed

+174
-38
lines changed

gcore/resource_gcore_lblistener.go

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,15 @@ func resourceLbListener() *schema.Resource {
130130
Type: schema.TypeString,
131131
Computed: true,
132132
},
133+
"secret_id": &schema.Schema{
134+
Type: schema.TypeString,
135+
Optional: true,
136+
},
137+
"sni_secret_id": &schema.Schema{
138+
Type: schema.TypeList,
139+
Elem: &schema.Schema{Type: schema.TypeString},
140+
Optional: true,
141+
},
133142
"last_updated": &schema.Schema{
134143
Type: schema.TypeString,
135144
Optional: true,
@@ -156,6 +165,15 @@ func resourceLBListenerCreate(ctx context.Context, d *schema.ResourceData, m int
156165
ProtocolPort: d.Get("protocol_port").(int),
157166
LoadBalancerID: d.Get("loadbalancer_id").(string),
158167
InsertXForwarded: d.Get("insert_x_forwarded").(bool),
168+
SecretID: d.Get("secret_id").(string),
169+
}
170+
sniSecretIDRaw := d.Get("sni_secret_id").([]interface{})
171+
if len(sniSecretIDRaw) != 0 {
172+
sniSecretID := make([]string, len(sniSecretIDRaw))
173+
for i, s := range sniSecretIDRaw {
174+
sniSecretID[i] = s.(string)
175+
}
176+
opts.SNISecretID = sniSecretID
159177
}
160178

161179
results, err := listeners.Create(client, opts).Extract()
@@ -208,6 +226,8 @@ func resourceLBListenerRead(ctx context.Context, d *schema.ResourceData, m inter
208226
d.Set("pool_count", lb.PoolCount)
209227
d.Set("operating_status", lb.OperationStatus.String())
210228
d.Set("provisioning_status", lb.ProvisioningStatus.String())
229+
d.Set("secret_id", lb.SecretID)
230+
d.Set("sni_secret_id", lb.SNISecretID)
211231

212232
fields := []string{"project_id", "region_id", "loadbalancer_id", "insert_x_forwarded"}
213233
revertState(d, &fields)
@@ -226,10 +246,29 @@ func resourceLBListenerUpdate(ctx context.Context, d *schema.ResourceData, m int
226246
return diag.FromErr(err)
227247
}
228248

249+
var changed bool
250+
opts := listeners.UpdateOpts{}
229251
if d.HasChange("name") {
230-
opts := listeners.UpdateOpts{
231-
Name: d.Get("name").(string),
252+
opts.Name = d.Get("name").(string)
253+
changed = true
254+
}
255+
256+
if d.HasChange("secret_id") {
257+
opts.SecretID = d.Get("secret_id").(string)
258+
changed = true
259+
}
260+
261+
if d.HasChange("sni_secret_id") {
262+
sniSecretIDRaw := d.Get("sni_secret_id").([]interface{})
263+
sniSecretID := make([]string, len(sniSecretIDRaw))
264+
for i, s := range sniSecretIDRaw {
265+
sniSecretID[i] = s.(string)
232266
}
267+
opts.SNISecretID = sniSecretID
268+
changed = true
269+
}
270+
271+
if changed {
233272
_, err = listeners.Update(client, d.Id(), opts).Extract()
234273
if err != nil {
235274
return diag.FromErr(err)

gcore/resource_gcore_loadbalancer.go

Lines changed: 130 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ func resourceLoadBalancer() *schema.Resource {
117117
"listener": &schema.Schema{
118118
Type: schema.TypeList,
119119
Required: true,
120+
MaxItems: 1,
120121
Elem: &schema.Resource{
121122
Schema: map[string]*schema.Schema{
122123
"id": &schema.Schema{
@@ -156,6 +157,19 @@ func resourceLoadBalancer() *schema.Resource {
156157
Type: schema.TypeString,
157158
Optional: true,
158159
},
160+
"insert_x_forwarded": &schema.Schema{
161+
Type: schema.TypeBool,
162+
Optional: true,
163+
},
164+
"secret_id": &schema.Schema{
165+
Type: schema.TypeString,
166+
Optional: true,
167+
},
168+
"sni_secret_id": &schema.Schema{
169+
Type: schema.TypeList,
170+
Elem: &schema.Schema{Type: schema.TypeString},
171+
Optional: true,
172+
},
159173
},
160174
},
161175
},
@@ -190,7 +204,18 @@ func resourceLoadBalancerCreate(ctx context.Context, d *schema.ResourceData, m i
190204
Certificate: l["certificate"].(string),
191205
CertificateChain: l["certificate_chain"].(string),
192206
PrivateKey: l["private_key"].(string),
207+
InsertXForwarded: l["insert_x_forwarded"].(bool),
208+
SecretID: l["secret_id"].(string),
209+
}
210+
sniSecretIDRaw := l["sni_secret_id"].([]interface{})
211+
if len(sniSecretIDRaw) != 0 {
212+
sniSecretID := make([]string, len(sniSecretIDRaw))
213+
for i, s := range sniSecretIDRaw {
214+
sniSecretID[i] = s.(string)
215+
}
216+
opts.SNISecretID = sniSecretID
193217
}
218+
194219
listenersOpts[i] = opts
195220
}
196221

@@ -261,38 +286,30 @@ func resourceLoadBalancerRead(ctx context.Context, d *schema.ResourceData, m int
261286
fields := []string{"flavor", "vip_network_id", "vip_subnet_id"}
262287
revertState(d, &fields)
263288

264-
currentListeners := d.Get("listener").([]interface{})
265-
newListeners := make([]map[string]interface{}, len(lb.Listeners))
289+
cl := d.Get("listener").([]interface{})[0]
266290
listenersClient, err := CreateClient(provider, d, LBListenersPoint, versionPointV1)
267291
if err != nil {
268292
return diag.FromErr(err)
269293
}
270294

271-
for i, l := range lb.Listeners {
295+
currentL := cl.(map[string]interface{})
296+
for _, l := range lb.Listeners {
272297
listener, err := listeners.Get(listenersClient, l.ID).Extract()
273298
if err != nil {
274299
return diag.FromErr(err)
275300
}
276301

277-
for _, cl := range currentListeners {
278-
currentL, ok := cl.(map[string]interface{})
279-
if currentL != nil && ok {
280-
if currentL["name"].(string) == listener.Name {
281-
currentL["id"] = listener.ID
282-
newListeners[i] = currentL
283-
break
284-
}
285-
} else {
286-
newListeners[i] = map[string]interface{}{
287-
"id": listener.ID,
288-
"name": listener.Name,
289-
"protocol": listener.Protocol.String(),
290-
"protocol_port": listener.ProtocolPort,
291-
}
292-
}
302+
if listener.ProtocolPort == currentL["protocol_port"].(int) && listener.Protocol.String() == currentL["protocol"] {
303+
currentL["id"] = listener.ID
304+
currentL["name"] = listener.Name
305+
currentL["protocol"] = listener.Protocol.String()
306+
currentL["protocol_port"] = listener.ProtocolPort
307+
currentL["secret_id"] = listener.SecretID
308+
currentL["sni_secret_id"] = listener.SNISecretID
309+
break
293310
}
294311
}
295-
if err := d.Set("listener", newListeners); err != nil {
312+
if err := d.Set("listener", []interface{}{currentL}); err != nil {
296313
diag.FromErr(err)
297314
}
298315

@@ -322,6 +339,99 @@ func resourceLoadBalancerUpdate(ctx context.Context, d *schema.ResourceData, m i
322339
d.Set("last_updated", time.Now().Format(time.RFC850))
323340
}
324341

342+
if d.HasChange("listener") {
343+
client, err := CreateClient(provider, d, LBListenersPoint, versionPointV1)
344+
if err != nil {
345+
return diag.FromErr(err)
346+
}
347+
348+
oldListenerRaw, newListenerRaw := d.GetChange("listener")
349+
oldListener := oldListenerRaw.([]interface{})[0].(map[string]interface{})
350+
newListener := newListenerRaw.([]interface{})[0].(map[string]interface{})
351+
352+
listenerID := oldListener["id"].(string)
353+
if oldListener["protocol"].(string) != newListener["protocol"].(string) ||
354+
oldListener["protocol_port"].(int) != newListener["protocol_port"].(int) {
355+
//if protocol or port changed listener need to be recreated
356+
//delete at first
357+
results, err := listeners.Delete(client, listenerID).Extract()
358+
if err != nil {
359+
return diag.FromErr(err)
360+
}
361+
362+
taskID := results.Tasks[0]
363+
_, err = tasks.WaitTaskAndReturnResult(client, taskID, true, LBListenerCreateTimeout, func(task tasks.TaskID) (interface{}, error) {
364+
_, err := listeners.Get(client, listenerID).Extract()
365+
if err == nil {
366+
return nil, fmt.Errorf("cannot delete LBListener with ID: %s", listenerID)
367+
}
368+
switch err.(type) {
369+
case gcorecloud.ErrDefault404:
370+
return nil, nil
371+
default:
372+
return nil, err
373+
}
374+
})
375+
if err != nil {
376+
return diag.FromErr(err)
377+
}
378+
379+
//create new one
380+
opts := listeners.CreateOpts{
381+
Name: newListener["name"].(string),
382+
Protocol: types.ProtocolType(newListener["protocol"].(string)),
383+
ProtocolPort: newListener["protocol_port"].(int),
384+
LoadBalancerID: d.Id(),
385+
InsertXForwarded: newListener["insert_x_forwarded"].(bool),
386+
SecretID: newListener["secret_id"].(string),
387+
}
388+
sniSecretIDRaw := newListener["sni_secret_id"].([]interface{})
389+
if len(sniSecretIDRaw) != 0 {
390+
sniSecretID := make([]string, len(sniSecretIDRaw))
391+
for i, s := range sniSecretIDRaw {
392+
sniSecretID[i] = s.(string)
393+
}
394+
opts.SNISecretID = sniSecretID
395+
}
396+
397+
results, err = listeners.Create(client, opts).Extract()
398+
if err != nil {
399+
return diag.FromErr(err)
400+
}
401+
402+
taskID = results.Tasks[0]
403+
_, err = tasks.WaitTaskAndReturnResult(client, taskID, true, LBListenerCreateTimeout, func(task tasks.TaskID) (interface{}, error) {
404+
taskInfo, err := tasks.Get(client, string(task)).Extract()
405+
if err != nil {
406+
return nil, fmt.Errorf("cannot get task with ID: %s. Error: %w", task, err)
407+
}
408+
listenerID, err := listeners.ExtractListenerIDFromTask(taskInfo)
409+
if err != nil {
410+
return nil, fmt.Errorf("cannot retrieve LBListener ID from task info: %w", err)
411+
}
412+
return listenerID, nil
413+
})
414+
if err != nil {
415+
return diag.FromErr(err)
416+
}
417+
} else {
418+
//update
419+
opts := listeners.UpdateOpts{
420+
Name: newListener["name"].(string),
421+
SecretID: newListener["secret_id"].(string),
422+
}
423+
sniSecretIDRaw := newListener["sni_secret_id"].([]interface{})
424+
sniSecretID := make([]string, len(sniSecretIDRaw))
425+
for i, s := range sniSecretIDRaw {
426+
sniSecretID[i] = s.(string)
427+
}
428+
opts.SNISecretID = sniSecretID
429+
if _, err := listeners.Update(client, listenerID, opts).Extract(); err != nil {
430+
return diag.FromErr(err)
431+
}
432+
}
433+
}
434+
325435
log.Println("[DEBUG] Finish LoadBalancer updating")
326436
return resourceLoadBalancerRead(ctx, d, m)
327437
}

go.mod

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@ require (
88
github.com/G-Core/g-dns-sdk-go v0.1.2
99
github.com/G-Core/gcorelabs-storage-sdk-go v0.0.9
1010
github.com/G-Core/gcorelabscdn-go v0.1.2
11-
github.com/G-Core/gcorelabscloud-go v0.4.32
11+
github.com/G-Core/gcorelabscloud-go v0.4.33
1212
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320
13-
github.com/hashicorp/terraform-plugin-docs v0.5.0 // indirect
1413
github.com/hashicorp/terraform-plugin-sdk/v2 v2.7.0
1514
github.com/mattn/go-colorable v0.1.8 // indirect
1615
github.com/mitchellh/mapstructure v1.4.1

go.sum

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,10 @@ github.com/G-Core/gcorelabs-storage-sdk-go v0.0.9 h1:6uyKbknI8Q2pIJApPBf6JA0CN5O
4747
github.com/G-Core/gcorelabs-storage-sdk-go v0.0.9/go.mod h1:BZef79y4G28n8ic3x6iQWbW+mtpHPSUyJRfIRSkeAJw=
4848
github.com/G-Core/gcorelabscdn-go v0.1.2 h1:AiwZY3oIHL4wMJNmIlLgxw4eQmSqtQmkTzrkGpa7ckc=
4949
github.com/G-Core/gcorelabscdn-go v0.1.2/go.mod h1:iSGXaTvZBzDHQW+rKFS918BgFVpONcyLEijwh8WsXpE=
50-
github.com/G-Core/gcorelabscloud-go v0.4.32 h1:HdnTl95rfzpFIJw1lcKuPizPF2kqMe7n41W7NeElGcA=
51-
github.com/G-Core/gcorelabscloud-go v0.4.32/go.mod h1:Z1MF80mWagEUrxygtYkvW/MJEYNmIUPsIEYBB3cKjOM=
52-
github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg=
50+
github.com/G-Core/gcorelabscloud-go v0.4.33 h1:lmQaOGMlc47RM+B07anyOavISj9Pq67pnfAMJa9ZCVE=
51+
github.com/G-Core/gcorelabscloud-go v0.4.33/go.mod h1:Z1MF80mWagEUrxygtYkvW/MJEYNmIUPsIEYBB3cKjOM=
5352
github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
54-
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
5553
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
56-
github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60=
5754
github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
5855
github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA=
5956
github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk=
@@ -86,7 +83,6 @@ github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/
8683
github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec=
8784
github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw=
8885
github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo=
89-
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to=
9086
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
9187
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
9288
github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
@@ -102,7 +98,6 @@ github.com/aws/aws-sdk-go v1.34.28 h1:sscPpn/Ns3i0F4HPEWAVcwdIRaZZCuL7llJ2/60yPI
10298
github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48=
10399
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
104100
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
105-
github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=
106101
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
107102
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
108103
github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=
@@ -389,8 +384,6 @@ github.com/hashicorp/terraform-exec v0.14.0 h1:UQoUcxKTZZXhyyK68Cwn4mApT4mnFPmEX
389384
github.com/hashicorp/terraform-exec v0.14.0/go.mod h1:qrAASDq28KZiMPDnQ02sFS9udcqEkRly002EA2izXTA=
390385
github.com/hashicorp/terraform-json v0.12.0 h1:8czPgEEWWPROStjkWPUnTQDXmpmZPlkQAwYYLETaTvw=
391386
github.com/hashicorp/terraform-json v0.12.0/go.mod h1:pmbq9o4EuL43db5+0ogX10Yofv1nozM+wskr/bGFJpI=
392-
github.com/hashicorp/terraform-plugin-docs v0.5.0 h1:Rso/yNznoGl7KVb/Z5RefiHsLJaGTbok9sEnad+V1t4=
393-
github.com/hashicorp/terraform-plugin-docs v0.5.0/go.mod h1:Z4q6unfv05W7fjpEy8ZC+nFijZmcm64Iag6I2HKRMSA=
394387
github.com/hashicorp/terraform-plugin-go v0.3.0 h1:AJqYzP52JFYl9NABRI7smXI1pNjgR5Q/y2WyVJ/BOZA=
395388
github.com/hashicorp/terraform-plugin-go v0.3.0/go.mod h1:dFHsQMaTLpON2gWhVWT96fvtlc/MF1vSy3OdMhWBzdM=
396389
github.com/hashicorp/terraform-plugin-sdk/v2 v2.7.0 h1:SuI59MqNjYDrL7EfqHX9V6P/24isgqYx/FdglwVs9bg=
@@ -399,7 +392,6 @@ github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKe
399392
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ=
400393
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
401394
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
402-
github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw=
403395
github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
404396
github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE=
405397
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
@@ -482,7 +474,6 @@ github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHX
482474
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
483475
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
484476
github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
485-
github.com/mitchellh/cli v1.1.2 h1:PvH+lL2B7IQ101xQL63Of8yFS2y+aDlsFcsqNc+u/Kw=
486477
github.com/mitchellh/cli v1.1.2/go.mod h1:6iaV0fGdElS6dPBx0EApTxHrcWvmJphyh2n8YBLPPZ4=
487478
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
488479
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
@@ -539,14 +530,11 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
539530
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
540531
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
541532
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
542-
github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w=
543533
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
544534
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
545535
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
546536
github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
547537
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
548-
github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww=
549-
github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY=
550538
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
551539
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
552540
github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4=

0 commit comments

Comments
 (0)