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 new resource for Service Project for Apphub #10048

Merged
merged 17 commits into from
Mar 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 110 additions & 0 deletions mmv1/products/apphub/ServiceProjectAttachment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
# Copyright 2024 Google Inc.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


--- !ruby/object:Api::Resource
base_url: projects/{{project}}/locations/global/serviceProjectAttachments
create_url: projects/{{project}}/locations/global/serviceProjectAttachments?serviceProjectAttachmentId={{service_project_attachment_id}}
self_link: projects/{{project}}/locations/global/serviceProjectAttachments/{{service_project_attachment_id}}
id_format: projects/{{project}}/locations/global/serviceProjectAttachments/{{service_project_attachment_id}}
import_format:
- projects/{{project}}/locations/global/serviceProjectAttachments/{{service_project_attachment_id}}
name: ServiceProjectAttachment
description: |
Represents a Service project attachment to the Host Project.
immutable: true
autogen_async: true
custom_code: !ruby/object:Provider::Terraform::CustomCode
constants: 'templates/terraform/constants/apphub_service_project.go.erb'
examples:
- !ruby/object:Provider::Terraform::Examples
name: "service_project_attachment_basic"
pull_external: true
primary_resource_id: "example"
config_path: "templates/terraform/examples/apphub_service_project_attachment_basic.tf.erb"
vars:
service_project_attachment_id: "project-1"
test_env_vars:
org_id: :ORG_ID
host_project: :PROJECT_NAME
- !ruby/object:Provider::Terraform::Examples
name: "service_project_attachment_full"
pull_external: true
primary_resource_id: "example2"
config_path: "templates/terraform/examples/apphub_service_project_attachment_full.tf.erb"
vars:
service_project_attachment_id: "project-1"
test_env_vars:
org_id: :ORG_ID
host_project: :PROJECT_NAME
properties:
- !ruby/object:Api::Type::String
name: name
output: true
description: |
"Identifier. The resource name of a ServiceProjectAttachment. Format:\"projects/{host-project-id}/locations/global/serviceProjectAttachments/{service-project-id}.\" "
- !ruby/object:Api::Type::String
name: serviceProject
diff_suppress_func: 'ServiceProjectDiffSuppress'
custom_expand: 'templates/terraform/custom_expand/apphub_service_project.go.erb'
custom_flatten: 'templates/terraform/custom_flatten/apphub_service_project.go.erb'
description: |
"Immutable. Service project name in the format: \"projects/abc\"
or \"projects/123\". As input, project name with either project id or number
are accepted. As output, this field will contain project number. "
immutable: true
- !ruby/object:Api::Type::String
name: createTime
description: 'Output only. Create time. '
output: true
- !ruby/object:Api::Type::String
name: uid
description: "Output only. A globally unique identifier (in UUID4 format) for the `ServiceProjectAttachment`. "
output: true
- !ruby/object:Api::Type::Enum
name: 'state'
description: |
ServiceProjectAttachment state.
output: true
values:
- :STATE_UNSPECIFIED
- :CREATING
- :ACTIVE
- :DELETING
parameters:
- !ruby/object:Api::Type::String
name: serviceProjectAttachmentId
description: "Required. The service project attachment identifier must contain the
project_id of the service project specified in the service_project_attachment.service_project
field. Hint: \"projects/{project_id}\" "
url_param_only: true
required: true
immutable: true
async: !ruby/object:Api::OpAsync
operation: !ruby/object:Api::OpAsync::Operation
path: name
base_url: "{{op_id}}"
wait_ms: 1000
timeouts:
result: !ruby/object:Api::OpAsync::Result
path: response
resource_inside_response: true
status: !ruby/object:Api::OpAsync::Status
path: done
complete: true
allowed:
- true
- false
error: !ruby/object:Api::OpAsync::Error
path: error
message: message
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// Suppress all diff for the field Service Project
func ServiceProjectDiffSuppress(_, _, _ string, _ *schema.ResourceData) bool {
return true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
func expand<%= prefix -%><%= titlelize_property(property) -%>(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {

service_project := "projects/" + d.Get("service_project_attachment_id").(string)

return service_project, nil
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
func flatten<%= prefix -%><%= titlelize_property(property) -%>(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return nil
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
resource "google_apphub_service_project_attachment" "<%= ctx[:primary_resource_id] %>" {
service_project_attachment_id = google_project.service_project.project_id
depends_on = [time_sleep.wait_120s]
}

resource "google_project" "service_project" {
project_id ="<%= ctx[:vars]['service_project_attachment_id'] %>"
name = "Service Project"
org_id = "<%= ctx[:test_env_vars]['org_id'] %>"
}

resource "time_sleep" "wait_120s" {
depends_on = [google_project.service_project]

create_duration = "120s"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
resource "google_apphub_service_project_attachment" "<%= ctx[:primary_resource_id] %>" {
service_project_attachment_id = google_project.service_project_full.project_id
service_project = google_project.service_project_full.project_id
depends_on = [time_sleep.wait_120s]
}

resource "google_project" "service_project_full" {
project_id ="<%= ctx[:vars]['service_project_attachment_id'] %>"
name = "Service Project Full"
org_id = "<%= ctx[:test_env_vars]['org_id'] %>"
}

resource "time_sleep" "wait_120s" {
depends_on = [google_project.service_project_full]

create_duration = "120s"
}