Skip to content

Commit f64b094

Browse files
authored
chore: support single environment resource (#107)
* chore: support single environment resource * chore: update version
1 parent aafa263 commit f64b094

File tree

18 files changed

+348
-22
lines changed

18 files changed

+348
-22
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.0.24
1+
3.6.0

examples/database/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
terraform {
33
required_providers {
44
bytebase = {
5-
version = "1.0.24"
5+
version = "3.6.0"
66
# For local development, please use "terraform.local/bytebase/bytebase" instead
77
source = "registry.terraform.io/bytebase/bytebase"
88
}

examples/environments/main.tf

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
terraform {
22
required_providers {
33
bytebase = {
4-
version = "1.0.24"
4+
version = "3.6.0"
55
# For local development, please use "terraform.local/bytebase/bytebase" instead
66
source = "registry.terraform.io/bytebase/bytebase"
77
}
@@ -25,3 +25,11 @@ data "bytebase_setting" "environments" {
2525
output "all_environments" {
2626
value = data.bytebase_setting.environments
2727
}
28+
29+
data "bytebase_environment" "prod" {
30+
resource_id = "prod"
31+
}
32+
33+
output "prod_environment" {
34+
value = data.bytebase_environment.prod
35+
}

examples/groups/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
terraform {
22
required_providers {
33
bytebase = {
4-
version = "1.0.24"
4+
version = "3.6.0"
55
# For local development, please use "terraform.local/bytebase/bytebase" instead
66
source = "registry.terraform.io/bytebase/bytebase"
77
}

examples/iamPolicy/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
terraform {
22
required_providers {
33
bytebase = {
4-
version = "1.0.24"
4+
version = "3.6.0"
55
# For local development, please use "terraform.local/bytebase/bytebase" instead
66
source = "registry.terraform.io/bytebase/bytebase"
77
}

examples/instances/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
terraform {
33
required_providers {
44
bytebase = {
5-
version = "1.0.24"
5+
version = "3.6.0"
66
# For local development, please use "terraform.local/bytebase/bytebase" instead
77
source = "registry.terraform.io/bytebase/bytebase"
88
}

examples/policies/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
terraform {
22
required_providers {
33
bytebase = {
4-
version = "1.0.24"
4+
version = "3.6.0"
55
# For local development, please use "terraform.local/bytebase/bytebase" instead
66
source = "registry.terraform.io/bytebase/bytebase"
77
}

examples/projects/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
terraform {
33
required_providers {
44
bytebase = {
5-
version = "1.0.24"
5+
version = "3.6.0"
66
# For local development, please use "terraform.local/bytebase/bytebase" instead
77
source = "registry.terraform.io/bytebase/bytebase"
88
}

examples/roles/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
terraform {
22
required_providers {
33
bytebase = {
4-
version = "1.0.24"
4+
version = "3.6.0"
55
# For local development, please use "terraform.local/bytebase/bytebase" instead
66
source = "registry.terraform.io/bytebase/bytebase"
77
}

examples/settings/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
terraform {
22
required_providers {
33
bytebase = {
4-
version = "1.0.24"
4+
version = "3.6.0"
55
# For local development, please use "terraform.local/bytebase/bytebase" instead
66
source = "registry.terraform.io/bytebase/bytebase"
77
}

examples/setup/environment.tf

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,38 @@
11
resource "bytebase_setting" "environments" {
22
name = "bb.workspace.environment"
33
environment_setting {
4-
environment {
5-
id = local.environment_id_test
6-
title = "Test"
7-
protected = false
8-
}
9-
104
environment {
115
id = local.environment_id_prod
126
title = "Prod"
137
protected = true
148
}
9+
10+
environment {
11+
id = local.environment_id_test
12+
title = "Test"
13+
protected = false
14+
}
1515
}
1616
}
17+
18+
# Upsert test environment.
19+
resource "bytebase_environment" "test" {
20+
depends_on = [
21+
bytebase_setting.environments
22+
]
23+
resource_id = local.environment_id_test
24+
title = "Staging" // rename to "Staging"
25+
order = 0 // change order to 0
26+
protected = false
27+
}
28+
29+
# Upsert prod environment.
30+
resource "bytebase_environment" "prod" {
31+
depends_on = [
32+
bytebase_environment.test
33+
]
34+
resource_id = local.environment_id_prod
35+
title = "Prod"
36+
order = 1 // change order to 1
37+
protected = true
38+
}

examples/setup/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
terraform {
22
required_providers {
33
bytebase = {
4-
version = "1.0.23"
4+
version = "3.6.0"
55
# For local development, please use "terraform.local/bytebase/bytebase" instead
66
source = "registry.terraform.io/bytebase/bytebase"
77
}

examples/sql_review/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
terraform {
22
required_providers {
33
bytebase = {
4-
version = "1.0.24"
4+
version = "3.6.0"
55
# For local development, please use "terraform.local/bytebase/bytebase" instead
66
source = "registry.terraform.io/bytebase/bytebase"
77
}

examples/users/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
terraform {
33
required_providers {
44
bytebase = {
5-
version = "1.0.24"
5+
version = "3.6.0"
66
# For local development, please use "terraform.local/bytebase/bytebase" instead
77
source = "registry.terraform.io/bytebase/bytebase"
88
}

provider/data_source_environment.go

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package provider
2+
3+
import (
4+
"context"
5+
"fmt"
6+
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9+
10+
"github.com/bytebase/terraform-provider-bytebase/api"
11+
"github.com/bytebase/terraform-provider-bytebase/provider/internal"
12+
)
13+
14+
func dataSourceEnvironment() *schema.Resource {
15+
return &schema.Resource{
16+
Description: "The environment data source.",
17+
ReadContext: dataSourceEnvironmentRead,
18+
Schema: map[string]*schema.Schema{
19+
"resource_id": {
20+
Type: schema.TypeString,
21+
Required: true,
22+
ValidateFunc: internal.ResourceIDValidation,
23+
Description: "The environment unique resource id.",
24+
},
25+
"name": {
26+
Type: schema.TypeString,
27+
Computed: true,
28+
Description: "The environment full name in environments/{resource id} format.",
29+
},
30+
"title": {
31+
Type: schema.TypeString,
32+
Computed: true,
33+
Description: "The environment unique name.",
34+
},
35+
"order": {
36+
Type: schema.TypeInt,
37+
Computed: true,
38+
Description: "The environment sorting order.",
39+
},
40+
"color": {
41+
Type: schema.TypeString,
42+
Optional: true,
43+
Description: "The environment color.",
44+
},
45+
"protected": {
46+
Type: schema.TypeBool,
47+
Optional: true,
48+
Description: "The environment is protected or not.",
49+
},
50+
},
51+
}
52+
}
53+
54+
func dataSourceEnvironmentRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
55+
c := m.(api.Client)
56+
environmentName := fmt.Sprintf("%s%s", internal.EnvironmentNamePrefix, d.Get("resource_id").(string))
57+
58+
env, order, _, err := findEnvironment(ctx, c, environmentName)
59+
if err != nil {
60+
return diag.FromErr(err)
61+
}
62+
63+
d.SetId(env.Name)
64+
65+
return setEnvironment(d, env, order)
66+
}

provider/data_source_setting.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -353,9 +353,10 @@ func getEnvironmentSetting(computed bool) *schema.Schema {
353353
Description: "The environment readonly name in environments/{id} format.",
354354
},
355355
"title": {
356-
Type: schema.TypeString,
357-
Required: true,
358-
Description: "The environment display name.",
356+
Type: schema.TypeString,
357+
Required: true,
358+
ValidateFunc: validation.StringIsNotEmpty,
359+
Description: "The environment display name.",
359360
},
360361
"color": {
361362
Type: schema.TypeString,

provider/provider.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ func NewProvider() *schema.Provider {
6767
"bytebase_review_config": dataSourceReviewConfig(),
6868
"bytebase_review_config_list": dataSourceReviewConfigList(),
6969
"bytebase_iam_policy": dataSourceIAMPolicy(),
70+
"bytebase_environment": dataSourceEnvironment(),
7071
},
7172
ResourcesMap: map[string]*schema.Resource{
7273
"bytebase_instance": resourceInstance(),
@@ -79,6 +80,7 @@ func NewProvider() *schema.Provider {
7980
"bytebase_database": resourceDatabase(),
8081
"bytebase_review_config": resourceReviewConfig(),
8182
"bytebase_iam_policy": resourceIAMPolicy(),
83+
"bytebase_environment": resourceEnvironment(),
8284
},
8385
}
8486
}

0 commit comments

Comments
 (0)