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

Update BootstrapProject to support use across multiple projects/environments #7369

Merged
merged 6 commits into from
Mar 14, 2023

Conversation

roaks3
Copy link
Contributor

@roaks3 roaks3 commented Feb 28, 2023

Only affects tests

With the project split work coming soon to support isolating our test environments, one of the issues we run into is that the projects for all 3 environments are occupying the same space. This is problematic for bootstrapped projects, because each environment will attempt to use the same project for these tests (and potentially do other things like change billing account or permissions).

The fix proposed here is to simply append the "environment test project" id to the end of the bootstrapped project id. This way, each environment will end up creating a unique project that is owned by that environment.

I'm not sure if this will fix hashicorp/terraform-provider-google#13711, but it's possible, because I think we started seeing issues that as soon as the new GA project started running. If not, then I can follow up after this gets merged to double check that there is not some other issue related to the multiple environments.

If this PR is for Terraform, I acknowledge that I have:

  • Searched through the issue tracker for an open issue that this either resolves or contributes to, commented on it to claim it, and written "fixes {url}" or "part of {url}" in this PR description. If there were no relevant open issues, I opened one and commented that I would like to work on it (not necessary for very small changes).
  • Ensured that all new fields I added that can be set by a user appear in at least one example (for generated resources) or third_party test (for handwritten resources or update tests).
  • Generated Terraform providers, and ran make test and make lint in the generated providers to ensure it passes unit and linter tests.
  • Ran relevant acceptance tests using my own Google Cloud project and credentials (If the acceptance tests do not yet pass or you are unable to run them, please let your reviewer know).
  • Read the Release Notes Guide before writing my release note below.

Release Note Template for Downstream PRs (will be copied)


@roaks3 roaks3 requested a review from a team as a code owner February 28, 2023 19:54
@roaks3 roaks3 requested review from hao-nan-li and trodge and removed request for a team February 28, 2023 19:54
@roaks3
Copy link
Contributor Author

roaks3 commented Feb 28, 2023

Adding @trodge as well to weigh in, since he introduced this function initially

@modular-magician
Copy link
Collaborator

Hi there, I'm the Modular magician. I've detected the following information about your changes:

Diff report

Your PR generated some diffs in downstreams - here they are.

Terraform GA: Diff ( 2 files changed, 7 insertions(+), 2 deletions(-))
Terraform Beta: Diff ( 2 files changed, 7 insertions(+), 2 deletions(-))
TF Validator: Diff ( 2 files changed, 3 insertions(+), 3 deletions(-))

@modular-magician
Copy link
Collaborator

Tests analytics

Total tests: 0
Passed tests 0
Skipped tests: 0
Failed tests: 0

Errors occurred during REPLAYING mode. Please fix them to complete your PR
View the build log

@modular-magician
Copy link
Collaborator

Hi there, I'm the Modular magician. I've detected the following information about your changes:

Diff report

Your PR generated some diffs in downstreams - here they are.

Terraform GA: Diff ( 2 files changed, 7 insertions(+), 2 deletions(-))
Terraform Beta: Diff ( 2 files changed, 7 insertions(+), 2 deletions(-))
TF Validator: Diff ( 2 files changed, 3 insertions(+), 3 deletions(-))

@modular-magician
Copy link
Collaborator

Tests analytics

Total tests: 0
Passed tests 0
Skipped tests: 0
Failed tests: 0

Errors occurred during REPLAYING mode. Please fix them to complete your PR
View the build log

@modular-magician
Copy link
Collaborator

Hi there, I'm the Modular magician. I've detected the following information about your changes:

Diff report

Your PR generated some diffs in downstreams - here they are.

Terraform GA: Diff ( 2 files changed, 7 insertions(+), 2 deletions(-))
Terraform Beta: Diff ( 2 files changed, 7 insertions(+), 2 deletions(-))
TF Validator: Diff ( 2 files changed, 3 insertions(+), 3 deletions(-))

@modular-magician
Copy link
Collaborator

Tests analytics

Total tests: 2480
Passed tests 2223
Skipped tests: 255
Failed tests: 2

Action taken

Triggering VCR tests in RECORDING mode for the tests that failed during VCR. Click here to see the failed tests
TestAccApigeeAddonsConfig_apigeeAddonsTestExample|TestAccWorkstationsWorkstationConfig_workstationConfigEncryptionKeyExample

@modular-magician
Copy link
Collaborator

Tests passed during RECORDING mode:
TestAccApigeeAddonsConfig_apigeeAddonsTestExample[Debug log]

Tests failed during RECORDING mode:
TestAccWorkstationsWorkstationConfig_workstationConfigEncryptionKeyExample[Error message] [Debug log]

Please fix these to complete your PR
View the build log or the debug log for each test

Copy link
Contributor

@trodge trodge left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall LGTM, just a few nits.

mmv1/third_party/terraform/utils/bootstrap_utils_test.go Outdated Show resolved Hide resolved
@@ -418,12 +418,17 @@ func removeContainerServiceAgentRoleFromContainerEngineRobot(t *testing.T, proje
}
}

func BootstrapProject(t *testing.T, projectID, billingAccount string, services []string) *cloudresourcemanager.Project {
// BootstrapProject will create or get a project named "<projectIDPrefix><testProjectFromEnv>"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is a prefix better than a suffix for distinguishing bootstrapped projects?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I honestly couldn't come up with a good reason for one over the other. The prefix, as I have it written, will make the projects a little more clearly "tf-" test resources (ie. they can be deleted/recreated if necessary), but a suffix might be slightly nicer for grouping alphabetically. That said, I would still lean toward the prefix strategy to start.

@@ -4447,7 +4447,7 @@ func TestAccContainerCluster_failedCreation(t *testing.T) {

clusterName := fmt.Sprintf("tf-test-cluster-%s", randString(t, 10))

project := BootstrapProject(t, "tf-fail-cluster-test", getTestBillingAccountFromEnv(t), []string{"container.googleapis.com"})
project := BootstrapProject(t, "tf-fail-cluster-", getTestBillingAccountFromEnv(t), []string{"container.googleapis.com"})
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To stay under 30 characters (max length of a project ID) let's shorten tf-fail-cluster- to tf-cc-f-.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, the max length is a good callout. We actually may need to tweak the strategy overall, as ci-test-project-nightly-beta is already 29 characters.

I'll think on this a bit more, but we could potentially trim the environment project id, eg. nightly-beta.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about something like tf-ci-test-?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made an update so that the suffix is shorter, so now we can technically keep the old prefix. Open to suggestions though after that change was made.

With the current implementation, here are the names we'd see:

  • VCR/presubmit - tf-fail-cluster-188019
  • Beta - tf-fail-cluster-nightly-beta
  • GA - tf-fail-cluster-nightly-ga
  • Random local test - tf-fail-cluster-ryantest

@modular-magician
Copy link
Collaborator

Hi there, I'm the Modular magician. I've detected the following information about your changes:

Diff report

Your PR generated some diffs in downstreams - here they are.

Terraform GA: Diff ( 2 files changed, 11 insertions(+), 2 deletions(-))
Terraform Beta: Diff ( 2 files changed, 11 insertions(+), 2 deletions(-))
TF Validator: Diff ( 2 files changed, 3 insertions(+), 3 deletions(-))

@modular-magician
Copy link
Collaborator

Tests analytics

Total tests: 0
Passed tests 0
Skipped tests: 0
Failed tests: 0

Errors occurred during REPLAYING mode. Please fix them to complete your PR
View the build log

@roaks3 roaks3 force-pushed the add-multi-env-support-for-bootstrap-project branch from 4923bf8 to 370aa40 Compare March 3, 2023 15:00
@modular-magician
Copy link
Collaborator

Hi there, I'm the Modular magician. I've detected the following information about your changes:

Diff report

Your PR generated some diffs in downstreams - here they are.

Terraform GA: Diff ( 2 files changed, 11 insertions(+), 2 deletions(-))
Terraform Beta: Diff ( 2 files changed, 11 insertions(+), 2 deletions(-))
TF Validator: Diff ( 2 files changed, 3 insertions(+), 3 deletions(-))

@modular-magician
Copy link
Collaborator

Tests analytics

Total tests: 2487
Passed tests 2227
Skipped tests: 258
Failed tests: 2

Action taken

Triggering VCR tests in RECORDING mode for the tests that failed during VCR. Click here to see the failed tests
TestAccComposerEnvironment_withWebServerConfig|TestAccWorkstationsWorkstationConfig_workstationConfigEncryptionKeyExample

@modular-magician
Copy link
Collaborator

Tests passed during RECORDING mode:
TestAccWorkstationsWorkstationConfig_workstationConfigEncryptionKeyExample[Debug log]

Tests failed during RECORDING mode:
TestAccComposerEnvironment_withWebServerConfig[Error message] [Debug log]

Please fix these to complete your PR
View the build log or the debug log for each test

@roaks3 roaks3 force-pushed the add-multi-env-support-for-bootstrap-project branch from 370aa40 to 4e85468 Compare March 6, 2023 22:49
@modular-magician
Copy link
Collaborator

Hi there, I'm the Modular magician. I've detected the following information about your changes:

Diff report

Your PR generated some diffs in downstreams - here they are.

Terraform GA: Diff ( 2 files changed, 11 insertions(+), 2 deletions(-))
Terraform Beta: Diff ( 2 files changed, 11 insertions(+), 2 deletions(-))
TF Validator: Diff ( 2 files changed, 3 insertions(+), 3 deletions(-))

@modular-magician
Copy link
Collaborator

Tests analytics

Total tests: 0
Passed tests 0
Skipped tests: 0
Affected tests: 0

Errors occurred during REPLAYING mode. Please fix them to complete your PR
View the build log

@modular-magician
Copy link
Collaborator

Hi there, I'm the Modular magician. I've detected the following information about your changes:

Diff report

Your PR generated some diffs in downstreams - here they are.

Terraform GA: Diff ( 2 files changed, 11 insertions(+), 2 deletions(-))
Terraform Beta: Diff ( 2 files changed, 11 insertions(+), 2 deletions(-))
TF Validator: Diff ( 2 files changed, 3 insertions(+), 3 deletions(-))

@modular-magician
Copy link
Collaborator

Tests analytics

Total tests: 2491
Passed tests 2231
Skipped tests: 258
Affected tests: 2

Action taken

Found 2 affected test(s) by replaying old test recordings. Starting RECORDING based on the most recent commit. Click here to see the affected tests
TestAccFirebaserulesRelease_BasicRelease|TestAccWorkstationsWorkstationConfig_workstationConfigEncryptionKeyExample

Get to know how VCR tests work

@modular-magician
Copy link
Collaborator

Tests passed during RECORDING mode:
TestAccFirebaserulesRelease_BasicRelease[Debug log]

Tests failed during RECORDING mode:
TestAccWorkstationsWorkstationConfig_workstationConfigEncryptionKeyExample[Error message] [Debug log]

Please fix these to complete your PR
View the build log or the debug log for each test

@roaks3
Copy link
Contributor Author

roaks3 commented Mar 14, 2023

@hao-nan-li @trodge Would either of you be able to give this another look when you have a moment? It looks like it might have stalled out, and it is a blocker for the project split.

Copy link
Contributor

@hao-nan-li hao-nan-li left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, just a quick recap:

VCR/presubmit - tf-fail-cluster-188019
Beta - tf-fail-cluster-nightly-beta
GA - tf-fail-cluster-nightly-ga
Random local test - tf-fail-cluster-ryantest

@roaks3 roaks3 requested a review from trodge March 14, 2023 20:39
@roaks3 roaks3 merged commit 6d8460a into main Mar 14, 2023
@roaks3 roaks3 deleted the add-multi-env-support-for-bootstrap-project branch March 14, 2023 21:44
600lyy pushed a commit to 600lyy/magic-modules that referenced this pull request Mar 15, 2023
…onments (GoogleCloudPlatform#7369)

* Update BootstrapProject to support use across multiple projects/environments

* Fix typo

* Fix arguments for getTestProjectFromEnv

* Fix project naming strategy for BootstrapProject to produce valid names in all envs

* Fix typo

* Fix function name after rebase
dbjnbnrj added a commit to dbjnbnrj/magic-modules that referenced this pull request Mar 15, 2023
Adding AuthorizedOrgsDesc to AccessContextManager (GoogleCloudPlatform#7178)

Allow project field in Firebase apps datasource (GoogleCloudPlatform#7300)

* Allow project field in Firebase apps datasource

* Add tf_test to the display name

* update to capitalized dependencies
Rename compute_(region)_per_instance_config test files to .erb files … (GoogleCloudPlatform#7409)

* Rename compute_(region)_per_instance_config test files to .erb files since the resources have fields in beta.

* Omit stateful_ip tests for GA
Bootstrap network cleanup (GoogleCloudPlatform#7367)

* Update bootstrapped networks for alloydb

* Update bootstrapped networks for redis

* Update bootstrapped networks for vertexai

* Update comment for BootstrapSharedTestNetwork to be more clear
Fix override directory concat (GoogleCloudPlatform#7413)

Bootstrap required permissions for composer environment tests (GoogleCloudPlatform#7391)

* Bootstrap the required permissions

* Make BootstrapAllPSARoles actually work

Also adds some helper functions for debugging what the bootstrap
function does. It will now log the roles that were missing in the
policy.

* Add missing return, fix nits

* Fix typo in service agent name

* Account for newly exported test functions
Add maintenance_interval field to Instance Template and Instance scheduling. (GoogleCloudPlatform#7365)

* Move testing to handwritten

* Move testing to handwritten

* Fix lint

* Fix typo

* Add remove step and update documentation

* Add remove step and update documentation

* Fix comparing string to nil

* Add field to handwritten defs

* rebase on main & resolve conflicts

* Fix doc formatting

* Add maintenance interval to Instance resource

* Add maintenance interval to Instance resource

* Add maintenance interval to Instance resource

* Change function names to valid

* Fix type mismatch

* Fix type mismatch

* Fix function name
Fix naming of resource policies in tests to be sweepable (GoogleCloudPlatform#7412)

Skip TestAccWorkstationsWorkstationConfig_workstationConfigEncryptionKeyExample (GoogleCloudPlatform#7415)

Add support for Apigee Sharedflow (GoogleCloudPlatform#7202)

* added sharedflows mmv1 with error

* fix indentation issue for sharedflow

* add semi auto generated resourceApigeeSharedFlow

* remove sharedflow mmv1 and add sharedflow manual provider

* adding files for debugging review, test have issue

* adding files for debugging review, test have issue

* update test, doc, provider for apigee

* Update api.yaml

remove empty new line

* Update api.yaml

* Rename resource_apigee_shared_flow_generated_test.go to resource_apigee_shared_flow_test.go

* Update resource_apigee_shared_flow.go

update import regex, change debug messages to log.Printf

* Update mmv1/third_party/terraform/utils/provider.go.erb

Co-authored-by: megan07 <mbang@hashicorp.com>

* update PR to address comments

* update test

* fix sharedflow attribute update issue, add sharedflow deployment

* Update apigee_shared_flow_deployment.html.markdown

minor doc fix

* Update mmv1/third_party/terraform/utils/provider.go.erb

Co-authored-by: megan07 <mbang@hashicorp.com>

* Update mmv1/third_party/terraform/website/docs/r/apigee_shared_flow.html.markdown

Co-authored-by: megan07 <mbang@hashicorp.com>

* Update resource_apigee_shared_flow_test.go

remove commented out (unused) line of code

* Delete api.yaml

remove api.yaml as it is not needed for handwritten resource. Current repo structure no longer uses aggregated api.yaml

* Rename apigee_shared_flow.html.markdown to apigee_sharedflow.html.markdown

* Rename apigee_shared_flow_deployment.html.markdown to apigee_sharedflow_deployment.html.markdown

* Rename resource_apigee_shared_flow.go to resource_apigee_sharedflow.go

* Rename resource_apigee_shared_flow_deployment_test.go to resource_apigee_sharedflow_deployment_test.go

* Rename resource_apigee_shared_flow_test.go to resource_apigee_sharedflow_test.go

* Rename resource_apigee_shared_flow_sweeper_test.go to resource_apigee_sharedflow_sweeper_test.go

* Update resource_apigee_sharedflow.go

remove comment lines

* Update mmv1/third_party/terraform/resources/resource_apigee_sharedflow.go

Co-authored-by: megan07 <mbang@hashicorp.com>

* Update resource_apigee_sharedflow_deployment_test.go

remove unused debugging log

* update function name to capitalize

* Update resource_apigee_sharedflow_deployment_test.go

remove fmt.print

* add flowhook

* move flowhook doc

* Update mmv1/third_party/terraform/tests/resource_apigee_flowhook_test.go

Co-authored-by: megan07 <mbang@hashicorp.com>

* Update mmv1/third_party/terraform/website/docs/r/apigee_flowhook.html.markdown

Co-authored-by: megan07 <mbang@hashicorp.com>

* Update mmv1/third_party/terraform/website/docs/r/apigee_flowhook.html.markdown

Co-authored-by: megan07 <mbang@hashicorp.com>

* Update mmv1/third_party/terraform/tests/resource_apigee_flowhook_test.go

Co-authored-by: megan07 <mbang@hashicorp.com>

* Update resource_apigee_flowhook_test.go

remove fmt.print

* update some resource attribute properties

* Update apigee_flowhook.html.markdown

updated `description` and `continue_on_error` as optional

* update referenced function naming case

---------

Co-authored-by: Ray Xu <xrc@google.com>
Co-authored-by: megan07 <mbang@hashicorp.com>
add tests (GoogleCloudPlatform#7357)

Co-authored-by: Edward Sun <sunedward@google.com>
run gofmt + fix capitalization errors from previous PRs (GoogleCloudPlatform#7420)

switch ci secrets to use secret manager (GoogleCloudPlatform#7408)

Update field descriptions (GoogleCloudPlatform#7402)

HA VPN over Cloud Interconnect has launched in GA
We should still probably add a sample or two showing how to use it.
Document PRODUCT_BASE_PATH override for DCL resource IAM (GoogleCloudPlatform#7418)

yaqs/1723187608399380480
Add support for accelerators to google_datafusion_instance (GoogleCloudPlatform#6851)

Added support to the field for Data Fusion, updated corresponding generated and handwritten tests, and added a custom diffsuppressfunc.

Currently suggests a manual fix to a potential diff issue, will be able to update down line based on feedback from API team.
Fix alloydb_cluster permadiff (GoogleCloudPlatform#7421)

Fix dns_managed_zone tests using unverified domain (GoogleCloudPlatform#7422)

Add SKIP_PROJECT_SWEEPER env variable for skipping the project sweeper (GoogleCloudPlatform#7432)

Remove percent sign when parsing metadata name (GoogleCloudPlatform#7417)

* Remove percent sign when parsing metadata name

* Remove percent sign when parsing metadata name
Merge branch 'GoogleCloudPlatform:main' into feature/iam_policy

Add ignore read on reserved ip ranges (GoogleCloudPlatform#7429)

Fix serviceusage links, clean up service resource stub (GoogleCloudPlatform#7435)

Remove use of `make generate` from TPG/TPGB-specific step in CI (GoogleCloudPlatform#7379)

Updating default accelerator.state field behavior in Data Fusion Instance (GoogleCloudPlatform#7434)

Making suggested default behavior functionality updates in previous accelerators PR.
Modify resource attribute 'input' to 'immutable' (GoogleCloudPlatform#7431)

* Modify resource attribute 'input' to 'immutable'
Remove noisy logging of project sweeper being skipped (GoogleCloudPlatform#7439)

Fix PubSub-to-BigQuery push configuration example (GoogleCloudPlatform#7410)

Rework + reflow provider reference, touch up index (GoogleCloudPlatform#7437)

Fix eventarc tests to use dedicated bootstrapped keys (GoogleCloudPlatform#7440)

Update docs for changing attribute `input` to `immutable` (GoogleCloudPlatform#7442)

Feat name constraints (GoogleCloudPlatform#7400)

Remove game_service_cluster_basic test (GoogleCloudPlatform#7443)

send friendly_name (GoogleCloudPlatform#7433)

* send friendly_name

* fixed validator failures

* update

* fix validator errors

---------

Co-authored-by: Edward Sun <sunedward@google.com>
Fix headline of google_iam_workload_identity_pool (GoogleCloudPlatform#7449)

Move IAM bootstrap to its own file, improve error messages (GoogleCloudPlatform#7424)

* Move IAM bootstrap to its own file, improve errors

Also bootstrap roles/cloudbuild.builds.builder for cloudbuild service
agent.

* Re-add BootstrapConfig (accidentally deleted)

* Fix wrong variable name

* Bootstrap the role previously hardcoded for pubsub

* Move error message back into bootstrap function

This will dedup the code that calls this function. It now returns a
boolean and sends the more useful error through t.Error.

* Bootstrap the permissions for pubsub service agent

* Bootstrap the role in the correct test

* Fix formatting
Changing name field on google_compute_disk for TestAccComputeInstanceTemplate_sourceSnapshotEncryptionKey to include randomly generated string (GoogleCloudPlatform#7392)

* Changed name within google_compute_disk  on line 3162 to inclue and randomly generated string

* Cleaned up arguments being passed in to be more inline with other tests

* Updated based on addtional PR comments

* Fixed swapping of values within new context
If not specified, a default Workstations service agent SA is returned (GoogleCloudPlatform#7428)

* If not specified, a default service agent SA is returned

* Revert "Skip TestAccWorkstationsWorkstationConfig_workstationConfigEncryptionKeyExample"

This reverts commit 097bdbe.

* remove `rotation_period`
update BigqueryDatapolicy to ga (GoogleCloudPlatform#6797)

fix managed.dnsAuthorizations: (GoogleCloudPlatform#7445)

Co-authored-by: Edward Sun <sunedward@google.com>
google_compute_security_policy: force send enforce_on_key so it can be unset on (GoogleCloudPlatform#7454)

Make `hostname` and `matcher` fields immutable (GoogleCloudPlatform#7448)

Add note on requiredness (GoogleCloudPlatform#7453)

Update BootstrapProject to support use across multiple projects/environments (GoogleCloudPlatform#7369)

* Update BootstrapProject to support use across multiple projects/environments

* Fix typo

* Fix arguments for getTestProjectFromEnv

* Fix project naming strategy for BootstrapProject to produce valid names in all envs

* Fix typo

* Fix function name after rebase
Update resource names in acceptance test to use `tf-test-` prefix (GoogleCloudPlatform#7450)

fix datastream_stream dataset id import (GoogleCloudPlatform#7451)

Merge branch 'GoogleCloudPlatform:main' into feature/iam_policy

Removing api.yaml and replacing with per product configs

Merge branch 'feature/iam_policy' of https://github.com/dbjnbnrj/magic-modules into feature/iam_policy
ericayyliu pushed a commit to ericayyliu/magic-modules that referenced this pull request Jul 26, 2023
…onments (GoogleCloudPlatform#7369)

* Update BootstrapProject to support use across multiple projects/environments

* Fix typo

* Fix arguments for getTestProjectFromEnv

* Fix project naming strategy for BootstrapProject to produce valid names in all envs

* Fix typo

* Fix function name after rebase
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Failing test(s): TestAccContainerCluster_failedCreation
4 participants