gapic-generator-csharp icon indicating copy to clipboard operation
gapic-generator-csharp copied to clipboard

Consider generating properties for resource references in nested messages

Open jskeet opened this issue 3 years ago • 0 comments

Consider the following proto:

message Abc {
  string location = 1 [
    (google.api.resource_reference) = {
      type: "locations.googleapis.com/Location"
    }
  ];

  message Def {
    string location = 1 [
      (google.api.resource_reference) = {
        type: "locations.googleapis.com/Location"
      }
    ];
  }
}

Currently we'll generate a LocationAsLocationName property for Abc, but not for Def (it's in ResourceNamesGenerator.ProtoMessagePartials).

Generating the extra properties is:

  • Fiddly because we need to generate the partial classes for all the enclosing types
  • Potentially breaking for existing libraries

... on the other hand, this inconsistency is annoying.

I don't think we've had a single customer request this.

The following fields would have resource annotations generated for them:

  • google.cloud.aiplatform.v1.ReadFeatureValuesResponse.Header.entity_type
  • google.cloud.aiplatform.v1.ModelMonitoringObjectiveConfig.TrainingDataset.dataset
  • google.cloud.aiplatform.v1.MigratableResource.MlEngineModelVersion.version
  • google.cloud.aiplatform.v1.MigratableResource.AutomlModel.model
  • google.cloud.aiplatform.v1.MigratableResource.AutomlDataset.dataset
  • google.cloud.aiplatform.v1.MigratableResource.DataLabelingDataset.DataLabelingAnnotatedDataset.annotated_dataset
  • google.cloud.aiplatform.v1.MigratableResource.DataLabelingDataset.dataset
  • google.cloud.aiplatform.v1.MigrateResourceRequest.MigrateMlEngineModelVersionConfig.model_version
  • google.cloud.aiplatform.v1.MigrateResourceRequest.MigrateAutomlModelConfig.model
  • google.cloud.aiplatform.v1.MigrateResourceRequest.MigrateAutomlDatasetConfig.dataset
  • google.cloud.aiplatform.v1.MigrateResourceRequest.MigrateDataLabelingDatasetConfig.MigrateDataLabelingAnnotatedDatasetConfig.annotated_dataset
  • google.cloud.aiplatform.v1.MigrateResourceRequest.MigrateDataLabelingDatasetConfig.dataset
  • google.cloud.aiplatform.v1.BatchMigrateResourcesOperationMetadata.PartialResult.model
  • google.cloud.aiplatform.v1.BatchMigrateResourcesOperationMetadata.PartialResult.dataset
  • google.cloud.aiplatform.v1.PipelineTaskExecutorDetail.ContainerDetail.main_job
  • google.cloud.aiplatform.v1.PipelineTaskExecutorDetail.ContainerDetail.pre_caching_check_job
  • google.cloud.aiplatform.v1.PipelineTaskExecutorDetail.CustomJobDetail.job
  • google.cloud.baremetalsolution.v2.NfsShare.AllowedClient.network
  • google.cloud.beyondcorp.appconnections.v1.AppConnection.Gateway.app_gateway
  • google.cloud.bigquery.analyticshub.v1.Listing.BigQueryDatasetSource.dataset
  • google.cloud.bigquery.dataexchange.v1beta1.Listing.BigQueryDatasetSource.dataset
  • google.bigtable.admin.v2.Cluster.EncryptionConfig.kms_key_name
  • google.cloud.certificatemanager.v1.Certificate.ManagedCertificate.dns_authorizations
  • google.cloud.channel.v1.RepricingConfig.EntitlementGranularity.entitlement
  • google.devtools.cloudbuild.v1.BuildOptions.PoolOption.name
  • google.devtools.cloudbuild.v1.PrivatePoolV1Config.NetworkConfig.peered_network
  • google.container.v1.NotificationConfig.PubSub.topic
  • google.cloud.deploy.v1.Release.TargetRender.rendering_build
  • google.cloud.dialogflow.cx.v3.Form.Parameter.entity_type
  • google.cloud.dialogflow.cx.v3.Deployment.Result.deployment_test_results
  • google.cloud.dialogflow.cx.v3.Deployment.Result.experiment
  • google.cloud.dialogflow.cx.v3.Intent.Parameter.entity_type
  • google.cloud.dialogflow.cx.v3.IntentCoverage.Intent.intent
  • google.cloud.dialogflow.cx.v3.Webhook.ServiceDirectoryConfig.service
  • google.cloud.dialogflow.cx.v3.WebhookRequest.IntentInfo.last_matched_intent
  • google.cloud.dialogflow.cx.v3.Environment.VersionConfig.version
  • google.cloud.dialogflow.cx.v3.Environment.TestCasesConfig.test_cases
  • google.cloud.dialogflow.cx.v3.Experiment.Result.VersionMetrics.version
  • google.cloud.dialogflow.v2.EvaluationConfig.SmartReplyConfig.allowlist_document
  • google.cloud.dialogflow.v2.EvaluationConfig.SmartComposeConfig.allowlist_document
  • google.cloud.dialogflow.v2.HumanAgentAssistantConfig.SuggestionQueryConfig.KnowledgeBaseQuerySource.knowledge_bases
  • google.cloud.dialogflow.v2.HumanAgentAssistantConfig.SuggestionQueryConfig.DocumentQuerySource.documents
  • google.cloud.dialogflow.v2.HumanAgentAssistantConfig.SuggestionQueryConfig.DialogflowQuerySource.agent
  • google.cloud.dialogflow.v2.HumanAgentAssistantConfig.ConversationModelConfig.model
  • google.cloud.dialogflow.v2beta1.KnowledgeAnswers.Answer.source
  • google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse.Summary.answer_record
  • google.cloud.dialogflow.v2beta1.HumanAgentAssistantConfig.SuggestionQueryConfig.KnowledgeBaseQuerySource.knowledge_bases
  • google.cloud.dialogflow.v2beta1.HumanAgentAssistantConfig.SuggestionQueryConfig.DocumentQuerySource.documents
  • google.cloud.dialogflow.v2beta1.HumanAgentAssistantConfig.SuggestionQueryConfig.DialogflowQuerySource.agent
  • google.cloud.dialogflow.v2beta1.HumanAgentAssistantConfig.ConversationModelConfig.model
  • google.cloud.documentai.v1.ProcessorVersion.DeprecationInfo.replacement_processor_version
  • google.cloud.documentai.v1beta3.ProcessorVersion.DeprecationInfo.replacement_processor_version
  • google.cloud.kms.v1.EkmConnection.ServiceResolver.service_directory_service
  • google.cloud.metastore.v1alpha.NetworkConfig.Consumer.subnetwork
  • google.monitoring.v3.AlertPolicy.Condition.name
  • google.cloud.osconfig.v1alpha.InstanceOSPoliciesCompliance.OSPolicyCompliance.os_policy_assignment
  • google.cloud.security.privateca.v1.CertificateRevocationList.RevokedCertificate.certificate
  • google.cloud.speech.v2.SpeechAdaptation.AdaptationPhraseSet.phrase_set

jskeet avatar Sep 30 '22 13:09 jskeet