Skip to content

Commit

Permalink
Cloudrun v1 (#1426)
Browse files Browse the repository at this point in the history
Signed-off-by: Modular Magician <magic-modules@google.com>
  • Loading branch information
modular-magician authored and chrisst committed Nov 26, 2019
1 parent 121f77b commit 914f620
Show file tree
Hide file tree
Showing 13 changed files with 1,008 additions and 359 deletions.
2 changes: 1 addition & 1 deletion google-beta/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ var BigtableDefaultBasePath = "https://bigtableadmin.googleapis.com/v2/"
var BinaryAuthorizationDefaultBasePath = "https://binaryauthorization.googleapis.com/v1beta1/"
var CloudBuildDefaultBasePath = "https://cloudbuild.googleapis.com/v1/"
var CloudFunctionsDefaultBasePath = "https://cloudfunctions.googleapis.com/v1/"
var CloudRunDefaultBasePath = "https://run.googleapis.com/v1alpha1/"
var CloudRunDefaultBasePath = "https://{{location}}-run.googleapis.com/apis/"
var CloudSchedulerDefaultBasePath = "https://cloudscheduler.googleapis.com/v1/"
var CloudTasksDefaultBasePath = "https://cloudtasks.googleapis.com/v2/"
var ComputeDefaultBasePath = "https://www.googleapis.com/compute/beta/"
Expand Down
49 changes: 29 additions & 20 deletions google-beta/resource_cloud_run_domain_mapping.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,9 @@ More info: http://kubernetes.io/docs/user-guide/identifiers#uids`,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"route_name": {
Type: schema.TypeString,
Required: true,
Type: schema.TypeString,
Required: true,
DiffSuppressFunc: compareSelfLinkOrResourceName,
Description: `The name of the Cloud Run Service that this DomainMapping applies to.
The route must exist.`,
},
Expand All @@ -137,6 +138,7 @@ The route must exist.`,
Optional: true,
ValidateFunc: validation.StringInSlice([]string{"NONE", "AUTOMATIC", ""}, false),
Description: `The mode of the certificate.`,
Default: "AUTOMATIC",
},
"force_override": {
Type: schema.TypeBool,
Expand Down Expand Up @@ -164,12 +166,6 @@ records must be added to the domain's DNS configuration in order to
serve the application via this domain mapping.`,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"rrdata": {
Type: schema.TypeString,
Optional: true,
Description: `Data for this record. Values vary by record type, as defined in RFC 1035
(section 5) and RFC 1034 (section 3.6.1).`,
},
"type": {
Type: schema.TypeString,
Optional: true,
Expand All @@ -182,6 +178,12 @@ serve the application via this domain mapping.`,
Description: `Relative name of the object affected by this record. Only applicable for
'CNAME' records. Example: 'www'.`,
},
"rrdata": {
Type: schema.TypeString,
Computed: true,
Description: `Data for this record. Values vary by record type, as defined in RFC 1035
(section 5) and RFC 1034 (section 3.6.1).`,
},
},
},
},
Expand Down Expand Up @@ -261,7 +263,7 @@ func resourceCloudRunDomainMappingCreate(d *schema.ResourceData, meta interface{
return err
}

url, err := replaceVars(d, config, "{{CloudRunBasePath}}projects/{{project}}/locations/{{location}}/domainmappings")
url, err := replaceVars(d, config, "{{CloudRunBasePath}}domains.cloudrun.com/v1/namespaces/{{project}}/domainmappings")
if err != nil {
return err
}
Expand All @@ -277,7 +279,7 @@ func resourceCloudRunDomainMappingCreate(d *schema.ResourceData, meta interface{
}

// Store the ID now
id, err := replaceVars(d, config, "projects/{{project}}/locations/{{location}}/domainmappings/{{name}}")
id, err := replaceVars(d, config, "locations/{{location}}/namespaces/{{project}}/domainmappings/{{name}}")
if err != nil {
return fmt.Errorf("Error constructing id: %s", err)
}
Expand All @@ -291,7 +293,7 @@ func resourceCloudRunDomainMappingCreate(d *schema.ResourceData, meta interface{
func resourceCloudRunDomainMappingRead(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)

url, err := replaceVars(d, config, "{{CloudRunBasePath}}projects/{{project}}/locations/{{location}}/domainmappings/{{name}}")
url, err := replaceVars(d, config, "{{CloudRunBasePath}}domains.cloudrun.com/v1/namespaces/{{project}}/domainmappings/{{name}}")
if err != nil {
return err
}
Expand Down Expand Up @@ -361,7 +363,7 @@ func resourceCloudRunDomainMappingUpdate(d *schema.ResourceData, meta interface{
return err
}

url, err := replaceVars(d, config, "{{CloudRunBasePath}}projects/{{project}}/locations/{{location}}/domainmappings/{{name}}")
url, err := replaceVars(d, config, "{{CloudRunBasePath}}domains.cloudrun.com/v1/namespaces/{{project}}/domainmappings/{{name}}")
if err != nil {
return err
}
Expand All @@ -384,7 +386,7 @@ func resourceCloudRunDomainMappingDelete(d *schema.ResourceData, meta interface{
return err
}

url, err := replaceVars(d, config, "{{CloudRunBasePath}}projects/{{project}}/locations/{{location}}/domainmappings/{{name}}")
url, err := replaceVars(d, config, "{{CloudRunBasePath}}domains.cloudrun.com/v1/namespaces/{{project}}/domainmappings/{{name}}")
if err != nil {
return err
}
Expand All @@ -404,15 +406,15 @@ func resourceCloudRunDomainMappingDelete(d *schema.ResourceData, meta interface{
func resourceCloudRunDomainMappingImport(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
config := meta.(*Config)
if err := parseImportId([]string{
"projects/(?P<project>[^/]+)/locations/(?P<location>[^/]+)/domainmappings/(?P<name>[^/]+)",
"(?P<project>[^/]+)/(?P<location>[^/]+)/(?P<name>[^/]+)",
"locations/(?P<location>[^/]+)/namespaces/(?P<project>[^/]+)/domainmappings/(?P<name>[^/]+)",
"(?P<location>[^/]+)/(?P<project>[^/]+)/(?P<name>[^/]+)",
"(?P<location>[^/]+)/(?P<name>[^/]+)",
}, d, config); err != nil {
return nil, err
}

// Replace import id for the resource id
id, err := replaceVars(d, config, "projects/{{project}}/locations/{{location}}/domainmappings/{{name}}")
id, err := replaceVars(d, config, "locations/{{location}}/namespaces/{{project}}/domainmappings/{{name}}")
if err != nil {
return nil, fmt.Errorf("Error constructing id: %s", err)
}
Expand Down Expand Up @@ -545,7 +547,10 @@ func flattenCloudRunDomainMappingSpecForceOverride(v interface{}, d *schema.Reso
}

func flattenCloudRunDomainMappingSpecRouteName(v interface{}, d *schema.ResourceData) interface{} {
return v
if v == nil {
return v
}
return ConvertSelfLinkToV1(v.(string))
}

func flattenCloudRunDomainMappingSpecCertificateMode(v interface{}, d *schema.ResourceData) interface{} {
Expand Down Expand Up @@ -604,7 +609,7 @@ func flattenCloudRunDomainMappingMetadataUid(v interface{}, d *schema.ResourceDa
}

func flattenCloudRunDomainMappingMetadataNamespace(v interface{}, d *schema.ResourceData) interface{} {
return v
return d.Get("project")
}

func flattenCloudRunDomainMappingMetadataAnnotations(v interface{}, d *schema.ResourceData) interface{} {
Expand Down Expand Up @@ -649,7 +654,11 @@ func expandCloudRunDomainMappingSpecForceOverride(v interface{}, d TerraformReso
}

func expandCloudRunDomainMappingSpecRouteName(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
return v, nil
f, err := parseGlobalFieldValue("services", v.(string), "project", d, config, true)
if err != nil {
return nil, fmt.Errorf("Invalid value for route_name: %s", err)
}
return f.RelativeLink(), nil
}

func expandCloudRunDomainMappingSpecCertificateMode(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
Expand Down Expand Up @@ -765,7 +774,7 @@ func resourceCloudRunDomainMappingEncoder(d *schema.ResourceData, meta interface
metadata["name"] = name

// The only acceptable version/kind right now
obj["apiVersion"] = "domains.cloudrun.com/v1alpha1"
obj["apiVersion"] = "domains.cloudrun.com/v1"
obj["kind"] = "DomainMapping"
return obj, nil
}
Expand Down
37 changes: 30 additions & 7 deletions google-beta/resource_cloud_run_domain_mapping_generated_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,35 +28,58 @@ func TestAccCloudRunDomainMapping_cloudRunDomainMappingBasicExample(t *testing.T
t.Parallel()

context := map[string]interface{}{
"namespace": getTestProjectFromEnv(),
"random_suffix": acctest.RandString(10),
"namespace": getTestProjectFromEnv(),
"verified_domain": "tftest-domainmapping.com",
"random_suffix": acctest.RandString(10),
}

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProvidersOiCS,
Providers: testAccProviders,
CheckDestroy: testAccCheckCloudRunDomainMappingDestroy,
Steps: []resource.TestStep{
{
Config: testAccCloudRunDomainMapping_cloudRunDomainMappingBasicExample(context),
},
{
ResourceName: "google_cloud_run_domain_mapping.default",
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func testAccCloudRunDomainMapping_cloudRunDomainMappingBasicExample(context map[string]interface{}) string {
return Nprintf(`
resource "google_cloud_run_service" "default" {
name = "tftest-cloudrun%{random_suffix}"
location = "us-central1"
metadata {
namespace = "%{namespace}"
}
template {
spec {
containers {
image = "gcr.io/cloudrun/hello"
}
}
}
}
resource "google_cloud_run_domain_mapping" "default" {
location = "us-central1"
provider = google-beta
name = "tftest-domainmapping.com%{random_suffix}"
name = "%{verified_domain}"
metadata {
namespace = "%{namespace}"
}
spec {
route_name = "should-be-a-service"
route_name = google_cloud_run_service.default.name
}
}
`, context)
Expand All @@ -73,7 +96,7 @@ func testAccCheckCloudRunDomainMappingDestroy(s *terraform.State) error {

config := testAccProvider.Meta().(*Config)

url, err := replaceVarsForTest(config, rs, "{{CloudRunBasePath}}projects/{{project}}/locations/{{location}}/domainmappings/{{name}}")
url, err := replaceVarsForTest(config, rs, "{{CloudRunBasePath}}domains.cloudrun.com/v1/namespaces/{{project}}/domainmappings/{{name}}")
if err != nil {
return err
}
Expand Down
Loading

0 comments on commit 914f620

Please sign in to comment.