Skip to content

Commit 0791c09

Browse files
authored
feat: support execution environments (#1)
1 parent dfd0aac commit 0791c09

6 files changed

Lines changed: 268 additions & 12 deletions

File tree

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/*
2+
*TBD*
3+
4+
Example Usage
5+
6+
```hcl
7+
data "awx_execution_environment" "default" {
8+
name = "Default"
9+
}
10+
```
11+
12+
*/
13+
package awx
14+
15+
import (
16+
"context"
17+
"strconv"
18+
19+
awx "github.com/denouche/goawx/client"
20+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
21+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
22+
)
23+
24+
func dataSourceExecutionEnvironment() *schema.Resource {
25+
return &schema.Resource{
26+
ReadContext: dataSourceExecutionEnvironmentsRead,
27+
Schema: map[string]*schema.Schema{
28+
"id": {
29+
Type: schema.TypeInt,
30+
Optional: true,
31+
Computed: true,
32+
},
33+
"name": {
34+
Type: schema.TypeString,
35+
Optional: true,
36+
Computed: true,
37+
},
38+
},
39+
}
40+
}
41+
42+
func dataSourceExecutionEnvironmentsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
43+
var diags diag.Diagnostics
44+
client := m.(*awx.AWX)
45+
params := make(map[string]string)
46+
if groupName, okName := d.GetOk("name"); okName {
47+
params["name"] = groupName.(string)
48+
}
49+
50+
if groupID, okGroupID := d.GetOk("id"); okGroupID {
51+
params["id"] = strconv.Itoa(groupID.(int))
52+
}
53+
54+
if len(params) == 0 {
55+
return buildDiagnosticsMessage(
56+
"Get: Missing Parameters",
57+
"Please use one of the selectors (name or group_id)",
58+
)
59+
return diags
60+
}
61+
executionEnvironments, _, err := client.ExecutionEnvironmentsService.ListExecutionEnvironments(params)
62+
if err != nil {
63+
return buildDiagnosticsMessage(
64+
"Get: Fail to fetch execution environment",
65+
"Fail to find the execution environment got: %s",
66+
err.Error(),
67+
)
68+
}
69+
if len(executionEnvironments) > 1 {
70+
return buildDiagnosticsMessage(
71+
"Get: find more than one element",
72+
"The query returns more than one execution environment, %d",
73+
len(executionEnvironments),
74+
)
75+
return diags
76+
}
77+
78+
executionEnvironment := executionEnvironments[0]
79+
d = setExecutionEnvironmentsResourceData(d, executionEnvironment)
80+
return diags
81+
}

awx/provider.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ func Provider() *schema.Provider {
4444
"awx_credential_type": resourceCredentialType(),
4545
"awx_credential_machine": resourceCredentialMachine(),
4646
"awx_credential_scm": resourceCredentialSCM(),
47+
"awx_execution_environment": resourceExecutionEnvironment(),
4748
"awx_host": resourceHost(),
4849
"awx_inventory_group": resourceInventoryGroup(),
4950
"awx_inventory_source": resourceInventorySource(),
@@ -72,6 +73,7 @@ func Provider() *schema.Provider {
7273
"awx_credential": dataSourceCredentialByID(),
7374
"awx_credential_type": dataSourceCredentialTypeByID(),
7475
"awx_credentials": dataSourceCredentials(),
76+
"awx_execution_environment": dataSourceExecutionEnvironment(),
7577
"awx_inventory_group": dataSourceInventoryGroup(),
7678
"awx_inventory": dataSourceInventory(),
7779
"awx_inventory_role": dataSourceInventoryRole(),
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
/*
2+
*TBD*
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "awx_execution_environment" "default" {
8+
name = "acc-test"
9+
}
10+
```
11+
12+
*/
13+
package awx
14+
15+
import (
16+
"context"
17+
"fmt"
18+
"log"
19+
"strconv"
20+
21+
awx "github.com/denouche/goawx/client"
22+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
23+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
24+
)
25+
26+
func resourceExecutionEnvironment() *schema.Resource {
27+
return &schema.Resource{
28+
CreateContext: resourceExecutionEnvironmentsCreate,
29+
ReadContext: resourceExecutionEnvironmentsRead,
30+
UpdateContext: resourceExecutionEnvironmentsUpdate,
31+
DeleteContext: resourceExecutionEnvironmentsDelete,
32+
33+
Schema: map[string]*schema.Schema{
34+
"name": {
35+
Type: schema.TypeString,
36+
Required: true,
37+
},
38+
"image": {
39+
Type: schema.TypeString,
40+
Required: true,
41+
},
42+
"description": {
43+
Type: schema.TypeString,
44+
Optional: true,
45+
Default: "",
46+
},
47+
"organization": {
48+
Type: schema.TypeString,
49+
Optional: true,
50+
Default: "",
51+
},
52+
"credential": {
53+
Type: schema.TypeString,
54+
Optional: true,
55+
Default: "",
56+
},
57+
},
58+
}
59+
}
60+
61+
func resourceExecutionEnvironmentsCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
62+
var diags diag.Diagnostics
63+
client := m.(*awx.AWX)
64+
awxService := client.ExecutionEnvironmentsService
65+
66+
result, err := awxService.CreateExecutionEnvironment(map[string]interface{}{
67+
"name": d.Get("name").(string),
68+
"image": d.Get("image").(string),
69+
"description": d.Get("description").(string),
70+
"organization": AtoipOr(d.Get("organization").(string), nil),
71+
"credential": AtoipOr(d.Get("credential").(string), nil),
72+
}, map[string]string{})
73+
if err != nil {
74+
log.Printf("Fail to Create ExecutionEnvironment %v", err)
75+
diags = append(diags, diag.Diagnostic{
76+
Severity: diag.Error,
77+
Summary: "Unable to create ExecutionEnvironments",
78+
Detail: fmt.Sprintf("ExecutionEnvironments with name, failed to create %s", d.Get("name").(string), err.Error()),
79+
})
80+
return diags
81+
}
82+
83+
d.SetId(strconv.Itoa(result.ID))
84+
return resourceExecutionEnvironmentsRead(ctx, d, m)
85+
}
86+
87+
func resourceExecutionEnvironmentsUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
88+
var diags diag.Diagnostics
89+
client := m.(*awx.AWX)
90+
awxService := client.ExecutionEnvironmentsService
91+
id, diags := convertStateIDToNummeric("Update ExecutionEnvironments", d)
92+
if diags.HasError() {
93+
return diags
94+
}
95+
96+
params := make(map[string]string)
97+
98+
_, err := awxService.GetExecutionEnvironmentByID(id, params)
99+
if err != nil {
100+
return buildDiagNotFoundFail("ExecutionEnvironments", id, err)
101+
}
102+
103+
_, err = awxService.UpdateExecutionEnvironment(id, map[string]interface{}{
104+
"name": d.Get("name").(string),
105+
"image": d.Get("image").(string),
106+
"description": d.Get("description").(string),
107+
"organization": AtoipOr(d.Get("organization").(string), nil),
108+
"credential": AtoipOr(d.Get("credential").(string), nil),
109+
}, map[string]string{})
110+
if err != nil {
111+
diags = append(diags, diag.Diagnostic{
112+
Severity: diag.Error,
113+
Summary: "Unable to update ExecutionEnvironments",
114+
Detail: fmt.Sprintf("ExecutionEnvironments with name %s failed to update %s", d.Get("name").(string), err.Error()),
115+
})
116+
return diags
117+
}
118+
119+
return resourceExecutionEnvironmentsRead(ctx, d, m)
120+
}
121+
122+
func resourceExecutionEnvironmentsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
123+
var diags diag.Diagnostics
124+
client := m.(*awx.AWX)
125+
awxService := client.ExecutionEnvironmentsService
126+
id, diags := convertStateIDToNummeric("Read ExecutionEnvironments", d)
127+
if diags.HasError() {
128+
return diags
129+
}
130+
131+
res, err := awxService.GetExecutionEnvironmentByID(id, make(map[string]string))
132+
if err != nil {
133+
return buildDiagNotFoundFail("ExecutionEnvironment", id, err)
134+
135+
}
136+
d = setExecutionEnvironmentsResourceData(d, res)
137+
return nil
138+
}
139+
140+
func resourceExecutionEnvironmentsDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
141+
var diags diag.Diagnostics
142+
digMessagePart := "ExecutionEnvironment"
143+
client := m.(*awx.AWX)
144+
awxService := client.ExecutionEnvironmentsService
145+
id, diags := convertStateIDToNummeric("Delete ExecutionEnvironment", d)
146+
if diags.HasError() {
147+
return diags
148+
}
149+
150+
if _, err := awxService.DeleteExecutionEnvironment(id); err != nil {
151+
return buildDiagDeleteFail(digMessagePart, fmt.Sprintf("ExecutionEnvironmentID %v, got %s ", id, err.Error()))
152+
}
153+
d.SetId("")
154+
return diags
155+
}
156+
157+
func setExecutionEnvironmentsResourceData(d *schema.ResourceData, r *awx.ExecutionEnvironment) *schema.ResourceData {
158+
d.Set("name", r.Name)
159+
d.Set("image", r.Image)
160+
d.Set("description", r.Description)
161+
d.Set("organization", r.Organization)
162+
d.Set("credential", r.Credential)
163+
d.SetId(strconv.Itoa(r.ID))
164+
return d
165+
}

awx/resource_job_template.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -196,16 +196,12 @@ func resourceJobTemplate() *schema.Resource {
196196
Optional: true,
197197
Default: false,
198198
},
199+
"execution_environment": {
200+
Type: schema.TypeString,
201+
Optional: true,
202+
Default: "",
203+
},
199204
},
200-
//Importer: &schema.ResourceImporter{
201-
// State: schema.ImportStatePassthrough,
202-
//},
203-
//
204-
//Timeouts: &schema.ResourceTimeout{
205-
// Create: schema.DefaultTimeout(1 * time.Minute),
206-
// Update: schema.DefaultTimeout(1 * time.Minute),
207-
// Delete: schema.DefaultTimeout(1 * time.Minute),
208-
//},
209205
}
210206
}
211207

@@ -246,6 +242,7 @@ func resourceJobTemplateCreate(ctx context.Context, d *schema.ResourceData, m in
246242
"diff_mode": d.Get("diff_mode").(bool),
247243
"allow_simultaneous": d.Get("allow_simultaneous").(bool),
248244
"custom_virtualenv": AtoipOr(d.Get("custom_virtualenv").(string), nil),
245+
"execution_environment": AtoipOr(d.Get("execution_environment").(string), nil),
249246
}, map[string]string{})
250247
if err != nil {
251248
log.Printf("Fail to Create Template %v", err)
@@ -308,6 +305,7 @@ func resourceJobTemplateUpdate(ctx context.Context, d *schema.ResourceData, m in
308305
"diff_mode": d.Get("diff_mode").(bool),
309306
"allow_simultaneous": d.Get("allow_simultaneous").(bool),
310307
"custom_virtualenv": AtoipOr(d.Get("custom_virtualenv").(string), nil),
308+
"execution_environment": AtoipOr(d.Get("execution_environment").(string), nil),
311309
}, map[string]string{})
312310
if err != nil {
313311
diags = append(diags, diag.Diagnostic{

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/denouche/terraform-provider-awx
33
go 1.14
44

55
require (
6-
github.com/denouche/goawx v0.8.0
6+
github.com/denouche/goawx v0.9.0
77
github.com/gruntwork-io/terratest v0.31.2
88
github.com/hashicorp/terraform-plugin-sdk/v2 v2.10.1
99
github.com/stretchr/testify v1.7.0

go.sum

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ github.com/andybalholm/crlf v0.0.0-20171020200849-670099aa064f/go.mod h1:k8feO4+
8989
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
9090
github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
9191
github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
92+
github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I=
9293
github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
9394
github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0=
9495
github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk=
@@ -136,8 +137,8 @@ github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2
136137
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
137138
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
138139
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
139-
github.com/denouche/goawx v0.8.0 h1:bxRnaq1Ij/t254XEsUGm2u81tYlrGcp6zWP5KBPjmHw=
140-
github.com/denouche/goawx v0.8.0/go.mod h1:MppzSteoj2xgfiqiRWW/Bf1a8z2FrRyvah1z0J2vJTY=
140+
github.com/denouche/goawx v0.9.0 h1:YLTr9lYVbgr6d85rL9DT6fiZ2GV6MnZ4IPF5mNEybBY=
141+
github.com/denouche/goawx v0.9.0/go.mod h1:MppzSteoj2xgfiqiRWW/Bf1a8z2FrRyvah1z0J2vJTY=
141142
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
142143
github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
143144
github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
@@ -203,6 +204,7 @@ github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh
203204
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
204205
github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
205206
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
207+
github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68=
206208
github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
207209
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
208210
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
@@ -340,6 +342,7 @@ github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH
340342
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
341343
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
342344
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
345+
github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE=
343346
github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74=
344347
github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a h1:zPPuIq2jAWWPTrGt70eK/BSch+gFAGrNzecsoENgu2o=
345348
github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a/go.mod h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s=
@@ -365,12 +368,15 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxv
365368
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
366369
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
367370
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
371+
github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
368372
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
369373
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
370374
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
371375
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
376+
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
372377
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
373378
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
379+
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
374380
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
375381
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
376382
github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
@@ -423,6 +429,7 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m
423429
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
424430
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
425431
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
432+
github.com/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce h1:RPclfga2SEJmgMmz2k+Mg7cowZ8yv4Trqw9UsJby758=
426433
github.com/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce/go.mod h1:uFMI8w+ref4v2r9jz+c9i1IfIttS/OkmLfrk1jne5hs=
427434
github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
428435
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
@@ -685,6 +692,7 @@ golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7w
685692
golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
686693
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4=
687694
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
695+
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
688696
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
689697
golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
690698
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -748,6 +756,7 @@ golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roY
748756
golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
749757
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
750758
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
759+
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
751760
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
752761
gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0=
753762
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
@@ -836,6 +845,7 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
836845
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
837846
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
838847
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
848+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
839849
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
840850
gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
841851
gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=

0 commit comments

Comments
 (0)