Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add prefix to API Config #4193

Merged
merged 12 commits into from
Nov 9, 2020
3 changes: 1 addition & 2 deletions products/apigateway/api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ objects:
references: !ruby/object:Api::Resource::ReferenceLinks
guides:
'Official Documentation':
'https://cloud.google.com/api-gateway/docs/quickstart'
'https://cloud.google.com/api-gateway/docs/creating-api-config'
api: 'https://cloud.google.com/api-gateway/docs/reference/rest/v1beta/projects.locations.apis.configs'
parameters:
- !ruby/object:Api::Type::String
Expand All @@ -113,7 +113,6 @@ objects:
name: apiConfigId
description: |
Identifier to assign to the API Config. Must be unique within scope of the parent resource(api).
required: true
upodroid marked this conversation as resolved.
Show resolved Hide resolved
input: true
url_param_only: true
properties:
Expand Down
12 changes: 12 additions & 0 deletions products/apigateway/terraform.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ overrides: !ruby/object:Overrides::ResourceOverrides
vars:
name: "api"
- !ruby/object:Provider::Terraform::Examples
skip_docs: true
min_version: beta
name: "apigateway_api_full"
primary_resource_id: "api"
Expand All @@ -43,6 +44,10 @@ overrides: !ruby/object:Overrides::ResourceOverrides
managedService: !ruby/object:Overrides::Terraform::PropertyOverride
default_from_api: true
ApiConfig: !ruby/object:Overrides::Terraform::ResourceOverride
docs: !ruby/object:Provider::Terraform::Docs
optional_properties: |
* `api_config_id_prefix` - (Optional) Creates a unique name beginning with the
specified prefix. Conflicts with `api_config_id`.
upodroid marked this conversation as resolved.
Show resolved Hide resolved
timeouts: !ruby/object:Api::Timeouts
insert_minutes: 6
update_minutes: 6
Expand All @@ -63,6 +68,7 @@ overrides: !ruby/object:Overrides::ResourceOverrides
vars:
name: "api-cfg"
- !ruby/object:Provider::Terraform::Examples
skip_docs: true
min_version: beta
name: "apigateway_api_config_full"
primary_resource_id: "api_cfg"
Expand All @@ -73,6 +79,11 @@ overrides: !ruby/object:Overrides::ResourceOverrides
default_from_api: true
gatewayConfig: !ruby/object:Overrides::Terraform::PropertyOverride
ignore_read: true
apiConfigId: !ruby/object:Overrides::Terraform::PropertyOverride
default_from_api: true
custom_code: !ruby/object:Provider::Terraform::CustomCode
extra_schema_entry: templates/terraform/extra_schema_entry/api_config.erb
rileykarson marked this conversation as resolved.
Show resolved Hide resolved
encoder: 'templates/terraform/encoders/api_config.go.erb'
Gateway: !ruby/object:Overrides::Terraform::ResourceOverride
timeouts: !ruby/object:Api::Timeouts
insert_minutes: 6
Expand All @@ -92,6 +103,7 @@ overrides: !ruby/object:Overrides::ResourceOverrides
vars:
name: "api-gw"
- !ruby/object:Provider::Terraform::Examples
skip_docs: true
min_version: beta
name: "apigateway_gateway_full"
primary_resource_id: "api_gw"
Expand Down
13 changes: 13 additions & 0 deletions templates/terraform/encoders/api_config.go.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
var apiConfigId string
if v, ok := d.GetOk("api_config_id"); ok {
apiConfigId = v.(string)
} else if v, ok := d.GetOk("api_config_id_prefix"); ok {
apiConfigId = resource.PrefixedUniqueId(v.(string))
} else {
apiConfigId = resource.UniqueId()
}

if err := d.Set("api_config_id", apiConfigId); err != nil {
return nil, fmt.Errorf("Error setting api_config_id: %s", err)
}
return obj, nil
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,15 @@ resource "google_api_gateway_api" "<%= ctx[:primary_resource_id] %>" {
resource "google_api_gateway_api_config" "<%= ctx[:primary_resource_id] %>" {
provider = google-beta
api = google_api_gateway_api.<%= ctx[:primary_resource_id] %>.api_id
api_config_id = "<%= ctx[:vars]["name"] %>"
api_config_id_prefix = "api-cfg-"

openapi_documents {
document {
path = "spec.yaml"
contents = filebase64("test-fixtures/apigateway/openapi.yaml")
}
}
lifecycle {
create_before_destroy = true
}
}
5 changes: 4 additions & 1 deletion templates/terraform/examples/apigateway_gateway_basic.tf.erb
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,17 @@ resource "google_api_gateway_api" "<%= ctx[:primary_resource_id] %>" {
resource "google_api_gateway_api_config" "<%= ctx[:primary_resource_id] %>" {
provider = google-beta
api = google_api_gateway_api.<%= ctx[:primary_resource_id] %>.api_id
api_config_id = "<%= ctx[:vars]["name"] %>"
api_config_id_prefix = "tf-test-"

openapi_documents {
document {
path = "spec.yaml"
contents = filebase64("test-fixtures/apigateway/openapi.yaml")
}
}
lifecycle {
create_before_destroy = true
}
}

resource "google_api_gateway_gateway" "<%= ctx[:primary_resource_id] %>" {
Expand Down
7 changes: 7 additions & 0 deletions templates/terraform/extra_schema_entry/api_config.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"api_config_id_prefix": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
ConflictsWith: []string{"api_config_id"},
upodroid marked this conversation as resolved.
Show resolved Hide resolved
},