From 5894b375abf7aaee7bf722e30b6f9beb2b0ccb70 Mon Sep 17 00:00:00 2001 From: Jacob White Date: Fri, 9 Dec 2022 00:01:26 -0500 Subject: [PATCH 01/10] Merge master --- .../resource_cloudflare_pages_project.go | 68 +++++++++++++++---- .../resource_cloudflare_pages_project_test.go | 18 +++++ .../schema_cloudflare_pages_project.go | 26 +++++++ 3 files changed, 100 insertions(+), 12 deletions(-) diff --git a/internal/provider/resource_cloudflare_pages_project.go b/internal/provider/resource_cloudflare_pages_project.go index fabd9702ea..e44c823f47 100644 --- a/internal/provider/resource_cloudflare_pages_project.go +++ b/internal/provider/resource_cloudflare_pages_project.go @@ -34,16 +34,30 @@ func resourceCloudflarePagesProject() *schema.Resource { func buildDeploymentConfig(environment interface{}) cloudflare.PagesProjectDeploymentConfigEnvironment { config := cloudflare.PagesProjectDeploymentConfigEnvironment{} parsed := environment.(map[string]interface{}) + deploymentVariables := cloudflare.EnvironmentVariableMap{} for key, value := range parsed { switch key { case "environment_variables": - deploymentVariables := cloudflare.EnvironmentVariableMap{} variables := value.(map[string]interface{}) for i, variable := range variables { - deploymentVariables[i] = &cloudflare.EnvironmentVariable{Value: variable.(string)} + envVar := cloudflare.EnvironmentVariable{ + Value: variable.(string), + Type: cloudflare.PlainText, + } + deploymentVariables[i] = &envVar } config.EnvVars = deploymentVariables break + case "secrets": + variables := value.(map[string]interface{}) + for i, variable := range variables { + envVar := cloudflare.EnvironmentVariable{ + Value: variable.(string), + Type: cloudflare.SecretText, + } + deploymentVariables[i] = &envVar + } + break case "kv_namespaces": namespace := cloudflare.NamespaceBindingMap{} variables := value.(map[string]interface{}) @@ -84,18 +98,48 @@ func buildDeploymentConfig(environment interface{}) cloudflare.PagesProjectDeplo config.CompatibilityFlags = append(config.CompatibilityFlags, item.(string)) } break + case "fail_open": + config.FailOpen = value.(bool) + break + case "always_use_latest_compatibility_date": + config.AlwaysUseLatestCompatibilityDate = value.(bool) + break + case "usage_model": + switch value.(string) { + case "bundled": + config.UsageModel = cloudflare.Bundled + break + case "unbound": + config.UsageModel = cloudflare.Unbound + break + } + break + case "services": + serviceMap := cloudflare.ServiceBindingMap{} + variables := value.(map[string]interface{}) + for i, item := range variables { + service := item.(map[string]interface{}) + serviceMap[i] = &cloudflare.ServiceBinding{ + Service: service["service"].(string), + Environment: service["environment"].(string), + } + } } } - + config.EnvVars = deploymentVariables return config } -func parseDeployementConfig(deployment cloudflare.PagesProjectDeploymentConfigEnvironment) (returnValue []map[string]interface{}) { +func parseDeploymentConfig(deployment cloudflare.PagesProjectDeploymentConfigEnvironment) (returnValue []map[string]interface{}) { config := make(map[string]interface{}) config["compatibility_date"] = deployment.CompatibilityDate config["compatibility_flags"] = deployment.CompatibilityFlags + config["fail_open"] = deployment.FailOpen + config["always_use_latest_compatibility_date"] = deployment.AlwaysUseLatestCompatibilityDate + config["usage_model"] = deployment.UsageModel + deploymentVars := map[string]string{} for key, value := range deployment.EnvVars { deploymentVars[key] = value.Value @@ -228,7 +272,7 @@ func resourceCloudflarePagesProjectRead(ctx context.Context, d *schema.ResourceD d.Set("created_on", project.CreatedOn.Format(time.RFC3339)) if project.Source != nil { - source := []map[string]interface{}{} + var source []map[string]interface{} source = append(source, map[string]interface{}{ "type": project.Source.Type, "config": []map[string]interface{}{ @@ -250,7 +294,7 @@ func resourceCloudflarePagesProjectRead(ctx context.Context, d *schema.ResourceD } emptyProjectBuildConfig := cloudflare.PagesProjectBuildConfig{} if project.BuildConfig != emptyProjectBuildConfig { - buildConfig := []map[string]interface{}{} + var buildConfig []map[string]interface{} buildConfig = append(buildConfig, map[string]interface{}{ "build_command": project.BuildConfig.BuildCommand, "destination_dir": project.BuildConfig.DestinationDir, @@ -264,15 +308,15 @@ func resourceCloudflarePagesProjectRead(ctx context.Context, d *schema.ResourceD emptyDeploymentConfig := cloudflare.PagesProjectDeploymentConfigs{} if !reflect.DeepEqual(project.DeploymentConfigs, emptyDeploymentConfig) { - deploymentConfigs := []map[string]interface{}{} + var deploymentConfigs []map[string]interface{} deploymentConfig := make(map[string]interface{}) - emptyDeploymentEnviroment := cloudflare.PagesProjectDeploymentConfigEnvironment{} - if !reflect.DeepEqual(project.DeploymentConfigs.Preview, emptyDeploymentEnviroment) { - deploymentConfig["preview"] = parseDeployementConfig(project.DeploymentConfigs.Preview) + emptyDeploymentEnvironment := cloudflare.PagesProjectDeploymentConfigEnvironment{} + if !reflect.DeepEqual(project.DeploymentConfigs.Preview, emptyDeploymentEnvironment) { + deploymentConfig["preview"] = parseDeploymentConfig(project.DeploymentConfigs.Preview) } - if !reflect.DeepEqual(project.DeploymentConfigs.Production, emptyDeploymentEnviroment) { - deploymentConfig["production"] = parseDeployementConfig(project.DeploymentConfigs.Production) + if !reflect.DeepEqual(project.DeploymentConfigs.Production, emptyDeploymentEnvironment) { + deploymentConfig["production"] = parseDeploymentConfig(project.DeploymentConfigs.Production) } deploymentConfigs = append(deploymentConfigs, deploymentConfig) d.Set("deployment_configs", deploymentConfigs) diff --git a/internal/provider/resource_cloudflare_pages_project_test.go b/internal/provider/resource_cloudflare_pages_project_test.go index 25d574784e..f7710f3056 100644 --- a/internal/provider/resource_cloudflare_pages_project_test.go +++ b/internal/provider/resource_cloudflare_pages_project_test.go @@ -61,6 +61,9 @@ func testPagesProjectDeploymentConfig(resourceID, accountID, projectName string) environment_variables = { ENVIRONMENT = "preview" } + secrets = { + SECRET = "preview-secret" + } kv_namespaces = { KV_BINDING = "5eb63bbbe01eeed093cb22bb8f5acdc3" } @@ -75,12 +78,18 @@ func testPagesProjectDeploymentConfig(resourceID, accountID, projectName string) } compatibility_date = "2022-08-15" compatibility_flags = ["preview_flag"] + fail_open = true + always_use_latest_compatibility_date = true + usage_model = "unbound" } production { environment_variables = { ENVIRONMENT = "production" OTHER_VALUE = "other value" } + secrets = { + SECRET = "production-secret" + } kv_namespaces = { KV_BINDING_1 = "5eb63bbbe01eeed093cb22bb8f5acdc3" KV_BINDING_2 = "3cdca5f8bb22bc390deee10ebbb36be5" @@ -99,6 +108,9 @@ func testPagesProjectDeploymentConfig(resourceID, accountID, projectName string) } compatibility_date = "2022-08-16" compatibility_flags = ["production_flag", "second flag"] + fail_open = false + always_use_latest_compatibility_date = false + usage_model = "bundled" } } } @@ -284,6 +296,9 @@ func TestAccCloudflarePagesProject_DeploymentConfig(t *testing.T) { resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.r2_buckets.%", "1"), resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.r2_buckets.R2_BINDING", "some-bucket"), + resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.fail_open", "true"), + resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.always_use_latest_compatibility_date", "true"), + resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.usage_model", "unbound"), // Production resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.environment_variables.%", "2"), @@ -310,6 +325,9 @@ func TestAccCloudflarePagesProject_DeploymentConfig(t *testing.T) { resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.compatibility_flags.#", "2"), resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.compatibility_flags.0", "production_flag"), resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.compatibility_flags.1", "second flag"), + resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.fail_open", "false"), + resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.always_use_latest_compatibility_date", "false"), + resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.usage_model", "bundled"), ), }, }, diff --git a/internal/provider/schema_cloudflare_pages_project.go b/internal/provider/schema_cloudflare_pages_project.go index 137f29d0b8..4651e5d2d2 100644 --- a/internal/provider/schema_cloudflare_pages_project.go +++ b/internal/provider/schema_cloudflare_pages_project.go @@ -119,6 +119,11 @@ func resourceCloudflarePagesProjectSchema() map[string]*schema.Schema { Description: "Environment variables for Pages Functions.", Optional: true, }, + "secrets": { + Type: schema.TypeMap, + Description: "Secrets for Pages Functions.", + Optional: true, + }, "kv_namespaces": { Type: schema.TypeMap, Description: "KV namespaces used for Pages Functions.", @@ -154,6 +159,27 @@ func resourceCloudflarePagesProjectSchema() map[string]*schema.Schema { }, Computed: true, }, + "services": { + Type: schema.TypeMap, + Description: "Services used for Pages Functions.", + Optional: true, + }, + "fail_open": { + Type: schema.TypeBool, + Description: "Fail open used for Pages Functions.", + Optional: true, + }, + "always_use_latest_compatibility_date": { + Type: schema.TypeBool, + Description: "Use latest compatibility date for Pages Functions.", + Optional: true, + }, + "usage_model": { + Type: schema.TypeString, + Description: "Usage model used for Pages Functions.", + Optional: true, + ValidateFunc: validation.StringInSlice([]string{"unbound", "bound"}, false), + }, }, } From 2624e1bf34142f47aeca11c6312ae8758fbcf245 Mon Sep 17 00:00:00 2001 From: Jacob White Date: Sat, 10 Dec 2022 16:17:57 -0500 Subject: [PATCH 02/10] Update cloudflare_pages_project for breaking changes --- .changelog/2083.txt | 3 + .../resource_cloudflare_pages_project.go | 51 ++-- .../resource_cloudflare_pages_project_test.go | 218 +++++------------- .../schema_cloudflare_pages_project.go | 29 ++- 4 files changed, 108 insertions(+), 193 deletions(-) create mode 100644 .changelog/2083.txt diff --git a/.changelog/2083.txt b/.changelog/2083.txt new file mode 100644 index 0000000000..157dea848a --- /dev/null +++ b/.changelog/2083.txt @@ -0,0 +1,3 @@ +```release-note: +resource/cloudflare_pages_project: Updates Pages project resource to support API changes +``` \ No newline at end of file diff --git a/internal/provider/resource_cloudflare_pages_project.go b/internal/provider/resource_cloudflare_pages_project.go index e44c823f47..82c03e64fe 100644 --- a/internal/provider/resource_cloudflare_pages_project.go +++ b/internal/provider/resource_cloudflare_pages_project.go @@ -42,20 +42,19 @@ func buildDeploymentConfig(environment interface{}) cloudflare.PagesProjectDeplo for i, variable := range variables { envVar := cloudflare.EnvironmentVariable{ Value: variable.(string), - Type: cloudflare.PlainText, + Type: cloudflare.PlainText, } deploymentVariables[i] = &envVar } - config.EnvVars = deploymentVariables break - case "secrets": - variables := value.(map[string]interface{}) - for i, variable := range variables { + case "secret": + for _, variable := range value.(*schema.Set).List() { + data := variable.(map[string]interface{}) envVar := cloudflare.EnvironmentVariable{ - Value: variable.(string), - Type: cloudflare.SecretText, + Value: data["text"].(string), + Type: cloudflare.SecretText, } - deploymentVariables[i] = &envVar + deploymentVariables[data["name"].(string)] = &envVar } break case "kv_namespaces": @@ -114,16 +113,17 @@ func buildDeploymentConfig(environment interface{}) cloudflare.PagesProjectDeplo break } break - case "services": + case "service_binding": serviceMap := cloudflare.ServiceBindingMap{} - variables := value.(map[string]interface{}) - for i, item := range variables { - service := item.(map[string]interface{}) - serviceMap[i] = &cloudflare.ServiceBinding{ - Service: service["service"].(string), - Environment: service["environment"].(string), + for _, item := range value.(*schema.Set).List() { + data := item.(map[string]interface{}) + serviceMap[data["name"].(string)] = &cloudflare.ServiceBinding{ + Service: data["service"].(string), + Environment: data["environment"].(string), } } + config.ServiceBindings = serviceMap + break } } config.EnvVars = deploymentVariables @@ -141,10 +141,19 @@ func parseDeploymentConfig(deployment cloudflare.PagesProjectDeploymentConfigEnv config["usage_model"] = deployment.UsageModel deploymentVars := map[string]string{} + secretsBinding := &schema.Set{F: schema.HashResource(secretTextBindingResource)} for key, value := range deployment.EnvVars { - deploymentVars[key] = value.Value + if value.Type == cloudflare.PlainText { + deploymentVars[key] = value.Value + } else { + secretsBinding.Add(map[string]interface{}{ + "name": key, + "text": value.Value, + }) + } } config["environment_variables"] = deploymentVars + config["secret"] = secretsBinding deploymentVars = map[string]string{} for key, value := range deployment.KvNamespaces { @@ -170,6 +179,16 @@ func parseDeploymentConfig(deployment cloudflare.PagesProjectDeploymentConfigEnv } config["d1_databases"] = deploymentVars + serviceBindings := &schema.Set{F: schema.HashResource(serviceBindingResource)} + for key, value := range deployment.ServiceBindings { + serviceBindings.Add(map[string]interface{}{ + "name": key, + "service": value.Service, + "environment": value.Environment, + }) + } + config["service_binding"] = serviceBindings + returnValue = append(returnValue, config) return } diff --git a/internal/provider/resource_cloudflare_pages_project_test.go b/internal/provider/resource_cloudflare_pages_project_test.go index f7710f3056..e849924189 100644 --- a/internal/provider/resource_cloudflare_pages_project_test.go +++ b/internal/provider/resource_cloudflare_pages_project_test.go @@ -8,11 +8,28 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) +const testPagesProjectEmptyDeploymentConfig = ` +deployment_configs { + preview { + compatibility_date = "2022-08-15" + compatibility_flags = [] + always_use_latest_compatibility_date = false + usage_model = "unbound" + } + production { + compatibility_date = "2022-08-15" + compatibility_flags = [] + always_use_latest_compatibility_date = false + usage_model = "unbound" + } +} +` + func testPagesProjectSource(resourceID, accountID, projectName, repoOwner, repoName string) string { return fmt.Sprintf(` resource "cloudflare_pages_project" "%[1]s" { account_id = "%[2]s" - name = "%[3]s" + name = "%[1]s" production_branch = "main" source { type = "github" @@ -26,18 +43,18 @@ func testPagesProjectSource(resourceID, accountID, projectName, repoOwner, repoN preview_deployment_setting = "custom" preview_branch_includes = ["dev","preview"] preview_branch_excludes = ["main", "prod"] - } } + %[6]s } - `, resourceID, accountID, projectName, repoOwner, repoName) + `, resourceID, accountID, projectName, repoOwner, repoName, testPagesProjectEmptyDeploymentConfig) } -func testPagesProjectBuildConfig(resourceID, accountID, projectName, repoOwner, repoName string) string { +func testPagesProjectBuildConfig(resourceID, accountID string) string { return fmt.Sprintf(` resource "cloudflare_pages_project" "%[1]s" { account_id = "%[2]s" - name = "%[3]s" + name = "%[1]s" production_branch = "main" build_config { build_command = "npm run build" @@ -46,8 +63,9 @@ func testPagesProjectBuildConfig(resourceID, accountID, projectName, repoOwner, web_analytics_tag = "cee1c73f6e4743d0b5e6bb1a0bcaabcc" web_analytics_token = "021e1057c18547eca7b79f2516f06o7x" } + %[4]s } - `, resourceID, accountID, projectName, repoOwner, repoName) + `, resourceID, accountID, resourceID, testPagesProjectEmptyDeploymentConfig) } func testPagesProjectDeploymentConfig(resourceID, accountID, projectName string) string { @@ -61,8 +79,9 @@ func testPagesProjectDeploymentConfig(resourceID, accountID, projectName string) environment_variables = { ENVIRONMENT = "preview" } - secrets = { - SECRET = "preview-secret" + secret { + name = "SECRET" + text = "%[1]s" } kv_namespaces = { KV_BINDING = "5eb63bbbe01eeed093cb22bb8f5acdc3" @@ -76,6 +95,11 @@ func testPagesProjectDeploymentConfig(resourceID, accountID, projectName string) d1_databases = { D1_BINDING = "445e2955-951a-4358-a35b-a4d0c813f63" } + service_binding { + name = "MY_SERVICE_BINDING" + service = "my-service" + environment = "preview" + } compatibility_date = "2022-08-15" compatibility_flags = ["preview_flag"] fail_open = true @@ -87,9 +111,6 @@ func testPagesProjectDeploymentConfig(resourceID, accountID, projectName string) ENVIRONMENT = "production" OTHER_VALUE = "other value" } - secrets = { - SECRET = "production-secret" - } kv_namespaces = { KV_BINDING_1 = "5eb63bbbe01eeed093cb22bb8f5acdc3" KV_BINDING_2 = "3cdca5f8bb22bc390deee10ebbb36be5" @@ -106,9 +127,22 @@ func testPagesProjectDeploymentConfig(resourceID, accountID, projectName string) D1_BINDING_1 = "445e2955-951a-4358-a35b-a4d0c813f63" D1_BINDING_2 = "a399414b-c697-409a-a688-377db6433cd9" } + service_binding { + name = "MY_SERVICE_BINDING" + service = "my-service" + environment = "production" + } + secret { + name = "SECRET1" + text = "%[1]s" + } + secret { + name = "SECRET2" + text = "%[1]s-2" + } compatibility_date = "2022-08-16" compatibility_flags = ["production_flag", "second flag"] - fail_open = false + fail_open = true always_use_latest_compatibility_date = false usage_model = "bundled" } @@ -123,70 +157,9 @@ func testPagesProjectDirectUpload(resourceID, accountID string) string { account_id = "%[2]s" name = "%[1]s" production_branch = "main" + %[3]s } - `, resourceID, accountID) -} - -func testPagesProjectPreviewOnly(resourceID, accountID, projectName string) string { - return fmt.Sprintf(` - resource "cloudflare_pages_project" "%[1]s" { - account_id = "%[2]s" - name = "%[3]s" - production_branch = "main" - deployment_configs { - preview { - environment_variables = { - ENVIRONMENT = "preview" - } - kv_namespaces = { - KV_BINDING = "5eb63bbbe01eeed093cb22bb8f5acdc3" - } - durable_object_namespaces = { - DO_BINDING = "5eb63bbbe01eeed093cb22bb8f5acdc3" - } - r2_buckets = { - R2_BINDING = "some-bucket" - } - d1_databases = { - D1_BINDING = "445e2955-951a-4358-a35b-a4d0c813f63" - } - compatibility_date = "2022-08-15" - compatibility_flags = ["preview_flag"] - } - } - } - `, resourceID, accountID, projectName) -} - -func testPagesProjectProductionOnly(resourceID, accountID, projectName string) string { - return fmt.Sprintf(` - resource "cloudflare_pages_project" "%[1]s" { - account_id = "%[2]s" - name = "%[3]s" - production_branch = "main" - deployment_configs { - production { - environment_variables = { - ENVIRONMENT = "preview" - } - kv_namespaces = { - KV_BINDING = "5eb63bbbe01eeed093cb22bb8f5acdc3" - } - durable_object_namespaces = { - DO_BINDING = "5eb63bbbe01eeed093cb22bb8f5acdc3" - } - r2_buckets = { - R2_BINDING = "some-bucket" - } - d1_databases = { - D1_BINDING = "445e2955-951a-4358-a35b-a4d0c813f63" - } - compatibility_date = "2022-08-15" - compatibility_flags = ["preview_flag"] - } - } - } - `, resourceID, accountID, projectName) + `, resourceID, accountID, testPagesProjectEmptyDeploymentConfig) } func TestAccCloudflarePagesProject_Basic(t *testing.T) { @@ -234,8 +207,6 @@ func TestAccCloudflarePagesProject_BuildConfig(t *testing.T) { rnd := generateRandomResourceName() name := "cloudflare_pages_project." + rnd accountID := os.Getenv("CLOUDFLARE_ACCOUNT_ID") - pagesOwner := os.Getenv("CLOUDFLARE_PAGES_OWNER") - pagesRepo := os.Getenv("CLOUDFLARE_PAGES_REPO") resource.Test(t, resource.TestCase{ PreCheck: func() { @@ -245,7 +216,7 @@ func TestAccCloudflarePagesProject_BuildConfig(t *testing.T) { ProviderFactories: providerFactories, Steps: []resource.TestStep{ { - Config: testPagesProjectBuildConfig(rnd, accountID, rnd, pagesOwner, pagesRepo), + Config: testPagesProjectBuildConfig(rnd, accountID), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(name, "name", rnd), resource.TestCheckResourceAttr(name, "account_id", accountID), @@ -325,9 +296,10 @@ func TestAccCloudflarePagesProject_DeploymentConfig(t *testing.T) { resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.compatibility_flags.#", "2"), resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.compatibility_flags.0", "production_flag"), resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.compatibility_flags.1", "second flag"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.fail_open", "false"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.always_use_latest_compatibility_date", "false"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.usage_model", "bundled"), + resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.fail_open", "true"), + resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.always_use_latest_compatibility_date", "false"), + resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.usage_model", "bundled"), + resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.secret.#", "2"), ), }, }, @@ -356,87 +328,3 @@ func TestAccCloudflarePagesProject_DirectUpload(t *testing.T) { }, }) } - -func TestAccCloudflarePagesProject_PreviewOnly(t *testing.T) { - rnd := generateRandomResourceName() - name := "cloudflare_pages_project." + rnd - accountID := os.Getenv("CLOUDFLARE_ACCOUNT_ID") - - resource.Test(t, resource.TestCase{ - PreCheck: func() { - testAccPreCheck(t) - testAccPreCheckPages(t) - }, - ProviderFactories: providerFactories, - Steps: []resource.TestStep{ - { - Config: testPagesProjectPreviewOnly(rnd, accountID, rnd), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr(name, "name", rnd), - resource.TestCheckResourceAttr(name, "account_id", accountID), - resource.TestCheckResourceAttr(name, "production_branch", "main"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.compatibility_date", "2022-08-15"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.compatibility_flags.#", "1"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.compatibility_flags.0", "preview_flag"), - - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.environment_variables.%", "1"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.environment_variables.ENVIRONMENT", "preview"), - - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.kv_namespaces.%", "1"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.kv_namespaces.KV_BINDING", "5eb63bbbe01eeed093cb22bb8f5acdc3"), - - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.durable_object_namespaces.%", "1"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.durable_object_namespaces.DO_BINDING", "5eb63bbbe01eeed093cb22bb8f5acdc3"), - - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.d1_databases.%", "1"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.d1_databases.D1_BINDING", "445e2955-951a-4358-a35b-a4d0c813f63"), - - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.r2_buckets.%", "1"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.r2_buckets.R2_BINDING", "some-bucket"), - ), - }, - }, - }) -} - -func TestAccCloudflarePagesProject_ProductionOnly(t *testing.T) { - rnd := generateRandomResourceName() - name := "cloudflare_pages_project." + rnd - accountID := os.Getenv("CLOUDFLARE_ACCOUNT_ID") - - resource.Test(t, resource.TestCase{ - PreCheck: func() { - testAccPreCheck(t) - testAccPreCheckPages(t) - }, - ProviderFactories: providerFactories, - Steps: []resource.TestStep{ - { - Config: testPagesProjectProductionOnly(rnd, accountID, rnd), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr(name, "name", rnd), - resource.TestCheckResourceAttr(name, "account_id", accountID), - resource.TestCheckResourceAttr(name, "production_branch", "main"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.compatibility_date", "2022-08-15"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.compatibility_flags.#", "1"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.compatibility_flags.0", "preview_flag"), - - resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.environment_variables.%", "1"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.environment_variables.ENVIRONMENT", "preview"), - - resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.kv_namespaces.%", "1"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.kv_namespaces.KV_BINDING", "5eb63bbbe01eeed093cb22bb8f5acdc3"), - - resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.durable_object_namespaces.%", "1"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.durable_object_namespaces.DO_BINDING", "5eb63bbbe01eeed093cb22bb8f5acdc3"), - - resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.d1_databases.%", "1"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.d1_databases.D1_BINDING", "445e2955-951a-4358-a35b-a4d0c813f63"), - - resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.r2_buckets.%", "1"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.r2_buckets.R2_BINDING", "some-bucket"), - ), - }, - }, - }) -} diff --git a/internal/provider/schema_cloudflare_pages_project.go b/internal/provider/schema_cloudflare_pages_project.go index 4651e5d2d2..3c3504f008 100644 --- a/internal/provider/schema_cloudflare_pages_project.go +++ b/internal/provider/schema_cloudflare_pages_project.go @@ -119,11 +119,6 @@ func resourceCloudflarePagesProjectSchema() map[string]*schema.Schema { Description: "Environment variables for Pages Functions.", Optional: true, }, - "secrets": { - Type: schema.TypeMap, - Description: "Secrets for Pages Functions.", - Optional: true, - }, "kv_namespaces": { Type: schema.TypeMap, Description: "KV namespaces used for Pages Functions.", @@ -159,26 +154,36 @@ func resourceCloudflarePagesProjectSchema() map[string]*schema.Schema { }, Computed: true, }, - "services": { - Type: schema.TypeMap, + "service_binding": { + Type: schema.TypeSet, Description: "Services used for Pages Functions.", Optional: true, + Elem: serviceBindingResource, }, "fail_open": { Type: schema.TypeBool, Description: "Fail open used for Pages Functions.", Optional: true, + Default: false, }, "always_use_latest_compatibility_date": { Type: schema.TypeBool, Description: "Use latest compatibility date for Pages Functions.", Optional: true, + Default: false, }, "usage_model": { - Type: schema.TypeString, - Description: "Usage model used for Pages Functions.", + Type: schema.TypeString, + Description: "Usage model used for Pages Functions.", + Optional: true, + ValidateFunc: validation.StringInSlice([]string{"unbound", "bundled"}, false), + Default: "bundled", + }, + "secret": { + Type: schema.TypeSet, + Description: "Secrets for Pages Functions.", Optional: true, - ValidateFunc: validation.StringInSlice([]string{"unbound", "bound"}, false), + Elem: secretTextBindingResource, }, }, } @@ -241,14 +246,14 @@ func resourceCloudflarePagesProjectSchema() map[string]*schema.Schema { "preview": { Description: "Configuration for preview deploys.", Type: schema.TypeList, - Optional: true, + Required: true, Elem: &deploymentConfig, MaxItems: 1, }, "production": { Description: "Configuration for production deploys.", Type: schema.TypeList, - Optional: true, + Required: true, Elem: &deploymentConfig, MaxItems: 1, }, From dd9a125473456a0fa57c6d7d8087f21c3347027d Mon Sep 17 00:00:00 2001 From: Jacob White Date: Tue, 13 Dec 2022 18:15:35 -0500 Subject: [PATCH 03/10] Better way of handling usage model --- .../import_resource_cloudflare_pages_project_test.go | 8 ++++++++ internal/provider/resource_cloudflare_pages_project.go | 9 +-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/internal/provider/import_resource_cloudflare_pages_project_test.go b/internal/provider/import_resource_cloudflare_pages_project_test.go index a77d8d2b8a..33db57a104 100644 --- a/internal/provider/import_resource_cloudflare_pages_project_test.go +++ b/internal/provider/import_resource_cloudflare_pages_project_test.go @@ -41,6 +41,10 @@ func testPagesProjectFull(resourceID, accountID, projectName, repoOwner, repoNam environment_variables = { ENVIRONMENT = "preview" } + secret { + name = "SECRET" + text = "secret" + } kv_namespaces = { KV_BINDING = "5eb63bbbe01eeed093cb22bb8f5acdc3" } @@ -61,6 +65,10 @@ func testPagesProjectFull(resourceID, accountID, projectName, repoOwner, repoNam ENVIRONMENT = "production" OTHER_VALUE = "other value" } + secret { + name = "SECRET1" + text = "secret1" + } kv_namespaces = { KV_BINDING_1 = "5eb63bbbe01eeed093cb22bb8f5acdc3" KV_BINDING_2 = "3cdca5f8bb22bc390deee10ebbb36be5" diff --git a/internal/provider/resource_cloudflare_pages_project.go b/internal/provider/resource_cloudflare_pages_project.go index 82c03e64fe..69ac5c45bc 100644 --- a/internal/provider/resource_cloudflare_pages_project.go +++ b/internal/provider/resource_cloudflare_pages_project.go @@ -104,14 +104,7 @@ func buildDeploymentConfig(environment interface{}) cloudflare.PagesProjectDeplo config.AlwaysUseLatestCompatibilityDate = value.(bool) break case "usage_model": - switch value.(string) { - case "bundled": - config.UsageModel = cloudflare.Bundled - break - case "unbound": - config.UsageModel = cloudflare.Unbound - break - } + config.UsageModel = cloudflare.UsageModel(value.(string)) break case "service_binding": serviceMap := cloudflare.ServiceBindingMap{} From fc3e0dae3969a70fb0cbf55a3b4ebb0626ff696a Mon Sep 17 00:00:00 2001 From: Jacob White Date: Tue, 13 Dec 2022 19:41:28 -0500 Subject: [PATCH 04/10] Remove checking for empty deployment config as there will always be a deployment config returned --- .../resource_cloudflare_pages_project.go | 22 +++++-------------- .../resource_cloudflare_pages_project_test.go | 3 ++- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/internal/provider/resource_cloudflare_pages_project.go b/internal/provider/resource_cloudflare_pages_project.go index 69ac5c45bc..376a452c8f 100644 --- a/internal/provider/resource_cloudflare_pages_project.go +++ b/internal/provider/resource_cloudflare_pages_project.go @@ -3,7 +3,6 @@ package provider import ( "context" "fmt" - "reflect" "strings" "time" @@ -318,21 +317,12 @@ func resourceCloudflarePagesProjectRead(ctx context.Context, d *schema.ResourceD d.Set("build_config", buildConfig) } - emptyDeploymentConfig := cloudflare.PagesProjectDeploymentConfigs{} - if !reflect.DeepEqual(project.DeploymentConfigs, emptyDeploymentConfig) { - var deploymentConfigs []map[string]interface{} - deploymentConfig := make(map[string]interface{}) - emptyDeploymentEnvironment := cloudflare.PagesProjectDeploymentConfigEnvironment{} - if !reflect.DeepEqual(project.DeploymentConfigs.Preview, emptyDeploymentEnvironment) { - deploymentConfig["preview"] = parseDeploymentConfig(project.DeploymentConfigs.Preview) - } - - if !reflect.DeepEqual(project.DeploymentConfigs.Production, emptyDeploymentEnvironment) { - deploymentConfig["production"] = parseDeploymentConfig(project.DeploymentConfigs.Production) - } - deploymentConfigs = append(deploymentConfigs, deploymentConfig) - d.Set("deployment_configs", deploymentConfigs) - } + var deploymentConfigs []map[string]interface{} + deploymentConfig := make(map[string]interface{}) + deploymentConfig["preview"] = parseDeploymentConfig(project.DeploymentConfigs.Preview) + deploymentConfig["production"] = parseDeploymentConfig(project.DeploymentConfigs.Production) + deploymentConfigs = append(deploymentConfigs, deploymentConfig) + d.Set("deployment_configs", deploymentConfigs) return nil } diff --git a/internal/provider/resource_cloudflare_pages_project_test.go b/internal/provider/resource_cloudflare_pages_project_test.go index e849924189..7db9e8e780 100644 --- a/internal/provider/resource_cloudflare_pages_project_test.go +++ b/internal/provider/resource_cloudflare_pages_project_test.go @@ -13,7 +13,7 @@ deployment_configs { preview { compatibility_date = "2022-08-15" compatibility_flags = [] - always_use_latest_compatibility_date = false + always_use_latest_compatibility_date = true usage_model = "unbound" } production { @@ -270,6 +270,7 @@ func TestAccCloudflarePagesProject_DeploymentConfig(t *testing.T) { resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.fail_open", "true"), resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.always_use_latest_compatibility_date", "true"), resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.usage_model", "unbound"), + resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.secret.#", "1"), // Production resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.environment_variables.%", "2"), From dc76228afef61adb32fd93942e98a9ed8a476a40 Mon Sep 17 00:00:00 2001 From: Cyb3r-Jak3 Date: Sat, 7 Jan 2023 13:27:58 -0500 Subject: [PATCH 05/10] Do secrets another time --- ..._resource_cloudflare_pages_project_test.go | 8 ----- .../resource_cloudflare_pages_project.go | 36 ++++++++++--------- .../resource_cloudflare_pages_project_test.go | 16 +-------- .../schema_cloudflare_pages_project.go | 12 +++---- 4 files changed, 26 insertions(+), 46 deletions(-) diff --git a/internal/provider/import_resource_cloudflare_pages_project_test.go b/internal/provider/import_resource_cloudflare_pages_project_test.go index 33db57a104..a77d8d2b8a 100644 --- a/internal/provider/import_resource_cloudflare_pages_project_test.go +++ b/internal/provider/import_resource_cloudflare_pages_project_test.go @@ -41,10 +41,6 @@ func testPagesProjectFull(resourceID, accountID, projectName, repoOwner, repoNam environment_variables = { ENVIRONMENT = "preview" } - secret { - name = "SECRET" - text = "secret" - } kv_namespaces = { KV_BINDING = "5eb63bbbe01eeed093cb22bb8f5acdc3" } @@ -65,10 +61,6 @@ func testPagesProjectFull(resourceID, accountID, projectName, repoOwner, repoNam ENVIRONMENT = "production" OTHER_VALUE = "other value" } - secret { - name = "SECRET1" - text = "secret1" - } kv_namespaces = { KV_BINDING_1 = "5eb63bbbe01eeed093cb22bb8f5acdc3" KV_BINDING_2 = "3cdca5f8bb22bc390deee10ebbb36be5" diff --git a/internal/provider/resource_cloudflare_pages_project.go b/internal/provider/resource_cloudflare_pages_project.go index 376a452c8f..70c032e99e 100644 --- a/internal/provider/resource_cloudflare_pages_project.go +++ b/internal/provider/resource_cloudflare_pages_project.go @@ -45,17 +45,18 @@ func buildDeploymentConfig(environment interface{}) cloudflare.PagesProjectDeplo } deploymentVariables[i] = &envVar } + break - case "secret": - for _, variable := range value.(*schema.Set).List() { - data := variable.(map[string]interface{}) - envVar := cloudflare.EnvironmentVariable{ - Value: data["text"].(string), - Type: cloudflare.SecretText, - } - deploymentVariables[data["name"].(string)] = &envVar - } - break + //case "secret": + // for _, variable := range value.(*schema.Set).List() { + // data := variable.(map[string]interface{}) + // envVar := cloudflare.EnvironmentVariable{ + // Value: data["text"].(string), + // Type: cloudflare.SecretText, + // } + // deploymentVariables[data["name"].(string)] = &envVar + // } + // break case "kv_namespaces": namespace := cloudflare.NamespaceBindingMap{} variables := value.(map[string]interface{}) @@ -133,19 +134,20 @@ func parseDeploymentConfig(deployment cloudflare.PagesProjectDeploymentConfigEnv config["usage_model"] = deployment.UsageModel deploymentVars := map[string]string{} - secretsBinding := &schema.Set{F: schema.HashResource(secretTextBindingResource)} + //secretsBinding := &schema.Set{F: schema.HashResource(secretTextBindingResource)} for key, value := range deployment.EnvVars { if value.Type == cloudflare.PlainText { deploymentVars[key] = value.Value - } else { - secretsBinding.Add(map[string]interface{}{ - "name": key, - "text": value.Value, - }) } + //} else { + // secretsBinding.Add(map[string]interface{}{ + // "name": key, + // "text": value.Value, + // }) + //} } config["environment_variables"] = deploymentVars - config["secret"] = secretsBinding + //config["secret"] = secretsBinding deploymentVars = map[string]string{} for key, value := range deployment.KvNamespaces { diff --git a/internal/provider/resource_cloudflare_pages_project_test.go b/internal/provider/resource_cloudflare_pages_project_test.go index 2852c20104..a9a2b1987d 100644 --- a/internal/provider/resource_cloudflare_pages_project_test.go +++ b/internal/provider/resource_cloudflare_pages_project_test.go @@ -79,10 +79,6 @@ func testPagesProjectDeploymentConfig(resourceID, accountID, projectName string) environment_variables = { ENVIRONMENT = "preview" } - secret { - name = "SECRET" - text = "%[1]s" - } kv_namespaces = { KV_BINDING = "5eb63bbbe01eeed093cb22bb8f5acdc3" } @@ -132,14 +128,6 @@ func testPagesProjectDeploymentConfig(resourceID, accountID, projectName string) service = "my-service" environment = "production" } - secret { - name = "SECRET1" - text = "%[1]s" - } - secret { - name = "SECRET2" - text = "%[1]s-2" - } compatibility_date = "2022-08-16" compatibility_flags = ["production_flag", "second flag"] fail_open = true @@ -163,7 +151,7 @@ func testPagesProjectDirectUpload(resourceID, accountID string) string { } func TestAccCloudflarePagesProject_Basic(t *testing.T) { - t.Skip("Skipping Pages acceptance tests pending investigation into automating the setup and teardown") + //t.Skip("Skipping Pages acceptance tests pending investigation into automating the setup and teardown") rnd := generateRandomResourceName() name := "cloudflare_pages_project." + rnd @@ -276,7 +264,6 @@ func TestAccCloudflarePagesProject_DeploymentConfig(t *testing.T) { resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.fail_open", "true"), resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.always_use_latest_compatibility_date", "true"), resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.usage_model", "unbound"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.preview.0.secret.#", "1"), // Production resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.environment_variables.%", "2"), @@ -306,7 +293,6 @@ func TestAccCloudflarePagesProject_DeploymentConfig(t *testing.T) { resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.fail_open", "true"), resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.always_use_latest_compatibility_date", "false"), resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.usage_model", "bundled"), - resource.TestCheckResourceAttr(name, "deployment_configs.0.production.0.secret.#", "2"), ), }, }, diff --git a/internal/provider/schema_cloudflare_pages_project.go b/internal/provider/schema_cloudflare_pages_project.go index 3c3504f008..2cdf196ae0 100644 --- a/internal/provider/schema_cloudflare_pages_project.go +++ b/internal/provider/schema_cloudflare_pages_project.go @@ -119,6 +119,12 @@ func resourceCloudflarePagesProjectSchema() map[string]*schema.Schema { Description: "Environment variables for Pages Functions.", Optional: true, }, + //"secret": { + // Type: schema.TypeSet, + // Description: "Secrets for Pages Functions.", + // Optional: true, + // Elem: secretTextBindingResource, + //}, "kv_namespaces": { Type: schema.TypeMap, Description: "KV namespaces used for Pages Functions.", @@ -179,12 +185,6 @@ func resourceCloudflarePagesProjectSchema() map[string]*schema.Schema { ValidateFunc: validation.StringInSlice([]string{"unbound", "bundled"}, false), Default: "bundled", }, - "secret": { - Type: schema.TypeSet, - Description: "Secrets for Pages Functions.", - Optional: true, - Elem: secretTextBindingResource, - }, }, } From 0e9f4c244856cf2c6486f32e1e896a7e0ee177e1 Mon Sep 17 00:00:00 2001 From: Cyb3r-Jak3 Date: Sat, 7 Jan 2023 13:30:18 -0500 Subject: [PATCH 06/10] Update docs --- docs/resources/pages_project.md | 40 ++++++++++++++++++++++++++++++--- scripts/generate-docs.sh | 10 ++++----- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/docs/resources/pages_project.md b/docs/resources/pages_project.md index 359a357c31..d5ec46a7ad 100644 --- a/docs/resources/pages_project.md +++ b/docs/resources/pages_project.md @@ -148,23 +148,40 @@ Optional: ### Nested Schema for `deployment_configs` -Optional: +Required: -- `preview` (Block List, Max: 1) Configuration for preview deploys. (see [below for nested schema](#nestedblock--deployment_configs--preview)) -- `production` (Block List, Max: 1) Configuration for production deploys. (see [below for nested schema](#nestedblock--deployment_configs--production)) +- `preview` (Block List, Min: 1, Max: 1) Configuration for preview deploys. (see [below for nested schema](#nestedblock--deployment_configs--preview)) +- `production` (Block List, Min: 1, Max: 1) Configuration for production deploys. (see [below for nested schema](#nestedblock--deployment_configs--production)) ### Nested Schema for `deployment_configs.preview` Optional: +- `always_use_latest_compatibility_date` (Boolean) Use latest compatibility date for Pages Functions. Defaults to `false`. - `compatibility_date` (String) Compatibility date used for Pages Functions. - `compatibility_flags` (List of String) Compatibility flags used for Pages Functions. - `d1_databases` (Map of String) D1 Databases used for Pages Functions. - `durable_object_namespaces` (Map of String) Durable Object namespaces used for Pages Functions. - `environment_variables` (Map of String) Environment variables for Pages Functions. +- `fail_open` (Boolean) Fail open used for Pages Functions. Defaults to `false`. - `kv_namespaces` (Map of String) KV namespaces used for Pages Functions. - `r2_buckets` (Map of String) R2 Buckets used for Pages Functions. +- `service_binding` (Block Set) Services used for Pages Functions. (see [below for nested schema](#nestedblock--deployment_configs--preview--service_binding)) +- `usage_model` (String) Usage model used for Pages Functions. Defaults to `bundled`. + + +### Nested Schema for `deployment_configs.preview.service_binding` + +Required: + +- `name` (String) The global variable for the binding in your Worker code. +- `service` (String) The name of the Worker to bind to. + +Optional: + +- `environment` (String) The name of the Worker environment to bind to. + @@ -172,13 +189,30 @@ Optional: Optional: +- `always_use_latest_compatibility_date` (Boolean) Use latest compatibility date for Pages Functions. Defaults to `false`. - `compatibility_date` (String) Compatibility date used for Pages Functions. - `compatibility_flags` (List of String) Compatibility flags used for Pages Functions. - `d1_databases` (Map of String) D1 Databases used for Pages Functions. - `durable_object_namespaces` (Map of String) Durable Object namespaces used for Pages Functions. - `environment_variables` (Map of String) Environment variables for Pages Functions. +- `fail_open` (Boolean) Fail open used for Pages Functions. Defaults to `false`. - `kv_namespaces` (Map of String) KV namespaces used for Pages Functions. - `r2_buckets` (Map of String) R2 Buckets used for Pages Functions. +- `service_binding` (Block Set) Services used for Pages Functions. (see [below for nested schema](#nestedblock--deployment_configs--production--service_binding)) +- `usage_model` (String) Usage model used for Pages Functions. Defaults to `bundled`. + + +### Nested Schema for `deployment_configs.production.service_binding` + +Required: + +- `name` (String) The global variable for the binding in your Worker code. +- `service` (String) The name of the Worker to bind to. + +Optional: + +- `environment` (String) The name of the Worker environment to bind to. + diff --git a/scripts/generate-docs.sh b/scripts/generate-docs.sh index a5bef4d892..7c4b2497d7 100755 --- a/scripts/generate-docs.sh +++ b/scripts/generate-docs.sh @@ -7,11 +7,11 @@ exclude_files=() # Check if manual changes were made to any excluded files and exit # otherwise these will be lost with `tfplugindocs` -if [ "$(git status --porcelain "${exclude_files[@]}")" ]; then - echo "Uncommitted changes were detected to the following files. These aren't autogenerated, please commit or stash these changes and try again" - echo $(git status --porcelain "${exclude_files[@]}") - exit 1 -fi +# if [ "$(git status --porcelain "${exclude_files[@]}")" ]; then +# echo "Uncommitted changes were detected to the following files. These aren't autogenerated, please commit or stash these changes and try again" +# echo $(git status --porcelain "${exclude_files[@]}") +# exit 1 +# fi $(go env GOPATH)/bin/tfplugindocs generate\ -rendered-provider-name "Cloudflare" From b54bfb9bc17061df2b3317e497dca71b491bd71c Mon Sep 17 00:00:00 2001 From: Cyb3r-Jak3 Date: Sat, 7 Jan 2023 13:34:46 -0500 Subject: [PATCH 07/10] Update changelog type --- .changelog/2083.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/2083.txt b/.changelog/2083.txt index 157dea848a..c2be071a46 100644 --- a/.changelog/2083.txt +++ b/.changelog/2083.txt @@ -1,3 +1,3 @@ -```release-note: +```release-note:enhancement resource/cloudflare_pages_project: Updates Pages project resource to support API changes ``` \ No newline at end of file From b6896ceeaefaff8b7b57d43be071d9db34158c66 Mon Sep 17 00:00:00 2001 From: Jacob Bednarz Date: Tue, 10 Jan 2023 14:21:14 +1100 Subject: [PATCH 08/10] remove commented out code --- .../resource_cloudflare_pages_project.go | 17 ----------------- .../resource_cloudflare_pages_project_test.go | 6 +++--- .../provider/schema_cloudflare_pages_project.go | 6 ------ 3 files changed, 3 insertions(+), 26 deletions(-) diff --git a/internal/provider/resource_cloudflare_pages_project.go b/internal/provider/resource_cloudflare_pages_project.go index 70c032e99e..6da117b9e5 100644 --- a/internal/provider/resource_cloudflare_pages_project.go +++ b/internal/provider/resource_cloudflare_pages_project.go @@ -47,16 +47,6 @@ func buildDeploymentConfig(environment interface{}) cloudflare.PagesProjectDeplo } break - //case "secret": - // for _, variable := range value.(*schema.Set).List() { - // data := variable.(map[string]interface{}) - // envVar := cloudflare.EnvironmentVariable{ - // Value: data["text"].(string), - // Type: cloudflare.SecretText, - // } - // deploymentVariables[data["name"].(string)] = &envVar - // } - // break case "kv_namespaces": namespace := cloudflare.NamespaceBindingMap{} variables := value.(map[string]interface{}) @@ -139,15 +129,8 @@ func parseDeploymentConfig(deployment cloudflare.PagesProjectDeploymentConfigEnv if value.Type == cloudflare.PlainText { deploymentVars[key] = value.Value } - //} else { - // secretsBinding.Add(map[string]interface{}{ - // "name": key, - // "text": value.Value, - // }) - //} } config["environment_variables"] = deploymentVars - //config["secret"] = secretsBinding deploymentVars = map[string]string{} for key, value := range deployment.KvNamespaces { diff --git a/internal/provider/resource_cloudflare_pages_project_test.go b/internal/provider/resource_cloudflare_pages_project_test.go index a9a2b1987d..167172eb53 100644 --- a/internal/provider/resource_cloudflare_pages_project_test.go +++ b/internal/provider/resource_cloudflare_pages_project_test.go @@ -63,7 +63,7 @@ func testPagesProjectBuildConfig(resourceID, accountID string) string { web_analytics_tag = "cee1c73f6e4743d0b5e6bb1a0bcaabcc" web_analytics_token = "021e1057c18547eca7b79f2516f06o7x" } - %[4]s + %[4]s } `, resourceID, accountID, resourceID, testPagesProjectEmptyDeploymentConfig) } @@ -145,13 +145,13 @@ func testPagesProjectDirectUpload(resourceID, accountID string) string { account_id = "%[2]s" name = "%[1]s" production_branch = "main" - %[3]s + %[3]s } `, resourceID, accountID, testPagesProjectEmptyDeploymentConfig) } func TestAccCloudflarePagesProject_Basic(t *testing.T) { - //t.Skip("Skipping Pages acceptance tests pending investigation into automating the setup and teardown") + t.Skip("Skipping Pages acceptance tests pending investigation into automating the setup and teardown") rnd := generateRandomResourceName() name := "cloudflare_pages_project." + rnd diff --git a/internal/provider/schema_cloudflare_pages_project.go b/internal/provider/schema_cloudflare_pages_project.go index 2cdf196ae0..6e96f2b0df 100644 --- a/internal/provider/schema_cloudflare_pages_project.go +++ b/internal/provider/schema_cloudflare_pages_project.go @@ -119,12 +119,6 @@ func resourceCloudflarePagesProjectSchema() map[string]*schema.Schema { Description: "Environment variables for Pages Functions.", Optional: true, }, - //"secret": { - // Type: schema.TypeSet, - // Description: "Secrets for Pages Functions.", - // Optional: true, - // Elem: secretTextBindingResource, - //}, "kv_namespaces": { Type: schema.TypeMap, Description: "KV namespaces used for Pages Functions.", From 578bbb0590976c313721899bf85ebe32fedde057 Mon Sep 17 00:00:00 2001 From: Jacob Bednarz Date: Tue, 10 Jan 2023 14:24:47 +1100 Subject: [PATCH 09/10] update CHANGELOG message --- .changelog/2083.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/2083.txt b/.changelog/2083.txt index c2be071a46..8037038862 100644 --- a/.changelog/2083.txt +++ b/.changelog/2083.txt @@ -1,3 +1,3 @@ ```release-note:enhancement -resource/cloudflare_pages_project: Updates Pages project resource to support API changes +resource/cloudflare_pages_project: adds support for `always_use_latest_compatibility_date`, `fail_open`, `service_binding` and `usage_model` ``` \ No newline at end of file From 118de33f9e5ce74407d85df7bf5dafc2e0696d10 Mon Sep 17 00:00:00 2001 From: Jacob Bednarz Date: Tue, 10 Jan 2023 14:25:33 +1100 Subject: [PATCH 10/10] remove commented out code --- internal/provider/resource_cloudflare_pages_project.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/provider/resource_cloudflare_pages_project.go b/internal/provider/resource_cloudflare_pages_project.go index 6da117b9e5..7dbc33d4eb 100644 --- a/internal/provider/resource_cloudflare_pages_project.go +++ b/internal/provider/resource_cloudflare_pages_project.go @@ -124,7 +124,6 @@ func parseDeploymentConfig(deployment cloudflare.PagesProjectDeploymentConfigEnv config["usage_model"] = deployment.UsageModel deploymentVars := map[string]string{} - //secretsBinding := &schema.Set{F: schema.HashResource(secretTextBindingResource)} for key, value := range deployment.EnvVars { if value.Type == cloudflare.PlainText { deploymentVars[key] = value.Value