diff --git a/mmv1/products/developerconnect/InsightsConfig.yaml b/mmv1/products/developerconnect/InsightsConfig.yaml index acbff0377c39..7e3a8e0c00a2 100644 --- a/mmv1/products/developerconnect/InsightsConfig.yaml +++ b/mmv1/products/developerconnect/InsightsConfig.yaml @@ -30,6 +30,13 @@ examples: org_id: "ORG_ID" billing_account: "BILLING_ACCT" skip_vcr: true + - name: 'developer_connect_insights_config_projects' + external_providers: ["time"] + primary_resource_id: 'insights_config_projects' + test_env_vars: + org_id: "ORG_ID" + billing_account: "BILLING_ACCT" + skip_vcr: true autogen_async: true async: operation: @@ -67,7 +74,23 @@ properties: The name of the App Hub Application. Format: projects/{project}/locations/{location}/applications/{application} - required: true + conflicts: + - targetProjects + - name: targetProjects + type: NestedObject + api_name: projects + description: The projects to track with the InsightsConfig. + conflicts: + - appHubApplication + immutable: true + properties: + - name: projectIds + type: Array + description: The project IDs. Format {project}. + diff_suppress_func: 'tpgresource.ProjectNumberDiffSuppress' + item_type: + type: String + immutable: true - name: name type: String description: |- diff --git a/mmv1/templates/terraform/examples/developer_connect_insights_config_basic.tf.tmpl b/mmv1/templates/terraform/examples/developer_connect_insights_config_basic.tf.tmpl index 385790c16026..abf4bbe6a445 100644 --- a/mmv1/templates/terraform/examples/developer_connect_insights_config_basic.tf.tmpl +++ b/mmv1/templates/terraform/examples/developer_connect_insights_config_basic.tf.tmpl @@ -113,7 +113,7 @@ resource "google_apphub_application" "my_apphub_application" { resource "google_developer_connect_insights_config" "insights_config" { location = "us-central1" - insights_config_id = "tf-test-ic%{random_suffix}" + insights_config_id = "tf-test-ic-apphub-%{random_suffix}" project = google_project.project.project_id annotations = {} labels = {} diff --git a/mmv1/templates/terraform/examples/developer_connect_insights_config_projects.tf.tmpl b/mmv1/templates/terraform/examples/developer_connect_insights_config_projects.tf.tmpl new file mode 100644 index 000000000000..7edae424389f --- /dev/null +++ b/mmv1/templates/terraform/examples/developer_connect_insights_config_projects.tf.tmpl @@ -0,0 +1,124 @@ +resource "google_project" "project" { + project_id = "dci-tf-%{random_suffix}" + name = "Service Project" + org_id = "{{index $.TestEnvVars "org_id"}}" + billing_account = "{{index $.TestEnvVars "billing_account"}}" + deletion_policy = "DELETE" +} + +# Grant Permissions +resource "google_project_iam_member" "apphub_permissions" { + project = google_project.project.project_id + role = "roles/apphub.admin" + member = "serviceAccount:hashicorp-test-runner@ci-test-project-188019.iam.gserviceaccount.com" +} + +resource "google_project_iam_member" "insights_agent" { + project = google_project.project.project_id + role = "roles/developerconnect.insightsAgent" + member = "serviceAccount:66214305248-compute@developer.gserviceaccount.com" +} + +# Enable APIs +resource "google_project_service" "apphub_api_service" { + project = google_project.project.project_id + service = "apphub.googleapis.com" + disable_dependent_services=true + depends_on = [google_project.project] +} + +resource "google_project_service" "containeranalysis_api" { + project = google_project.project.project_id + service = "containeranalysis.googleapis.com" + disable_dependent_services=true + depends_on = [google_project.project] +} + +resource "google_project_service" "containerscanning_api" { + project = google_project.project.project_id + service = "containerscanning.googleapis.com" + disable_dependent_services=true + depends_on = [google_project.project] +} + +resource "google_project_service" "container_api" { + project = google_project.project.project_id + service = "container.googleapis.com" + disable_dependent_services=true + depends_on = [google_project.project] +} + +resource "google_project_service" "artifactregistry_api" { + project = google_project.project.project_id + service = "artifactregistry.googleapis.com" + disable_dependent_services=true + depends_on = [google_project.project] +} + +resource "google_project_service" "cloudbuild_api" { + project = google_project.project.project_id + service = "cloudbuild.googleapis.com" + disable_dependent_services=true + depends_on = [google_project.project] +} + +resource "google_project_service" "cloudasset_api" { + project = google_project.project.project_id + service = "cloudasset.googleapis.com" + disable_dependent_services=true + depends_on = [google_project.project] +} + +resource "google_project_service" "compute_api" { + project = google_project.project.project_id + service = "compute.googleapis.com" + disable_dependent_services=true + depends_on = [google_project.project] +} + +resource "google_project_service" "devconnect_api" { + project = google_project.project.project_id + service = "developerconnect.googleapis.com" + depends_on = [google_project.project] +} + +# Wait delay after enabling APIs and granting permissions +resource "time_sleep" "wait_for_propagation" { + depends_on = [ + google_project_iam_member.apphub_permissions, + google_project_iam_member.insights_agent, + google_project_service.apphub_api_service, + google_project_service.containeranalysis_api, + google_project_service.containerscanning_api, + google_project_service.container_api, + google_project_service.artifactregistry_api, + google_project_service.artifactregistry_api, + google_project_service.cloudbuild_api, + google_project_service.cloudasset_api, + google_project_service.compute_api, + google_project_service.devconnect_api, + ] + create_duration = "120s" +} + +resource "google_developer_connect_insights_config" "insights_config_projects" { + location = "us-central1" + insights_config_id = "tf-test-ic-projects-%{random_suffix}" + project = google_project.project.project_id + annotations = {} + labels = {} + target_projects { + project_ids = ["projects/${google_project.project.project_id}"] + } + artifact_configs { + google_artifact_analysis { + project_id = google_project.project.project_id + } + google_artifact_registry { + artifact_registry_package = "my-package" + project_id = google_project.project.project_id + } + uri = "us-docker.pkg.dev/my-project/my-repo/my-image" + } + depends_on = [time_sleep.wait_for_propagation] +} diff --git a/mmv1/third_party/terraform/services/developerconnect/resource_developer_connect_insights_config_test.go b/mmv1/third_party/terraform/services/developerconnect/resource_developer_connect_insights_config_test.go index 44237e1f2c17..d31676fc3788 100644 --- a/mmv1/third_party/terraform/services/developerconnect/resource_developer_connect_insights_config_test.go +++ b/mmv1/third_party/terraform/services/developerconnect/resource_developer_connect_insights_config_test.go @@ -315,9 +315,10 @@ func testAccDeveloperConnectInsightsConfig_update(context map[string]interface{} project = google_project.project.project_id depends_on = [time_sleep.wait_for_propagation] } + resource "google_developer_connect_insights_config" "insights_config" { location = "us-central1" - insights_config_id = "tf-test-ic%{random_suffix}" + insights_config_id = "tf-test-ic-%{random_suffix}" project = google_project.project.project_id annotations = {} labels = {}