From 0da584eb689e99af5a3c48e69adc7d7fc545b8e1 Mon Sep 17 00:00:00 2001 From: Chloe CARAYON Date: Sat, 18 Jan 2025 00:14:44 +0100 Subject: [PATCH] fix: regenerate with location required and lake parameter Signed-off-by: Chloe CARAYON --- .../dataplex/v1beta1/zz_generated.deepcopy.go | 15 --- .../v1beta1/zz_generated.resolvers.go | 27 +----- .../v1beta1/zz_lakeiampolicy_types.go | 30 ++---- config/dataplex/config.go | 7 ++ config/externalname.go | 2 +- config/generated.lst | 2 +- examples/dataplex/v1beta1/lakeiampolicy.yaml | 35 +++---- ...taplex.gcp.upbound.io_lakeiampolicies.yaml | 92 ++----------------- 8 files changed, 49 insertions(+), 161 deletions(-) diff --git a/apis/dataplex/v1beta1/zz_generated.deepcopy.go b/apis/dataplex/v1beta1/zz_generated.deepcopy.go index 99b42d728..d28934dcd 100644 --- a/apis/dataplex/v1beta1/zz_generated.deepcopy.go +++ b/apis/dataplex/v1beta1/zz_generated.deepcopy.go @@ -1491,21 +1491,6 @@ func (in *LakeIAMPolicy) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LakeIAMPolicyInitParameters) DeepCopyInto(out *LakeIAMPolicyInitParameters) { *out = *in - if in.Lake != nil { - in, out := &in.Lake, &out.Lake - *out = new(string) - **out = **in - } - if in.LakeRef != nil { - in, out := &in.LakeRef, &out.LakeRef - *out = new(v1.Reference) - (*in).DeepCopyInto(*out) - } - if in.LakeSelector != nil { - in, out := &in.LakeSelector, &out.LakeSelector - *out = new(v1.Selector) - (*in).DeepCopyInto(*out) - } if in.PolicyData != nil { in, out := &in.PolicyData, &out.PolicyData *out = new(string) diff --git a/apis/dataplex/v1beta1/zz_generated.resolvers.go b/apis/dataplex/v1beta1/zz_generated.resolvers.go index da4f17fab..46609594a 100644 --- a/apis/dataplex/v1beta1/zz_generated.resolvers.go +++ b/apis/dataplex/v1beta1/zz_generated.resolvers.go @@ -164,14 +164,14 @@ func (mg *LakeIAMPolicy) ResolveReferences(ctx context.Context, c client.Reader) mg.Spec.ForProvider.Location = reference.ToPtrValue(rsp.ResolvedValue) mg.Spec.ForProvider.LocationRef = rsp.ResolvedReference { - m, l, err = apisresolver.GetManagedResource("dataplex.gcp.upbound.io", "v1beta2", "Lake", "LakeList") + m, l, err = apisresolver.GetManagedResource("cloudplatform.gcp.upbound.io", "v1beta1", "Project", "ProjectList") if err != nil { return errors.Wrap(err, "failed to get the reference target managed resource and its list for reference resolution") } rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Project), - Extract: resource.ExtractParamPath("project", false), + Extract: reference.ExternalName(), Reference: mg.Spec.ForProvider.ProjectRef, Selector: mg.Spec.ForProvider.ProjectSelector, To: reference.To{List: l, Managed: m}, @@ -183,33 +183,14 @@ func (mg *LakeIAMPolicy) ResolveReferences(ctx context.Context, c client.Reader) mg.Spec.ForProvider.Project = reference.ToPtrValue(rsp.ResolvedValue) mg.Spec.ForProvider.ProjectRef = rsp.ResolvedReference { - m, l, err = apisresolver.GetManagedResource("dataplex.gcp.upbound.io", "v1beta2", "Lake", "LakeList") - if err != nil { - return errors.Wrap(err, "failed to get the reference target managed resource and its list for reference resolution") - } - - rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ - CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.Lake), - Extract: reference.ExternalName(), - Reference: mg.Spec.InitProvider.LakeRef, - Selector: mg.Spec.InitProvider.LakeSelector, - To: reference.To{List: l, Managed: m}, - }) - } - if err != nil { - return errors.Wrap(err, "mg.Spec.InitProvider.Lake") - } - mg.Spec.InitProvider.Lake = reference.ToPtrValue(rsp.ResolvedValue) - mg.Spec.InitProvider.LakeRef = rsp.ResolvedReference - { - m, l, err = apisresolver.GetManagedResource("dataplex.gcp.upbound.io", "v1beta2", "Lake", "LakeList") + m, l, err = apisresolver.GetManagedResource("cloudplatform.gcp.upbound.io", "v1beta1", "Project", "ProjectList") if err != nil { return errors.Wrap(err, "failed to get the reference target managed resource and its list for reference resolution") } rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.Project), - Extract: resource.ExtractParamPath("project", false), + Extract: reference.ExternalName(), Reference: mg.Spec.InitProvider.ProjectRef, Selector: mg.Spec.InitProvider.ProjectSelector, To: reference.To{List: l, Managed: m}, diff --git a/apis/dataplex/v1beta1/zz_lakeiampolicy_types.go b/apis/dataplex/v1beta1/zz_lakeiampolicy_types.go index 9b0cfe906..d67443130 100755 --- a/apis/dataplex/v1beta1/zz_lakeiampolicy_types.go +++ b/apis/dataplex/v1beta1/zz_lakeiampolicy_types.go @@ -15,33 +15,20 @@ import ( type LakeIAMPolicyInitParameters struct { - // Used to find the parent resource to bind the IAM policy to - // +crossplane:generate:reference:type=github.com/upbound/provider-gcp/apis/dataplex/v1beta2.Lake - Lake *string `json:"lake,omitempty" tf:"lake,omitempty"` - - // Reference to a Lake in dataplex to populate lake. - // +kubebuilder:validation:Optional - LakeRef *v1.Reference `json:"lakeRef,omitempty" tf:"-"` - - // Selector for a Lake in dataplex to populate lake. - // +kubebuilder:validation:Optional - LakeSelector *v1.Selector `json:"lakeSelector,omitempty" tf:"-"` - // The policy data generated by // a google_iam_policy data source. PolicyData *string `json:"policyData,omitempty" tf:"policy_data,omitempty"` // The ID of the project in which the resource belongs. // If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. - // +crossplane:generate:reference:type=github.com/upbound/provider-gcp/apis/dataplex/v1beta2.Lake - // +crossplane:generate:reference:extractor=github.com/crossplane/upjet/pkg/resource.ExtractParamPath("project",false) + // +crossplane:generate:reference:type=github.com/upbound/provider-gcp/apis/cloudplatform/v1beta1.Project Project *string `json:"project,omitempty" tf:"project,omitempty"` - // Reference to a Lake in dataplex to populate project. + // Reference to a Project in cloudplatform to populate project. // +kubebuilder:validation:Optional ProjectRef *v1.Reference `json:"projectRef,omitempty" tf:"-"` - // Selector for a Lake in dataplex to populate project. + // Selector for a Project in cloudplatform to populate project. // +kubebuilder:validation:Optional ProjectSelector *v1.Selector `json:"projectSelector,omitempty" tf:"-"` } @@ -84,8 +71,8 @@ type LakeIAMPolicyParameters struct { // +crossplane:generate:reference:type=github.com/upbound/provider-gcp/apis/dataplex/v1beta2.Lake // +crossplane:generate:reference:extractor=github.com/crossplane/upjet/pkg/resource.ExtractParamPath("location",false) - // +kubebuilder:validation:Optional - Location *string `json:"location,omitempty" tf:"location,omitempty"` + // +kubebuilder:validation:Required + Location *string `json:"location" tf:"location,omitempty"` // Reference to a Lake in dataplex to populate location. // +kubebuilder:validation:Optional @@ -102,16 +89,15 @@ type LakeIAMPolicyParameters struct { // The ID of the project in which the resource belongs. // If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. - // +crossplane:generate:reference:type=github.com/upbound/provider-gcp/apis/dataplex/v1beta2.Lake - // +crossplane:generate:reference:extractor=github.com/crossplane/upjet/pkg/resource.ExtractParamPath("project",false) + // +crossplane:generate:reference:type=github.com/upbound/provider-gcp/apis/cloudplatform/v1beta1.Project // +kubebuilder:validation:Optional Project *string `json:"project,omitempty" tf:"project,omitempty"` - // Reference to a Lake in dataplex to populate project. + // Reference to a Project in cloudplatform to populate project. // +kubebuilder:validation:Optional ProjectRef *v1.Reference `json:"projectRef,omitempty" tf:"-"` - // Selector for a Lake in dataplex to populate project. + // Selector for a Project in cloudplatform to populate project. // +kubebuilder:validation:Optional ProjectSelector *v1.Selector `json:"projectSelector,omitempty" tf:"-"` } diff --git a/config/dataplex/config.go b/config/dataplex/config.go index 13574c7a3..b23a0b124 100644 --- a/config/dataplex/config.go +++ b/config/dataplex/config.go @@ -17,4 +17,11 @@ func Configure(p *config.Provider) { } r.MarkAsRequired("location") }) + + p.AddResourceConfigurator("google_dataplex_lake_iam_policy", func(r *config.Resource) { + r.References["project"] = config.Reference{ + TerraformName: "google_project", + } + r.MarkAsRequired("location") + }) } diff --git a/config/externalname.go b/config/externalname.go index 188d7e91d..7a534ba39 100644 --- a/config/externalname.go +++ b/config/externalname.go @@ -427,7 +427,7 @@ var terraformPluginSDKExternalNameConfigs = map[string]config.ExternalName{ // Imported by using the following format: projects/{{project}}/locations/{{location}}/lakes/{{name}} "google_dataplex_lake": config.TemplatedStringAsIdentifier("name", "projects/{{ .setup.configuration.project }}/locations/{{ .parameters.location }}/lakes/{{ .external_name }}"), // Imported by using the following format: projects/{{project}}/locations/{{location}}/lakes/{{lake}} - "google_dataplex_lake_iam_policy": config.TemplatedStringAsIdentifier("", "projects/{{ .setup.configuration.project }}/locations/{{ .parameters.location }}/lakes/{{ .external_name }}"), + "google_dataplex_lake_iam_policy": config.TemplatedStringAsIdentifier("", "projects/{{ .setup.configuration.project }}/locations/{{ .parameters.location }}/lakes/{{ .parameters.lake }}"), // Imported by using the following projects/{{project}}/locations/{{location}}/lakes/{{lake}}/zones/{{dataplex_zone}}/assets/{{name}} "google_dataplex_asset": config.TemplatedStringAsIdentifier("name", "projects/{{ .setup.configuration.project }}/locations/{{ .parameters.location }}/lakes/{{ .parameters.lake }}/zones/{{ .parameters.dataplex_zone }}/assets/{{ .external_name }}"), // Imported by using the following projects/{{project}}/locations/{{location}}/lakes/{{lake}}/zones/{{name}} diff --git a/config/generated.lst b/config/generated.lst index 598206fbb..052fb1e56 100644 --- a/config/generated.lst +++ b/config/generated.lst @@ -1 +1 @@ -["google_access_context_manager_access_level","google_access_context_manager_access_glevel_condition","google_access_context_manager_access_policy","google_access_context_manager_access_policy_iam_member","google_access_context_manager_service_perimeter","google_access_context_manager_service_perimeter_resource","google_active_directory_domain","google_alloydb_backup","google_alloydb_cluster","google_alloydb_instance","google_apigee_addons_config","google_apigee_endpoint_attachment","google_apigee_envgroup","google_apigee_envgroup_attachment","google_apigee_environment","google_apigee_environment_iam_member","google_apigee_instance","google_apigee_instance_attachment","google_apigee_nat_address","google_apigee_organization","google_apigee_sync_authorization","google_app_engine_application","google_app_engine_application_url_dispatch_rules","google_app_engine_firewall_rule","google_app_engine_service_network_settings","google_app_engine_standard_app_version","google_artifact_registry_repository","google_artifact_registry_repository_iam_member","google_beyondcorp_app_connection","google_beyondcorp_app_connector","google_beyondcorp_app_gateway","google_bigquery_analytics_hub_data_exchange","google_bigquery_analytics_hub_data_exchange_iam_member","google_bigquery_analytics_hub_listing","google_bigquery_connection","google_bigquery_data_transfer_config","google_bigquery_dataset","google_bigquery_dataset_access","google_bigquery_dataset_iam_binding","google_bigquery_dataset_iam_member","google_bigquery_dataset_iam_policy","google_bigquery_job","google_bigquery_reservation","google_bigquery_reservation_assignment","google_bigquery_routine","google_bigquery_table","google_bigquery_table_iam_binding","google_bigquery_table_iam_member","google_bigquery_table_iam_policy","google_bigtable_app_profile","google_bigtable_gc_policy","google_bigtable_instance","google_bigtable_instance_iam_binding","google_bigtable_instance_iam_member","google_bigtable_instance_iam_policy","google_bigtable_table","google_bigtable_table_iam_binding","google_bigtable_table_iam_member","google_bigtable_table_iam_policy","google_binary_authorization_attestor","google_binary_authorization_policy","google_certificate_manager_certificate","google_certificate_manager_certificate_map","google_certificate_manager_certificate_map_entry","google_certificate_manager_dns_authorization","google_certificate_manager_trust_config","google_cloud_ids_endpoint","google_cloud_run_domain_mapping","google_cloud_run_service","google_cloud_run_service_iam_member","google_cloud_run_v2_job","google_cloud_run_v2_service","google_cloud_scheduler_job","google_cloud_tasks_queue","google_cloudbuild_trigger","google_cloudbuild_worker_pool","google_cloudfunctions2_function","google_cloudfunctions_function","google_cloudfunctions_function_iam_member","google_composer_environment","google_compute_address","google_compute_attached_disk","google_compute_autoscaler","google_compute_backend_bucket","google_compute_backend_bucket_signed_url_key","google_compute_backend_service","google_compute_backend_service_signed_url_key","google_compute_disk","google_compute_disk_iam_member","google_compute_disk_resource_policy_attachment","google_compute_external_vpn_gateway","google_compute_firewall","google_compute_firewall_policy","google_compute_firewall_policy_association","google_compute_firewall_policy_rule","google_compute_forwarding_rule","google_compute_global_address","google_compute_global_forwarding_rule","google_compute_global_network_endpoint","google_compute_global_network_endpoint_group","google_compute_ha_vpn_gateway","google_compute_health_check","google_compute_http_health_check","google_compute_https_health_check","google_compute_image","google_compute_image_iam_member","google_compute_instance","google_compute_instance_from_template","google_compute_instance_group","google_compute_instance_group_manager","google_compute_instance_group_named_port","google_compute_instance_iam_member","google_compute_instance_template","google_compute_interconnect_attachment","google_compute_managed_ssl_certificate","google_compute_network","google_compute_network_endpoint","google_compute_network_endpoint_group","google_compute_network_firewall_policy","google_compute_network_firewall_policy_association","google_compute_network_peering","google_compute_network_peering_routes_config","google_compute_node_group","google_compute_node_template","google_compute_packet_mirroring","google_compute_per_instance_config","google_compute_project_default_network_tier","google_compute_project_metadata","google_compute_project_metadata_item","google_compute_region_autoscaler","google_compute_region_backend_service","google_compute_region_disk","google_compute_region_disk_iam_member","google_compute_region_disk_resource_policy_attachment","google_compute_region_health_check","google_compute_region_instance_group_manager","google_compute_region_network_endpoint","google_compute_region_network_endpoint_group","google_compute_region_network_firewall_policy","google_compute_region_network_firewall_policy_association","google_compute_region_per_instance_config","google_compute_region_ssl_certificate","google_compute_region_target_http_proxy","google_compute_region_target_https_proxy","google_compute_region_target_tcp_proxy","google_compute_region_url_map","google_compute_reservation","google_compute_resource_policy","google_compute_route","google_compute_router","google_compute_router_interface","google_compute_router_nat","google_compute_router_peer","google_compute_security_policy","google_compute_service_attachment","google_compute_shared_vpc_host_project","google_compute_shared_vpc_service_project","google_compute_snapshot","google_compute_snapshot_iam_member","google_compute_ssl_certificate","google_compute_ssl_policy","google_compute_subnetwork","google_compute_subnetwork_iam_member","google_compute_target_grpc_proxy","google_compute_target_http_proxy","google_compute_target_https_proxy","google_compute_target_instance","google_compute_target_pool","google_compute_target_ssl_proxy","google_compute_target_tcp_proxy","google_compute_url_map","google_compute_vpn_gateway","google_compute_vpn_tunnel","google_container_analysis_note","google_container_attached_cluster","google_container_aws_cluster","google_container_aws_node_pool","google_container_azure_client","google_container_azure_cluster","google_container_azure_node_pool","google_container_cluster","google_container_node_pool","google_container_registry","google_data_catalog_entry","google_data_catalog_entry_group","google_data_catalog_policy_tag","google_data_catalog_tag","google_data_catalog_tag_template","google_data_catalog_taxonomy","google_data_fusion_instance","google_data_loss_prevention_deidentify_template","google_data_loss_prevention_inspect_template","google_data_loss_prevention_job_trigger","google_data_loss_prevention_stored_info_type","google_dataflow_job","google_dataplex_aspect_type","google_dataplex_asset","google_dataplex_lake","google_dataplex_lake_iam_policy","google_dataplex_zone","google_dataproc_autoscaling_policy","google_dataproc_cluster","google_dataproc_job","google_dataproc_metastore_service","google_dataproc_workflow_template","google_datastore_index","google_datastream_connection_profile","google_datastream_private_connection","google_dialogflow_cx_agent","google_dialogflow_cx_entity_type","google_dialogflow_cx_environment","google_dialogflow_cx_flow","google_dialogflow_cx_intent","google_dialogflow_cx_page","google_dialogflow_cx_version","google_dialogflow_cx_webhook","google_dns_managed_zone","google_dns_managed_zone_iam_member","google_dns_policy","google_dns_record_set","google_dns_response_policy","google_dns_response_policy_rule","google_document_ai_processor","google_essential_contacts_contact","google_eventarc_channel","google_eventarc_google_channel_config","google_eventarc_trigger","google_filestore_backup","google_filestore_instance","google_filestore_snapshot","google_firebaserules_release","google_firebaserules_ruleset","google_folder","google_folder_iam_member","google_gke_backup_backup_plan","google_gke_hub_membership","google_gke_hub_membership_iam_member","google_healthcare_consent_store","google_healthcare_dataset","google_healthcare_dataset_iam_member","google_iam_workload_identity_pool","google_iam_workload_identity_pool_provider","google_iap_app_engine_service_iam_member","google_iap_app_engine_version_iam_member","google_iap_tunnel_iam_member","google_iap_web_backend_service_iam_member","google_iap_web_iam_member","google_iap_web_type_app_engine_iam_member","google_iap_web_type_compute_iam_member","google_identity_platform_default_supported_idp_config","google_identity_platform_inbound_saml_config","google_identity_platform_oauth_idp_config","google_identity_platform_project_default_config","google_identity_platform_tenant","google_identity_platform_tenant_default_supported_idp_config","google_identity_platform_tenant_inbound_saml_config","google_identity_platform_tenant_oauth_idp_config","google_kms_crypto_key","google_kms_crypto_key_iam_member","google_kms_crypto_key_version","google_kms_key_ring","google_kms_key_ring_iam_member","google_kms_key_ring_import_job","google_kms_secret_ciphertext","google_logging_folder_bucket_config","google_logging_folder_exclusion","google_logging_folder_sink","google_logging_log_view","google_logging_metric","google_logging_project_bucket_config","google_logging_project_exclusion","google_logging_project_sink","google_memcache_instance","google_ml_engine_model","google_monitoring_alert_policy","google_monitoring_custom_service","google_monitoring_dashboard","google_monitoring_group","google_monitoring_metric_descriptor","google_monitoring_notification_channel","google_monitoring_service","google_monitoring_slo","google_monitoring_uptime_check_config","google_network_connectivity_hub","google_network_connectivity_service_connection_policy","google_network_connectivity_spoke","google_network_management_connectivity_test","google_notebooks_environment","google_notebooks_instance","google_notebooks_instance_iam_member","google_notebooks_runtime","google_notebooks_runtime_iam_member","google_org_policy_policy","google_organization_iam_audit_config","google_organization_iam_custom_role","google_organization_iam_member","google_os_config_os_policy_assignment","google_os_config_patch_deployment","google_os_login_ssh_public_key","google_privateca_ca_pool","google_privateca_ca_pool_iam_member","google_privateca_certificate","google_privateca_certificate_authority","google_privateca_certificate_template","google_privateca_certificate_template_iam_member","google_project","google_project_default_service_accounts","google_project_iam_audit_config","google_project_iam_custom_role","google_project_iam_member","google_project_service","google_project_usage_export_bucket","google_pubsub_lite_reservation","google_pubsub_lite_subscription","google_pubsub_lite_topic","google_pubsub_schema","google_pubsub_subscription","google_pubsub_subscription_iam_member","google_pubsub_topic","google_pubsub_topic_iam_member","google_redis_cluster","google_redis_instance","google_secret_manager_secret","google_secret_manager_secret_iam_member","google_secret_manager_secret_version","google_service_account","google_service_account_iam_member","google_service_account_key","google_service_networking_connection","google_service_networking_peered_dns_domain","google_sourcerepo_repository","google_sourcerepo_repository_iam_member","google_spanner_database","google_spanner_database_iam_member","google_spanner_instance","google_spanner_instance_iam_member","google_sql_database","google_sql_database_instance","google_sql_source_representation_instance","google_sql_ssl_cert","google_sql_user","google_storage_bucket","google_storage_bucket_access_control","google_storage_bucket_acl","google_storage_bucket_iam_member","google_storage_bucket_object","google_storage_default_object_access_control","google_storage_default_object_acl","google_storage_hmac_key","google_storage_notification","google_storage_object_access_control","google_storage_object_acl","google_storage_transfer_agent_pool","google_tags_location_tag_binding","google_tags_tag_binding","google_tags_tag_key","google_tags_tag_value","google_tpu_node","google_vertex_ai_dataset","google_vertex_ai_featurestore","google_vertex_ai_featurestore_entitytype","google_vertex_ai_tensorboard","google_vpc_access_connector","google_workflows_workflow"] \ No newline at end of file +["google_access_context_manager_access_level","google_access_context_manager_access_level_condition","google_access_context_manager_access_policy","google_access_context_manager_access_policy_iam_member","google_access_context_manager_service_perimeter","google_access_context_manager_service_perimeter_resource","google_active_directory_domain","google_alloydb_backup","google_alloydb_cluster","google_alloydb_instance","google_apigee_addons_config","google_apigee_endpoint_attachment","google_apigee_envgroup","google_apigee_envgroup_attachment","google_apigee_environment","google_apigee_environment_iam_member","google_apigee_instance","google_apigee_instance_attachment","google_apigee_nat_address","google_apigee_organization","google_apigee_sync_authorization","google_app_engine_application","google_app_engine_application_url_dispatch_rules","google_app_engine_firewall_rule","google_app_engine_service_network_settings","google_app_engine_standard_app_version","google_artifact_registry_repository","google_artifact_registry_repository_iam_member","google_beyondcorp_app_connection","google_beyondcorp_app_connector","google_beyondcorp_app_gateway","google_bigquery_analytics_hub_data_exchange","google_bigquery_analytics_hub_data_exchange_iam_member","google_bigquery_analytics_hub_listing","google_bigquery_connection","google_bigquery_data_transfer_config","google_bigquery_dataset","google_bigquery_dataset_access","google_bigquery_dataset_iam_binding","google_bigquery_dataset_iam_member","google_bigquery_dataset_iam_policy","google_bigquery_job","google_bigquery_reservation","google_bigquery_reservation_assignment","google_bigquery_routine","google_bigquery_table","google_bigquery_table_iam_binding","google_bigquery_table_iam_member","google_bigquery_table_iam_policy","google_bigtable_app_profile","google_bigtable_gc_policy","google_bigtable_instance","google_bigtable_instance_iam_binding","google_bigtable_instance_iam_member","google_bigtable_instance_iam_policy","google_bigtable_table","google_bigtable_table_iam_binding","google_bigtable_table_iam_member","google_bigtable_table_iam_policy","google_binary_authorization_attestor","google_binary_authorization_policy","google_certificate_manager_certificate","google_certificate_manager_certificate_map","google_certificate_manager_certificate_map_entry","google_certificate_manager_dns_authorization","google_certificate_manager_trust_config","google_cloud_ids_endpoint","google_cloud_run_domain_mapping","google_cloud_run_service","google_cloud_run_service_iam_member","google_cloud_run_v2_job","google_cloud_run_v2_service","google_cloud_scheduler_job","google_cloud_tasks_queue","google_cloudbuild_trigger","google_cloudbuild_worker_pool","google_cloudfunctions2_function","google_cloudfunctions_function","google_cloudfunctions_function_iam_member","google_composer_environment","google_compute_address","google_compute_attached_disk","google_compute_autoscaler","google_compute_backend_bucket","google_compute_backend_bucket_signed_url_key","google_compute_backend_service","google_compute_backend_service_signed_url_key","google_compute_disk","google_compute_disk_iam_member","google_compute_disk_resource_policy_attachment","google_compute_external_vpn_gateway","google_compute_firewall","google_compute_firewall_policy","google_compute_firewall_policy_association","google_compute_firewall_policy_rule","google_compute_forwarding_rule","google_compute_global_address","google_compute_global_forwarding_rule","google_compute_global_network_endpoint","google_compute_global_network_endpoint_group","google_compute_ha_vpn_gateway","google_compute_health_check","google_compute_http_health_check","google_compute_https_health_check","google_compute_image","google_compute_image_iam_member","google_compute_instance","google_compute_instance_from_template","google_compute_instance_group","google_compute_instance_group_manager","google_compute_instance_group_named_port","google_compute_instance_iam_member","google_compute_instance_template","google_compute_interconnect_attachment","google_compute_managed_ssl_certificate","google_compute_network","google_compute_network_endpoint","google_compute_network_endpoint_group","google_compute_network_firewall_policy","google_compute_network_firewall_policy_association","google_compute_network_peering","google_compute_network_peering_routes_config","google_compute_node_group","google_compute_node_template","google_compute_packet_mirroring","google_compute_per_instance_config","google_compute_project_default_network_tier","google_compute_project_metadata","google_compute_project_metadata_item","google_compute_region_autoscaler","google_compute_region_backend_service","google_compute_region_disk","google_compute_region_disk_iam_member","google_compute_region_disk_resource_policy_attachment","google_compute_region_health_check","google_compute_region_instance_group_manager","google_compute_region_network_endpoint","google_compute_region_network_endpoint_group","google_compute_region_network_firewall_policy","google_compute_region_network_firewall_policy_association","google_compute_region_per_instance_config","google_compute_region_ssl_certificate","google_compute_region_target_http_proxy","google_compute_region_target_https_proxy","google_compute_region_target_tcp_proxy","google_compute_region_url_map","google_compute_reservation","google_compute_resource_policy","google_compute_route","google_compute_router","google_compute_router_interface","google_compute_router_nat","google_compute_router_peer","google_compute_security_policy","google_compute_service_attachment","google_compute_shared_vpc_host_project","google_compute_shared_vpc_service_project","google_compute_snapshot","google_compute_snapshot_iam_member","google_compute_ssl_certificate","google_compute_ssl_policy","google_compute_subnetwork","google_compute_subnetwork_iam_member","google_compute_target_grpc_proxy","google_compute_target_http_proxy","google_compute_target_https_proxy","google_compute_target_instance","google_compute_target_pool","google_compute_target_ssl_proxy","google_compute_target_tcp_proxy","google_compute_url_map","google_compute_vpn_gateway","google_compute_vpn_tunnel","google_container_analysis_note","google_container_attached_cluster","google_container_aws_cluster","google_container_aws_node_pool","google_container_azure_client","google_container_azure_cluster","google_container_azure_node_pool","google_container_cluster","google_container_node_pool","google_container_registry","google_data_catalog_entry","google_data_catalog_entry_group","google_data_catalog_policy_tag","google_data_catalog_tag","google_data_catalog_tag_template","google_data_catalog_taxonomy","google_data_fusion_instance","google_data_loss_prevention_deidentify_template","google_data_loss_prevention_inspect_template","google_data_loss_prevention_job_trigger","google_data_loss_prevention_stored_info_type","google_dataflow_job","google_dataplex_aspect_type","google_dataplex_asset","google_dataplex_lake","google_dataplex_lake_iam_policy","google_dataplex_zone","google_dataproc_autoscaling_policy","google_dataproc_cluster","google_dataproc_job","google_dataproc_metastore_service","google_dataproc_workflow_template","google_datastore_index","google_datastream_connection_profile","google_datastream_private_connection","google_dialogflow_cx_agent","google_dialogflow_cx_entity_type","google_dialogflow_cx_environment","google_dialogflow_cx_flow","google_dialogflow_cx_intent","google_dialogflow_cx_page","google_dialogflow_cx_version","google_dialogflow_cx_webhook","google_dns_managed_zone","google_dns_managed_zone_iam_member","google_dns_policy","google_dns_record_set","google_dns_response_policy","google_dns_response_policy_rule","google_document_ai_processor","google_essential_contacts_contact","google_eventarc_channel","google_eventarc_google_channel_config","google_eventarc_trigger","google_filestore_backup","google_filestore_instance","google_filestore_snapshot","google_firebaserules_release","google_firebaserules_ruleset","google_folder","google_folder_iam_member","google_gke_backup_backup_plan","google_gke_hub_membership","google_gke_hub_membership_iam_member","google_healthcare_consent_store","google_healthcare_dataset","google_healthcare_dataset_iam_member","google_iam_workload_identity_pool","google_iam_workload_identity_pool_provider","google_iap_app_engine_service_iam_member","google_iap_app_engine_version_iam_member","google_iap_tunnel_iam_member","google_iap_web_backend_service_iam_member","google_iap_web_iam_member","google_iap_web_type_app_engine_iam_member","google_iap_web_type_compute_iam_member","google_identity_platform_default_supported_idp_config","google_identity_platform_inbound_saml_config","google_identity_platform_oauth_idp_config","google_identity_platform_project_default_config","google_identity_platform_tenant","google_identity_platform_tenant_default_supported_idp_config","google_identity_platform_tenant_inbound_saml_config","google_identity_platform_tenant_oauth_idp_config","google_kms_crypto_key","google_kms_crypto_key_iam_member","google_kms_crypto_key_version","google_kms_key_ring","google_kms_key_ring_iam_member","google_kms_key_ring_import_job","google_kms_secret_ciphertext","google_logging_folder_bucket_config","google_logging_folder_exclusion","google_logging_folder_sink","google_logging_log_view","google_logging_metric","google_logging_project_bucket_config","google_logging_project_exclusion","google_logging_project_sink","google_memcache_instance","google_ml_engine_model","google_monitoring_alert_policy","google_monitoring_custom_service","google_monitoring_dashboard","google_monitoring_group","google_monitoring_metric_descriptor","google_monitoring_notification_channel","google_monitoring_service","google_monitoring_slo","google_monitoring_uptime_check_config","google_network_connectivity_hub","google_network_connectivity_service_connection_policy","google_network_connectivity_spoke","google_network_management_connectivity_test","google_notebooks_environment","google_notebooks_instance","google_notebooks_instance_iam_member","google_notebooks_runtime","google_notebooks_runtime_iam_member","google_org_policy_policy","google_organization_iam_audit_config","google_organization_iam_custom_role","google_organization_iam_member","google_os_config_os_policy_assignment","google_os_config_patch_deployment","google_os_login_ssh_public_key","google_privateca_ca_pool","google_privateca_ca_pool_iam_member","google_privateca_certificate","google_privateca_certificate_authority","google_privateca_certificate_template","google_privateca_certificate_template_iam_member","google_project","google_project_default_service_accounts","google_project_iam_audit_config","google_project_iam_custom_role","google_project_iam_member","google_project_service","google_project_usage_export_bucket","google_pubsub_lite_reservation","google_pubsub_lite_subscription","google_pubsub_lite_topic","google_pubsub_schema","google_pubsub_subscription","google_pubsub_subscription_iam_member","google_pubsub_topic","google_pubsub_topic_iam_member","google_redis_cluster","google_redis_instance","google_secret_manager_secret","google_secret_manager_secret_iam_member","google_secret_manager_secret_version","google_service_account","google_service_account_iam_member","google_service_account_key","google_service_networking_connection","google_service_networking_peered_dns_domain","google_sourcerepo_repository","google_sourcerepo_repository_iam_member","google_spanner_database","google_spanner_database_iam_member","google_spanner_instance","google_spanner_instance_iam_member","google_sql_database","google_sql_database_instance","google_sql_source_representation_instance","google_sql_ssl_cert","google_sql_user","google_storage_bucket","google_storage_bucket_access_control","google_storage_bucket_acl","google_storage_bucket_iam_member","google_storage_bucket_object","google_storage_default_object_access_control","google_storage_default_object_acl","google_storage_hmac_key","google_storage_notification","google_storage_object_access_control","google_storage_object_acl","google_storage_transfer_agent_pool","google_tags_location_tag_binding","google_tags_tag_binding","google_tags_tag_key","google_tags_tag_value","google_tpu_node","google_vertex_ai_dataset","google_vertex_ai_featurestore","google_vertex_ai_featurestore_entitytype","google_vertex_ai_tensorboard","google_vpc_access_connector","google_workflows_workflow"] \ No newline at end of file diff --git a/examples/dataplex/v1beta1/lakeiampolicy.yaml b/examples/dataplex/v1beta1/lakeiampolicy.yaml index b801a0c19..0ed160698 100644 --- a/examples/dataplex/v1beta1/lakeiampolicy.yaml +++ b/examples/dataplex/v1beta1/lakeiampolicy.yaml @@ -1,20 +1,4 @@ apiVersion: dataplex.gcp.upbound.io/v1beta1 -kind: Lake -metadata: - annotations: - meta.upbound.io/example-id: dataplex/v1beta1/lake - labels: - testing.upbound.io/example-name: my-second-lake - name: my-second-lake -spec: - forProvider: - description: my second Lake for DCL - displayName: my second Lake for DCL - labels: - my-second-lake: exists - location: us-central1 ---- -apiVersion: dataplex.gcp.upbound.io/v1beta1 kind: LakeIAMPolicy metadata: annotations: @@ -39,4 +23,21 @@ spec: "role": "roles/dataplex.admin" } ] - } \ No newline at end of file + } +--- +apiVersion: dataplex.gcp.upbound.io/v1beta1 +kind: Lake +metadata: + annotations: + meta.upbound.io/example-id: dataplex/v1beta1/lake + upjet.upbound.io/manual-intervention: "Dependent resource skipped: Policy data refers to an existing user account. Note: One can only use Predefined Dataplex roles or Basic roles for LakeIAMPolicy policyData." + labels: + testing.upbound.io/example-name: my-second-lake + name: my-second-lake +spec: + forProvider: + description: my second Lake for DCL + displayName: my second Lake for DCL + labels: + my-second-lake: exists + location: us-central1 \ No newline at end of file diff --git a/package/crds/dataplex.gcp.upbound.io_lakeiampolicies.yaml b/package/crds/dataplex.gcp.upbound.io_lakeiampolicies.yaml index d1fbca4db..684ff8933 100644 --- a/package/crds/dataplex.gcp.upbound.io_lakeiampolicies.yaml +++ b/package/crds/dataplex.gcp.upbound.io_lakeiampolicies.yaml @@ -238,7 +238,8 @@ spec: If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. type: string projectRef: - description: Reference to a Lake in dataplex to populate project. + description: Reference to a Project in cloudplatform to populate + project. properties: name: description: Name of the referenced object. @@ -272,7 +273,8 @@ spec: - name type: object projectSelector: - description: Selector for a Lake in dataplex to populate project. + description: Selector for a Project in cloudplatform to populate + project. properties: matchControllerRef: description: |- @@ -311,6 +313,8 @@ spec: type: string type: object type: object + required: + - location type: object initProvider: description: |- @@ -325,84 +329,6 @@ spec: for example because of an external controller is managing them, like an autoscaler. properties: - lake: - description: Used to find the parent resource to bind the IAM - policy to - type: string - lakeRef: - description: Reference to a Lake in dataplex to populate lake. - properties: - name: - description: Name of the referenced object. - type: string - policy: - description: Policies for referencing. - properties: - resolution: - default: Required - description: |- - Resolution specifies whether resolution of this reference is required. - The default is 'Required', which means the reconcile will fail if the - reference cannot be resolved. 'Optional' means this reference will be - a no-op if it cannot be resolved. - enum: - - Required - - Optional - type: string - resolve: - description: |- - Resolve specifies when this reference should be resolved. The default - is 'IfNotPresent', which will attempt to resolve the reference only when - the corresponding field is not present. Use 'Always' to resolve the - reference on every reconcile. - enum: - - Always - - IfNotPresent - type: string - type: object - required: - - name - type: object - lakeSelector: - description: Selector for a Lake in dataplex to populate lake. - properties: - matchControllerRef: - description: |- - MatchControllerRef ensures an object with the same controller reference - as the selecting object is selected. - type: boolean - matchLabels: - additionalProperties: - type: string - description: MatchLabels ensures an object with matching labels - is selected. - type: object - policy: - description: Policies for selection. - properties: - resolution: - default: Required - description: |- - Resolution specifies whether resolution of this reference is required. - The default is 'Required', which means the reconcile will fail if the - reference cannot be resolved. 'Optional' means this reference will be - a no-op if it cannot be resolved. - enum: - - Required - - Optional - type: string - resolve: - description: |- - Resolve specifies when this reference should be resolved. The default - is 'IfNotPresent', which will attempt to resolve the reference only when - the corresponding field is not present. Use 'Always' to resolve the - reference on every reconcile. - enum: - - Always - - IfNotPresent - type: string - type: object - type: object policyData: description: |- The policy data generated by @@ -414,7 +340,8 @@ spec: If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. type: string projectRef: - description: Reference to a Lake in dataplex to populate project. + description: Reference to a Project in cloudplatform to populate + project. properties: name: description: Name of the referenced object. @@ -448,7 +375,8 @@ spec: - name type: object projectSelector: - description: Selector for a Lake in dataplex to populate project. + description: Selector for a Project in cloudplatform to populate + project. properties: matchControllerRef: description: |-