Skip to content

Commit af2082e

Browse files
Use randomly generated identifiers by default (#396)
* Use randomly generated identifiers by default Closes #379 and #390 * remove example in readme Co-authored-by: DavidGOrtega <[email protected]>
1 parent 0e94e21 commit af2082e

File tree

4 files changed

+27
-12
lines changed

4 files changed

+27
-12
lines changed

docs/guides/getting-started.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ terraform {
2222
}
2323
provider "iterative" {}
2424
resource "iterative_task" "task" {
25-
name = "example"
2625
cloud = "aws" # or any of: gcp, az, k8s
2726
machine = "m"
2827

docs/index.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ terraform {
1010
}
1111
provider "iterative" {}
1212
resource "iterative_task" "task" {
13-
name = "example"
1413
cloud = "aws"
1514
1615
script = <<-END

docs/resources/task.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ This resource will:
1111

1212
```hcl
1313
resource "iterative_task" "task" {
14-
name = "example"
1514
cloud = "aws"
1615
1716
environment = { GREETING = "Hello, world!" }
@@ -30,12 +29,12 @@ resource "iterative_task" "task" {
3029

3130
### Required
3231

33-
- `name` - (Required) Task name.
3432
- `cloud` - (Required) Cloud provider to run the task on; valid values are `aws`, `gcp`, `az` and `k8s`.
3533
- `script` - (Required) Script to run; must begin with a valid [shebang](<https://en.wikipedia.org/wiki/Shebang_(Unix)>).
3634

3735
### Optional
3836

37+
- `name` - (Optional) Deterministic task name.
3938
- `region` - (Optional) [Cloud region/zone](#cloud-regions) to run the task on.
4039
- `machine` - (Optional) See [Machine Types](#machine-types) below.
4140
- `disk_size` - (Optional) Size of the ephemeral machine storage.

iterative/resource_task.go

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import (
99
"strings"
1010
"time"
1111

12+
"github.com/aohorodnyk/uid"
13+
1214
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1315
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1416

@@ -26,7 +28,7 @@ func resourceTask() *schema.Resource {
2628
"name": {
2729
Type: schema.TypeString,
2830
ForceNew: true,
29-
Required: true,
31+
Optional: true,
3032
},
3133
"cloud": {
3234
Type: schema.TypeString,
@@ -162,14 +164,15 @@ func resourceTaskCreate(ctx context.Context, d *schema.ResourceData, m interface
162164
return diagnostic(diags, err, diag.Error)
163165
}
164166

165-
if err := task.Create(ctx); err == nil {
166-
d.SetId(task.GetIdentifier(ctx).Long())
167-
} else {
167+
d.SetId(task.GetIdentifier(ctx).Long())
168+
169+
if err := task.Create(ctx); err != nil {
168170
diags = diagnostic(diags, err, diag.Error)
169-
if err := task.Delete(ctx); err == nil {
170-
diags = diagnostic(diags, errors.New("failed to create"), diag.Error)
171-
} else {
171+
if err := task.Delete(ctx); err != nil {
172172
diags = diagnostic(diags, err, diag.Error)
173+
} else {
174+
diags = diagnostic(diags, errors.New("failed to create"), diag.Error)
175+
d.SetId("")
173176
}
174177
}
175178

@@ -316,7 +319,22 @@ func resourceTaskBuild(ctx context.Context, d *schema.ResourceData, m interface{
316319
Parallelism: uint16(d.Get("parallelism").(int)),
317320
}
318321

319-
return task.New(ctx, c, common.Identifier(d.Get("name").(string)), t)
322+
name := d.Id()
323+
if name == "" {
324+
if identifier := d.Get("name").(string); identifier != "" {
325+
name = identifier
326+
} else if identifier := os.Getenv("GITHUB_RUN_ID"); identifier != "" {
327+
name = identifier
328+
} else if identifier := os.Getenv("CI_PIPELINE_ID"); identifier != "" {
329+
name = identifier
330+
} else if identifier := os.Getenv("BITBUCKET_STEP_TRIGGERER_UUID"); identifier != "" {
331+
name = identifier
332+
} else {
333+
name = uid.NewProvider36Size(8).MustGenerate().String()
334+
}
335+
}
336+
337+
return task.New(ctx, c, common.Identifier(name), t)
320338
}
321339

322340
func diagnostic(diags diag.Diagnostics, err error, severity diag.Severity) diag.Diagnostics {

0 commit comments

Comments
 (0)