diff --git a/docs/data-sources/instance.md b/docs/data-sources/instance.md
index 9012a10..0e8af83 100644
--- a/docs/data-sources/instance.md
+++ b/docs/data-sources/instance.md
@@ -53,6 +53,7 @@ Read-Only:
- `ssl_cert` (String)
- `ssl_key` (String)
- `type` (String)
+- `use_ssl` (Boolean)
- `username` (String)
diff --git a/docs/data-sources/instance_list.md b/docs/data-sources/instance_list.md
index 6abfd6a..6d9f66a 100644
--- a/docs/data-sources/instance_list.md
+++ b/docs/data-sources/instance_list.md
@@ -62,6 +62,7 @@ Read-Only:
- `ssl_cert` (String)
- `ssl_key` (String)
- `type` (String)
+- `use_ssl` (Boolean)
- `username` (String)
diff --git a/docs/resources/instance.md b/docs/resources/instance.md
index d15749c..e3dc9d3 100644
--- a/docs/resources/instance.md
+++ b/docs/resources/instance.md
@@ -56,6 +56,7 @@ Optional:
- `ssl_ca` (String, Sensitive) The CA certificate. Optional, you can set this if the engine type is MYSQL, POSTGRES, TIDB or CLICKHOUSE.
- `ssl_cert` (String, Sensitive) The client certificate. Optional, you can set this if the engine type is MYSQL, POSTGRES, TIDB or CLICKHOUSE.
- `ssl_key` (String, Sensitive) The client key. Optional, you can set this if the engine type is MYSQL, POSTGRES, TIDB or CLICKHOUSE.
+- `use_ssl` (Boolean) Enable SSL connection. Required to use SSL certificates.
- `username` (String) The connection user name used by Bytebase to perform DDL and DML operations.
diff --git a/examples/database/main.tf b/examples/database/main.tf
index 3ee9f24..e7ab2c4 100644
--- a/examples/database/main.tf
+++ b/examples/database/main.tf
@@ -2,7 +2,7 @@
terraform {
required_providers {
bytebase = {
- version = "3.7.1"
+ version = "3.7.2"
# For local development, please use "terraform.local/bytebase/bytebase" instead
source = "registry.terraform.io/bytebase/bytebase"
}
diff --git a/examples/database_group/main.tf b/examples/database_group/main.tf
index f7f286d..c1719e5 100644
--- a/examples/database_group/main.tf
+++ b/examples/database_group/main.tf
@@ -1,7 +1,7 @@
terraform {
required_providers {
bytebase = {
- version = "3.7.1"
+ version = "3.7.2"
# For local development, please use "terraform.local/bytebase/bytebase" instead
source = "registry.terraform.io/bytebase/bytebase"
}
diff --git a/examples/environments/README.md b/examples/environments/README.md
index 9587462..e6f7d19 100644
--- a/examples/environments/README.md
+++ b/examples/environments/README.md
@@ -8,6 +8,6 @@ You should replace the provider initial variables with your own and exec the [se
```terraform
data "bytebase_setting" "environments" {
- name = "ENVIRONMENT"
+ name = "settings/ENVIRONMENT"
}
```
diff --git a/examples/environments/main.tf b/examples/environments/main.tf
index 07429d6..dea81bb 100644
--- a/examples/environments/main.tf
+++ b/examples/environments/main.tf
@@ -1,7 +1,7 @@
terraform {
required_providers {
bytebase = {
- version = "3.7.1"
+ version = "3.7.2"
# For local development, please use "terraform.local/bytebase/bytebase" instead
source = "registry.terraform.io/bytebase/bytebase"
}
@@ -19,7 +19,7 @@ provider "bytebase" {
# List all environment
data "bytebase_setting" "environments" {
- name = "ENVIRONMENT"
+ name = "settings/ENVIRONMENT"
}
output "all_environments" {
diff --git a/examples/groups/main.tf b/examples/groups/main.tf
index c1c3e21..741d0b2 100644
--- a/examples/groups/main.tf
+++ b/examples/groups/main.tf
@@ -1,7 +1,7 @@
terraform {
required_providers {
bytebase = {
- version = "3.7.1"
+ version = "3.7.2"
# For local development, please use "terraform.local/bytebase/bytebase" instead
source = "registry.terraform.io/bytebase/bytebase"
}
diff --git a/examples/iamPolicy/main.tf b/examples/iamPolicy/main.tf
index df08231..d4ec9e2 100644
--- a/examples/iamPolicy/main.tf
+++ b/examples/iamPolicy/main.tf
@@ -1,7 +1,7 @@
terraform {
required_providers {
bytebase = {
- version = "3.7.1"
+ version = "3.7.2"
# For local development, please use "terraform.local/bytebase/bytebase" instead
source = "registry.terraform.io/bytebase/bytebase"
}
diff --git a/examples/instances/main.tf b/examples/instances/main.tf
index ab92d38..18417f7 100644
--- a/examples/instances/main.tf
+++ b/examples/instances/main.tf
@@ -2,7 +2,7 @@
terraform {
required_providers {
bytebase = {
- version = "3.7.1"
+ version = "3.7.2"
# For local development, please use "terraform.local/bytebase/bytebase" instead
source = "registry.terraform.io/bytebase/bytebase"
}
diff --git a/examples/policies/main.tf b/examples/policies/main.tf
index 7d32e75..e9adc04 100644
--- a/examples/policies/main.tf
+++ b/examples/policies/main.tf
@@ -1,7 +1,7 @@
terraform {
required_providers {
bytebase = {
- version = "3.7.1"
+ version = "3.7.2"
# For local development, please use "terraform.local/bytebase/bytebase" instead
source = "registry.terraform.io/bytebase/bytebase"
}
diff --git a/examples/projects/main.tf b/examples/projects/main.tf
index f5f2c8b..24b539e 100644
--- a/examples/projects/main.tf
+++ b/examples/projects/main.tf
@@ -2,7 +2,7 @@
terraform {
required_providers {
bytebase = {
- version = "3.7.1"
+ version = "3.7.2"
# For local development, please use "terraform.local/bytebase/bytebase" instead
source = "registry.terraform.io/bytebase/bytebase"
}
diff --git a/examples/risk/main.tf b/examples/risk/main.tf
index cddef7d..645207d 100644
--- a/examples/risk/main.tf
+++ b/examples/risk/main.tf
@@ -1,7 +1,7 @@
terraform {
required_providers {
bytebase = {
- version = "3.7.1"
+ version = "3.7.2"
# For local development, please use "terraform.local/bytebase/bytebase" instead
source = "registry.terraform.io/bytebase/bytebase"
}
diff --git a/examples/roles/main.tf b/examples/roles/main.tf
index f8e05a3..34fd4f7 100644
--- a/examples/roles/main.tf
+++ b/examples/roles/main.tf
@@ -1,7 +1,7 @@
terraform {
required_providers {
bytebase = {
- version = "3.7.1"
+ version = "3.7.2"
# For local development, please use "terraform.local/bytebase/bytebase" instead
source = "registry.terraform.io/bytebase/bytebase"
}
diff --git a/examples/settings/main.tf b/examples/settings/main.tf
index 6ffe582..20f9f80 100644
--- a/examples/settings/main.tf
+++ b/examples/settings/main.tf
@@ -1,7 +1,7 @@
terraform {
required_providers {
bytebase = {
- version = "3.7.1"
+ version = "3.7.2"
# For local development, please use "terraform.local/bytebase/bytebase" instead
source = "registry.terraform.io/bytebase/bytebase"
}
diff --git a/examples/setup/environment.tf b/examples/setup/environment.tf
index 927db40..4242f12 100644
--- a/examples/setup/environment.tf
+++ b/examples/setup/environment.tf
@@ -1,5 +1,6 @@
resource "bytebase_setting" "environments" {
- name = "ENVIRONMENT"
+ name = "settings/ENVIRONMENT"
+
environment_setting {
environment {
id = local.environment_id_prod
diff --git a/examples/setup/main.tf b/examples/setup/main.tf
index cd72af4..88c7059 100644
--- a/examples/setup/main.tf
+++ b/examples/setup/main.tf
@@ -1,7 +1,7 @@
terraform {
required_providers {
bytebase = {
- version = "3.7.1"
+ version = "3.7.2"
# For local development, please use "terraform.local/bytebase/bytebase" instead
source = "registry.terraform.io/bytebase/bytebase"
}
diff --git a/examples/sql_review/main.tf b/examples/sql_review/main.tf
index 4eec808..05ad7c8 100644
--- a/examples/sql_review/main.tf
+++ b/examples/sql_review/main.tf
@@ -1,7 +1,7 @@
terraform {
required_providers {
bytebase = {
- version = "3.7.1"
+ version = "3.7.2"
# For local development, please use "terraform.local/bytebase/bytebase" instead
source = "registry.terraform.io/bytebase/bytebase"
}
diff --git a/examples/users/main.tf b/examples/users/main.tf
index 6f77f72..9fca6b1 100644
--- a/examples/users/main.tf
+++ b/examples/users/main.tf
@@ -2,7 +2,7 @@
terraform {
required_providers {
bytebase = {
- version = "3.7.1"
+ version = "3.7.2"
# For local development, please use "terraform.local/bytebase/bytebase" instead
source = "registry.terraform.io/bytebase/bytebase"
}
diff --git a/provider/data_source_database_group.go b/provider/data_source_database_group.go
index 88c351d..03ce121 100644
--- a/provider/data_source_database_group.go
+++ b/provider/data_source_database_group.go
@@ -3,7 +3,6 @@ package provider
import (
"context"
"fmt"
- "regexp"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -29,7 +28,7 @@ func dataSourceDatabaseGroup() *schema.Resource {
Type: schema.TypeString,
Required: true,
ValidateDiagFunc: internal.ResourceNameValidation(
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern),
),
Description: "The project fullname in projects/{id} format.",
},
diff --git a/provider/data_source_database_group_list.go b/provider/data_source_database_group_list.go
index 789d7e6..25e18ea 100644
--- a/provider/data_source_database_group_list.go
+++ b/provider/data_source_database_group_list.go
@@ -3,7 +3,6 @@ package provider
import (
"context"
"fmt"
- "regexp"
"strconv"
"time"
@@ -23,7 +22,7 @@ func dataSourceDatabaseGroupList() *schema.Resource {
Type: schema.TypeString,
Required: true,
ValidateDiagFunc: internal.ResourceNameValidation(
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern),
),
Description: "The project fullname in projects/{id} format.",
},
diff --git a/provider/data_source_database_list.go b/provider/data_source_database_list.go
index ef86ad8..940ffcc 100644
--- a/provider/data_source_database_list.go
+++ b/provider/data_source_database_list.go
@@ -3,7 +3,6 @@ package provider
import (
"context"
"fmt"
- "regexp"
"strconv"
"time"
@@ -25,9 +24,9 @@ func dataSourceDatabaseList() *schema.Resource {
Type: schema.TypeString,
Required: true,
ValidateDiagFunc: internal.ResourceNameValidation(
- regexp.MustCompile("^workspaces/-$"),
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern)),
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s$", internal.WorkspaceName),
+ fmt.Sprintf("^%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern),
+ fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern),
),
},
"query": {
@@ -41,22 +40,28 @@ func dataSourceDatabaseList() *schema.Resource {
Description: "If not include unassigned databases in the response.",
},
"environment": {
- Type: schema.TypeString,
- Optional: true,
- Description: "The environment full name. Filter databases by environment.",
- ValidateDiagFunc: internal.ResourceNameValidation(regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.EnvironmentNamePrefix, internal.ResourceIDPattern))),
+ Type: schema.TypeString,
+ Optional: true,
+ Description: "The environment full name. Filter databases by environment.",
+ ValidateDiagFunc: internal.ResourceNameValidation(
+ fmt.Sprintf("^%s%s$", internal.EnvironmentNamePrefix, internal.ResourceIDPattern),
+ ),
},
"project": {
- Type: schema.TypeString,
- Optional: true,
- Description: "The project full name. Filter databases by project.",
- ValidateDiagFunc: internal.ResourceNameValidation(regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern))),
+ Type: schema.TypeString,
+ Optional: true,
+ Description: "The project full name. Filter databases by project.",
+ ValidateDiagFunc: internal.ResourceNameValidation(
+ fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern),
+ ),
},
"instance": {
- Type: schema.TypeString,
- Optional: true,
- Description: "The instance full name. Filter databases by instance.",
- ValidateDiagFunc: internal.ResourceNameValidation(regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern))),
+ Type: schema.TypeString,
+ Optional: true,
+ Description: "The instance full name. Filter databases by instance.",
+ ValidateDiagFunc: internal.ResourceNameValidation(
+ fmt.Sprintf("^%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern),
+ ),
},
"engines": {
Type: schema.TypeSet,
diff --git a/provider/data_source_group.go b/provider/data_source_group.go
index 9f11af5..996d998 100644
--- a/provider/data_source_group.go
+++ b/provider/data_source_group.go
@@ -4,7 +4,6 @@ import (
"bytes"
"context"
"fmt"
- "regexp"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -24,7 +23,7 @@ func dataSourceGroup() *schema.Resource {
Type: schema.TypeString,
Required: true,
ValidateDiagFunc: internal.ResourceNameValidation(
- regexp.MustCompile(fmt.Sprintf("^%s", internal.GroupNamePrefix)),
+ fmt.Sprintf("^%s", internal.GroupNamePrefix),
),
Description: "The group name in groups/{email} format.",
},
diff --git a/provider/data_source_iam_policy.go b/provider/data_source_iam_policy.go
index 299b1f2..6c04105 100644
--- a/provider/data_source_iam_policy.go
+++ b/provider/data_source_iam_policy.go
@@ -4,7 +4,6 @@ import (
"bytes"
"context"
"fmt"
- "regexp"
"strconv"
"strings"
@@ -28,9 +27,9 @@ func dataSourceIAMPolicy() *schema.Resource {
Required: true,
ValidateDiagFunc: internal.ResourceNameValidation(
// workspace policy
- regexp.MustCompile("^workspaces/-$"),
+ fmt.Sprintf("^%s$", internal.WorkspaceName),
// project policy
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern),
),
Description: `The IAM policy parent name for the policy, support "projects/{resource id}" or "workspaces/-"`,
},
diff --git a/provider/data_source_instance_list.go b/provider/data_source_instance_list.go
index 30ef0a4..ea34b59 100644
--- a/provider/data_source_instance_list.go
+++ b/provider/data_source_instance_list.go
@@ -3,7 +3,6 @@ package provider
import (
"context"
"fmt"
- "regexp"
"strconv"
"time"
@@ -28,16 +27,20 @@ func dataSourceInstanceList() *schema.Resource {
Description: "Filter instances by name or resource id with wildcard",
},
"environment": {
- Type: schema.TypeString,
- Optional: true,
- Description: "The environment full name. Filter instances by environment.",
- ValidateDiagFunc: internal.ResourceNameValidation(regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.EnvironmentNamePrefix, internal.ResourceIDPattern))),
+ Type: schema.TypeString,
+ Optional: true,
+ Description: "The environment full name. Filter instances by environment.",
+ ValidateDiagFunc: internal.ResourceNameValidation(
+ fmt.Sprintf("^%s%s$", internal.EnvironmentNamePrefix, internal.ResourceIDPattern),
+ ),
},
"project": {
- Type: schema.TypeString,
- Optional: true,
- Description: "The project full name. Filter instances by project.",
- ValidateDiagFunc: internal.ResourceNameValidation(regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern))),
+ Type: schema.TypeString,
+ Optional: true,
+ Description: "The project full name. Filter instances by project.",
+ ValidateDiagFunc: internal.ResourceNameValidation(
+ fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern),
+ ),
},
"host": {
Type: schema.TypeString,
diff --git a/provider/data_source_policy.go b/provider/data_source_policy.go
index 829dab9..80786d3 100644
--- a/provider/data_source_policy.go
+++ b/provider/data_source_policy.go
@@ -4,7 +4,6 @@ import (
"bytes"
"context"
"fmt"
- "regexp"
"strings"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
@@ -29,15 +28,15 @@ func dataSourcePolicy() *schema.Resource {
Default: "",
ValidateDiagFunc: internal.ResourceNameValidation(
// workspace policy
- regexp.MustCompile(fmt.Sprintf("^%s$", internal.WorkspaceName)),
+ fmt.Sprintf("^%s$", internal.WorkspaceName),
// environment policy
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.EnvironmentNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s$", internal.EnvironmentNamePrefix, internal.ResourceIDPattern),
// instance policy
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern),
// project policy
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern),
// database policy
- regexp.MustCompile(fmt.Sprintf("^%s%s/%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern, internal.DatabaseIDPrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s/%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern, internal.DatabaseIDPrefix, internal.ResourceIDPattern),
),
Description: "The policy parent name for the policy, support projects/{resource id}, environments/{resource id}, instances/{resource id}, or instances/{resource id}/databases/{database name}",
},
diff --git a/provider/data_source_policy_list.go b/provider/data_source_policy_list.go
index cf51cf8..aecd72c 100644
--- a/provider/data_source_policy_list.go
+++ b/provider/data_source_policy_list.go
@@ -3,7 +3,6 @@ package provider
import (
"context"
"fmt"
- "regexp"
"strconv"
"time"
@@ -27,15 +26,15 @@ func dataSourcePolicyList() *schema.Resource {
Default: "",
ValidateDiagFunc: internal.ResourceNameValidation(
// workspace policy
- regexp.MustCompile(fmt.Sprintf("^%s$", internal.WorkspaceName)),
+ fmt.Sprintf("^%s$", internal.WorkspaceName),
// environment policy
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.EnvironmentNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s$", internal.EnvironmentNamePrefix, internal.ResourceIDPattern),
// instance policy
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern),
// project policy
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern),
// database policy
- regexp.MustCompile(fmt.Sprintf("^%s%s/%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern, internal.DatabaseIDPrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s/%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern, internal.DatabaseIDPrefix, internal.ResourceIDPattern),
),
Description: "The policy parent name for the policy, support projects/{resource id}, environments/{resource id}, instances/{resource id}, or instances/{resource id}/databases/{database name}",
},
diff --git a/provider/data_source_setting.go b/provider/data_source_setting.go
index 31fed7b..e20a0b3 100644
--- a/provider/data_source_setting.go
+++ b/provider/data_source_setting.go
@@ -3,7 +3,6 @@ package provider
import (
"context"
"fmt"
- "regexp"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -27,11 +26,11 @@ func dataSourceSetting() *schema.Resource {
Required: true,
Description: `The setting name in settings/{name} format. The name support "WORKSPACE_APPROVAL", "WORKSPACE_PROFILE", "DATA_CLASSIFICATION", "SEMANTIC_TYPES" and "ENVIRONMENT". Check the proto https://github.com/bytebase/bytebase/blob/main/proto/v1/v1/setting_service.proto#L109 for details`,
ValidateDiagFunc: internal.ResourceNameValidation(
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_WORKSPACE_APPROVAL.String())),
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_WORKSPACE_PROFILE.String())),
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_DATA_CLASSIFICATION.String())),
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_SEMANTIC_TYPES.String())),
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_ENVIRONMENT.String())),
+ fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_WORKSPACE_APPROVAL.String()),
+ fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_WORKSPACE_PROFILE.String()),
+ fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_DATA_CLASSIFICATION.String()),
+ fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_SEMANTIC_TYPES.String()),
+ fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_ENVIRONMENT.String()),
),
},
"approval_flow": getWorkspaceApprovalSetting(true),
@@ -419,7 +418,7 @@ func getWorkspaceApprovalSetting(computed bool) *schema.Schema {
Type: schema.TypeString,
Required: true,
ValidateDiagFunc: internal.ResourceNameValidation(
- regexp.MustCompile(fmt.Sprintf("^%s", internal.RoleNamePrefix)),
+ fmt.Sprintf("^%s", internal.RoleNamePrefix),
),
Description: "The role require to review in this step",
},
diff --git a/provider/data_source_user.go b/provider/data_source_user.go
index cdc3ecb..9ef0f6a 100644
--- a/provider/data_source_user.go
+++ b/provider/data_source_user.go
@@ -3,7 +3,6 @@ package provider
import (
"context"
"fmt"
- "regexp"
"time"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
@@ -24,7 +23,7 @@ func dataSourceUser() *schema.Resource {
Type: schema.TypeString,
Required: true,
ValidateDiagFunc: internal.ResourceNameValidation(
- regexp.MustCompile(fmt.Sprintf("^%s", internal.UserNamePrefix)),
+ fmt.Sprintf("^%s", internal.UserNamePrefix),
),
Description: "The user name in users/{user id or email} format.",
},
diff --git a/provider/data_source_user_list.go b/provider/data_source_user_list.go
index d5332da..0ce6c5e 100644
--- a/provider/data_source_user_list.go
+++ b/provider/data_source_user_list.go
@@ -3,7 +3,6 @@ package provider
import (
"context"
"fmt"
- "regexp"
"strconv"
"time"
@@ -33,10 +32,12 @@ func dataSourceUserList() *schema.Resource {
Description: "Filter users by email with wildcard",
},
"project": {
- Type: schema.TypeString,
- Optional: true,
- Description: "The project full name. Filter users by project.",
- ValidateDiagFunc: internal.ResourceNameValidation(regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern))),
+ Type: schema.TypeString,
+ Optional: true,
+ Description: "The project full name. Filter users by project.",
+ ValidateDiagFunc: internal.ResourceNameValidation(
+ fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern),
+ ),
},
"state": {
Type: schema.TypeString,
diff --git a/provider/internal/utils.go b/provider/internal/utils.go
index 21e35cc..537ef7e 100644
--- a/provider/internal/utils.go
+++ b/provider/internal/utils.go
@@ -54,7 +54,7 @@ var (
var ResourceIDValidation = validation.StringMatch(ResourceIDRegex, fmt.Sprintf("resource id must matches %v", ResourceIDRegex))
// ResourceNameValidation validate the resource name with prefix.
-func ResourceNameValidation(regexs ...*regexp.Regexp) schema.SchemaValidateDiagFunc {
+func ResourceNameValidation(stringPatterns ...string) schema.SchemaValidateDiagFunc {
return func(i interface{}, path cty.Path) diag.Diagnostics {
var diags diag.Diagnostics
@@ -68,15 +68,17 @@ func ResourceNameValidation(regexs ...*regexp.Regexp) schema.SchemaValidateDiagF
})
return diags
}
- for _, regex := range regexs {
+ for _, stringPattern := range stringPatterns {
+ regex := regexp.MustCompile(stringPattern)
if ok := regex.MatchString(v); ok {
return diags
}
}
+
diags = append(diags, diag.Diagnostic{
Severity: diag.Error,
Summary: "Resource id not match",
- Detail: fmt.Sprintf(`resource id "%s" must matches "%s" pattern`, v, ResourceIDPattern),
+ Detail: fmt.Sprintf(`The resource value "%s" doesn't must any patterns: %v`, v, strings.Join(stringPatterns, ",")),
AttributePath: path,
})
return diags
diff --git a/provider/resource_database_group.go b/provider/resource_database_group.go
index b336f96..1ee8eb4 100644
--- a/provider/resource_database_group.go
+++ b/provider/resource_database_group.go
@@ -3,7 +3,6 @@ package provider
import (
"context"
"fmt"
- "regexp"
v1pb "github.com/bytebase/bytebase/proto/generated-go/v1"
"github.com/hashicorp/terraform-plugin-log/tflog"
@@ -37,7 +36,7 @@ func resourceDatabaseGroup() *schema.Resource {
Type: schema.TypeString,
Required: true,
ValidateDiagFunc: internal.ResourceNameValidation(
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern),
),
Description: "The project fullname in projects/{id} format.",
},
diff --git a/provider/resource_group.go b/provider/resource_group.go
index b6c7e4d..f537aa6 100644
--- a/provider/resource_group.go
+++ b/provider/resource_group.go
@@ -3,7 +3,6 @@ package provider
import (
"context"
"fmt"
- "regexp"
v1pb "github.com/bytebase/bytebase/proto/generated-go/v1"
"github.com/hashicorp/terraform-plugin-log/tflog"
@@ -66,7 +65,7 @@ func resourceGroup() *schema.Resource {
Type: schema.TypeString,
Required: true,
ValidateDiagFunc: internal.ResourceNameValidation(
- regexp.MustCompile(fmt.Sprintf("^%s", internal.UserNamePrefix)),
+ fmt.Sprintf("^%s", internal.UserNamePrefix),
),
Description: "The member in users/{email} format.",
},
diff --git a/provider/resource_iam_policy.go b/provider/resource_iam_policy.go
index 186f361..825ba67 100644
--- a/provider/resource_iam_policy.go
+++ b/provider/resource_iam_policy.go
@@ -3,7 +3,6 @@ package provider
import (
"context"
"fmt"
- "regexp"
"strings"
"time"
@@ -34,9 +33,9 @@ func resourceIAMPolicy() *schema.Resource {
Required: true,
ValidateDiagFunc: internal.ResourceNameValidation(
// workspace policy
- regexp.MustCompile("^workspaces/-$"),
+ fmt.Sprintf("^%s$", internal.WorkspaceName),
// project policy
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern),
),
Description: `The IAM policy parent name for the policy, support "projects/{resource id}" or "workspaces/-"`,
},
diff --git a/provider/resource_instance.go b/provider/resource_instance.go
index dfbfd32..85ea68f 100644
--- a/provider/resource_instance.go
+++ b/provider/resource_instance.go
@@ -4,7 +4,6 @@ import (
"bytes"
"context"
"fmt"
- "regexp"
"github.com/hashicorp/terraform-plugin-log/tflog"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
@@ -37,10 +36,12 @@ func resourceInstance() *schema.Resource {
Description: "The instance unique resource id.",
},
"environment": {
- Type: schema.TypeString,
- Required: true,
- ValidateDiagFunc: internal.ResourceNameValidation(regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.EnvironmentNamePrefix, internal.ResourceIDPattern))),
- Description: "The environment full name for the instance in environments/{environment id} format.",
+ Type: schema.TypeString,
+ Required: true,
+ ValidateDiagFunc: internal.ResourceNameValidation(
+ fmt.Sprintf("^%s%s$", internal.EnvironmentNamePrefix, internal.ResourceIDPattern),
+ ),
+ Description: "The environment full name for the instance in environments/{environment id} format.",
},
"title": {
Type: schema.TypeString,
diff --git a/provider/resource_policy.go b/provider/resource_policy.go
index 70ada04..21ed0a5 100644
--- a/provider/resource_policy.go
+++ b/provider/resource_policy.go
@@ -3,7 +3,6 @@ package provider
import (
"context"
"fmt"
- "regexp"
"strings"
"time"
@@ -35,15 +34,15 @@ func resourcePolicy() *schema.Resource {
Required: true,
ValidateDiagFunc: internal.ResourceNameValidation(
// workspace policy
- regexp.MustCompile(fmt.Sprintf("^%s$", internal.WorkspaceName)),
+ fmt.Sprintf("^%s$", internal.WorkspaceName),
// environment policy
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.EnvironmentNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s$", internal.EnvironmentNamePrefix, internal.ResourceIDPattern),
// instance policy
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern),
// project policy
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s$", internal.ProjectNamePrefix, internal.ResourceIDPattern),
// database policy
- regexp.MustCompile(fmt.Sprintf("^%s%s/%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern, internal.DatabaseIDPrefix, internal.ResourceIDPattern)),
+ fmt.Sprintf("^%s%s/%s%s$", internal.InstanceNamePrefix, internal.ResourceIDPattern, internal.DatabaseIDPrefix, internal.ResourceIDPattern),
),
Description: "The policy parent name for the policy, support projects/{resource id}, environments/{resource id}, instances/{resource id}, or instances/{resource id}/databases/{database name}",
},
diff --git a/provider/resource_setting.go b/provider/resource_setting.go
index 52cf7d7..b10d2c9 100644
--- a/provider/resource_setting.go
+++ b/provider/resource_setting.go
@@ -3,7 +3,6 @@ package provider
import (
"context"
"fmt"
- "regexp"
"strings"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
@@ -33,11 +32,11 @@ func resourceSetting() *schema.Resource {
Required: true,
Description: `The setting name in settings/{name} format. The name support "WORKSPACE_APPROVAL", "WORKSPACE_PROFILE", "DATA_CLASSIFICATION", "SEMANTIC_TYPES" and "ENVIRONMENT". Check the proto https://github.com/bytebase/bytebase/blob/main/proto/v1/v1/setting_service.proto#L109 for details`,
ValidateDiagFunc: internal.ResourceNameValidation(
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_WORKSPACE_APPROVAL.String())),
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_WORKSPACE_PROFILE.String())),
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_DATA_CLASSIFICATION.String())),
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_SEMANTIC_TYPES.String())),
- regexp.MustCompile(fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_ENVIRONMENT.String())),
+ fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_WORKSPACE_APPROVAL.String()),
+ fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_WORKSPACE_PROFILE.String()),
+ fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_DATA_CLASSIFICATION.String()),
+ fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_SEMANTIC_TYPES.String()),
+ fmt.Sprintf("^%s%s$", internal.SettingNamePrefix, v1pb.Setting_ENVIRONMENT.String()),
),
},
"approval_flow": getWorkspaceApprovalSetting(false),