diff --git a/.github/.OwlBot.yaml b/.github/.OwlBot.yaml index ee97e9a3fbde..28a18aea01ae 100644 --- a/.github/.OwlBot.yaml +++ b/.github/.OwlBot.yaml @@ -59,6 +59,8 @@ deep-remove-regex: - /bigquery/storage/apiv1/ - /bigquery/storage/apiv1beta1/ - /bigquery/storage/apiv1beta2/ + - /bigtable/admin/apiv2/ + - /bigtable/apiv2/ - /billing/apiv1/ - /billing/budgets/apiv1/ - /billing/budgets/apiv1beta1/ @@ -661,6 +663,11 @@ deep-copy-regex: dest: / - source: /google/area120/tables/v1alpha1/cloud.google.com/go dest: / + # Just copy the bigtable protos for now + - source: /google/bigtable/admin/v2/cloud.google.com/go/bigtable/admin/apiv2/adminpb + dest: /bigtable/admin/apiv2/adminpb + - source: /google/bigtable/v2/cloud.google.com/go/bigtable/apiv2/bigtablepb + dest: /bigtable/apiv2/bigtablepb - source: /google/devtools/artifactregistry/v1/cloud.google.com/go dest: / - source: /google/devtools/artifactregistry/v1beta2/cloud.google.com/go diff --git a/.release-please-manifest-individual.json b/.release-please-manifest-individual.json index 02b2824e48da..7e62e9dc956e 100644 --- a/.release-please-manifest-individual.json +++ b/.release-please-manifest-individual.json @@ -4,11 +4,11 @@ "auth": "0.7.2", "auth/oauth2adapt": "0.2.3", "bigquery": "1.62.0", - "bigtable": "1.26.0", + "bigtable": "1.27.0", "datastore": "1.17.1", "errorreporting": "0.3.1", - "firestore": "1.15.0", - "logging": "1.10.0", + "firestore": "1.16.0", + "logging": "1.11.0", "profiler": "0.4.1", "pubsub": "1.40.0", "pubsublite": "1.8.2", diff --git a/.release-please-manifest-submodules.json b/.release-please-manifest-submodules.json index 28bbdd89abb1..193ad4da3c29 100644 --- a/.release-please-manifest-submodules.json +++ b/.release-please-manifest-submodules.json @@ -1,149 +1,149 @@ { - "accessapproval": "1.7.10", - "accesscontextmanager": "1.8.10", - "advisorynotifications": "1.4.4", - "alloydb": "1.10.5", - "analytics": "0.23.5", - "apigateway": "1.6.10", - "apigeeconnect": "1.6.10", - "apigeeregistry": "0.8.8", - "apikeys": "1.1.10", - "appengine": "1.8.10", - "apphub": "0.1.4", - "apps": "0.4.5", - "area120": "0.8.10", - "artifactregistry": "1.14.12", - "asset": "1.19.4", - "assuredworkloads": "1.11.10", - "automl": "1.13.10", - "backupdr": "1.0.2", - "baremetalsolution": "1.2.9", - "batch": "1.9.1", - "beyondcorp": "1.0.9", - "billing": "1.18.8", - "binaryauthorization": "1.8.6", - "certificatemanager": "1.8.4", - "channel": "1.17.10", - "chat": "0.2.0", - "cloudbuild": "1.16.4", - "cloudcontrolspartner": "1.0.2", - "clouddms": "1.7.9", - "cloudprofiler": "0.3.4", - "cloudquotas": "1.0.2", - "cloudtasks": "1.12.11", - "commerce": "1.0.3", - "compute": "1.27.3", + "accessapproval": "1.7.11", + "accesscontextmanager": "1.8.11", + "advisorynotifications": "1.4.5", + "alloydb": "1.10.6", + "analytics": "0.23.6", + "apigateway": "1.6.11", + "apigeeconnect": "1.6.11", + "apigeeregistry": "0.8.9", + "apikeys": "1.1.11", + "appengine": "1.8.11", + "apphub": "0.1.5", + "apps": "0.4.6", + "area120": "0.8.11", + "artifactregistry": "1.14.13", + "asset": "1.19.5", + "assuredworkloads": "1.11.11", + "automl": "1.13.11", + "backupdr": "1.0.3", + "baremetalsolution": "1.2.10", + "batch": "1.9.2", + "beyondcorp": "1.0.10", + "billing": "1.18.9", + "binaryauthorization": "1.8.7", + "certificatemanager": "1.8.5", + "channel": "1.17.11", + "chat": "0.3.0", + "cloudbuild": "1.16.5", + "cloudcontrolspartner": "1.0.3", + "clouddms": "1.7.10", + "cloudprofiler": "0.3.5", + "cloudquotas": "1.0.3", + "cloudtasks": "1.12.12", + "commerce": "1.0.4", + "compute": "1.27.4", "compute/metadata": "0.5.0", - "confidentialcomputing": "1.5.4", - "config": "1.0.3", - "contactcenterinsights": "1.13.5", - "container": "1.37.3", - "containeranalysis": "0.12.0", - "datacatalog": "1.20.4", - "dataflow": "0.9.10", - "dataform": "0.9.7", - "datafusion": "1.7.10", - "datalabeling": "0.8.10", - "dataplex": "1.18.1", - "dataproc": "2.5.2", - "dataqna": "0.8.10", - "datastream": "1.10.9", - "deploy": "1.19.3", - "developerconnect": "0.1.2", - "dialogflow": "1.54.3", - "discoveryengine": "1.9.0", - "dlp": "1.14.3", - "documentai": "1.30.4", - "domains": "0.9.10", - "edgecontainer": "1.2.4", - "edgenetwork": "1.1.1", - "essentialcontacts": "1.6.11", - "eventarc": "1.13.9", - "filestore": "1.8.6", - "functions": "1.16.5", - "gkebackup": "1.5.3", - "gkeconnect": "0.8.10", - "gkehub": "0.14.10", - "gkemulticloud": "1.2.3", - "grafeas": "0.3.8", - "gsuiteaddons": "1.6.10", - "iam": "1.1.11", - "iap": "1.9.9", - "identitytoolkit": "0.1.2", - "ids": "1.4.10", - "iot": "1.7.10", - "kms": "1.18.3", - "language": "1.12.8", - "lifesciences": "0.9.10", - "longrunning": "0.5.10", - "managedidentities": "1.6.10", - "managedkafka": "0.1.3", - "maps": "1.11.4", - "mediatranslation": "0.8.10", - "memcache": "1.10.10", - "metastore": "1.13.9", - "migrationcenter": "1.0.3", - "monitoring": "1.20.2", - "netapp": "1.1.3", - "networkconnectivity": "1.14.9", - "networkmanagement": "1.13.5", - "networksecurity": "0.9.10", - "networkservices": "0.1.4", - "notebooks": "1.11.8", - "optimization": "1.6.8", - "orchestration": "1.9.5", - "orgpolicy": "1.12.6", - "osconfig": "1.13.1", - "oslogin": "1.13.6", - "parallelstore": "0.4.0", - "phishingprotection": "0.8.10", - "policysimulator": "0.2.8", - "policytroubleshooter": "1.10.8", - "privatecatalog": "0.9.10", - "privilegedaccessmanager": "0.0.0", - "rapidmigrationassessment": "1.0.10", - "recaptchaenterprise": "2.14.1", - "recommendationengine": "0.8.10", - "recommender": "1.12.6", - "redis": "1.16.3", - "resourcemanager": "1.9.10", - "resourcesettings": "1.7.3", - "retail": "1.17.3", - "run": "1.3.10", - "scheduler": "1.10.11", - "secretmanager": "1.13.4", - "securesourcemanager": "1.0.2", - "security": "1.17.3", - "securitycenter": "1.33.0", - "securitycentermanagement": "1.0.2", - "securityposture": "0.1.6", - "servicecontrol": "1.13.5", - "servicedirectory": "1.11.10", - "servicehealth": "1.0.3", - "servicemanagement": "1.9.11", - "serviceusage": "1.8.9", - "shell": "1.7.10", - "shopping": "0.8.5", - "speech": "1.23.4", - "storageinsights": "1.0.10", - "storagetransfer": "1.10.9", - "streetview": "0.1.3", - "support": "1.0.9", - "talent": "1.6.11", - "telcoautomation": "1.0.2", - "texttospeech": "1.7.10", - "tpu": "1.6.10", - "trace": "1.10.10", - "translate": "1.10.6", - "video": "1.21.3", - "videointelligence": "1.11.10", - "vision": "2.8.5", - "visionai": "0.2.3", - "vmmigration": "1.7.10", - "vmwareengine": "1.1.6", - "vpcaccess": "1.7.10", - "webrisk": "1.9.10", - "websecurityscanner": "1.6.10", - "workflows": "1.12.9", - "workstations": "1.0.3" + "confidentialcomputing": "1.6.0", + "config": "1.0.4", + "contactcenterinsights": "1.13.6", + "container": "1.38.0", + "containeranalysis": "0.12.1", + "datacatalog": "1.20.5", + "dataflow": "0.9.11", + "dataform": "0.9.8", + "datafusion": "1.7.11", + "datalabeling": "0.8.11", + "dataplex": "1.18.2", + "dataproc": "2.5.3", + "dataqna": "0.8.11", + "datastream": "1.10.10", + "deploy": "1.20.0", + "developerconnect": "0.1.3", + "dialogflow": "1.55.0", + "discoveryengine": "1.10.0", + "dlp": "1.15.0", + "documentai": "1.30.5", + "domains": "0.9.11", + "edgecontainer": "1.2.5", + "edgenetwork": "1.1.2", + "essentialcontacts": "1.6.12", + "eventarc": "1.13.10", + "filestore": "1.8.7", + "functions": "1.16.6", + "gkebackup": "1.5.4", + "gkeconnect": "0.8.11", + "gkehub": "0.14.11", + "gkemulticloud": "1.2.4", + "grafeas": "0.3.9", + "gsuiteaddons": "1.6.11", + "iam": "1.1.12", + "iap": "1.9.10", + "identitytoolkit": "0.1.3", + "ids": "1.4.11", + "iot": "1.7.11", + "kms": "1.18.4", + "language": "1.12.9", + "lifesciences": "0.9.11", + "longrunning": "0.5.11", + "managedidentities": "1.6.11", + "managedkafka": "0.1.4", + "maps": "1.11.5", + "mediatranslation": "0.8.11", + "memcache": "1.10.11", + "metastore": "1.13.10", + "migrationcenter": "1.0.4", + "monitoring": "1.20.3", + "netapp": "1.1.4", + "networkconnectivity": "1.14.10", + "networkmanagement": "1.13.6", + "networksecurity": "0.9.11", + "networkservices": "0.1.5", + "notebooks": "1.11.9", + "optimization": "1.6.9", + "orchestration": "1.9.6", + "orgpolicy": "1.12.7", + "osconfig": "1.13.2", + "oslogin": "1.13.7", + "parallelstore": "0.4.1", + "phishingprotection": "0.8.11", + "policysimulator": "0.2.9", + "policytroubleshooter": "1.10.9", + "privatecatalog": "0.9.11", + "privilegedaccessmanager": "0.1.0", + "rapidmigrationassessment": "1.0.11", + "recaptchaenterprise": "2.14.2", + "recommendationengine": "0.8.11", + "recommender": "1.12.7", + "redis": "1.16.4", + "resourcemanager": "1.9.11", + "resourcesettings": "1.7.4", + "retail": "1.17.4", + "run": "1.4.0", + "scheduler": "1.10.12", + "secretmanager": "1.13.5", + "securesourcemanager": "1.1.0", + "security": "1.17.4", + "securitycenter": "1.33.1", + "securitycentermanagement": "1.0.3", + "securityposture": "0.1.7", + "servicecontrol": "1.13.6", + "servicedirectory": "1.11.11", + "servicehealth": "1.0.4", + "servicemanagement": "1.9.12", + "serviceusage": "1.8.10", + "shell": "1.7.11", + "shopping": "0.8.6", + "speech": "1.24.0", + "storageinsights": "1.0.11", + "storagetransfer": "1.10.10", + "streetview": "0.1.4", + "support": "1.0.10", + "talent": "1.6.12", + "telcoautomation": "1.0.3", + "texttospeech": "1.7.11", + "tpu": "1.6.11", + "trace": "1.10.11", + "translate": "1.10.7", + "video": "1.22.0", + "videointelligence": "1.11.11", + "vision": "2.8.6", + "visionai": "0.2.4", + "vmmigration": "1.7.11", + "vmwareengine": "1.2.0", + "vpcaccess": "1.7.11", + "webrisk": "1.9.11", + "websecurityscanner": "1.6.11", + "workflows": "1.12.10", + "workstations": "1.0.4" } diff --git a/accessapproval/CHANGES.md b/accessapproval/CHANGES.md index e2404eb824bf..05058181dc1b 100644 --- a/accessapproval/CHANGES.md +++ b/accessapproval/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.7.11](https://github.com/googleapis/google-cloud-go/compare/accessapproval/v1.7.10...accessapproval/v1.7.11) (2024-07-24) + + +### Bug Fixes + +* **accessapproval:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.7.10](https://github.com/googleapis/google-cloud-go/compare/accessapproval/v1.7.9...accessapproval/v1.7.10) (2024-07-10) diff --git a/accesscontextmanager/CHANGES.md b/accesscontextmanager/CHANGES.md index b6637c8972b1..c57fbfaca657 100644 --- a/accesscontextmanager/CHANGES.md +++ b/accesscontextmanager/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.8.11](https://github.com/googleapis/google-cloud-go/compare/accesscontextmanager/v1.8.10...accesscontextmanager/v1.8.11) (2024-07-24) + + +### Bug Fixes + +* **accesscontextmanager:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.8.10](https://github.com/googleapis/google-cloud-go/compare/accesscontextmanager/v1.8.9...accesscontextmanager/v1.8.10) (2024-07-10) diff --git a/advisorynotifications/CHANGES.md b/advisorynotifications/CHANGES.md index 0ebf8f03646a..a47883bd0b6c 100644 --- a/advisorynotifications/CHANGES.md +++ b/advisorynotifications/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.4.5](https://github.com/googleapis/google-cloud-go/compare/advisorynotifications/v1.4.4...advisorynotifications/v1.4.5) (2024-07-24) + + +### Bug Fixes + +* **advisorynotifications:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.4.4](https://github.com/googleapis/google-cloud-go/compare/advisorynotifications/v1.4.3...advisorynotifications/v1.4.4) (2024-07-10) diff --git a/advisorynotifications/internal/version.go b/advisorynotifications/internal/version.go index fa4e8b9bcd5c..1ad2a53db45f 100644 --- a/advisorynotifications/internal/version.go +++ b/advisorynotifications/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.4.4" +const Version = "1.4.5" diff --git a/alloydb/CHANGES.md b/alloydb/CHANGES.md index 42cbb45cd4d9..7756a16578b6 100644 --- a/alloydb/CHANGES.md +++ b/alloydb/CHANGES.md @@ -2,6 +2,13 @@ +## [1.10.6](https://github.com/googleapis/google-cloud-go/compare/alloydb/v1.10.5...alloydb/v1.10.6) (2024-07-24) + + +### Bug Fixes + +* **alloydb:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.10.5](https://github.com/googleapis/google-cloud-go/compare/alloydb/v1.10.4...alloydb/v1.10.5) (2024-07-10) diff --git a/alloydb/internal/version.go b/alloydb/internal/version.go index e41a2b0a9fb6..ed7f7c061454 100644 --- a/alloydb/internal/version.go +++ b/alloydb/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.10.5" +const Version = "1.10.6" diff --git a/analytics/CHANGES.md b/analytics/CHANGES.md index 380362e61c35..ed56b931308d 100644 --- a/analytics/CHANGES.md +++ b/analytics/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.23.6](https://github.com/googleapis/google-cloud-go/compare/analytics/v0.23.5...analytics/v0.23.6) (2024-07-24) + + +### Bug Fixes + +* **analytics:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.23.5](https://github.com/googleapis/google-cloud-go/compare/analytics/v0.23.4...analytics/v0.23.5) (2024-07-10) diff --git a/analytics/internal/version.go b/analytics/internal/version.go index 77bebafc4a29..4c16b9da0653 100644 --- a/analytics/internal/version.go +++ b/analytics/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.23.5" +const Version = "0.23.6" diff --git a/apigateway/CHANGES.md b/apigateway/CHANGES.md index 0f7c213d181e..1a11a6b2acad 100644 --- a/apigateway/CHANGES.md +++ b/apigateway/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.6.11](https://github.com/googleapis/google-cloud-go/compare/apigateway/v1.6.10...apigateway/v1.6.11) (2024-07-24) + + +### Bug Fixes + +* **apigateway:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.6.10](https://github.com/googleapis/google-cloud-go/compare/apigateway/v1.6.9...apigateway/v1.6.10) (2024-07-10) diff --git a/apigeeconnect/CHANGES.md b/apigeeconnect/CHANGES.md index 3db6f863f6e8..68db583871e6 100644 --- a/apigeeconnect/CHANGES.md +++ b/apigeeconnect/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.6.11](https://github.com/googleapis/google-cloud-go/compare/apigeeconnect/v1.6.10...apigeeconnect/v1.6.11) (2024-07-24) + + +### Bug Fixes + +* **apigeeconnect:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.6.10](https://github.com/googleapis/google-cloud-go/compare/apigeeconnect/v1.6.9...apigeeconnect/v1.6.10) (2024-07-10) diff --git a/apigeeregistry/CHANGES.md b/apigeeregistry/CHANGES.md index e25f5d6cba5c..31d505911687 100644 --- a/apigeeregistry/CHANGES.md +++ b/apigeeregistry/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [0.8.9](https://github.com/googleapis/google-cloud-go/compare/apigeeregistry/v0.8.8...apigeeregistry/v0.8.9) (2024-07-24) + + +### Bug Fixes + +* **apigeeregistry:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.8.8](https://github.com/googleapis/google-cloud-go/compare/apigeeregistry/v0.8.7...apigeeregistry/v0.8.8) (2024-07-10) diff --git a/apigeeregistry/internal/version.go b/apigeeregistry/internal/version.go index b2aac4bed259..a4e38bc00588 100644 --- a/apigeeregistry/internal/version.go +++ b/apigeeregistry/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.8.8" +const Version = "0.8.9" diff --git a/apikeys/CHANGES.md b/apikeys/CHANGES.md index 634bcf41c840..283edcacaa44 100644 --- a/apikeys/CHANGES.md +++ b/apikeys/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.1.11](https://github.com/googleapis/google-cloud-go/compare/apikeys/v1.1.10...apikeys/v1.1.11) (2024-07-24) + + +### Bug Fixes + +* **apikeys:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.1.10](https://github.com/googleapis/google-cloud-go/compare/apikeys/v1.1.9...apikeys/v1.1.10) (2024-07-10) diff --git a/appengine/CHANGES.md b/appengine/CHANGES.md index e0483a6670a5..46a6c4e8a524 100644 --- a/appengine/CHANGES.md +++ b/appengine/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.8.11](https://github.com/googleapis/google-cloud-go/compare/appengine/v1.8.10...appengine/v1.8.11) (2024-07-24) + + +### Bug Fixes + +* **appengine:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.8.10](https://github.com/googleapis/google-cloud-go/compare/appengine/v1.8.9...appengine/v1.8.10) (2024-07-10) diff --git a/apphub/CHANGES.md b/apphub/CHANGES.md index 9dbbc7f57172..89f5ba0dda39 100644 --- a/apphub/CHANGES.md +++ b/apphub/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [0.1.5](https://github.com/googleapis/google-cloud-go/compare/apphub/v0.1.4...apphub/v0.1.5) (2024-07-24) + + +### Bug Fixes + +* **apphub:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.1.4](https://github.com/googleapis/google-cloud-go/compare/apphub/v0.1.3...apphub/v0.1.4) (2024-07-10) diff --git a/apphub/internal/version.go b/apphub/internal/version.go index a795fcbaaf37..85799cdad302 100644 --- a/apphub/internal/version.go +++ b/apphub/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.1.4" +const Version = "0.1.5" diff --git a/apps/CHANGES.md b/apps/CHANGES.md index 73daf03751fa..09f8e875cfd8 100644 --- a/apps/CHANGES.md +++ b/apps/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [0.4.6](https://github.com/googleapis/google-cloud-go/compare/apps/v0.4.5...apps/v0.4.6) (2024-07-24) + + +### Bug Fixes + +* **apps:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.4.5](https://github.com/googleapis/google-cloud-go/compare/apps/v0.4.4...apps/v0.4.5) (2024-07-10) diff --git a/apps/internal/version.go b/apps/internal/version.go index 441433efbd77..9be57c2066df 100644 --- a/apps/internal/version.go +++ b/apps/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.4.5" +const Version = "0.4.6" diff --git a/area120/CHANGES.md b/area120/CHANGES.md index b3bd7e69399b..7fcd2e54fba6 100644 --- a/area120/CHANGES.md +++ b/area120/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.8.11](https://github.com/googleapis/google-cloud-go/compare/area120/v0.8.10...area120/v0.8.11) (2024-07-24) + + +### Bug Fixes + +* **area120:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.8.10](https://github.com/googleapis/google-cloud-go/compare/area120/v0.8.9...area120/v0.8.10) (2024-07-10) diff --git a/artifactregistry/CHANGES.md b/artifactregistry/CHANGES.md index 88b032f600c1..53da3a68d428 100644 --- a/artifactregistry/CHANGES.md +++ b/artifactregistry/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.14.13](https://github.com/googleapis/google-cloud-go/compare/artifactregistry/v1.14.12...artifactregistry/v1.14.13) (2024-07-24) + + +### Bug Fixes + +* **artifactregistry:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.14.12](https://github.com/googleapis/google-cloud-go/compare/artifactregistry/v1.14.11...artifactregistry/v1.14.12) (2024-07-10) diff --git a/asset/CHANGES.md b/asset/CHANGES.md index 4cebf91305d7..115c0a2e3af2 100644 --- a/asset/CHANGES.md +++ b/asset/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.19.5](https://github.com/googleapis/google-cloud-go/compare/asset/v1.19.4...asset/v1.19.5) (2024-07-24) + + +### Bug Fixes + +* **asset:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.19.4](https://github.com/googleapis/google-cloud-go/compare/asset/v1.19.3...asset/v1.19.4) (2024-07-10) diff --git a/asset/internal/version.go b/asset/internal/version.go index 26f27cab735c..7c5b9bdfe5bf 100644 --- a/asset/internal/version.go +++ b/asset/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.19.4" +const Version = "1.19.5" diff --git a/assuredworkloads/CHANGES.md b/assuredworkloads/CHANGES.md index 090d1ab68a99..d04922b2d020 100644 --- a/assuredworkloads/CHANGES.md +++ b/assuredworkloads/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.11.11](https://github.com/googleapis/google-cloud-go/compare/assuredworkloads/v1.11.10...assuredworkloads/v1.11.11) (2024-07-24) + + +### Bug Fixes + +* **assuredworkloads:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.11.10](https://github.com/googleapis/google-cloud-go/compare/assuredworkloads/v1.11.9...assuredworkloads/v1.11.10) (2024-07-10) diff --git a/automl/CHANGES.md b/automl/CHANGES.md index 50ce149088d6..da7692204f0b 100644 --- a/automl/CHANGES.md +++ b/automl/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.13.11](https://github.com/googleapis/google-cloud-go/compare/automl/v1.13.10...automl/v1.13.11) (2024-07-24) + + +### Bug Fixes + +* **automl:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.13.10](https://github.com/googleapis/google-cloud-go/compare/automl/v1.13.9...automl/v1.13.10) (2024-07-10) diff --git a/backupdr/CHANGES.md b/backupdr/CHANGES.md index ba6397b6ab4e..f3af66e3e21c 100644 --- a/backupdr/CHANGES.md +++ b/backupdr/CHANGES.md @@ -2,6 +2,13 @@ +## [1.0.3](https://github.com/googleapis/google-cloud-go/compare/backupdr/v1.0.2...backupdr/v1.0.3) (2024-07-24) + + +### Bug Fixes + +* **backupdr:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.0.2](https://github.com/googleapis/google-cloud-go/compare/backupdr/v1.0.1...backupdr/v1.0.2) (2024-07-10) diff --git a/backupdr/internal/version.go b/backupdr/internal/version.go index 2d93b19cba4f..e8739e33ee34 100644 --- a/backupdr/internal/version.go +++ b/backupdr/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.0.2" +const Version = "1.0.3" diff --git a/baremetalsolution/CHANGES.md b/baremetalsolution/CHANGES.md index 1cb867b238dc..0d895f9b1756 100644 --- a/baremetalsolution/CHANGES.md +++ b/baremetalsolution/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.2.10](https://github.com/googleapis/google-cloud-go/compare/baremetalsolution/v1.2.9...baremetalsolution/v1.2.10) (2024-07-24) + + +### Bug Fixes + +* **baremetalsolution:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.2.9](https://github.com/googleapis/google-cloud-go/compare/baremetalsolution/v1.2.8...baremetalsolution/v1.2.9) (2024-07-10) diff --git a/baremetalsolution/internal/version.go b/baremetalsolution/internal/version.go index b4f6e113b38d..f1b4fac0c072 100644 --- a/baremetalsolution/internal/version.go +++ b/baremetalsolution/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.2.9" +const Version = "1.2.10" diff --git a/batch/CHANGES.md b/batch/CHANGES.md index 635016927b9e..b94bb73e39a1 100644 --- a/batch/CHANGES.md +++ b/batch/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.9.2](https://github.com/googleapis/google-cloud-go/compare/batch/v1.9.1...batch/v1.9.2) (2024-07-24) + + +### Bug Fixes + +* **batch:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.9.1](https://github.com/googleapis/google-cloud-go/compare/batch/v1.9.0...batch/v1.9.1) (2024-07-10) diff --git a/batch/internal/version.go b/batch/internal/version.go index f622d0ba7ba3..5b397889d866 100644 --- a/batch/internal/version.go +++ b/batch/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.9.1" +const Version = "1.9.2" diff --git a/beyondcorp/CHANGES.md b/beyondcorp/CHANGES.md index 15b0ee2f1afd..1fee9f9a7469 100644 --- a/beyondcorp/CHANGES.md +++ b/beyondcorp/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.0.10](https://github.com/googleapis/google-cloud-go/compare/beyondcorp/v1.0.9...beyondcorp/v1.0.10) (2024-07-24) + + +### Bug Fixes + +* **beyondcorp:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.0.9](https://github.com/googleapis/google-cloud-go/compare/beyondcorp/v1.0.8...beyondcorp/v1.0.9) (2024-07-10) diff --git a/beyondcorp/internal/version.go b/beyondcorp/internal/version.go index 7cf550539c1e..38bc6ab06a04 100644 --- a/beyondcorp/internal/version.go +++ b/beyondcorp/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.0.9" +const Version = "1.0.10" diff --git a/bigtable/CHANGES.md b/bigtable/CHANGES.md index 7ff393031e19..49c121a71040 100644 --- a/bigtable/CHANGES.md +++ b/bigtable/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.27.0](https://github.com/googleapis/google-cloud-go/compare/bigtable/v1.26.0...bigtable/v1.27.0) (2024-07-25) + + +### Features + +* **bigtable:** Built-in client side metrics ([#10046](https://github.com/googleapis/google-cloud-go/issues/10046)) ([a747f0a](https://github.com/googleapis/google-cloud-go/commit/a747f0a49b79c0fe3034f7374b47ca56fc5ce0f5)) + ## [1.26.0](https://github.com/googleapis/google-cloud-go/compare/bigtable/v1.25.0...bigtable/v1.26.0) (2024-07-23) diff --git a/bigtable/bigtable.go b/bigtable/bigtable.go index 9789cb854343..3c8118b0b34e 100644 --- a/bigtable/bigtable.go +++ b/bigtable/bigtable.go @@ -22,6 +22,7 @@ import ( "fmt" "io" "net/url" + "os" "strconv" "strings" "time" @@ -29,6 +30,7 @@ import ( btopt "cloud.google.com/go/bigtable/internal/option" "cloud.google.com/go/internal/trace" gax "github.com/googleapis/gax-go/v2" + "go.opentelemetry.io/otel/metric" "google.golang.org/api/option" "google.golang.org/api/option/internaloption" gtransport "google.golang.org/api/transport/grpc" @@ -52,10 +54,11 @@ const mtlsProdAddr = "bigtable.mtls.googleapis.com:443" // // A Client is safe to use concurrently, except for its Close method. type Client struct { - connPool gtransport.ConnPool - client btpb.BigtableClient - project, instance string - appProfile string + connPool gtransport.ConnPool + client btpb.BigtableClient + project, instance string + appProfile string + metricsTracerFactory *builtinMetricsTracerFactory } // ClientConfig has configurations for the client. @@ -63,8 +66,25 @@ type ClientConfig struct { // The id of the app profile to associate with all data operations sent from this client. // If unspecified, the default app profile for the instance will be used. AppProfile string + + // If not set or set to nil, client side metrics will be collected and exported + // + // To disable client side metrics, set 'MetricsProvider' to 'NoopMetricsProvider' + // + // TODO: support user provided meter provider + MetricsProvider MetricsProvider +} + +// MetricsProvider is a wrapper for built in metrics meter provider +type MetricsProvider interface { + isMetricsProvider() } +// NoopMetricsProvider can be used to disable built in metrics +type NoopMetricsProvider struct{} + +func (NoopMetricsProvider) isMetricsProvider() {} + // NewClient creates a new Client for a given project and instance. // The default ClientConfig will be used. func NewClient(ctx context.Context, project, instance string, opts ...option.ClientOption) (*Client, error) { @@ -95,17 +115,33 @@ func NewClientWithConfig(ctx context.Context, project, instance string, config C return nil, fmt.Errorf("dialing: %w", err) } + metricsProvider := config.MetricsProvider + if emulatorAddr := os.Getenv("BIGTABLE_EMULATOR_HOST"); emulatorAddr != "" { + // Do not emit metrics when emulator is being used + metricsProvider = NoopMetricsProvider{} + } + + // Create a OpenTelemetry metrics configuration + metricsTracerFactory, err := newBuiltinMetricsTracerFactory(ctx, project, instance, config.AppProfile, metricsProvider) + if err != nil { + return nil, err + } + return &Client{ - connPool: connPool, - client: btpb.NewBigtableClient(connPool), - project: project, - instance: instance, - appProfile: config.AppProfile, + connPool: connPool, + client: btpb.NewBigtableClient(connPool), + project: project, + instance: instance, + appProfile: config.AppProfile, + metricsTracerFactory: metricsTracerFactory, }, nil } // Close closes the Client. func (c *Client) Close() error { + if c.metricsTracerFactory != nil { + c.metricsTracerFactory.shutdown() + } return c.connPool.Close() } @@ -166,19 +202,21 @@ func init() { } // Convert error to grpc status error -func convertToGrpcStatusErr(err error) error { - if err != nil { - if errStatus, ok := status.FromError(err); ok { - return status.Error(errStatus.Code(), errStatus.Message()) - } +func convertToGrpcStatusErr(err error) (codes.Code, error) { + if err == nil { + return codes.OK, nil + } - ctxStatus := status.FromContextError(err) - if ctxStatus.Code() != codes.Unknown { - return status.Error(ctxStatus.Code(), ctxStatus.Message()) - } + if errStatus, ok := status.FromError(err); ok { + return errStatus.Code(), status.Error(errStatus.Code(), errStatus.Message()) } - return err + ctxStatus := status.FromContextError(err) + if ctxStatus.Code() != codes.Unknown { + return ctxStatus.Code(), status.Error(ctxStatus.Code(), ctxStatus.Message()) + } + + return codes.Unknown, err } func (c *Client) fullTableName(table string) string { @@ -285,6 +323,10 @@ func (ti *tableImpl) ApplyReadModifyWrite(ctx context.Context, row string, m *Re return ti.Table.ApplyReadModifyWrite(ctx, row, m) } +func (ti *tableImpl) newBuiltinMetricsTracer(ctx context.Context, isStreaming bool) *builtinMetricsTracer { + return ti.Table.newBuiltinMetricsTracer(ctx, isStreaming) +} + // TODO(dsymonds): Read method that returns a sequence of ReadItems. // ReadRows reads rows from a table. f is called for each row. @@ -299,9 +341,19 @@ func (t *Table) ReadRows(ctx context.Context, arg RowSet, f func(Row) bool, opts ctx = trace.StartSpan(ctx, "cloud.google.com/go/bigtable.ReadRows") defer func() { trace.EndSpan(ctx, err) }() + mt := t.newBuiltinMetricsTracer(ctx, true) + defer recordOperationCompletion(mt) + + err = t.readRows(ctx, arg, f, mt, opts...) + statusCode, statusErr := convertToGrpcStatusErr(err) + mt.currOp.setStatus(statusCode.String()) + return statusErr +} + +func (t *Table) readRows(ctx context.Context, arg RowSet, f func(Row) bool, mt *builtinMetricsTracer, opts ...ReadOption) (err error) { var prevRowKey string attrMap := make(map[string]interface{}) - err = gax.Invoke(ctx, func(ctx context.Context, _ gax.CallSettings) error { + err = gaxInvokeWithRecorder(ctx, mt, "ReadRows", func(ctx context.Context, headerMD, trailerMD *metadata.MD, _ gax.CallSettings) error { req := &btpb.ReadRowsRequest{ AppProfileId: t.c.appProfile, } @@ -340,12 +392,17 @@ func (t *Table) ReadRows(ctx context.Context, arg RowSet, f func(Row) bool, opts cr = newChunkReader() } + // Ignore error since header is only being used to record builtin metrics + // Failure to record metrics should not fail the operation + *headerMD, _ = stream.Header() for { res, err := stream.Recv() if err == io.EOF { + *trailerMD = stream.Trailer() break } if err != nil { + *trailerMD = stream.Trailer() // Reset arg for next Invoke call. if arg == nil { // Should be lowest possible key value, an empty byte array @@ -381,6 +438,7 @@ func (t *Table) ReadRows(ctx context.Context, arg RowSet, f func(Row) bool, opts cancel() for { if _, err := stream.Recv(); err != nil { + *trailerMD = stream.Trailer() // The stream has ended. We don't return an error // because the caller has intentionally interrupted the scan. return nil @@ -407,7 +465,7 @@ func (t *Table) ReadRows(ctx context.Context, arg RowSet, f func(Row) bool, opts return err }, retryOptions...) - return convertToGrpcStatusErr(err) + return err } // ReadRow is a convenience implementation of a single-row reader. @@ -922,7 +980,16 @@ func (t *Table) Apply(ctx context.Context, row string, m *Mutation, opts ...Appl ctx = mergeOutgoingMetadata(ctx, t.md) ctx = trace.StartSpan(ctx, "cloud.google.com/go/bigtable/Apply") defer func() { trace.EndSpan(ctx, err) }() + mt := t.newBuiltinMetricsTracer(ctx, false) + defer recordOperationCompletion(mt) + + err = t.apply(ctx, mt, row, m, opts...) + statusCode, statusErr := convertToGrpcStatusErr(err) + mt.currOp.setStatus(statusCode.String()) + return statusErr +} +func (t *Table) apply(ctx context.Context, mt *builtinMetricsTracer, row string, m *Mutation, opts ...ApplyOption) (err error) { after := func(res proto.Message) { for _, o := range opts { o.after(res) @@ -945,15 +1012,15 @@ func (t *Table) Apply(ctx context.Context, row string, m *Mutation, opts ...Appl callOptions = retryOptions } var res *btpb.MutateRowResponse - err := gax.Invoke(ctx, func(ctx context.Context, _ gax.CallSettings) error { + err := gaxInvokeWithRecorder(ctx, mt, "MutateRow", func(ctx context.Context, headerMD, trailerMD *metadata.MD, _ gax.CallSettings) error { var err error - res, err = t.c.client.MutateRow(ctx, req) + res, err = t.c.client.MutateRow(ctx, req, grpc.Header(headerMD), grpc.Trailer(trailerMD)) return err }, callOptions...) if err == nil { after(res) } - return convertToGrpcStatusErr(err) + return err } req := &btpb.CheckAndMutateRowRequest{ @@ -982,15 +1049,15 @@ func (t *Table) Apply(ctx context.Context, row string, m *Mutation, opts ...Appl callOptions = retryOptions } var cmRes *btpb.CheckAndMutateRowResponse - err = gax.Invoke(ctx, func(ctx context.Context, _ gax.CallSettings) error { + err = gaxInvokeWithRecorder(ctx, mt, "CheckAndMutateRow", func(ctx context.Context, headerMD, trailerMD *metadata.MD, _ gax.CallSettings) error { var err error - cmRes, err = t.c.client.CheckAndMutateRow(ctx, req) + cmRes, err = t.c.client.CheckAndMutateRow(ctx, req, grpc.Header(headerMD), grpc.Trailer(trailerMD)) return err }, callOptions...) if err == nil { after(cmRes) } - return convertToGrpcStatusErr(err) + return err } // An ApplyOption is an optional argument to Apply. @@ -1136,23 +1203,7 @@ func (t *Table) ApplyBulk(ctx context.Context, rowKeys []string, muts []*Mutatio } for _, group := range groupEntries(origEntries, maxMutations) { - attrMap := make(map[string]interface{}) - err = gax.Invoke(ctx, func(ctx context.Context, _ gax.CallSettings) error { - attrMap["rowCount"] = len(group) - trace.TracePrintf(ctx, attrMap, "Row count in ApplyBulk") - err := t.doApplyBulk(ctx, group, opts...) - if err != nil { - // We want to retry the entire request with the current group - return err - } - group = t.getApplyBulkRetries(group) - if len(group) > 0 && len(idempotentRetryCodes) > 0 { - // We have at least one mutation that needs to be retried. - // Return an arbitrary error that is retryable according to callOptions. - return status.Errorf(idempotentRetryCodes[0], "Synthetic error: partial failure of ApplyBulk") - } - return nil - }, retryOptions...) + err := t.applyGroup(ctx, group, opts...) if err != nil { return nil, err } @@ -1173,6 +1224,33 @@ func (t *Table) ApplyBulk(ctx context.Context, rowKeys []string, muts []*Mutatio return nil, nil } +func (t *Table) applyGroup(ctx context.Context, group []*entryErr, opts ...ApplyOption) (err error) { + attrMap := make(map[string]interface{}) + mt := t.newBuiltinMetricsTracer(ctx, true) + defer recordOperationCompletion(mt) + + err = gaxInvokeWithRecorder(ctx, mt, "MutateRows", func(ctx context.Context, headerMD, trailerMD *metadata.MD, _ gax.CallSettings) error { + attrMap["rowCount"] = len(group) + trace.TracePrintf(ctx, attrMap, "Row count in ApplyBulk") + err := t.doApplyBulk(ctx, group, headerMD, trailerMD, opts...) + if err != nil { + // We want to retry the entire request with the current group + return err + } + group = t.getApplyBulkRetries(group) + if len(group) > 0 && len(idempotentRetryCodes) > 0 { + // We have at least one mutation that needs to be retried. + // Return an arbitrary error that is retryable according to callOptions. + return status.Errorf(idempotentRetryCodes[0], "Synthetic error: partial failure of ApplyBulk") + } + return nil + }, retryOptions...) + + statusCode, statusErr := convertToGrpcStatusErr(err) + mt.currOp.setStatus(statusCode.String()) + return statusErr +} + // getApplyBulkRetries returns the entries that need to be retried func (t *Table) getApplyBulkRetries(entries []*entryErr) []*entryErr { var retryEntries []*entryErr @@ -1187,7 +1265,7 @@ func (t *Table) getApplyBulkRetries(entries []*entryErr) []*entryErr { } // doApplyBulk does the work of a single ApplyBulk invocation -func (t *Table) doApplyBulk(ctx context.Context, entryErrs []*entryErr, opts ...ApplyOption) error { +func (t *Table) doApplyBulk(ctx context.Context, entryErrs []*entryErr, headerMD, trailerMD *metadata.MD, opts ...ApplyOption) error { after := func(res proto.Message) { for _, o := range opts { o.after(res) @@ -1207,16 +1285,23 @@ func (t *Table) doApplyBulk(ctx context.Context, entryErrs []*entryErr, opts ... } else { req.AuthorizedViewName = t.c.fullAuthorizedViewName(t.table, t.authorizedView) } + stream, err := t.c.client.MutateRows(ctx, req) if err != nil { return err } + + // Ignore error since header is only being used to record builtin metrics + // Failure to record metrics should not fail the operation + *headerMD, _ = stream.Header() for { res, err := stream.Recv() if err == io.EOF { + *trailerMD = stream.Trailer() break } if err != nil { + *trailerMD = stream.Trailer() return err } @@ -1288,6 +1373,17 @@ func (ts Timestamp) TruncateToMilliseconds() Timestamp { // It returns the newly written cells. func (t *Table) ApplyReadModifyWrite(ctx context.Context, row string, m *ReadModifyWrite) (Row, error) { ctx = mergeOutgoingMetadata(ctx, t.md) + + mt := t.newBuiltinMetricsTracer(ctx, false) + defer recordOperationCompletion(mt) + + updatedRow, err := t.applyReadModifyWrite(ctx, mt, row, m) + statusCode, statusErr := convertToGrpcStatusErr(err) + mt.currOp.setStatus(statusCode.String()) + return updatedRow, statusErr +} + +func (t *Table) applyReadModifyWrite(ctx context.Context, mt *builtinMetricsTracer, row string, m *ReadModifyWrite) (Row, error) { req := &btpb.ReadModifyWriteRowRequest{ AppProfileId: t.c.appProfile, RowKey: []byte(row), @@ -1298,18 +1394,23 @@ func (t *Table) ApplyReadModifyWrite(ctx context.Context, row string, m *ReadMod } else { req.AuthorizedViewName = t.c.fullAuthorizedViewName(t.table, t.authorizedView) } - res, err := t.c.client.ReadModifyWriteRow(ctx, req) - if err != nil { - return nil, err - } - if res.Row == nil { - return nil, errors.New("unable to apply ReadModifyWrite: res.Row=nil") - } - r := make(Row) - for _, fam := range res.Row.Families { // res is *btpb.Row, fam is *btpb.Family - decodeFamilyProto(r, row, fam) - } - return r, nil + + var r Row + err := gaxInvokeWithRecorder(ctx, mt, "ReadModifyWriteRow", func(ctx context.Context, headerMD, trailerMD *metadata.MD, _ gax.CallSettings) error { + res, err := t.c.client.ReadModifyWriteRow(ctx, req, grpc.Header(headerMD), grpc.Trailer(trailerMD)) + if err != nil { + return err + } + if res.Row == nil { + return errors.New("unable to apply ReadModifyWrite: res.Row=nil") + } + r = make(Row) + for _, fam := range res.Row.Families { // res is *btpb.Row, fam is *btpb.Family + decodeFamilyProto(r, row, fam) + } + return nil + }) + return r, err } // ReadModifyWrite represents a set of operations on a single row of a table. @@ -1353,8 +1454,19 @@ func (m *ReadModifyWrite) Increment(family, column string, delta int64) { // the table of approximately equal size, which can be used to break up the data for distributed tasks like mapreduces. func (t *Table) SampleRowKeys(ctx context.Context) ([]string, error) { ctx = mergeOutgoingMetadata(ctx, t.md) + + mt := t.newBuiltinMetricsTracer(ctx, true) + defer recordOperationCompletion(mt) + + rowKeys, err := t.sampleRowKeys(ctx, mt) + statusCode, statusErr := convertToGrpcStatusErr(err) + mt.currOp.setStatus(statusCode.String()) + return rowKeys, statusErr +} + +func (t *Table) sampleRowKeys(ctx context.Context, mt *builtinMetricsTracer) ([]string, error) { var sampledRowKeys []string - err := gax.Invoke(ctx, func(ctx context.Context, _ gax.CallSettings) error { + err := gaxInvokeWithRecorder(ctx, mt, "SampleRowKeys", func(ctx context.Context, headerMD, trailerMD *metadata.MD, _ gax.CallSettings) error { sampledRowKeys = nil req := &btpb.SampleRowKeysRequest{ AppProfileId: t.c.appProfile, @@ -1371,12 +1483,18 @@ func (t *Table) SampleRowKeys(ctx context.Context) ([]string, error) { if err != nil { return err } + + // Ignore error since header is only being used to record builtin metrics + // Failure to record metrics should not fail the operation + *headerMD, _ = stream.Header() for { res, err := stream.Recv() if err == io.EOF { + *trailerMD = stream.Trailer() break } if err != nil { + *trailerMD = stream.Trailer() return err } @@ -1389,5 +1507,108 @@ func (t *Table) SampleRowKeys(ctx context.Context) ([]string, error) { } return nil }, retryOptions...) - return sampledRowKeys, convertToGrpcStatusErr(err) + + return sampledRowKeys, err +} + +func (t *Table) newBuiltinMetricsTracer(ctx context.Context, isStreaming bool) *builtinMetricsTracer { + mt := t.c.metricsTracerFactory.createBuiltinMetricsTracer(ctx, t.table, isStreaming) + return &mt +} + +// recordOperationCompletion records as many operation specific metrics as it can +func recordOperationCompletion(mt *builtinMetricsTracer) { + if !mt.builtInEnabled { + return + } + + // Calculate elapsed time + elapsedTimeMs := float64(time.Since(mt.currOp.startTime).Nanoseconds()) / 1000000 + + // Attributes for operation_latencies + // Ignore error seen while creating metric attributes since metric can still + // be recorded with rest of the attributes + opLatAttrs, _ := mt.toOtelMetricAttrs(metricNameOperationLatencies) + mt.instrumentOperationLatencies.Record(mt.ctx, elapsedTimeMs, metric.WithAttributes(opLatAttrs...)) + + // Attributes for retry_count + // Ignore error seen while creating metric attributes since metric can still + // be recorded with rest of the attributes + retryCntAttrs, _ := mt.toOtelMetricAttrs(metricNameRetryCount) + + // Only record when retry count is greater than 0 so the retry + // graph will be less confusing + if mt.currOp.attemptCount > 1 { + mt.instrumentRetryCount.Add(mt.ctx, mt.currOp.attemptCount-1, metric.WithAttributes(retryCntAttrs...)) + } +} + +// gaxInvokeWithRecorder: +// - wraps 'f' in a new function 'callWrapper' that: +// - updates tracer state and records built in attempt specific metrics +// - does not return errors seen while recording the metrics +// +// - then, calls gax.Invoke with 'callWrapper' as an argument +func gaxInvokeWithRecorder(ctx context.Context, mt *builtinMetricsTracer, method string, + f func(ctx context.Context, headerMD, trailerMD *metadata.MD, _ gax.CallSettings) error, opts ...gax.CallOption) error { + + mt.method = method + callWrapper := func(ctx context.Context, callSettings gax.CallSettings) error { + // Increment number of attempts + mt.currOp.incrementAttemptCount() + + attemptHeaderMD := metadata.New(nil) + attempTrailerMD := metadata.New(nil) + mt.currOp.currAttempt = attemptTracer{} + + // record start time + mt.currOp.currAttempt.setStartTime(time.Now()) + + // f makes calls to CBT service + err := f(ctx, &attemptHeaderMD, &attempTrailerMD, callSettings) + + // Set attempt status + statusCode, _ := convertToGrpcStatusErr(err) + mt.currOp.currAttempt.setStatus(statusCode.String()) + + // Get location attributes from metadata and set it in tracer + // Ignore get location error since the metric can still be recorded with rest of the attributes + clusterID, zoneID, _ := extractLocation(attemptHeaderMD, attempTrailerMD) + mt.currOp.currAttempt.setClusterID(clusterID) + mt.currOp.currAttempt.setZoneID(zoneID) + + // Set server latency in tracer + serverLatency, serverLatencyErr := extractServerLatency(attemptHeaderMD, attempTrailerMD) + mt.currOp.currAttempt.setServerLatencyErr(serverLatencyErr) + mt.currOp.currAttempt.setServerLatency(serverLatency) + + // Record attempt specific metrics + recordAttemptCompletion(mt) + return err + } + return gax.Invoke(ctx, callWrapper, opts...) +} + +// recordAttemptCompletion records as many attempt specific metrics as it can +func recordAttemptCompletion(mt *builtinMetricsTracer) { + if !mt.builtInEnabled { + return + } + + // Calculate elapsed time + elapsedTime := float64(time.Since(mt.currOp.currAttempt.startTime).Nanoseconds()) / 1000000 + + // Attributes for attempt_latencies + // Ignore error seen while creating metric attributes since metric can still + // be recorded with rest of the attributes + attemptLatAttrs, _ := mt.toOtelMetricAttrs(metricNameAttemptLatencies) + mt.instrumentAttemptLatencies.Record(mt.ctx, elapsedTime, metric.WithAttributes(attemptLatAttrs...)) + + // Attributes for server_latencies + // Ignore error seen while creating metric attributes since metric can still + // be recorded with rest of the attributes + serverLatAttrs, _ := mt.toOtelMetricAttrs(metricNameServerLatencies) + if mt.currOp.currAttempt.serverLatencyErr == nil { + mt.instrumentServerLatencies.Record(mt.ctx, mt.currOp.currAttempt.serverLatency, metric.WithAttributes(serverLatAttrs...)) + } } diff --git a/bigtable/bigtable_test.go b/bigtable/bigtable_test.go index 7c204f369bef..f082a8b2a91a 100644 --- a/bigtable/bigtable_test.go +++ b/bigtable/bigtable_test.go @@ -30,6 +30,8 @@ import ( "google.golang.org/grpc" ) +var disableMetricsConfig = ClientConfig{MetricsProvider: NoopMetricsProvider{}} + func TestPrefix(t *testing.T) { for _, test := range []struct { prefix, succ string @@ -253,8 +255,9 @@ func TestApplyErrors(t *testing.T) { ctx := context.Background() table := &Table{ c: &Client{ - project: "P", - instance: "I", + project: "P", + instance: "I", + metricsTracerFactory: &builtinMetricsTracerFactory{}, }, table: "t", } @@ -581,9 +584,9 @@ func TestReadRowsInvalidRowSet(t *testing.T) { if err := adminClient.CreateTable(ctx, testEnv.config.Table); err != nil { t.Fatalf("CreateTable(%v) failed: %v", testEnv.config.Table, err) } - client, err := NewClient(ctx, testEnv.config.Project, testEnv.config.Instance, option.WithGRPCConn(conn)) + client, err := NewClientWithConfig(ctx, testEnv.config.Project, testEnv.config.Instance, disableMetricsConfig, option.WithGRPCConn(conn)) if err != nil { - t.Fatalf("NewClient failed: %v", err) + t.Fatalf("NewClientWithConfig failed: %v", err) } defer client.Close() table := client.Open(testEnv.config.Table) @@ -657,9 +660,9 @@ func TestReadRowsRequestStats(t *testing.T) { t.Fatalf("CreateTable(%v) failed: %v", testEnv.config.Table, err) } - client, err := NewClient(ctx, testEnv.config.Project, testEnv.config.Instance, option.WithGRPCConn(conn)) + client, err := NewClientWithConfig(ctx, testEnv.config.Project, testEnv.config.Instance, disableMetricsConfig, option.WithGRPCConn(conn)) if err != nil { - t.Fatalf("NewClient failed: %v", err) + t.Fatalf("NewClientWithConfig failed: %v", err) } defer client.Close() table := client.Open(testEnv.config.Table) @@ -785,9 +788,9 @@ func TestMutateRowsWithAggregates(t *testing.T) { t.Fatalf("CreateTable(%v) failed: %v", testEnv.config.Table, err) } - client, err := NewClient(ctx, testEnv.config.Project, testEnv.config.Instance, option.WithGRPCConn(conn)) + client, err := NewClientWithConfig(ctx, testEnv.config.Project, testEnv.config.Instance, disableMetricsConfig, option.WithGRPCConn(conn)) if err != nil { - t.Fatalf("NewClient failed: %v", err) + t.Fatalf("NewClientWithConfig failed: %v", err) } defer client.Close() table := client.Open(testEnv.config.Table) diff --git a/bigtable/bttest/example_test.go b/bigtable/bttest/example_test.go index 5854a221ecac..9cc6ab1a6c16 100644 --- a/bigtable/bttest/example_test.go +++ b/bigtable/bttest/example_test.go @@ -56,7 +56,7 @@ func ExampleNewServer() { log.Fatalln(err) } - client, err := bigtable.NewClient(ctx, proj, instance, option.WithGRPCConn(conn)) + client, err := bigtable.NewClientWithConfig(ctx, proj, instance, bigtable.ClientConfig{MetricsProvider: bigtable.NoopMetricsProvider{}}, option.WithGRPCConn(conn)) if err != nil { log.Fatalln(err) } diff --git a/bigtable/conformance_test.go b/bigtable/conformance_test.go index f23f2b0db1d9..8077a9ef20de 100644 --- a/bigtable/conformance_test.go +++ b/bigtable/conformance_test.go @@ -53,7 +53,7 @@ func TestConformance(t *testing.T) { t.Fatal(err) } defer conn.Close() - c, err := NewClient(ctx, "some-project", "some-instance", option.WithGRPCConn(conn)) + c, err := NewClientWithConfig(ctx, "some-project", "some-instance", disableMetricsConfig, option.WithGRPCConn(conn)) if err != nil { t.Fatal(err) } diff --git a/bigtable/export_test.go b/bigtable/export_test.go index 64511e7f955a..1b741944bb83 100644 --- a/bigtable/export_test.go +++ b/bigtable/export_test.go @@ -103,6 +103,7 @@ type IntegrationEnv interface { // NewInstanceAdminClient will return nil if instance administration is unsupported in this environment NewInstanceAdminClient() (*InstanceAdminClient, error) NewClient() (*Client, error) + NewClientWithConfig(ClientConfig) (*Client, error) Close() Peer() *peer.Peer } @@ -240,6 +241,15 @@ func (e *EmulatedEnv) NewInstanceAdminClient() (*InstanceAdminClient, error) { // NewClient builds a new connected data client for this environment func (e *EmulatedEnv) NewClient() (*Client, error) { + return e.newEmulatedClient(ClientConfig{}) +} + +// NewClient builds a new connected data client with provided config for this environment +func (e *EmulatedEnv) NewClientWithConfig(config ClientConfig) (*Client, error) { + return e.newEmulatedClient(config) +} + +func (e *EmulatedEnv) newEmulatedClient(config ClientConfig) (*Client, error) { o, err := btopt.DefaultClientOptions(e.server.Addr, e.server.Addr, Scope, clientUserAgent) if err != nil { return nil, err @@ -263,7 +273,7 @@ func (e *EmulatedEnv) NewClient() (*Client, error) { if err != nil { return nil, err } - return NewClient(ctx, e.config.Project, e.config.Instance, option.WithGRPCConn(conn)) + return NewClientWithConfig(ctx, e.config.Project, e.config.Instance, config, option.WithGRPCConn(conn)) } // ProdEnv encapsulates the state necessary to connect to the external Bigtable service @@ -334,6 +344,15 @@ func (e *ProdEnv) NewInstanceAdminClient() (*InstanceAdminClient, error) { // NewClient builds a connected data client for this environment func (e *ProdEnv) NewClient() (*Client, error) { + return e.newProdClient(ClientConfig{}) +} + +// NewClientWithConfig builds a connected data client with provided config for this environment +func (e *ProdEnv) NewClientWithConfig(config ClientConfig) (*Client, error) { + return e.newProdClient(config) +} + +func (e *ProdEnv) newProdClient(config ClientConfig) (*Client, error) { clientOpts := headersInterceptor.CallOptions() if endpoint := e.config.DataEndpoint; endpoint != "" { clientOpts = append(clientOpts, option.WithEndpoint(endpoint)) @@ -343,6 +362,5 @@ func (e *ProdEnv) NewClient() (*Client, error) { // For DirectPath tests, we need to add an interceptor to check the peer IP. clientOpts = append(clientOpts, option.WithGRPCDialOption(grpc.WithDefaultCallOptions(grpc.Peer(e.peerInfo)))) } - - return NewClient(context.Background(), e.config.Project, e.config.Instance, clientOpts...) + return NewClientWithConfig(context.Background(), e.config.Project, e.config.Instance, config, clientOpts...) } diff --git a/bigtable/go.mod b/bigtable/go.mod index 16b0b1d3f248..9855c94ca6bc 100644 --- a/bigtable/go.mod +++ b/bigtable/go.mod @@ -10,6 +10,10 @@ require ( github.com/google/go-cmp v0.6.0 github.com/googleapis/cloud-bigtable-clients-test v0.0.2 github.com/googleapis/gax-go/v2 v2.13.0 + go.opentelemetry.io/otel v1.24.0 // Use older version compatible with Go 1.20 + go.opentelemetry.io/otel/metric v1.24.0 // Use older version compatible with Go 1.20 + go.opentelemetry.io/otel/sdk v1.24.0 // Use older version compatible with Go 1.20 + go.opentelemetry.io/otel/sdk/metric v1.24.0 // Use older version compatible with Go 1.20 google.golang.org/api v0.189.0 google.golang.org/genproto v0.0.0-20240722135656-d784300faade google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade @@ -18,6 +22,12 @@ require ( rsc.io/binaryregexp v0.2.0 ) +require ( + cloud.google.com/go/monitoring v1.20.1 + github.com/google/uuid v1.6.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240722135656-d784300faade +) + require ( cel.dev/expr v0.15.0 // indirect cloud.google.com/go/auth v0.7.2 // indirect @@ -34,14 +44,10 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/sdk v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect golang.org/x/crypto v0.25.0 // indirect golang.org/x/net v0.27.0 // indirect @@ -50,5 +56,4 @@ require ( golang.org/x/sys v0.22.0 // indirect golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240722135656-d784300faade // indirect ) diff --git a/bigtable/go.sum b/bigtable/go.sum index 3191c519fc55..e896aaee936b 100644 --- a/bigtable/go.sum +++ b/bigtable/go.sum @@ -13,6 +13,8 @@ cloud.google.com/go/iam v1.1.10 h1:ZSAr64oEhQSClwBL670MsJAW5/RLiC6kfw3Bqmd5ZDI= cloud.google.com/go/iam v1.1.10/go.mod h1:iEgMq62sg8zx446GCaijmA2Miwg5o3UbO+nI47WHJps= cloud.google.com/go/longrunning v0.5.9 h1:haH9pAuXdPAMqHvzX0zlWQigXT7B0+CL4/2nXXdBo5k= cloud.google.com/go/longrunning v0.5.9/go.mod h1:HD+0l9/OOW0za6UWdKJtXoFAX/BGg/3Wj8p10NeWF7c= +cloud.google.com/go/monitoring v1.20.1 h1:XmM6uk4+mI2ZhWdI2n/2GNhJdpeQN+1VdG2UWEDhX48= +cloud.google.com/go/monitoring v1.20.1/go.mod h1:FYSe/brgfuaXiEzOQFhTjsEsJv+WePyK71X7Y8qo6uQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= @@ -100,6 +102,8 @@ go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGX go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/sdk/metric v1.24.0 h1:yyMQrPzF+k88/DbH7o4FMAs80puqd+9osbiBrJrz/w8= +go.opentelemetry.io/otel/sdk/metric v1.24.0/go.mod h1:I6Y5FjH6rvEnTTAYQz3Mmv2kl6Ek5IIrmwTLqMrrOE0= go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/bigtable/integration_test.go b/bigtable/integration_test.go index b6fe2bbc3866..a6bdfaff8b29 100644 --- a/bigtable/integration_test.go +++ b/bigtable/integration_test.go @@ -38,6 +38,8 @@ import ( "cloud.google.com/go/internal/optional" "cloud.google.com/go/internal/testutil" "cloud.google.com/go/internal/uid" + monitoring "cloud.google.com/go/monitoring/apiv3/v2" + "cloud.google.com/go/monitoring/apiv3/v2/monitoringpb" "github.com/google/go-cmp/cmp" gax "github.com/googleapis/gax-go/v2" "google.golang.org/api/iterator" @@ -46,6 +48,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/timestamppb" ) const ( @@ -276,6 +279,7 @@ func TestIntegration_ReadRowList(t *testing.T) { t.Fatalf("bulk read: wrong reads.\n got %q\nwant %q", got, want) } } + func TestIntegration_ReadRowListReverse(t *testing.T) { ctx := context.Background() _, _, _, table, _, cleanup, err := setupIntegration(ctx, t) @@ -749,6 +753,101 @@ func TestIntegration_HighlyConcurrentReadsAndWrites(t *testing.T) { wg.Wait() } +func TestIntegration_ExportBuiltInMetrics(t *testing.T) { + ctx := context.Background() + + // Reduce sampling period for faster test runs + origSamplePeriod := defaultSamplePeriod + defaultSamplePeriod = time.Minute + defer func() { + defaultSamplePeriod = origSamplePeriod + }() + + // record start time + testStartTime := time.Now() + tsListStart := ×tamppb.Timestamp{ + Seconds: testStartTime.Unix(), + Nanos: int32(testStartTime.Nanosecond()), + } + + testEnv, _, adminClient, table, tableName, cleanup, err := setupIntegration(ctx, t) + if err != nil { + t.Fatal(err) + } + defer cleanup() + + if testing.Short() || !testEnv.Config().UseProd { + t.Skip("Skip long running tests in short mode or non-prod environments") + } + + columnFamilyName := "export" + if err := adminClient.CreateColumnFamily(ctx, tableName, columnFamilyName); err != nil { + t.Fatalf("Creating column family: %v", err) + } + + for i := 0; i < 10; i++ { + mut := NewMutation() + mut.Set(columnFamilyName, "col", 1000, []byte("test")) + if err := table.Apply(ctx, fmt.Sprintf("row-%v", i), mut); err != nil { + t.Fatalf("Apply: %v", err) + } + } + err = table.ReadRows(ctx, PrefixRange("row-"), func(r Row) bool { + return true + }, RowFilter(ColumnFilter("col"))) + if err != nil { + t.Fatalf("ReadRows: %v", err) + } + + // Validate that metrics are exported + elapsedTime := time.Since(testStartTime) + if elapsedTime < 2*defaultSamplePeriod { + // Ensure at least 2 datapoints are recorded + time.Sleep(2*defaultSamplePeriod - elapsedTime) + } + + // Sleep some more + time.Sleep(30 * time.Second) + + monitoringClient, err := monitoring.NewMetricClient(ctx) + if err != nil { + t.Errorf("Failed to create metric client: %v", err) + } + metricNamesValidate := []string{ + metricNameOperationLatencies, + metricNameAttemptLatencies, + metricNameServerLatencies, + } + + // Try for 5m with 10s sleep between retries + testutil.Retry(t, 10, 30*time.Second, func(r *testutil.R) { + for _, metricName := range metricNamesValidate { + timeListEnd := time.Now() + tsListEnd := ×tamppb.Timestamp{ + Seconds: timeListEnd.Unix(), + Nanos: int32(timeListEnd.Nanosecond()), + } + + // ListTimeSeries can list only one metric type at a time. + // So, call ListTimeSeries with different metric names + iter := monitoringClient.ListTimeSeries(ctx, &monitoringpb.ListTimeSeriesRequest{ + Name: fmt.Sprintf("projects/%s", testEnv.Config().Project), + Interval: &monitoringpb.TimeInterval{ + StartTime: tsListStart, + EndTime: tsListEnd, + }, + Filter: fmt.Sprintf("metric.type = starts_with(\"bigtable.googleapis.com/client/%v\")", metricName), + }) + + // Assert at least 1 datapoint was exported + _, err := iter.Next() + if err != nil { + r.Errorf("%v not exported\n", metricName) + } + } + }) +} + func TestIntegration_LargeReadsWritesAndScans(t *testing.T) { ctx := context.Background() testEnv, _, adminClient, table, tableName, cleanup, err := setupIntegration(ctx, t) @@ -757,7 +856,7 @@ func TestIntegration_LargeReadsWritesAndScans(t *testing.T) { } defer cleanup() - if !testEnv.Config().UseProd { + if testing.Short() { t.Skip("Skip long running tests in short mode") } diff --git a/bigtable/internal/testproxy/proxy.go b/bigtable/internal/testproxy/proxy.go index d5bf11be4753..49a79de8b698 100644 --- a/bigtable/internal/testproxy/proxy.go +++ b/bigtable/internal/testproxy/proxy.go @@ -441,7 +441,8 @@ func (s *goTestProxyServer) CreateClient(ctx context.Context, req *pb.CreateClie } config := bigtable.ClientConfig{ - AppProfile: req.AppProfileId, + AppProfile: req.AppProfileId, + MetricsProvider: bigtable.NoopMetricsProvider{}, } c, err := bigtable.NewClientWithConfig(ctx, req.ProjectId, req.InstanceId, config, option.WithGRPCConn(conn)) if err != nil { diff --git a/bigtable/internal/testproxy/proxy_test.go b/bigtable/internal/testproxy/proxy_test.go index 8f9fc747f56a..5682a7a7d54a 100644 --- a/bigtable/internal/testproxy/proxy_test.go +++ b/bigtable/internal/testproxy/proxy_test.go @@ -84,7 +84,7 @@ func populateTable(bts *bttest.Server) error { } } - dataClient, err := bigtable.NewClient(ctx, "client", "instance", + dataClient, err := bigtable.NewClientWithConfig(ctx, "client", "instance", bigtable.ClientConfig{MetricsProvider: bigtable.NoopMetricsProvider{}}, option.WithGRPCConn(conn), option.WithGRPCDialOption(grpc.WithBlock())) if err != nil { return fmt.Errorf("testproxy setup: can't create Bigtable client: %v", err) diff --git a/bigtable/internal/version.go b/bigtable/internal/version.go index dc70dd2f630d..dc1cb9f6009b 100644 --- a/bigtable/internal/version.go +++ b/bigtable/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.26.0" +const Version = "1.27.0" diff --git a/bigtable/metric_util.go b/bigtable/metric_util.go new file mode 100644 index 000000000000..070b28fc0391 --- /dev/null +++ b/bigtable/metric_util.go @@ -0,0 +1,94 @@ +/* +Copyright 2024 Google LLC + +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. +*/ + +package bigtable + +import ( + "fmt" + "strconv" + "strings" + + btpb "google.golang.org/genproto/googleapis/bigtable/v2" + "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/proto" +) + +const ( + defaultCluster = "unspecified" + defaultZone = "global" +) + +// get GFE latency in ms from response metadata +func extractServerLatency(headerMD metadata.MD, trailerMD metadata.MD) (float64, error) { + serverTimingStr := "" + + // Check whether server latency available in response header metadata + if headerMD != nil { + headerMDValues := headerMD.Get(serverTimingMDKey) + if len(headerMDValues) != 0 { + serverTimingStr = headerMDValues[0] + } + } + + if len(serverTimingStr) == 0 { + // Check whether server latency available in response trailer metadata + if trailerMD != nil { + trailerMDValues := trailerMD.Get(serverTimingMDKey) + if len(trailerMDValues) != 0 { + serverTimingStr = trailerMDValues[0] + } + } + } + + serverLatencyMillisStr := strings.TrimPrefix(serverTimingStr, serverTimingValPrefix) + serverLatencyMillis, err := strconv.ParseFloat(strings.TrimSpace(serverLatencyMillisStr), 64) + if !strings.HasPrefix(serverTimingStr, serverTimingValPrefix) || err != nil { + return serverLatencyMillis, err + } + + return serverLatencyMillis, nil +} + +// Obtain cluster and zone from response metadata +func extractLocation(headerMD metadata.MD, trailerMD metadata.MD) (string, string, error) { + var locationMetadata []string + + // Check whether location metadata available in response header metadata + if headerMD != nil { + locationMetadata = headerMD.Get(locationMDKey) + } + + if locationMetadata == nil { + // Check whether location metadata available in response trailer metadata + // if none found in response header metadata + if trailerMD != nil { + locationMetadata = trailerMD.Get(locationMDKey) + } + } + + if len(locationMetadata) < 1 { + return defaultCluster, defaultZone, fmt.Errorf("failed to get location metadata") + } + + // Unmarshal binary location metadata + responseParams := &btpb.ResponseParams{} + err := proto.Unmarshal([]byte(locationMetadata[0]), responseParams) + if err != nil { + return defaultCluster, defaultZone, err + } + + return responseParams.GetClusterId(), responseParams.GetZoneId(), nil +} diff --git a/bigtable/metrics.go b/bigtable/metrics.go new file mode 100644 index 000000000000..4a0413095f9e --- /dev/null +++ b/bigtable/metrics.go @@ -0,0 +1,403 @@ +/* +Copyright 2024 Google LLC + +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. +*/ + +package bigtable + +import ( + "context" + "errors" + "fmt" + "log" + "os" + "time" + + "cloud.google.com/go/bigtable/internal" + "github.com/google/uuid" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/metric" + sdkmetric "go.opentelemetry.io/otel/sdk/metric" + "google.golang.org/api/option" +) + +const ( + builtInMetricsMeterName = "bigtable.googleapis.com/internal/client/" + + metricsPrefix = "bigtable/" + locationMDKey = "x-goog-ext-425905942-bin" + serverTimingMDKey = "server-timing" + serverTimingValPrefix = "gfet4t7; dur=" + + // Monitored resource labels + monitoredResLabelKeyProject = "project_id" + monitoredResLabelKeyInstance = "instance" + monitoredResLabelKeyTable = "table" + monitoredResLabelKeyCluster = "cluster" + monitoredResLabelKeyZone = "zone" + + // Metric labels + metricLabelKeyAppProfile = "app_profile" + metricLabelKeyMethod = "method" + metricLabelKeyStatus = "status" + metricLabelKeyStreamingOperation = "streaming" + metricLabelKeyClientName = "client_name" + metricLabelKeyClientUID = "client_uid" + + // Metric names + metricNameOperationLatencies = "operation_latencies" + metricNameAttemptLatencies = "attempt_latencies" + metricNameServerLatencies = "server_latencies" + metricNameRetryCount = "retry_count" +) + +// These are effectively const, but for testing purposes they are mutable +var ( + // duration between two metric exports + defaultSamplePeriod = 5 * time.Minute + + clientName = fmt.Sprintf("go-bigtable/%v", internal.Version) + + bucketBounds = []float64{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 8.0, 10.0, 13.0, 16.0, 20.0, 25.0, 30.0, 40.0, + 50.0, 65.0, 80.0, 100.0, 130.0, 160.0, 200.0, 250.0, 300.0, 400.0, 500.0, 650.0, + 800.0, 1000.0, 2000.0, 5000.0, 10000.0, 20000.0, 50000.0, 100000.0, 200000.0, + 400000.0, 800000.0, 1600000.0, 3200000.0} + + // All the built-in metrics have same attributes except 'status' and 'streaming' + // These attributes need to be added to only few of the metrics + metricsDetails = map[string]metricInfo{ + metricNameOperationLatencies: { + additionalAttrs: []string{ + metricLabelKeyStatus, + metricLabelKeyStreamingOperation, + }, + recordedPerAttempt: false, + }, + metricNameAttemptLatencies: { + additionalAttrs: []string{ + metricLabelKeyStatus, + metricLabelKeyStreamingOperation, + }, + recordedPerAttempt: true, + }, + metricNameServerLatencies: { + additionalAttrs: []string{ + metricLabelKeyStatus, + metricLabelKeyStreamingOperation, + }, + recordedPerAttempt: true, + }, + metricNameRetryCount: { + additionalAttrs: []string{ + metricLabelKeyStatus, + }, + recordedPerAttempt: true, + }, + } + + // Generates unique client ID in the format go-@ + generateClientUID = func() (string, error) { + hostname := "localhost" + hostname, err := os.Hostname() + if err != nil { + return "", err + } + return "go-" + uuid.NewString() + "@" + hostname, nil + } + + exporterOpts = []option.ClientOption{} +) + +type metricInfo struct { + additionalAttrs []string + recordedPerAttempt bool +} + +type builtinMetricsTracerFactory struct { + enabled bool + + // To be called on client close + shutdown func() + + // attributes that are specific to a client instance and + // do not change across different function calls on client + clientAttributes []attribute.KeyValue + + operationLatencies metric.Float64Histogram + serverLatencies metric.Float64Histogram + attemptLatencies metric.Float64Histogram + retryCount metric.Int64Counter +} + +func newBuiltinMetricsTracerFactory(ctx context.Context, project, instance, appProfile string, metricsProvider MetricsProvider) (*builtinMetricsTracerFactory, error) { + clientUID, err := generateClientUID() + if err != nil { + log.Printf("built-in metrics: generateClientUID failed: %v. Using empty string in the %v metric atteribute", err, metricLabelKeyClientUID) + } + + tracerFactory := &builtinMetricsTracerFactory{ + enabled: false, + clientAttributes: []attribute.KeyValue{ + attribute.String(monitoredResLabelKeyProject, project), + attribute.String(monitoredResLabelKeyInstance, instance), + attribute.String(metricLabelKeyAppProfile, appProfile), + attribute.String(metricLabelKeyClientUID, clientUID), + attribute.String(metricLabelKeyClientName, clientName), + }, + shutdown: func() {}, + } + + var meterProvider *sdkmetric.MeterProvider + if metricsProvider == nil { + // Create default meter provider + mpOptions, err := builtInMeterProviderOptions(project) + if err != nil { + return tracerFactory, err + } + meterProvider = sdkmetric.NewMeterProvider(mpOptions...) + + tracerFactory.enabled = true + tracerFactory.shutdown = func() { meterProvider.Shutdown(ctx) } + } else { + switch metricsProvider.(type) { + case NoopMetricsProvider: + tracerFactory.enabled = false + return tracerFactory, nil + default: + tracerFactory.enabled = false + return tracerFactory, errors.New("unknown MetricsProvider type") + } + } + + // Create meter and instruments + meter := meterProvider.Meter(builtInMetricsMeterName, metric.WithInstrumentationVersion(internal.Version)) + err = tracerFactory.createInstruments(meter) + return tracerFactory, err +} + +func builtInMeterProviderOptions(project string) ([]sdkmetric.Option, error) { + defaultExporter, err := newMonitoringExporter(context.Background(), project, exporterOpts...) + if err != nil { + return nil, err + } + + return []sdkmetric.Option{sdkmetric.WithReader( + sdkmetric.NewPeriodicReader( + defaultExporter, + sdkmetric.WithInterval(defaultSamplePeriod), + ), + )}, nil +} + +func (tf *builtinMetricsTracerFactory) createInstruments(meter metric.Meter) error { + var err error + + // Create operation_latencies + tf.operationLatencies, err = meter.Float64Histogram( + metricNameOperationLatencies, + metric.WithDescription("Total time until final operation success or failure, including retries and backoff."), + metric.WithUnit("ms"), + metric.WithExplicitBucketBoundaries(bucketBounds...), + ) + if err != nil { + return err + } + + // Create attempt_latencies + tf.attemptLatencies, err = meter.Float64Histogram( + metricNameAttemptLatencies, + metric.WithDescription("Client observed latency per RPC attempt."), + metric.WithUnit("ms"), + metric.WithExplicitBucketBoundaries(bucketBounds...), + ) + if err != nil { + return err + } + + // Create server_latencies + tf.serverLatencies, err = meter.Float64Histogram( + metricNameServerLatencies, + metric.WithDescription("The latency measured from the moment that the RPC entered the Google data center until the RPC was completed."), + metric.WithUnit("ms"), + metric.WithExplicitBucketBoundaries(bucketBounds...), + ) + if err != nil { + return err + } + + // Create retry_count + tf.retryCount, err = meter.Int64Counter( + metricNameRetryCount, + metric.WithDescription("The number of additional RPCs sent after the initial attempt."), + ) + return err +} + +// builtinMetricsTracer is created one per operation +// It is used to store metric instruments, attribute values +// and other data required to obtain and record them +type builtinMetricsTracer struct { + ctx context.Context + builtInEnabled bool + + // attributes that are specific to a client instance and + // do not change across different operations on client + clientAttributes []attribute.KeyValue + + instrumentOperationLatencies metric.Float64Histogram + instrumentServerLatencies metric.Float64Histogram + instrumentAttemptLatencies metric.Float64Histogram + instrumentRetryCount metric.Int64Counter + + tableName string + method string + isStreaming bool + + currOp opTracer +} + +// opTracer is used to record metrics for the entire operation, including retries. +type opTracer struct { + attemptCount int64 + + startTime time.Time + + // gRPC status code of last completed attempt + status string + + currAttempt attemptTracer +} + +func (o *opTracer) setStartTime(t time.Time) { + o.startTime = t + +} + +func (o *opTracer) setStatus(status string) { + o.status = status +} + +func (o *opTracer) incrementAttemptCount() { + o.attemptCount++ +} + +// attemptTracer is used to record metrics for each individual attempt of the operation. +type attemptTracer struct { + startTime time.Time + clusterID string + zoneID string + + // gRPC status code + status string + + // Server latency in ms + serverLatency float64 + + // Error seen while getting server latency from headers + serverLatencyErr error +} + +func (a *attemptTracer) setStartTime(t time.Time) { + a.startTime = t +} + +func (a *attemptTracer) setClusterID(clusterID string) { + a.clusterID = clusterID +} + +func (a *attemptTracer) setZoneID(zoneID string) { + a.zoneID = zoneID +} + +func (a *attemptTracer) setStatus(status string) { + a.status = status +} + +func (a *attemptTracer) setServerLatency(latency float64) { + a.serverLatency = latency +} + +func (a *attemptTracer) setServerLatencyErr(err error) { + a.serverLatencyErr = err +} + +func (tf *builtinMetricsTracerFactory) createBuiltinMetricsTracer(ctx context.Context, tableName string, isStreaming bool) builtinMetricsTracer { + // Operation has started but not the attempt. + // So, create only operation tracer and not attempt tracer + currOpTracer := opTracer{} + currOpTracer.setStartTime(time.Now()) + + return builtinMetricsTracer{ + ctx: ctx, + builtInEnabled: tf.enabled, + + currOp: currOpTracer, + clientAttributes: tf.clientAttributes, + + instrumentOperationLatencies: tf.operationLatencies, + instrumentServerLatencies: tf.serverLatencies, + instrumentAttemptLatencies: tf.attemptLatencies, + instrumentRetryCount: tf.retryCount, + + tableName: tableName, + isStreaming: isStreaming, + } +} + +// toOtelMetricAttrs: +// - converts metric attributes values captured throughout the operation / attempt +// to OpenTelemetry attributes format, +// - combines these with common client attributes and returns +func (mt *builtinMetricsTracer) toOtelMetricAttrs(metricName string) ([]attribute.KeyValue, error) { + // Create attribute key value pairs for attributes common to all metricss + attrKeyValues := []attribute.KeyValue{ + attribute.String(metricLabelKeyMethod, mt.method), + + // Add resource labels to otel metric labels. + // These will be used for creating the monitored resource but exporter + // will not add them to Google Cloud Monitoring metric labels + attribute.String(monitoredResLabelKeyTable, mt.tableName), + + // Irrespective of whether metric is attempt specific or operation specific, + // use last attempt's cluster and zone + attribute.String(monitoredResLabelKeyCluster, mt.currOp.currAttempt.clusterID), + attribute.String(monitoredResLabelKeyZone, mt.currOp.currAttempt.zoneID), + } + attrKeyValues = append(attrKeyValues, mt.clientAttributes...) + + // Get metric details + mDetails, found := metricsDetails[metricName] + if !found { + return attrKeyValues, fmt.Errorf("unable to create attributes list for unknown metric: %v", metricName) + } + + status := mt.currOp.status + if mDetails.recordedPerAttempt { + status = mt.currOp.currAttempt.status + } + + // Add additional attributes to metrics + for _, attrKey := range mDetails.additionalAttrs { + switch attrKey { + case metricLabelKeyStatus: + attrKeyValues = append(attrKeyValues, attribute.String(metricLabelKeyStatus, status)) + case metricLabelKeyStreamingOperation: + attrKeyValues = append(attrKeyValues, attribute.Bool(metricLabelKeyStreamingOperation, mt.isStreaming)) + default: + return attrKeyValues, fmt.Errorf("unknown additional attribute: %v", attrKey) + } + } + + return attrKeyValues, nil +} diff --git a/bigtable/metrics_monitoring_exporter.go b/bigtable/metrics_monitoring_exporter.go new file mode 100644 index 000000000000..29bc957b3b49 --- /dev/null +++ b/bigtable/metrics_monitoring_exporter.go @@ -0,0 +1,345 @@ +/* +Copyright 2024 Google LLC + +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. +*/ + +// This is a modified version of https://github.com/GoogleCloudPlatform/opentelemetry-operations-go/blob/exporter/metric/v0.46.0/exporter/metric/metric.go + +package bigtable + +import ( + "context" + "errors" + "fmt" + "math" + "reflect" + "sync" + "time" + + monitoring "cloud.google.com/go/monitoring/apiv3/v2" + "cloud.google.com/go/monitoring/apiv3/v2/monitoringpb" + "go.opentelemetry.io/otel/attribute" + otelmetric "go.opentelemetry.io/otel/sdk/metric" + otelmetricdata "go.opentelemetry.io/otel/sdk/metric/metricdata" + "google.golang.org/api/option" + "google.golang.org/genproto/googleapis/api/distribution" + googlemetricpb "google.golang.org/genproto/googleapis/api/metric" + monitoredrespb "google.golang.org/genproto/googleapis/api/monitoredres" + "google.golang.org/protobuf/types/known/timestamppb" +) + +const ( + bigtableResourceType = "bigtable_client_raw" + + // The number of timeserieses to send to GCM in a single request. This + // is a hard limit in the GCM API, so we never want to exceed 200. + sendBatchSize = 200 +) + +var ( + monitoredResLabelsSet = map[string]bool{ + monitoredResLabelKeyProject: true, + monitoredResLabelKeyInstance: true, + monitoredResLabelKeyCluster: true, + monitoredResLabelKeyTable: true, + monitoredResLabelKeyZone: true, + } + + errShutdown = fmt.Errorf("exporter is shutdown") +) + +type errUnexpectedAggregationKind struct { + kind string +} + +func (e errUnexpectedAggregationKind) Error() string { + return fmt.Sprintf("the metric kind is unexpected: %v", e.kind) +} + +// monitoringExporter is the implementation of OpenTelemetry metric exporter for +// Google Cloud Monitoring. +// Default exporter for built-in metrics +type monitoringExporter struct { + shutdown chan struct{} + client *monitoring.MetricClient + shutdownOnce sync.Once + projectID string +} + +func newMonitoringExporter(ctx context.Context, project string, opts ...option.ClientOption) (*monitoringExporter, error) { + client, err := monitoring.NewMetricClient(ctx, opts...) + if err != nil { + return nil, err + } + return &monitoringExporter{ + client: client, + shutdown: make(chan struct{}), + projectID: project, + }, nil +} + +// ForceFlush does nothing, the exporter holds no state. +func (e *monitoringExporter) ForceFlush(ctx context.Context) error { return ctx.Err() } + +// Shutdown shuts down the client connections. +func (e *monitoringExporter) Shutdown(ctx context.Context) error { + err := errShutdown + e.shutdownOnce.Do(func() { + close(e.shutdown) + err = errors.Join(ctx.Err(), e.client.Close()) + }) + return err +} + +// Export exports OpenTelemetry Metrics to Google Cloud Monitoring. +func (me *monitoringExporter) Export(ctx context.Context, rm *otelmetricdata.ResourceMetrics) error { + select { + case <-me.shutdown: + return errShutdown + default: + } + + return me.exportTimeSeries(ctx, rm) +} + +// Temporality returns the Temporality to use for an instrument kind. +func (me *monitoringExporter) Temporality(ik otelmetric.InstrumentKind) otelmetricdata.Temporality { + return otelmetricdata.CumulativeTemporality +} + +// Aggregation returns the Aggregation to use for an instrument kind. +func (me *monitoringExporter) Aggregation(ik otelmetric.InstrumentKind) otelmetric.Aggregation { + return otelmetric.DefaultAggregationSelector(ik) +} + +// exportTimeSeries create TimeSeries from the records in cps. +// res should be the common resource among all TimeSeries, such as instance id, application name and so on. +func (me *monitoringExporter) exportTimeSeries(ctx context.Context, rm *otelmetricdata.ResourceMetrics) error { + tss, err := me.recordsToTimeSeriesPbs(rm) + if len(tss) == 0 { + return err + } + + name := fmt.Sprintf("projects/%s", me.projectID) + + errs := []error{err} + for i := 0; i < len(tss); i += sendBatchSize { + j := i + sendBatchSize + if j >= len(tss) { + j = len(tss) + } + + req := &monitoringpb.CreateTimeSeriesRequest{ + Name: name, + TimeSeries: tss[i:j], + } + errs = append(errs, me.client.CreateServiceTimeSeries(ctx, req)) + } + + return errors.Join(errs...) +} + +// recordToMetricAndMonitoredResourcePbs converts data from records to Metric and Monitored resource proto type for Cloud Monitoring. +func (me *monitoringExporter) recordToMetricAndMonitoredResourcePbs(metrics otelmetricdata.Metrics, attributes attribute.Set) (*googlemetricpb.Metric, *monitoredrespb.MonitoredResource) { + mr := &monitoredrespb.MonitoredResource{ + Type: bigtableResourceType, + Labels: map[string]string{}, + } + labels := make(map[string]string) + addAttributes := func(attr *attribute.Set) { + iter := attr.Iter() + for iter.Next() { + kv := iter.Attribute() + labelKey := string(kv.Key) + + if _, isResLabel := monitoredResLabelsSet[labelKey]; isResLabel { + // Add labels to monitored resource + mr.Labels[labelKey] = kv.Value.Emit() + } else { + // Add labels to metric + labels[labelKey] = kv.Value.Emit() + + } + } + } + addAttributes(&attributes) + return &googlemetricpb.Metric{ + Type: fmt.Sprintf("%v%s", builtInMetricsMeterName, metrics.Name), + Labels: labels, + }, mr +} + +func (me *monitoringExporter) recordsToTimeSeriesPbs(rm *otelmetricdata.ResourceMetrics) ([]*monitoringpb.TimeSeries, error) { + var ( + tss []*monitoringpb.TimeSeries + errs []error + ) + for _, scope := range rm.ScopeMetrics { + if scope.Scope.Name != builtInMetricsMeterName { + // Filter out metric data for instruments that are not part of the bigtable builtin metrics + continue + } + for _, metrics := range scope.Metrics { + ts, err := me.recordToTimeSeriesPb(metrics) + errs = append(errs, err) + tss = append(tss, ts...) + } + } + + return tss, errors.Join(errs...) +} + +// recordToTimeSeriesPb converts record to TimeSeries proto type with common resource. +// ref. https://cloud.google.com/monitoring/api/ref_v3/rest/v3/TimeSeries +func (me *monitoringExporter) recordToTimeSeriesPb(m otelmetricdata.Metrics) ([]*monitoringpb.TimeSeries, error) { + var tss []*monitoringpb.TimeSeries + var errs []error + if m.Data == nil { + return nil, nil + } + switch a := m.Data.(type) { + case otelmetricdata.Histogram[float64]: + for _, point := range a.DataPoints { + metric, mr := me.recordToMetricAndMonitoredResourcePbs(m, point.Attributes) + ts, err := histogramToTimeSeries(point, m, mr) + if err != nil { + errs = append(errs, err) + continue + } + ts.Metric = metric + tss = append(tss, ts) + } + case otelmetricdata.Sum[int64]: + for _, point := range a.DataPoints { + metric, mr := me.recordToMetricAndMonitoredResourcePbs(m, point.Attributes) + var ts *monitoringpb.TimeSeries + var err error + ts, err = sumToTimeSeries[int64](point, m, mr) + if err != nil { + errs = append(errs, err) + continue + } + ts.Metric = metric + tss = append(tss, ts) + } + default: + errs = append(errs, errUnexpectedAggregationKind{kind: reflect.TypeOf(m.Data).String()}) + } + return tss, errors.Join(errs...) +} + +func sumToTimeSeries[N int64 | float64](point otelmetricdata.DataPoint[N], metrics otelmetricdata.Metrics, mr *monitoredrespb.MonitoredResource) (*monitoringpb.TimeSeries, error) { + interval, err := toNonemptyTimeIntervalpb(point.StartTime, point.Time) + if err != nil { + return nil, err + } + value, valueType := numberDataPointToValue[N](point) + return &monitoringpb.TimeSeries{ + Resource: mr, + Unit: string(metrics.Unit), + MetricKind: googlemetricpb.MetricDescriptor_CUMULATIVE, + ValueType: valueType, + Points: []*monitoringpb.Point{{ + Interval: interval, + Value: value, + }}, + }, nil +} + +func histogramToTimeSeries[N int64 | float64](point otelmetricdata.HistogramDataPoint[N], metrics otelmetricdata.Metrics, mr *monitoredrespb.MonitoredResource) (*monitoringpb.TimeSeries, error) { + interval, err := toNonemptyTimeIntervalpb(point.StartTime, point.Time) + if err != nil { + return nil, err + } + distributionValue := histToDistribution(point) + return &monitoringpb.TimeSeries{ + Resource: mr, + Unit: string(metrics.Unit), + MetricKind: googlemetricpb.MetricDescriptor_CUMULATIVE, + ValueType: googlemetricpb.MetricDescriptor_DISTRIBUTION, + Points: []*monitoringpb.Point{{ + Interval: interval, + Value: &monitoringpb.TypedValue{ + Value: &monitoringpb.TypedValue_DistributionValue{ + DistributionValue: distributionValue, + }, + }, + }}, + }, nil +} + +func toNonemptyTimeIntervalpb(start, end time.Time) (*monitoringpb.TimeInterval, error) { + // The end time of a new interval must be at least a millisecond after the end time of the + // previous interval, for all non-gauge types. + // https://cloud.google.com/monitoring/api/ref_v3/rpc/google.monitoring.v3#timeinterval + if end.Sub(start).Milliseconds() <= 1 { + end = start.Add(time.Millisecond) + } + startpb := timestamppb.New(start) + endpb := timestamppb.New(end) + err := errors.Join( + startpb.CheckValid(), + endpb.CheckValid(), + ) + if err != nil { + return nil, err + } + + return &monitoringpb.TimeInterval{ + StartTime: startpb, + EndTime: endpb, + }, nil +} + +func histToDistribution[N int64 | float64](hist otelmetricdata.HistogramDataPoint[N]) *distribution.Distribution { + counts := make([]int64, len(hist.BucketCounts)) + for i, v := range hist.BucketCounts { + counts[i] = int64(v) + } + var mean float64 + if !math.IsNaN(float64(hist.Sum)) && hist.Count > 0 { // Avoid divide-by-zero + mean = float64(hist.Sum) / float64(hist.Count) + } + return &distribution.Distribution{ + Count: int64(hist.Count), + Mean: mean, + BucketCounts: counts, + BucketOptions: &distribution.Distribution_BucketOptions{ + Options: &distribution.Distribution_BucketOptions_ExplicitBuckets{ + ExplicitBuckets: &distribution.Distribution_BucketOptions_Explicit{ + Bounds: hist.Bounds, + }, + }, + }, + } +} + +func numberDataPointToValue[N int64 | float64]( + point otelmetricdata.DataPoint[N], +) (*monitoringpb.TypedValue, googlemetricpb.MetricDescriptor_ValueType) { + switch v := any(point.Value).(type) { + case int64: + return &monitoringpb.TypedValue{Value: &monitoringpb.TypedValue_Int64Value{ + Int64Value: v, + }}, + googlemetricpb.MetricDescriptor_INT64 + case float64: + return &monitoringpb.TypedValue{Value: &monitoringpb.TypedValue_DoubleValue{ + DoubleValue: v, + }}, + googlemetricpb.MetricDescriptor_DOUBLE + } + // It is impossible to reach this statement + return nil, googlemetricpb.MetricDescriptor_INT64 +} diff --git a/bigtable/metrics_monitoring_exporter_test.go b/bigtable/metrics_monitoring_exporter_test.go new file mode 100644 index 000000000000..d150dc24492e --- /dev/null +++ b/bigtable/metrics_monitoring_exporter_test.go @@ -0,0 +1,611 @@ +/* +Copyright 2024 Google LLC + +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. +*/ +package bigtable + +import ( + "context" + "errors" + "fmt" + "net" + "reflect" + "strings" + "sync" + "testing" + "time" + + "go.opentelemetry.io/otel/attribute" + otelmetric "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/sdk/instrumentation" + "go.opentelemetry.io/otel/sdk/metric" + "go.opentelemetry.io/otel/sdk/metric/metricdata" + "go.opentelemetry.io/otel/sdk/resource" + semconv "go.opentelemetry.io/otel/semconv/v1.24.0" + + "cloud.google.com/go/internal/testutil" + "cloud.google.com/go/monitoring/apiv3/v2/monitoringpb" + "google.golang.org/api/option" + googlemetricpb "google.golang.org/genproto/googleapis/api/metric" + metricpb "google.golang.org/genproto/googleapis/api/metric" + monitoredrespb "google.golang.org/genproto/googleapis/api/monitoredres" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + "google.golang.org/grpc/keepalive" + "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/types/known/emptypb" +) + +type MetricsTestServer struct { + lis net.Listener + srv *grpc.Server + Endpoint string + userAgent string + createMetricDescriptorReqs []*monitoringpb.CreateMetricDescriptorRequest + createServiceTimeSeriesReqs []*monitoringpb.CreateTimeSeriesRequest + RetryCount int + mu sync.Mutex +} + +func (m *MetricsTestServer) Shutdown() { + // this will close mts.lis + m.srv.GracefulStop() +} + +// Pops out the UserAgent from the most recent CreateTimeSeriesRequests or CreateServiceTimeSeriesRequests. +func (m *MetricsTestServer) UserAgent() string { + m.mu.Lock() + defer m.mu.Unlock() + ua := m.userAgent + m.userAgent = "" + return ua +} + +// Pops out the CreateServiceTimeSeriesRequests which the test server has received so far. +func (m *MetricsTestServer) CreateServiceTimeSeriesRequests() []*monitoringpb.CreateTimeSeriesRequest { + m.mu.Lock() + defer m.mu.Unlock() + reqs := m.createServiceTimeSeriesReqs + m.createServiceTimeSeriesReqs = nil + return reqs +} + +func (m *MetricsTestServer) appendCreateMetricDescriptorReq(ctx context.Context, req *monitoringpb.CreateMetricDescriptorRequest) { + m.mu.Lock() + defer m.mu.Unlock() + m.createMetricDescriptorReqs = append(m.createMetricDescriptorReqs, req) +} + +func (m *MetricsTestServer) appendCreateServiceTimeSeriesReq(ctx context.Context, req *monitoringpb.CreateTimeSeriesRequest) { + m.mu.Lock() + defer m.mu.Unlock() + m.createServiceTimeSeriesReqs = append(m.createServiceTimeSeriesReqs, req) + if md, ok := metadata.FromIncomingContext(ctx); ok { + m.userAgent = strings.Join(md.Get("User-Agent"), ";") + } +} + +func (m *MetricsTestServer) Serve() error { + return m.srv.Serve(m.lis) +} + +type fakeMetricServiceServer struct { + monitoringpb.UnimplementedMetricServiceServer + metricsTestServer *MetricsTestServer +} + +func (f *fakeMetricServiceServer) CreateServiceTimeSeries( + ctx context.Context, + req *monitoringpb.CreateTimeSeriesRequest, +) (*emptypb.Empty, error) { + f.metricsTestServer.appendCreateServiceTimeSeriesReq(ctx, req) + return &emptypb.Empty{}, nil +} + +func (f *fakeMetricServiceServer) CreateMetricDescriptor( + ctx context.Context, + req *monitoringpb.CreateMetricDescriptorRequest, +) (*metricpb.MetricDescriptor, error) { + f.metricsTestServer.appendCreateMetricDescriptorReq(ctx, req) + return &metricpb.MetricDescriptor{}, nil +} + +func NewMetricTestServer() (*MetricsTestServer, error) { + srv := grpc.NewServer(grpc.KeepaliveParams(keepalive.ServerParameters{Time: 5 * time.Minute})) + lis, err := net.Listen("tcp", "localhost:0") + if err != nil { + return nil, err + } + testServer := &MetricsTestServer{ + Endpoint: lis.Addr().String(), + lis: lis, + srv: srv, + } + + monitoringpb.RegisterMetricServiceServer( + srv, + &fakeMetricServiceServer{metricsTestServer: testServer}, + ) + + return testServer, nil +} + +func requireNoError(t *testing.T, err error) { + if err != nil { + t.Fatalf("Received unexpected error: \n%v", err) + } +} + +func assertNoError(t *testing.T, err error) { + if err != nil { + t.Errorf("Received unexpected error: \n%v", err) + } +} + +func assertErrorIs(t *testing.T, gotErr error, wantErr error) { + if !errors.Is(gotErr, wantErr) { + t.Errorf("error got: %v, want: %v", gotErr, wantErr) + } +} + +func assertEqual(t *testing.T, got, want interface{}) { + if !testutil.Equal(got, want) { + t.Errorf("got: %+v, want: %+v", got, want) + } + +} + +func TestExportMetrics(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 15*time.Minute) + defer cancel() + + testServer, err := NewMetricTestServer() + //nolint:errcheck + go testServer.Serve() + defer testServer.Shutdown() + assertNoError(t, err) + + res := &resource.Resource{} + + clientOpts := []option.ClientOption{ + option.WithEndpoint(testServer.Endpoint), + option.WithoutAuthentication(), + option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), + } + exporter, err := newMonitoringExporter(ctx, "PROJECT_ID_NOT_REAL", clientOpts...) + if err != nil { + t.Errorf("Error occurred when creating exporter: %v", err) + } + + // Reduce sampling period to reduce test run time + origSamplePeriod := defaultSamplePeriod + defaultSamplePeriod = 5 * time.Second + defer func() { + defaultSamplePeriod = origSamplePeriod + }() + provider := metric.NewMeterProvider( + metric.WithReader(metric.NewPeriodicReader(exporter, metric.WithInterval(defaultSamplePeriod))), + metric.WithResource(res), + ) + + //nolint:errcheck + defer func() { + err = provider.Shutdown(ctx) + assertNoError(t, err) + }() + + meterBuiltIn := provider.Meter(builtInMetricsMeterName) + counterBuiltIn, err := meterBuiltIn.Int64Counter("name.lastvalue") + requireNoError(t, err) + + meterNameNotBuiltIn := "testing" + meterNotbuiltIn := provider.Meter(meterNameNotBuiltIn) + counterNotBuiltIn, err := meterNotbuiltIn.Int64Counter("name.lastvalue") + requireNoError(t, err) + + // record start time + testStartTime := time.Now() + + // record data points + counterBuiltIn.Add(ctx, 1) + counterNotBuiltIn.Add(ctx, 1) + + // Calculate elapsed time + elapsedTime := time.Since(testStartTime) + if elapsedTime < 3*defaultSamplePeriod { + // Ensure at least 2 datapoints are recorded + time.Sleep(3*defaultSamplePeriod - elapsedTime) + } + + gotCalls := testServer.CreateServiceTimeSeriesRequests() + for _, gotCall := range gotCalls { + for _, ts := range gotCall.TimeSeries { + if strings.Contains(ts.Metric.Type, meterNameNotBuiltIn) { + t.Errorf("Exporter should only export builtin metrics") + } + } + } +} + +func TestExportCounter(t *testing.T) { + ctx := context.Background() + testServer, err := NewMetricTestServer() + //nolint:errcheck + go testServer.Serve() + defer testServer.Shutdown() + assertNoError(t, err) + + clientOpts := []option.ClientOption{ + option.WithEndpoint(testServer.Endpoint), + option.WithoutAuthentication(), + option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), + } + exporter, err := newMonitoringExporter(ctx, "PROJECT_ID_NOT_REAL", clientOpts...) + assertNoError(t, err) + provider := metric.NewMeterProvider( + metric.WithReader(metric.NewPeriodicReader(exporter)), + metric.WithResource( + resource.NewWithAttributes( + semconv.SchemaURL, + attribute.String("test_id", "abc123"), + )), + ) + + //nolint:errcheck + defer func() { + err = provider.Shutdown(ctx) + assertNoError(t, err) + }() + + // Start meter + meter := provider.Meter(builtInMetricsMeterName) + + // Register counter value + counter, err := meter.Int64Counter("counter-a") + assertNoError(t, err) + clabels := []attribute.KeyValue{attribute.Key("key").String("value")} + counter.Add(ctx, 100, otelmetric.WithAttributes(clabels...)) +} + +func TestExportHistogram(t *testing.T) { + ctx := context.Background() + testServer, err := NewMetricTestServer() + //nolint:errcheck + go testServer.Serve() + defer testServer.Shutdown() + assertNoError(t, err) + + clientOpts := []option.ClientOption{ + option.WithEndpoint(testServer.Endpoint), + option.WithoutAuthentication(), + option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), + } + exporter, err := newMonitoringExporter(ctx, "PROJECT_ID_NOT_REAL", clientOpts...) + assertNoError(t, err) + provider := metric.NewMeterProvider( + metric.WithReader(metric.NewPeriodicReader(exporter)), + metric.WithResource( + resource.NewWithAttributes( + semconv.SchemaURL, + attribute.String("test_id", "abc123"), + ), + ), + ) + assertNoError(t, err) + + //nolint:errcheck + defer func() { + err = provider.Shutdown(ctx) + assertNoError(t, err) + }() + + // Start meter + meter := provider.Meter(builtInMetricsMeterName) + + // Register counter value + counter, err := meter.Float64Histogram("counter-a") + assertNoError(t, err) + clabels := []attribute.KeyValue{attribute.Key("key").String("value")} + counter.Record(ctx, 100, otelmetric.WithAttributes(clabels...)) + counter.Record(ctx, 50, otelmetric.WithAttributes(clabels...)) + counter.Record(ctx, 200, otelmetric.WithAttributes(clabels...)) +} + +func TestRecordToMpb(t *testing.T) { + metricName := "testing" + + me := &monitoringExporter{} + + monitoredResLabelValueProject := "project01" + monitoredResLabelValueInstance := "instance01" + monitoredResLabelValueZone := "zone01" + monitoredResLabelValueTable := "table01" + monitoredResLabelValueCluster := "cluster01" + + inputAttributes := attribute.NewSet( + attribute.Key("a").String("A"), + attribute.Key("b").Int64(100), + attribute.Key(monitoredResLabelKeyProject).String(monitoredResLabelValueProject), + attribute.Key(monitoredResLabelKeyInstance).String(monitoredResLabelValueInstance), + attribute.Key(monitoredResLabelKeyZone).String(monitoredResLabelValueZone), + attribute.Key(monitoredResLabelKeyTable).String(monitoredResLabelValueTable), + attribute.Key(monitoredResLabelKeyCluster).String(monitoredResLabelValueCluster), + ) + inputMetrics := metricdata.Metrics{ + Name: metricName, + } + + wantMetric := &googlemetricpb.Metric{ + Type: fmt.Sprintf("%v%s", builtInMetricsMeterName, metricName), + Labels: map[string]string{ + "a": "A", + "b": "100", + }, + } + + wantMonitoredResource := &monitoredrespb.MonitoredResource{ + Type: "bigtable_client_raw", + Labels: map[string]string{ + monitoredResLabelKeyProject: monitoredResLabelValueProject, + monitoredResLabelKeyInstance: monitoredResLabelValueInstance, + monitoredResLabelKeyZone: monitoredResLabelValueZone, + monitoredResLabelKeyTable: monitoredResLabelValueTable, + monitoredResLabelKeyCluster: monitoredResLabelValueCluster, + }, + } + + gotMetric, gotMonitoredResource := me.recordToMetricAndMonitoredResourcePbs(inputMetrics, inputAttributes) + if !reflect.DeepEqual(wantMetric, gotMetric) { + t.Errorf("Metric: expected: %v, actual: %v", wantMetric, gotMetric) + } + if !reflect.DeepEqual(wantMonitoredResource, gotMonitoredResource) { + t.Errorf("Monitored resource: expected: %v, actual: %v", wantMonitoredResource, gotMonitoredResource) + } +} + +func TestTimeIntervalStaggering(t *testing.T) { + var tm time.Time + + interval, err := toNonemptyTimeIntervalpb(tm, tm) + if err != nil { + t.Fatalf("conversion to PB failed: %v", err) + } + + if err := interval.StartTime.CheckValid(); err != nil { + t.Fatalf("unable to convert start time from PB: %v", err) + } + start := interval.StartTime.AsTime() + + if err := interval.EndTime.CheckValid(); err != nil { + t.Fatalf("unable to convert end time to PB: %v", err) + } + end := interval.EndTime.AsTime() + + if end.Before(start.Add(time.Millisecond)) { + t.Fatalf("expected end=%v to be at least %v after start=%v, but it wasn't", end, time.Millisecond, start) + } +} + +func TestTimeIntervalPassthru(t *testing.T) { + var tm time.Time + + interval, err := toNonemptyTimeIntervalpb(tm, tm.Add(time.Second)) + if err != nil { + t.Fatalf("conversion to PB failed: %v", err) + } + + if err := interval.StartTime.CheckValid(); err != nil { + t.Fatalf("unable to convert start time from PB: %v", err) + } + start := interval.StartTime.AsTime() + + if err := interval.EndTime.CheckValid(); err != nil { + t.Fatalf("unable to convert end time to PB: %v", err) + } + end := interval.EndTime.AsTime() + + assertEqual(t, start, tm) + assertEqual(t, end, tm.Add(time.Second)) +} + +func TestConcurrentCallsAfterShutdown(t *testing.T) { + testServer, err := NewMetricTestServer() + //nolint:errcheck + go testServer.Serve() + defer testServer.Shutdown() + assertNoError(t, err) + + ctx := context.Background() + clientOpts := []option.ClientOption{ + option.WithEndpoint(testServer.Endpoint), + option.WithoutAuthentication(), + option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), + } + exporter, err := newMonitoringExporter(ctx, "PROJECT_ID_NOT_REAL", clientOpts...) + assertNoError(t, err) + + err = exporter.Shutdown(ctx) + assertNoError(t, err) + + var wg sync.WaitGroup + wg.Add(3) + + go func() { + err := exporter.Shutdown(ctx) + assertErrorIs(t, err, errShutdown) + wg.Done() + }() + go func() { + err := exporter.ForceFlush(ctx) + assertNoError(t, err) + wg.Done() + }() + go func() { + err := exporter.Export(ctx, &metricdata.ResourceMetrics{}) + assertErrorIs(t, err, errShutdown) + wg.Done() + }() + + wg.Wait() +} + +func TestConcurrentExport(t *testing.T) { + testServer, err := NewMetricTestServer() + //nolint:errcheck + go testServer.Serve() + defer testServer.Shutdown() + assertNoError(t, err) + + ctx := context.Background() + clientOpts := []option.ClientOption{ + option.WithEndpoint(testServer.Endpoint), + option.WithoutAuthentication(), + option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), + } + exporter, err := newMonitoringExporter(ctx, "PROJECT_ID_NOT_REAL", clientOpts...) + assertNoError(t, err) + + defer func() { + err := exporter.Shutdown(ctx) + assertNoError(t, err) + }() + + var wg sync.WaitGroup + wg.Add(2) + + go func() { + err := exporter.Export(ctx, &metricdata.ResourceMetrics{ + ScopeMetrics: []metricdata.ScopeMetrics{ + { + Metrics: []metricdata.Metrics{ + {Name: "testing", Data: metricdata.Histogram[float64]{}}, + {Name: "test/of/path", Data: metricdata.Histogram[float64]{}}, + }, + }, + }, + }) + assertNoError(t, err) + wg.Done() + }() + go func() { + err := exporter.Export(ctx, &metricdata.ResourceMetrics{ + ScopeMetrics: []metricdata.ScopeMetrics{ + { + Metrics: []metricdata.Metrics{ + {Name: "testing", Data: metricdata.Histogram[float64]{}}, + {Name: "test/of/path", Data: metricdata.Histogram[float64]{}}, + }, + }, + }, + }) + assertNoError(t, err) + wg.Done() + }() + + wg.Wait() +} + +func TestBatchingExport(t *testing.T) { + ctx := context.Background() + setup := func(t *testing.T) (metric.Exporter, *MetricsTestServer) { + testServer, err := NewMetricTestServer() + //nolint:errcheck + go testServer.Serve() + t.Cleanup(testServer.Shutdown) + + assertNoError(t, err) + + clientOpts := []option.ClientOption{ + option.WithEndpoint(testServer.Endpoint), + option.WithoutAuthentication(), + option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), + } + exporter, err := newMonitoringExporter(ctx, "PROJECT_ID_NOT_REAL", clientOpts...) + assertNoError(t, err) + + t.Cleanup(func() { + ctx := context.Background() + err := exporter.Shutdown(ctx) + assertNoError(t, err) + }) + + return exporter, testServer + } + + createMetrics := func(n int) []metricdata.Metrics { + inputMetrics := make([]metricdata.Metrics, n) + for i := 0; i < n; i++ { + inputMetrics[i] = metricdata.Metrics{Name: "testing", Data: metricdata.Histogram[float64]{ + DataPoints: []metricdata.HistogramDataPoint[float64]{ + {}, + }, + }} + } + + return inputMetrics + } + + for _, tc := range []struct { + desc string + numMetrics int + expectedCreateTSCalls int + }{ + {desc: "0 metrics"}, + { + desc: "150 metrics", + numMetrics: 150, + expectedCreateTSCalls: 1, + }, + { + desc: "200 metrics", + numMetrics: 200, + expectedCreateTSCalls: 1, + }, + { + desc: "201 metrics", + numMetrics: 201, + expectedCreateTSCalls: 2, + }, + { + desc: "500 metrics", + numMetrics: 500, + expectedCreateTSCalls: 3, + }, + { + desc: "1199 metrics", + numMetrics: 1199, + expectedCreateTSCalls: 6, + }, + } { + t.Run(tc.desc, func(t *testing.T) { + exporter, testServer := setup(t) + input := createMetrics(tc.numMetrics) + + err := exporter.Export(ctx, &metricdata.ResourceMetrics{ + ScopeMetrics: []metricdata.ScopeMetrics{ + { + Scope: instrumentation.Scope{ + Name: builtInMetricsMeterName, + }, + Metrics: input, + }, + }, + }) + assertNoError(t, err) + + gotCalls := testServer.CreateServiceTimeSeriesRequests() + assertEqual(t, len(gotCalls), tc.expectedCreateTSCalls) + }) + } +} diff --git a/bigtable/metrics_test.go b/bigtable/metrics_test.go new file mode 100644 index 000000000000..43b36dfc8fe7 --- /dev/null +++ b/bigtable/metrics_test.go @@ -0,0 +1,470 @@ +/* +Copyright 2024 Google LLC + +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. +*/ + +package bigtable + +import ( + "context" + "fmt" + "sort" + "strings" + "testing" + "time" + + "cloud.google.com/go/internal/testutil" + "github.com/google/go-cmp/cmp/cmpopts" + "go.opentelemetry.io/otel/attribute" + "google.golang.org/api/option" + btpb "google.golang.org/genproto/googleapis/bigtable/v2" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/credentials/insecure" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" + + "google.golang.org/grpc/metadata" +) + +var ( + clusterID1 = "cluster-id-1" + clusterID2 = "cluster-id-2" + zoneID1 = "zone-id-1" + + testHeaders, _ = proto.Marshal(&btpb.ResponseParams{ + ClusterId: &clusterID1, + ZoneId: &zoneID1, + }) + testTrailers, _ = proto.Marshal(&btpb.ResponseParams{ + ClusterId: &clusterID2, + ZoneId: &zoneID1, + }) + + testHeaderMD = &metadata.MD{ + locationMDKey: []string{string(testHeaders)}, + serverTimingMDKey: []string{"gfet4t7; dur=1234"}, + } + testTrailerMD = &metadata.MD{ + locationMDKey: []string{string(testTrailers)}, + serverTimingMDKey: []string{"gfet4t7; dur=5678"}, + } +) + +func equalErrs(gotErr error, wantErr error) bool { + if gotErr == nil && wantErr == nil { + return true + } + if gotErr == nil || wantErr == nil { + return false + } + return strings.Contains(gotErr.Error(), wantErr.Error()) +} + +func TestNewBuiltinMetricsTracerFactory(t *testing.T) { + ctx := context.Background() + project := "test-project" + instance := "test-instance" + appProfile := "test-app-profile" + clientUID := "test-uid" + + wantClientAttributes := []attribute.KeyValue{ + attribute.String(monitoredResLabelKeyProject, project), + attribute.String(monitoredResLabelKeyInstance, instance), + attribute.String(metricLabelKeyAppProfile, appProfile), + attribute.String(metricLabelKeyClientUID, clientUID), + attribute.String(metricLabelKeyClientName, clientName), + } + wantMetricNamesStdout := []string{metricNameAttemptLatencies, metricNameAttemptLatencies, metricNameOperationLatencies, metricNameRetryCount, metricNameServerLatencies} + wantMetricTypesGCM := []string{} + for _, wantMetricName := range wantMetricNamesStdout { + wantMetricTypesGCM = append(wantMetricTypesGCM, builtInMetricsMeterName+wantMetricName) + } + + // Reduce sampling period to reduce test run time + origSamplePeriod := defaultSamplePeriod + defaultSamplePeriod = 5 * time.Second + defer func() { + defaultSamplePeriod = origSamplePeriod + }() + + // return constant client UID instead of random, so that attributes can be compared + origGenerateClientUID := generateClientUID + generateClientUID = func() (string, error) { + return clientUID, nil + } + defer func() { + generateClientUID = origGenerateClientUID + }() + + // Setup mock monitoring server + monitoringServer, err := NewMetricTestServer() + if err != nil { + t.Fatalf("Error setting up metrics test server") + } + go monitoringServer.Serve() + defer monitoringServer.Shutdown() + origExporterOpts := exporterOpts + exporterOpts = []option.ClientOption{ + option.WithEndpoint(monitoringServer.Endpoint), + option.WithoutAuthentication(), + option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), + } + defer func() { + exporterOpts = origExporterOpts + }() + + // Setup fake Bigtable server + isFirstAttempt := true + headerAndErrorInjector := func(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error { + if strings.HasSuffix(info.FullMethod, "ReadRows") { + if isFirstAttempt { + // Fail first attempt + isFirstAttempt = false + return status.Error(codes.Unavailable, "Mock Unavailable error") + } + header := metadata.New(map[string]string{ + serverTimingMDKey: "gfet4t7; dur=123", + locationMDKey: string(testHeaders), + }) + ss.SendHeader(header) + } + return handler(srv, ss) + } + + tests := []struct { + desc string + config ClientConfig + wantBuiltinEnabled bool + setEmulator bool + wantCreateTSCallsCount int // No. of CreateTimeSeries calls + }{ + { + desc: "should create a new tracer factory with default meter provider", + config: ClientConfig{}, + wantBuiltinEnabled: true, + wantCreateTSCallsCount: 2, + }, + { + desc: "should create a new tracer factory with noop meter provider", + config: ClientConfig{MetricsProvider: NoopMetricsProvider{}}, + }, + { + desc: "should not create instruments when BIGTABLE_EMULATOR_HOST is set", + config: ClientConfig{}, + setEmulator: true, + }, + } + for _, test := range tests { + t.Run(test.desc, func(t *testing.T) { + if test.setEmulator { + // Set environment variable + t.Setenv("BIGTABLE_EMULATOR_HOST", "localhost:8086") + } + + // open table and compare errors + tbl, cleanup, gotErr := setupFakeServer(project, instance, test.config, grpc.StreamInterceptor(headerAndErrorInjector)) + defer cleanup() + if gotErr != nil { + t.Fatalf("err: got: %v, want: %v", gotErr, nil) + return + } + + gotClient := tbl.c + + if gotClient.metricsTracerFactory.enabled != test.wantBuiltinEnabled { + t.Errorf("builtinEnabled: got: %v, want: %v", gotClient.metricsTracerFactory.enabled, test.wantBuiltinEnabled) + } + + if diff := testutil.Diff(gotClient.metricsTracerFactory.clientAttributes, wantClientAttributes, + cmpopts.IgnoreUnexported(attribute.KeyValue{}, attribute.Value{})); diff != "" { + t.Errorf("clientAttributes: got=-, want=+ \n%v", diff) + } + + // Check instruments + gotNonNilInstruments := gotClient.metricsTracerFactory.operationLatencies != nil && + gotClient.metricsTracerFactory.serverLatencies != nil && + gotClient.metricsTracerFactory.attemptLatencies != nil && + gotClient.metricsTracerFactory.retryCount != nil + if test.wantBuiltinEnabled != gotNonNilInstruments { + t.Errorf("NonNilInstruments: got: %v, want: %v", gotNonNilInstruments, test.wantBuiltinEnabled) + } + + // record start time + testStartTime := time.Now() + + // pop out all old requests + monitoringServer.CreateServiceTimeSeriesRequests() + + // Perform read rows operation + isFirstAttempt = true + err := tbl.ReadRows(ctx, NewRange("a", "z"), func(r Row) bool { + return true + }) + if err != nil { + t.Fatalf("ReadRows failed: %v", err) + } + + // Calculate elapsed time + elapsedTime := time.Since(testStartTime) + if elapsedTime < 3*defaultSamplePeriod { + // Ensure at least 2 datapoints are recorded + time.Sleep(3*defaultSamplePeriod - elapsedTime) + } + + // Get new CreateServiceTimeSeriesRequests + gotCreateTSCalls := monitoringServer.CreateServiceTimeSeriesRequests() + for _, gotCreateTSCall := range gotCreateTSCalls { + gotMetricTypes := []string{} + for _, ts := range gotCreateTSCall.TimeSeries { + gotMetricTypes = append(gotMetricTypes, ts.Metric.Type) + } + sort.Strings(gotMetricTypes) + if !testutil.Equal(gotMetricTypes, wantMetricTypesGCM) { + t.Errorf("Metric types missing in req. got: %v, want: %v", gotMetricTypes, wantMetricTypesGCM) + } + } + + gotCreateTSCallsCount := len(gotCreateTSCalls) + if gotCreateTSCallsCount < test.wantCreateTSCallsCount { + t.Errorf("No. of CreateServiceTimeSeriesRequests: got: %v, want: %v", gotCreateTSCalls, test.wantCreateTSCallsCount) + } + }) + } +} + +func TestToOtelMetricAttrs(t *testing.T) { + mt := builtinMetricsTracer{ + tableName: "my-table", + method: "ReadRows", + isStreaming: true, + currOp: opTracer{ + status: codes.OK.String(), + currAttempt: attemptTracer{ + startTime: time.Now(), + clusterID: "my-cluster", + zoneID: "my-zone", + }, + attemptCount: 1, + }, + } + tests := []struct { + desc string + mt builtinMetricsTracer + metricName string + wantAttrs []attribute.KeyValue + wantError error + }{ + { + desc: "Known metric", + mt: mt, + metricName: metricNameOperationLatencies, + wantAttrs: []attribute.KeyValue{ + attribute.String(monitoredResLabelKeyTable, "my-table"), + attribute.String(metricLabelKeyMethod, "ReadRows"), + attribute.Bool(metricLabelKeyStreamingOperation, true), + attribute.String(metricLabelKeyStatus, codes.OK.String()), + attribute.String(monitoredResLabelKeyCluster, clusterID1), + attribute.String(monitoredResLabelKeyZone, zoneID1), + }, + wantError: nil, + }, + { + desc: "Unknown metric", + mt: mt, + metricName: "unknown_metric", + wantAttrs: []attribute.KeyValue{ + attribute.String(monitoredResLabelKeyTable, "my-table"), + attribute.String(metricLabelKeyMethod, "ReadRows"), + attribute.String(monitoredResLabelKeyCluster, clusterID1), + attribute.String(monitoredResLabelKeyZone, zoneID1), + }, + wantError: fmt.Errorf("unable to create attributes list for unknown metric: unknown_metric"), + }, + } + + lessKeyValue := func(a, b attribute.KeyValue) bool { return a.Key < b.Key } + for _, test := range tests { + t.Run(test.desc, func(t *testing.T) { + gotAttrs, gotErr := test.mt.toOtelMetricAttrs(test.metricName) + if !equalErrs(gotErr, test.wantError) { + t.Errorf("error got: %v, want: %v", gotErr, test.wantError) + } + if diff := testutil.Diff(gotAttrs, test.wantAttrs, + cmpopts.IgnoreUnexported(attribute.KeyValue{}, attribute.Value{}), + cmpopts.SortSlices(lessKeyValue)); diff != "" { + t.Errorf("got=-, want=+ \n%v", diff) + } + }) + } +} + +func TestGetServerLatency(t *testing.T) { + invalidFormat := "invalid format" + invalidFormatMD := metadata.MD{ + serverTimingMDKey: []string{invalidFormat}, + } + invalidFormatErr := fmt.Errorf("strconv.ParseFloat: parsing %q: invalid syntax", invalidFormat) + + tests := []struct { + desc string + headerMD metadata.MD + trailerMD metadata.MD + wantLatency float64 + wantError error + }{ + { + desc: "No server latency in header or trailer", + headerMD: metadata.MD{}, + trailerMD: metadata.MD{}, + wantLatency: 0, + wantError: fmt.Errorf("strconv.ParseFloat: parsing \"\": invalid syntax"), + }, + { + desc: "Server latency in header", + headerMD: metadata.MD{ + serverTimingMDKey: []string{"gfet4t7; dur=1234"}, + }, + trailerMD: metadata.MD{}, + wantLatency: 1234, + wantError: nil, + }, + { + desc: "Server latency in trailer", + headerMD: metadata.MD{}, + trailerMD: metadata.MD{ + serverTimingMDKey: []string{"gfet4t7; dur=5678"}, + }, + wantLatency: 5678, + wantError: nil, + }, + { + desc: "Server latency in both header and trailer", + headerMD: metadata.MD{ + serverTimingMDKey: []string{"gfet4t7; dur=1234"}, + }, + trailerMD: metadata.MD{ + serverTimingMDKey: []string{"gfet4t7; dur=5678"}, + }, + wantLatency: 1234, + wantError: nil, + }, + { + desc: "Invalid server latency format in header", + headerMD: invalidFormatMD, + trailerMD: metadata.MD{}, + wantLatency: 0, + wantError: invalidFormatErr, + }, + { + desc: "Invalid server latency format in trailer", + headerMD: metadata.MD{}, + trailerMD: invalidFormatMD, + wantLatency: 0, + wantError: invalidFormatErr, + }, + } + + for _, test := range tests { + t.Run(test.desc, func(t *testing.T) { + gotLatency, gotErr := extractServerLatency(test.headerMD, test.trailerMD) + if !equalErrs(gotErr, test.wantError) { + t.Errorf("error got: %v, want: %v", gotErr, test.wantError) + } + if gotLatency != test.wantLatency { + t.Errorf("latency got: %v, want: %v", gotLatency, test.wantLatency) + } + }) + } +} + +func TestGetLocation(t *testing.T) { + invalidFormatErr := "cannot parse invalid wire-format data" + tests := []struct { + desc string + headerMD metadata.MD + trailerMD metadata.MD + wantCluster string + wantZone string + wantError error + }{ + { + desc: "No location metadata in header or trailer", + headerMD: metadata.MD{}, + trailerMD: metadata.MD{}, + wantCluster: defaultCluster, + wantZone: defaultZone, + wantError: fmt.Errorf("failed to get location metadata"), + }, + { + desc: "Location metadata in header", + headerMD: *testHeaderMD, + trailerMD: metadata.MD{}, + wantCluster: clusterID1, + wantZone: zoneID1, + wantError: nil, + }, + { + desc: "Location metadata in trailer", + headerMD: metadata.MD{}, + trailerMD: *testTrailerMD, + wantCluster: clusterID2, + wantZone: zoneID1, + wantError: nil, + }, + { + desc: "Location metadata in both header and trailer", + headerMD: *testHeaderMD, + trailerMD: *testTrailerMD, + wantCluster: clusterID1, + wantZone: zoneID1, + wantError: nil, + }, + { + desc: "Invalid location metadata format in header", + headerMD: metadata.MD{ + locationMDKey: []string{"invalid format"}, + }, + trailerMD: metadata.MD{}, + wantCluster: defaultCluster, + wantZone: defaultZone, + wantError: fmt.Errorf(invalidFormatErr), + }, + { + desc: "Invalid location metadata format in trailer", + headerMD: metadata.MD{}, + trailerMD: metadata.MD{ + locationMDKey: []string{"invalid format"}, + }, + wantCluster: defaultCluster, + wantZone: defaultZone, + wantError: fmt.Errorf(invalidFormatErr), + }, + } + + for _, test := range tests { + t.Run(test.desc, func(t *testing.T) { + gotCluster, gotZone, gotErr := extractLocation(test.headerMD, test.trailerMD) + if gotCluster != test.wantCluster { + t.Errorf("cluster got: %v, want: %v", gotCluster, test.wantCluster) + } + if gotZone != test.wantZone { + t.Errorf("zone got: %v, want: %v", gotZone, test.wantZone) + } + if !equalErrs(gotErr, test.wantError) { + t.Errorf("error got: %v, want: %v", gotErr, test.wantError) + } + }) + } +} diff --git a/bigtable/retry_test.go b/bigtable/retry_test.go index 9d59175cc28e..e92c79652d66 100644 --- a/bigtable/retry_test.go +++ b/bigtable/retry_test.go @@ -33,7 +33,7 @@ import ( "google.golang.org/protobuf/types/known/wrapperspb" ) -func setupFakeServer(opt ...grpc.ServerOption) (tbl *Table, cleanup func(), err error) { +func setupFakeServer(project, instance string, config ClientConfig, opt ...grpc.ServerOption) (tbl *Table, cleanup func(), err error) { srv, err := bttest.NewServer("localhost:0", opt...) if err != nil { return nil, nil, err @@ -43,12 +43,12 @@ func setupFakeServer(opt ...grpc.ServerOption) (tbl *Table, cleanup func(), err return nil, nil, err } - client, err := NewClient(context.Background(), "client", "instance", option.WithGRPCConn(conn), option.WithGRPCDialOption(grpc.WithBlock())) + client, err := NewClientWithConfig(context.Background(), project, instance, config, option.WithGRPCConn(conn), option.WithGRPCDialOption(grpc.WithBlock())) if err != nil { return nil, nil, err } - adminClient, err := NewAdminClient(context.Background(), "client", "instance", option.WithGRPCConn(conn), option.WithGRPCDialOption(grpc.WithBlock())) + adminClient, err := NewAdminClient(context.Background(), project, instance, option.WithGRPCConn(conn), option.WithGRPCDialOption(grpc.WithBlock())) if err != nil { return nil, nil, err } @@ -68,6 +68,10 @@ func setupFakeServer(opt ...grpc.ServerOption) (tbl *Table, cleanup func(), err return t, cleanupFunc, nil } +func setupDefaultFakeServer(opt ...grpc.ServerOption) (tbl *Table, cleanup func(), err error) { + return setupFakeServer("client", "instance", ClientConfig{}, opt...) +} + func TestRetryApply(t *testing.T) { ctx := context.Background() @@ -82,7 +86,7 @@ func TestRetryApply(t *testing.T) { } return handler(ctx, req) } - tbl, cleanup, err := setupFakeServer(grpc.UnaryInterceptor(errInjector)) + tbl, cleanup, err := setupDefaultFakeServer(grpc.UnaryInterceptor(errInjector)) if err != nil { t.Fatalf("fake server setup: %v", err) } @@ -176,7 +180,7 @@ func TestRetryApplyBulk_OverallRequestFailure(t *testing.T) { return handler(ctx, ss) } - tbl, cleanup, err := setupFakeServer(grpc.StreamInterceptor(errInjector)) + tbl, cleanup, err := setupDefaultFakeServer(grpc.StreamInterceptor(errInjector)) defer cleanup() if err != nil { t.Fatalf("fake server setup: %v", err) @@ -233,7 +237,7 @@ func TestRetryApplyBulk_FailuresAndRetriesInOneRequest(t *testing.T) { return handler(ctx, ss) } - tbl, cleanup, err := setupFakeServer(grpc.StreamInterceptor(errInjector)) + tbl, cleanup, err := setupDefaultFakeServer(grpc.StreamInterceptor(errInjector)) defer cleanup() if err != nil { t.Fatalf("fake server setup: %v", err) @@ -281,7 +285,7 @@ func TestRetryApplyBulk_UnretryableErrors(t *testing.T) { return handler(ctx, ss) } - tbl, cleanup, err := setupFakeServer(grpc.StreamInterceptor(errInjector)) + tbl, cleanup, err := setupDefaultFakeServer(grpc.StreamInterceptor(errInjector)) defer cleanup() if err != nil { t.Fatalf("fake server setup: %v", err) @@ -329,7 +333,7 @@ func TestRetryApplyBulk_IndividualErrorsAndDeadlineExceeded(t *testing.T) { return handler(ctx, ss) } - tbl, cleanup, err := setupFakeServer(grpc.StreamInterceptor(errInjector)) + tbl, cleanup, err := setupDefaultFakeServer(grpc.StreamInterceptor(errInjector)) defer cleanup() if err != nil { t.Fatalf("fake server setup: %v", err) @@ -346,8 +350,8 @@ func TestRetryApplyBulk_IndividualErrorsAndDeadlineExceeded(t *testing.T) { ctx, cancel := context.WithTimeout(ctx, -10*time.Millisecond) defer cancel() errors, err := tbl.ApplyBulk(ctx, []string{"row1", "row2", "row3"}, []*Mutation{m1, m2, m3}) - wantErr := context.DeadlineExceeded - if wantErr != err { + wantErr := status.Error(codes.DeadlineExceeded, context.DeadlineExceeded.Error()) + if !equalErrs(wantErr, err) { t.Fatalf("deadline exceeded error: got: %v, want: %v", err, wantErr) } if errors != nil { @@ -405,7 +409,7 @@ func TestRetryReadRows(t *testing.T) { return handler(ctx, ss) } - tbl, cleanup, err := setupFakeServer(grpc.StreamInterceptor(errInjector)) + tbl, cleanup, err := setupDefaultFakeServer(grpc.StreamInterceptor(errInjector)) defer cleanup() if err != nil { t.Fatalf("fake server setup: %v", err) @@ -476,7 +480,7 @@ func TestRetryReverseReadRows(t *testing.T) { return handler(ctx, ss) } - tbl, cleanup, err := setupFakeServer(grpc.StreamInterceptor(errInjector)) + tbl, cleanup, err := setupDefaultFakeServer(grpc.StreamInterceptor(errInjector)) defer cleanup() if err != nil { t.Fatalf("fake server setup: %v", err) diff --git a/billing/CHANGES.md b/billing/CHANGES.md index 3d09a26c7fc9..905659576948 100644 --- a/billing/CHANGES.md +++ b/billing/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.18.9](https://github.com/googleapis/google-cloud-go/compare/billing/v1.18.8...billing/v1.18.9) (2024-07-24) + + +### Bug Fixes + +* **billing:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.18.8](https://github.com/googleapis/google-cloud-go/compare/billing/v1.18.7...billing/v1.18.8) (2024-07-10) diff --git a/billing/internal/version.go b/billing/internal/version.go index 6d62038b2054..f146bf5a2723 100644 --- a/billing/internal/version.go +++ b/billing/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.18.8" +const Version = "1.18.9" diff --git a/binaryauthorization/CHANGES.md b/binaryauthorization/CHANGES.md index 5f731be2465b..f5cd44492933 100644 --- a/binaryauthorization/CHANGES.md +++ b/binaryauthorization/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.8.7](https://github.com/googleapis/google-cloud-go/compare/binaryauthorization/v1.8.6...binaryauthorization/v1.8.7) (2024-07-24) + + +### Bug Fixes + +* **binaryauthorization:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.8.6](https://github.com/googleapis/google-cloud-go/compare/binaryauthorization/v1.8.5...binaryauthorization/v1.8.6) (2024-07-10) diff --git a/binaryauthorization/internal/version.go b/binaryauthorization/internal/version.go index 65881bad7415..999107bf7fed 100644 --- a/binaryauthorization/internal/version.go +++ b/binaryauthorization/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.8.6" +const Version = "1.8.7" diff --git a/certificatemanager/CHANGES.md b/certificatemanager/CHANGES.md index 8011779da08e..39b17c508b7a 100644 --- a/certificatemanager/CHANGES.md +++ b/certificatemanager/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.8.5](https://github.com/googleapis/google-cloud-go/compare/certificatemanager/v1.8.4...certificatemanager/v1.8.5) (2024-07-24) + + +### Bug Fixes + +* **certificatemanager:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.8.4](https://github.com/googleapis/google-cloud-go/compare/certificatemanager/v1.8.3...certificatemanager/v1.8.4) (2024-07-10) diff --git a/certificatemanager/internal/version.go b/certificatemanager/internal/version.go index 5e9fc561f135..3f0d9360fa12 100644 --- a/certificatemanager/internal/version.go +++ b/certificatemanager/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.8.4" +const Version = "1.8.5" diff --git a/channel/CHANGES.md b/channel/CHANGES.md index 9436c32be822..b6b6164114de 100644 --- a/channel/CHANGES.md +++ b/channel/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.17.11](https://github.com/googleapis/google-cloud-go/compare/channel/v1.17.10...channel/v1.17.11) (2024-07-24) + + +### Bug Fixes + +* **channel:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.17.10](https://github.com/googleapis/google-cloud-go/compare/channel/v1.17.9...channel/v1.17.10) (2024-07-10) diff --git a/chat/CHANGES.md b/chat/CHANGES.md index 4b3506824339..a59266e64c0b 100644 --- a/chat/CHANGES.md +++ b/chat/CHANGES.md @@ -1,5 +1,17 @@ # Changelog +## [0.3.0](https://github.com/googleapis/google-cloud-go/compare/chat/v0.2.0...chat/v0.3.0) (2024-07-24) + + +### Features + +* **chat:** Add GetSpaceEvent and ListSpaceEvents APIs ([#10540](https://github.com/googleapis/google-cloud-go/issues/10540)) ([432de64](https://github.com/googleapis/google-cloud-go/commit/432de6473f74860812871ebc3ab930f04c0a65a8)) + + +### Bug Fixes + +* **chat:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.2.0](https://github.com/googleapis/google-cloud-go/compare/chat/v0.1.3...chat/v0.2.0) (2024-07-10) diff --git a/chat/internal/version.go b/chat/internal/version.go index 6b729aaad7d2..e5dd60387ff3 100644 --- a/chat/internal/version.go +++ b/chat/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.2.0" +const Version = "0.3.0" diff --git a/cloudbuild/CHANGES.md b/cloudbuild/CHANGES.md index cca70dd5c444..f2fbbff6d353 100644 --- a/cloudbuild/CHANGES.md +++ b/cloudbuild/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.16.5](https://github.com/googleapis/google-cloud-go/compare/cloudbuild/v1.16.4...cloudbuild/v1.16.5) (2024-07-24) + + +### Bug Fixes + +* **cloudbuild:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.16.4](https://github.com/googleapis/google-cloud-go/compare/cloudbuild/v1.16.3...cloudbuild/v1.16.4) (2024-07-10) diff --git a/cloudbuild/internal/version.go b/cloudbuild/internal/version.go index 39d1b5a7eb9b..616b0e2747e3 100644 --- a/cloudbuild/internal/version.go +++ b/cloudbuild/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.16.4" +const Version = "1.16.5" diff --git a/cloudcontrolspartner/CHANGES.md b/cloudcontrolspartner/CHANGES.md index 3f293a6eca86..038873146fea 100644 --- a/cloudcontrolspartner/CHANGES.md +++ b/cloudcontrolspartner/CHANGES.md @@ -2,6 +2,13 @@ +## [1.0.3](https://github.com/googleapis/google-cloud-go/compare/cloudcontrolspartner/v1.0.2...cloudcontrolspartner/v1.0.3) (2024-07-24) + + +### Bug Fixes + +* **cloudcontrolspartner:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.0.2](https://github.com/googleapis/google-cloud-go/compare/cloudcontrolspartner/v1.0.1...cloudcontrolspartner/v1.0.2) (2024-07-10) diff --git a/cloudcontrolspartner/internal/version.go b/cloudcontrolspartner/internal/version.go index 2d93b19cba4f..e8739e33ee34 100644 --- a/cloudcontrolspartner/internal/version.go +++ b/cloudcontrolspartner/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.0.2" +const Version = "1.0.3" diff --git a/clouddms/CHANGES.md b/clouddms/CHANGES.md index 59e3dbf40792..12ed2098deec 100644 --- a/clouddms/CHANGES.md +++ b/clouddms/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.7.10](https://github.com/googleapis/google-cloud-go/compare/clouddms/v1.7.9...clouddms/v1.7.10) (2024-07-24) + + +### Bug Fixes + +* **clouddms:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.7.9](https://github.com/googleapis/google-cloud-go/compare/clouddms/v1.7.8...clouddms/v1.7.9) (2024-07-10) diff --git a/clouddms/internal/version.go b/clouddms/internal/version.go index e541719166d2..f020841b5d13 100644 --- a/clouddms/internal/version.go +++ b/clouddms/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.7.9" +const Version = "1.7.10" diff --git a/cloudprofiler/CHANGES.md b/cloudprofiler/CHANGES.md index b0345228118f..082a8c273c16 100644 --- a/cloudprofiler/CHANGES.md +++ b/cloudprofiler/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [0.3.5](https://github.com/googleapis/google-cloud-go/compare/cloudprofiler/v0.3.4...cloudprofiler/v0.3.5) (2024-07-24) + + +### Bug Fixes + +* **cloudprofiler:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.3.4](https://github.com/googleapis/google-cloud-go/compare/cloudprofiler/v0.3.3...cloudprofiler/v0.3.4) (2024-07-10) diff --git a/cloudprofiler/internal/version.go b/cloudprofiler/internal/version.go index 49d7fd8218ed..c5d790f0b6a6 100644 --- a/cloudprofiler/internal/version.go +++ b/cloudprofiler/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.3.4" +const Version = "0.3.5" diff --git a/cloudquotas/CHANGES.md b/cloudquotas/CHANGES.md index 95cc9b8e0994..30b212c90b93 100644 --- a/cloudquotas/CHANGES.md +++ b/cloudquotas/CHANGES.md @@ -2,6 +2,13 @@ +## [1.0.3](https://github.com/googleapis/google-cloud-go/compare/cloudquotas/v1.0.2...cloudquotas/v1.0.3) (2024-07-24) + + +### Bug Fixes + +* **cloudquotas:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.0.2](https://github.com/googleapis/google-cloud-go/compare/cloudquotas/v1.0.1...cloudquotas/v1.0.2) (2024-07-10) diff --git a/cloudquotas/internal/version.go b/cloudquotas/internal/version.go index 2d93b19cba4f..e8739e33ee34 100644 --- a/cloudquotas/internal/version.go +++ b/cloudquotas/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.0.2" +const Version = "1.0.3" diff --git a/cloudtasks/CHANGES.md b/cloudtasks/CHANGES.md index 2e5ca5d1b25e..80a6054b2cb1 100644 --- a/cloudtasks/CHANGES.md +++ b/cloudtasks/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.12.12](https://github.com/googleapis/google-cloud-go/compare/cloudtasks/v1.12.11...cloudtasks/v1.12.12) (2024-07-24) + + +### Bug Fixes + +* **cloudtasks:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.12.11](https://github.com/googleapis/google-cloud-go/compare/cloudtasks/v1.12.10...cloudtasks/v1.12.11) (2024-07-10) diff --git a/commerce/CHANGES.md b/commerce/CHANGES.md index 27d93a7ecc33..013254c22dc7 100644 --- a/commerce/CHANGES.md +++ b/commerce/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.0.4](https://github.com/googleapis/google-cloud-go/compare/commerce/v1.0.3...commerce/v1.0.4) (2024-07-24) + + +### Bug Fixes + +* **commerce:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.0.3](https://github.com/googleapis/google-cloud-go/compare/commerce/v1.0.2...commerce/v1.0.3) (2024-07-10) diff --git a/commerce/internal/version.go b/commerce/internal/version.go index ceacc1110ea3..0e104fcfb551 100644 --- a/commerce/internal/version.go +++ b/commerce/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.0.3" +const Version = "1.0.4" diff --git a/compute/CHANGES.md b/compute/CHANGES.md index 2aca367d729d..4b53502aeed2 100644 --- a/compute/CHANGES.md +++ b/compute/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.27.4](https://github.com/googleapis/google-cloud-go/compare/compute/v1.27.3...compute/v1.27.4) (2024-07-24) + + +### Bug Fixes + +* **compute:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.27.3](https://github.com/googleapis/google-cloud-go/compare/compute/v1.27.2...compute/v1.27.3) (2024-07-10) diff --git a/compute/internal/version.go b/compute/internal/version.go index 669938037142..234f66315c2e 100644 --- a/compute/internal/version.go +++ b/compute/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.27.3" +const Version = "1.27.4" diff --git a/confidentialcomputing/CHANGES.md b/confidentialcomputing/CHANGES.md index 129902ef55bd..23a4f0465261 100644 --- a/confidentialcomputing/CHANGES.md +++ b/confidentialcomputing/CHANGES.md @@ -1,6 +1,18 @@ # Changelog +## [1.6.0](https://github.com/googleapis/google-cloud-go/compare/confidentialcomputing/v1.5.4...confidentialcomputing/v1.6.0) (2024-07-24) + + +### Features + +* **confidentialcomputing:** Add a new field `tee_attestation` to `VerifyAttestationRequest` message proto for SEV SNP and TDX attestations ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) + + +### Bug Fixes + +* **confidentialcomputing:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.5.4](https://github.com/googleapis/google-cloud-go/compare/confidentialcomputing/v1.5.3...confidentialcomputing/v1.5.4) (2024-07-10) diff --git a/confidentialcomputing/internal/version.go b/confidentialcomputing/internal/version.go index e3cacbd58d29..6197e0d538bb 100644 --- a/confidentialcomputing/internal/version.go +++ b/confidentialcomputing/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.5.4" +const Version = "1.6.0" diff --git a/config/CHANGES.md b/config/CHANGES.md index ad58d84c42b8..86ad72538fb2 100644 --- a/config/CHANGES.md +++ b/config/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.0.4](https://github.com/googleapis/google-cloud-go/compare/config/v1.0.3...config/v1.0.4) (2024-07-24) + + +### Bug Fixes + +* **config:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.0.3](https://github.com/googleapis/google-cloud-go/compare/config/v1.0.2...config/v1.0.3) (2024-07-10) diff --git a/config/internal/version.go b/config/internal/version.go index ceacc1110ea3..0e104fcfb551 100644 --- a/config/internal/version.go +++ b/config/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.0.3" +const Version = "1.0.4" diff --git a/contactcenterinsights/CHANGES.md b/contactcenterinsights/CHANGES.md index 723bed051f59..294787d6805d 100644 --- a/contactcenterinsights/CHANGES.md +++ b/contactcenterinsights/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.13.6](https://github.com/googleapis/google-cloud-go/compare/contactcenterinsights/v1.13.5...contactcenterinsights/v1.13.6) (2024-07-24) + + +### Bug Fixes + +* **contactcenterinsights:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.13.5](https://github.com/googleapis/google-cloud-go/compare/contactcenterinsights/v1.13.4...contactcenterinsights/v1.13.5) (2024-07-10) diff --git a/contactcenterinsights/internal/version.go b/contactcenterinsights/internal/version.go index c7e60e4edbca..f2a7aa3a2d4c 100644 --- a/contactcenterinsights/internal/version.go +++ b/contactcenterinsights/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.13.5" +const Version = "1.13.6" diff --git a/container/CHANGES.md b/container/CHANGES.md index ce40f3abd4f4..b7528408041f 100644 --- a/container/CHANGES.md +++ b/container/CHANGES.md @@ -1,5 +1,25 @@ # Changes +## [1.38.0](https://github.com/googleapis/google-cloud-go/compare/container/v1.37.3...container/v1.38.0) (2024-07-24) + + +### Features + +* **container:** Add DCGM enum in monitoring config ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) +* **container:** Support for Ray Clusters ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) + + +### Bug Fixes + +* **container:** Deprecate "EXPERIMENTAL" option for Gateway API (this value has never been supported) ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) +* **container:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + + +### Documentation + +* **container:** Minor updates to reference documentation ([#10579](https://github.com/googleapis/google-cloud-go/issues/10579)) ([ddbc02b](https://github.com/googleapis/google-cloud-go/commit/ddbc02b8630b7cc9d49d1692e317521db7a8b825)) +* **container:** Trivial updates ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) + ## [1.37.3](https://github.com/googleapis/google-cloud-go/compare/container/v1.37.2...container/v1.37.3) (2024-07-10) diff --git a/container/internal/version.go b/container/internal/version.go index b00679639f4a..8d99cbc09de0 100644 --- a/container/internal/version.go +++ b/container/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.37.3" +const Version = "1.38.0" diff --git a/containeranalysis/CHANGES.md b/containeranalysis/CHANGES.md index 429c44436d5d..739c9849002a 100644 --- a/containeranalysis/CHANGES.md +++ b/containeranalysis/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.12.1](https://github.com/googleapis/google-cloud-go/compare/containeranalysis/v0.12.0...containeranalysis/v0.12.1) (2024-07-24) + + +### Bug Fixes + +* **containeranalysis:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.12.0](https://github.com/googleapis/google-cloud-go/compare/containeranalysis/v0.11.8...containeranalysis/v0.12.0) (2024-07-10) diff --git a/containeranalysis/internal/version.go b/containeranalysis/internal/version.go index 1aee945c44bc..90267091afad 100644 --- a/containeranalysis/internal/version.go +++ b/containeranalysis/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.12.0" +const Version = "0.12.1" diff --git a/datacatalog/CHANGES.md b/datacatalog/CHANGES.md index b241bdc0ae44..e76abc3ad7a8 100644 --- a/datacatalog/CHANGES.md +++ b/datacatalog/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.20.5](https://github.com/googleapis/google-cloud-go/compare/datacatalog/v1.20.4...datacatalog/v1.20.5) (2024-07-24) + + +### Bug Fixes + +* **datacatalog:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.20.4](https://github.com/googleapis/google-cloud-go/compare/datacatalog/v1.20.3...datacatalog/v1.20.4) (2024-07-10) diff --git a/datacatalog/internal/version.go b/datacatalog/internal/version.go index b3799f0518e5..68f35c5e3e39 100644 --- a/datacatalog/internal/version.go +++ b/datacatalog/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.20.4" +const Version = "1.20.5" diff --git a/dataflow/CHANGES.md b/dataflow/CHANGES.md index 56a12cabc7ae..579b972fb12c 100644 --- a/dataflow/CHANGES.md +++ b/dataflow/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.9.11](https://github.com/googleapis/google-cloud-go/compare/dataflow/v0.9.10...dataflow/v0.9.11) (2024-07-24) + + +### Bug Fixes + +* **dataflow:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.9.10](https://github.com/googleapis/google-cloud-go/compare/dataflow/v0.9.9...dataflow/v0.9.10) (2024-07-10) diff --git a/dataform/CHANGES.md b/dataform/CHANGES.md index 83126c60f3fe..1393b52daa4c 100644 --- a/dataform/CHANGES.md +++ b/dataform/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [0.9.8](https://github.com/googleapis/google-cloud-go/compare/dataform/v0.9.7...dataform/v0.9.8) (2024-07-24) + + +### Bug Fixes + +* **dataform:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.9.7](https://github.com/googleapis/google-cloud-go/compare/dataform/v0.9.6...dataform/v0.9.7) (2024-07-10) diff --git a/dataform/internal/version.go b/dataform/internal/version.go index 8f7628bc0f79..77ef2e84a973 100644 --- a/dataform/internal/version.go +++ b/dataform/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.9.7" +const Version = "0.9.8" diff --git a/datafusion/CHANGES.md b/datafusion/CHANGES.md index fcdf52eed134..c32ed7ef3405 100644 --- a/datafusion/CHANGES.md +++ b/datafusion/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.7.11](https://github.com/googleapis/google-cloud-go/compare/datafusion/v1.7.10...datafusion/v1.7.11) (2024-07-24) + + +### Bug Fixes + +* **datafusion:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.7.10](https://github.com/googleapis/google-cloud-go/compare/datafusion/v1.7.9...datafusion/v1.7.10) (2024-07-10) diff --git a/datalabeling/CHANGES.md b/datalabeling/CHANGES.md index 5393af4e455a..991545a679fe 100644 --- a/datalabeling/CHANGES.md +++ b/datalabeling/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.8.11](https://github.com/googleapis/google-cloud-go/compare/datalabeling/v0.8.10...datalabeling/v0.8.11) (2024-07-24) + + +### Bug Fixes + +* **datalabeling:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.8.10](https://github.com/googleapis/google-cloud-go/compare/datalabeling/v0.8.9...datalabeling/v0.8.10) (2024-07-10) diff --git a/dataplex/CHANGES.md b/dataplex/CHANGES.md index 773f14346fd0..28e6a219ff58 100644 --- a/dataplex/CHANGES.md +++ b/dataplex/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.18.2](https://github.com/googleapis/google-cloud-go/compare/dataplex/v1.18.1...dataplex/v1.18.2) (2024-07-24) + + +### Bug Fixes + +* **dataplex:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.18.1](https://github.com/googleapis/google-cloud-go/compare/dataplex/v1.18.0...dataplex/v1.18.1) (2024-07-10) diff --git a/dataplex/internal/version.go b/dataplex/internal/version.go index 893623152e24..197f7f8d335a 100644 --- a/dataplex/internal/version.go +++ b/dataplex/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.18.1" +const Version = "1.18.2" diff --git a/dataproc/CHANGES.md b/dataproc/CHANGES.md index 834b003241b5..320531bfd061 100644 --- a/dataproc/CHANGES.md +++ b/dataproc/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [2.5.3](https://github.com/googleapis/google-cloud-go/compare/dataproc/v2.5.2...dataproc/v2.5.3) (2024-07-24) + + +### Bug Fixes + +* **dataproc/v2:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [2.5.2](https://github.com/googleapis/google-cloud-go/compare/dataproc/v2.5.1...dataproc/v2.5.2) (2024-07-10) diff --git a/dataproc/internal/version.go b/dataproc/internal/version.go index 8a55253d9564..ab10e885f00c 100644 --- a/dataproc/internal/version.go +++ b/dataproc/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "2.5.2" +const Version = "2.5.3" diff --git a/dataqna/CHANGES.md b/dataqna/CHANGES.md index 257ecba2be3d..8e2662b8dabc 100644 --- a/dataqna/CHANGES.md +++ b/dataqna/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.8.11](https://github.com/googleapis/google-cloud-go/compare/dataqna/v0.8.10...dataqna/v0.8.11) (2024-07-24) + + +### Bug Fixes + +* **dataqna:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.8.10](https://github.com/googleapis/google-cloud-go/compare/dataqna/v0.8.9...dataqna/v0.8.10) (2024-07-10) diff --git a/datastream/CHANGES.md b/datastream/CHANGES.md index 26e2199c19c9..d074f8980d4e 100644 --- a/datastream/CHANGES.md +++ b/datastream/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.10.10](https://github.com/googleapis/google-cloud-go/compare/datastream/v1.10.9...datastream/v1.10.10) (2024-07-24) + + +### Bug Fixes + +* **datastream:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.10.9](https://github.com/googleapis/google-cloud-go/compare/datastream/v1.10.8...datastream/v1.10.9) (2024-07-10) diff --git a/datastream/internal/version.go b/datastream/internal/version.go index 7f12581b9aaf..3bec427006ab 100644 --- a/datastream/internal/version.go +++ b/datastream/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.10.9" +const Version = "1.10.10" diff --git a/deploy/CHANGES.md b/deploy/CHANGES.md index fba8f13aa2ce..dd0baed90405 100644 --- a/deploy/CHANGES.md +++ b/deploy/CHANGES.md @@ -1,6 +1,26 @@ # Changes +## [1.20.0](https://github.com/googleapis/google-cloud-go/compare/deploy/v1.19.3...deploy/v1.20.0) (2024-07-24) + + +### Features + +* **deploy:** Added support for configuring a proxy_url to a Kubernetes server ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **deploy:** Added support for deploy policies ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **deploy:** Added support for new custom target type and deploy policy platform logs ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) + + +### Bug Fixes + +* **deploy:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + + +### Documentation + +* **deploy:** Small Cloud Deploy API documentation updates ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **deploy:** Small corrections to Cloud Deploy API documentation ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) + ## [1.19.3](https://github.com/googleapis/google-cloud-go/compare/deploy/v1.19.2...deploy/v1.19.3) (2024-07-10) diff --git a/deploy/internal/version.go b/deploy/internal/version.go index 7513e24cc7b0..0b0f0e914120 100644 --- a/deploy/internal/version.go +++ b/deploy/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.19.3" +const Version = "1.20.0" diff --git a/developerconnect/CHANGES.md b/developerconnect/CHANGES.md index 7e5ed7825906..db104efbc83b 100644 --- a/developerconnect/CHANGES.md +++ b/developerconnect/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [0.1.3](https://github.com/googleapis/google-cloud-go/compare/developerconnect/v0.1.2...developerconnect/v0.1.3) (2024-07-24) + + +### Bug Fixes + +* **developerconnect:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.1.2](https://github.com/googleapis/google-cloud-go/compare/developerconnect/v0.1.1...developerconnect/v0.1.2) (2024-07-10) diff --git a/developerconnect/internal/version.go b/developerconnect/internal/version.go index 7196f28b8f6e..14256f5b3c99 100644 --- a/developerconnect/internal/version.go +++ b/developerconnect/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.1.2" +const Version = "0.1.3" diff --git a/dialogflow/CHANGES.md b/dialogflow/CHANGES.md index 929153ff6d4c..e2305bc49b0c 100644 --- a/dialogflow/CHANGES.md +++ b/dialogflow/CHANGES.md @@ -1,5 +1,37 @@ # Changes +## [1.55.0](https://github.com/googleapis/google-cloud-go/compare/dialogflow/v1.54.3...dialogflow/v1.55.0) (2024-07-24) + + +### Features + +* **dialogflow/cx:** Added support for consent based redaction ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Added support for lock flow ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Added support for lock flow ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Added support for multi language settings in flow ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Added support for oauth and service agent auth for webhook. ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Added support for service directory in tools ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Added support for service directory in tools ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Added support for transit to playbook from page ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Expose PersonalizationSettings & SpeechSettings in v3 API. ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Expose store tts option in security settings ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Exposed DataStoreConnectionSignals ([#10543](https://github.com/googleapis/google-cloud-go/issues/10543)) ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Exposed model name in DataStoreConnectionSignals ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) + + +### Bug Fixes + +* **dialogflow:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + + +### Documentation + +* **dialogflow/cx:** Clarified wording around audio redaction ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Clarified wording around enable_stackdriver_logging & enable_interaction_logging ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Clarified wording around enable_stackdriver_logging & enable_interaction_logging ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Clarified wording around start point of test config. ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **dialogflow/cx:** Clarified wording around start point of test config. ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) + ## [1.54.3](https://github.com/googleapis/google-cloud-go/compare/dialogflow/v1.54.2...dialogflow/v1.54.3) (2024-07-10) diff --git a/dialogflow/internal/version.go b/dialogflow/internal/version.go index 28c22bbde421..259fcb0fc0cf 100644 --- a/dialogflow/internal/version.go +++ b/dialogflow/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.54.3" +const Version = "1.55.0" diff --git a/discoveryengine/CHANGES.md b/discoveryengine/CHANGES.md index 4cde48b558e4..685ad5960fbc 100644 --- a/discoveryengine/CHANGES.md +++ b/discoveryengine/CHANGES.md @@ -1,6 +1,33 @@ # Changelog +## [1.10.0](https://github.com/googleapis/google-cloud-go/compare/discoveryengine/v1.9.0...discoveryengine/v1.10.0) (2024-07-24) + + +### Features + +* **discoveryengine:** A new resource pattern value `projects/{project}/locations/{location}/sampleQuerySets/{sample_query_set}/sampleQueries/{sample_query}` added to the resource definition `discoveryengine.googleapis.com/SampleQuery` ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **discoveryengine:** A new resource pattern value `projects/{project}/locations/{location}/sampleQuerySets/{sample_query_set}` added to the resource definition `discoveryengine.googleapis.com/SampleQuerySet` ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **discoveryengine:** Add Chunk resource in the search response ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **discoveryengine:** Add evaluation APIs ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **discoveryengine:** Add evaluation APIs ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **discoveryengine:** Add sample query APIs ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **discoveryengine:** Add sample query APIs ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **discoveryengine:** Add sample query set APIs ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **discoveryengine:** Add sample query set APIs ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) + + +### Bug Fixes + +* **discoveryengine:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) +* **discoveryengine:** Update sample query, sample query set patterns ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) + + +### Documentation + +* **discoveryengine:** Keep the API doc up-to-date with recent changes ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **discoveryengine:** Keep the API doc up-to-date with recent changes ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) + ## [1.9.0](https://github.com/googleapis/google-cloud-go/compare/discoveryengine/v1.8.2...discoveryengine/v1.9.0) (2024-07-10) diff --git a/discoveryengine/internal/version.go b/discoveryengine/internal/version.go index df3675929956..6cac2ca4427d 100644 --- a/discoveryengine/internal/version.go +++ b/discoveryengine/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.9.0" +const Version = "1.10.0" diff --git a/dlp/CHANGES.md b/dlp/CHANGES.md index 1ec6452e01c5..02148c973629 100644 --- a/dlp/CHANGES.md +++ b/dlp/CHANGES.md @@ -1,5 +1,22 @@ # Changes +## [1.15.0](https://github.com/googleapis/google-cloud-go/compare/dlp/v1.14.3...dlp/v1.15.0) (2024-07-24) + + +### Features + +* **dlp:** Add Cloud Storage discovery support ([#10527](https://github.com/googleapis/google-cloud-go/issues/10527)) ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) + + +### Bug Fixes + +* **dlp:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + + +### Documentation + +* **dlp:** Updated method documentation ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) + ## [1.14.3](https://github.com/googleapis/google-cloud-go/compare/dlp/v1.14.2...dlp/v1.14.3) (2024-07-10) diff --git a/dlp/internal/version.go b/dlp/internal/version.go index 5cdb009d1b5d..43a2a84ef8eb 100644 --- a/dlp/internal/version.go +++ b/dlp/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.14.3" +const Version = "1.15.0" diff --git a/documentai/CHANGES.md b/documentai/CHANGES.md index eaf67397c314..baf85e096c75 100644 --- a/documentai/CHANGES.md +++ b/documentai/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.30.5](https://github.com/googleapis/google-cloud-go/compare/documentai/v1.30.4...documentai/v1.30.5) (2024-07-24) + + +### Bug Fixes + +* **documentai:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.30.4](https://github.com/googleapis/google-cloud-go/compare/documentai/v1.30.3...documentai/v1.30.4) (2024-07-10) diff --git a/documentai/internal/version.go b/documentai/internal/version.go index 5ea61cf2ae06..259b4e256461 100644 --- a/documentai/internal/version.go +++ b/documentai/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.30.4" +const Version = "1.30.5" diff --git a/domains/CHANGES.md b/domains/CHANGES.md index 257673bd0b0f..bf086b728c2f 100644 --- a/domains/CHANGES.md +++ b/domains/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.9.11](https://github.com/googleapis/google-cloud-go/compare/domains/v0.9.10...domains/v0.9.11) (2024-07-24) + + +### Bug Fixes + +* **domains:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.9.10](https://github.com/googleapis/google-cloud-go/compare/domains/v0.9.9...domains/v0.9.10) (2024-07-10) diff --git a/edgecontainer/CHANGES.md b/edgecontainer/CHANGES.md index 576601b9c219..059184967289 100644 --- a/edgecontainer/CHANGES.md +++ b/edgecontainer/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.2.5](https://github.com/googleapis/google-cloud-go/compare/edgecontainer/v1.2.4...edgecontainer/v1.2.5) (2024-07-24) + + +### Bug Fixes + +* **edgecontainer:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.2.4](https://github.com/googleapis/google-cloud-go/compare/edgecontainer/v1.2.3...edgecontainer/v1.2.4) (2024-07-10) diff --git a/edgecontainer/internal/version.go b/edgecontainer/internal/version.go index 38b974721e57..5880a4554f38 100644 --- a/edgecontainer/internal/version.go +++ b/edgecontainer/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.2.4" +const Version = "1.2.5" diff --git a/edgenetwork/CHANGES.md b/edgenetwork/CHANGES.md index 5a8a8eb65e2d..82cda23b166c 100644 --- a/edgenetwork/CHANGES.md +++ b/edgenetwork/CHANGES.md @@ -2,6 +2,13 @@ +## [1.1.2](https://github.com/googleapis/google-cloud-go/compare/edgenetwork/v1.1.1...edgenetwork/v1.1.2) (2024-07-24) + + +### Bug Fixes + +* **edgenetwork:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.1.1](https://github.com/googleapis/google-cloud-go/compare/edgenetwork/v1.1.0...edgenetwork/v1.1.1) (2024-07-10) diff --git a/edgenetwork/internal/version.go b/edgenetwork/internal/version.go index e77704c0de2f..2eabe9755ac2 100644 --- a/edgenetwork/internal/version.go +++ b/edgenetwork/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.1.1" +const Version = "1.1.2" diff --git a/essentialcontacts/CHANGES.md b/essentialcontacts/CHANGES.md index 9e0140c8de66..fc9e5f402281 100644 --- a/essentialcontacts/CHANGES.md +++ b/essentialcontacts/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.6.12](https://github.com/googleapis/google-cloud-go/compare/essentialcontacts/v1.6.11...essentialcontacts/v1.6.12) (2024-07-24) + + +### Bug Fixes + +* **essentialcontacts:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.6.11](https://github.com/googleapis/google-cloud-go/compare/essentialcontacts/v1.6.10...essentialcontacts/v1.6.11) (2024-07-10) diff --git a/eventarc/CHANGES.md b/eventarc/CHANGES.md index 5cf6c4ae73da..25654c6b082d 100644 --- a/eventarc/CHANGES.md +++ b/eventarc/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.13.10](https://github.com/googleapis/google-cloud-go/compare/eventarc/v1.13.9...eventarc/v1.13.10) (2024-07-24) + + +### Bug Fixes + +* **eventarc:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.13.9](https://github.com/googleapis/google-cloud-go/compare/eventarc/v1.13.8...eventarc/v1.13.9) (2024-07-10) diff --git a/eventarc/internal/version.go b/eventarc/internal/version.go index 18efd3ab1917..d418bd8c550e 100644 --- a/eventarc/internal/version.go +++ b/eventarc/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.13.9" +const Version = "1.13.10" diff --git a/filestore/CHANGES.md b/filestore/CHANGES.md index 867229690cad..a7e31d1fbc16 100644 --- a/filestore/CHANGES.md +++ b/filestore/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.8.7](https://github.com/googleapis/google-cloud-go/compare/filestore/v1.8.6...filestore/v1.8.7) (2024-07-24) + + +### Bug Fixes + +* **filestore:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.8.6](https://github.com/googleapis/google-cloud-go/compare/filestore/v1.8.5...filestore/v1.8.6) (2024-07-10) diff --git a/filestore/internal/version.go b/filestore/internal/version.go index 65881bad7415..999107bf7fed 100644 --- a/filestore/internal/version.go +++ b/filestore/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.8.6" +const Version = "1.8.7" diff --git a/firestore/CHANGES.md b/firestore/CHANGES.md index 60d530eeda51..332fd952594b 100644 --- a/firestore/CHANGES.md +++ b/firestore/CHANGES.md @@ -1,5 +1,30 @@ # Changes +## [1.16.0](https://github.com/googleapis/google-cloud-go/compare/firestore/v1.15.0...firestore/v1.16.0) (2024-07-24) + + +### Features + +* **firestore/apiv1:** Add bulk delete api ([#10369](https://github.com/googleapis/google-cloud-go/issues/10369)) ([134f567](https://github.com/googleapis/google-cloud-go/commit/134f567c18892d6050f60ae875a3de7738104da0)) +* **firestore/apiv1:** Add Vector Index API ([f8ff971](https://github.com/googleapis/google-cloud-go/commit/f8ff971366999aefb5eb5189c6c9e2bd76a05d9e)) +* **firestore:** Adding vector search ([#10548](https://github.com/googleapis/google-cloud-go/issues/10548)) ([5c0d6df](https://github.com/googleapis/google-cloud-go/commit/5c0d6df5cc28659c5fbd54329f8b6c134cf95730)) + + +### Bug Fixes + +* **firestore:** Bump google.golang.org/api@v0.187.0 ([8fa9e39](https://github.com/googleapis/google-cloud-go/commit/8fa9e398e512fd8533fd49060371e61b5725a85b)) +* **firestore:** Bump google.golang.org/grpc@v1.64.1 ([8ecc4e9](https://github.com/googleapis/google-cloud-go/commit/8ecc4e9622e5bbe9b90384d5848ab816027226c5)) +* **firestore:** Bump x/net to v0.24.0 ([ba31ed5](https://github.com/googleapis/google-cloud-go/commit/ba31ed5fda2c9664f2e1cf972469295e63deb5b4)) +* **firestore:** Move createIndexes calls ([#9714](https://github.com/googleapis/google-cloud-go/issues/9714)) ([d931626](https://github.com/googleapis/google-cloud-go/commit/d9316263ca4ad0667d4a0f886a4977b36585b572)) +* **firestore:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + + +### Documentation + +* **firestore/apiv1:** Allow 14 week backup retention for Firestore daily backups ([#9685](https://github.com/googleapis/google-cloud-go/issues/9685)) ([2cdc40a](https://github.com/googleapis/google-cloud-go/commit/2cdc40a0b4288f5ab5f2b2b8f5c1d6453a9c81ec)) +* **firestore/apiv1:** Correct BackupSchedule recurrence docs that mentioned specific time of day ([fe85be0](https://github.com/googleapis/google-cloud-go/commit/fe85be03d1e6ba69182ff1045a3faed15aa00128)) +* **firestore/apiv1:** Update field api description ([134f567](https://github.com/googleapis/google-cloud-go/commit/134f567c18892d6050f60ae875a3de7738104da0)) + ## [1.15.0](https://github.com/googleapis/google-cloud-go/compare/firestore/v1.14.0...firestore/v1.15.0) (2024-03-05) @@ -192,5 +217,3 @@ This is the first tag to carve out firestore as its own module. See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository. - - diff --git a/firestore/doc.go b/firestore/doc.go index 5197fe525fdf..d2a29ccb96c0 100644 --- a/firestore/doc.go +++ b/firestore/doc.go @@ -192,6 +192,9 @@ as a query. iter = client.Collection("States").Documents(ctx) +Firestore supports similarity search over embedding vectors. See [Query.FindNearest] +for details. + # Collection Group Partition Queries You can partition the documents of a Collection Group allowing for smaller subqueries. diff --git a/firestore/examples_test.go b/firestore/examples_test.go index 7de75c84ac13..4ab7eb9f1c59 100644 --- a/firestore/examples_test.go +++ b/firestore/examples_test.go @@ -483,6 +483,30 @@ func ExampleQuery_Snapshots() { } } +// This example demonstrates how to use Firestore vector search. +// It assumes that the database has a collection "descriptions" +// in which each document has a field of type Vector32 or Vector64 +// called "Embedding": +// +// type Description struct { +// // ... +// Embedding firestore.Vector32 +// } +func ExampleQuery_FindNearest() { + ctx := context.Background() + client, err := firestore.NewClient(ctx, "project-id") + if err != nil { + // TODO: Handle error. + } + defer client.Close() + + // + q := client.Collection("descriptions"). + FindNearest("Embedding", []float32{1, 2, 3}, 5, firestore.DistanceMeasureDotProduct, nil) + iter1 := q.Documents(ctx) + _ = iter1 // TODO: Use iter1. +} + func ExampleDocumentIterator_Next() { ctx := context.Background() client, err := firestore.NewClient(ctx, "project-id") diff --git a/firestore/from_value.go b/firestore/from_value.go index 8ff05c7410bd..75c176fac8c6 100644 --- a/firestore/from_value.go +++ b/firestore/from_value.go @@ -412,7 +412,7 @@ func createFromProtoValue(vproto *pb.Value, c *Client) (interface{}, error) { } // Special handling for vector - return vectorFromProtoValue(vproto) + return vector64FromProtoValue(vproto) default: return nil, fmt.Errorf("firestore: unknown value type %T", v) } diff --git a/firestore/integration_test.go b/firestore/integration_test.go index bfa690d5524e..f5489842ddd3 100644 --- a/firestore/integration_test.go +++ b/firestore/integration_test.go @@ -2356,6 +2356,9 @@ func TestIntegration_NewClientWithDatabase(t *testing.T) { if testing.Short() { t.Skip("Integration tests skipped in short mode") } + if iClient == nil { + t.Skip("Integration test skipped: did not create client") + } for _, tc := range []struct { desc string dbName string diff --git a/firestore/internal/version.go b/firestore/internal/version.go index 43a2a84ef8eb..b82e17a1938d 100644 --- a/firestore/internal/version.go +++ b/firestore/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.15.0" +const Version = "1.16.0" diff --git a/firestore/query.go b/firestore/query.go index 4a1254d27306..9f738c5f9651 100644 --- a/firestore/query.go +++ b/firestore/query.go @@ -371,7 +371,7 @@ type DistanceMeasure int32 const ( // DistanceMeasureEuclidean is used to measures the Euclidean distance between the vectors. See - // [Euclidean] to learn more + // [Euclidean] to learn more. // // [Euclidean]: https://en.wikipedia.org/wiki/Euclidean_distance DistanceMeasureEuclidean DistanceMeasure = DistanceMeasure(pb.StructuredQuery_FindNearest_EUCLIDEAN) @@ -393,33 +393,39 @@ const ( ) // FindNearestOptions are options for a FindNearest vector query. +// At present, there are no options. type FindNearestOptions struct { } -// VectorQuery represents a vector query +// VectorQuery represents a query that uses [Query.FindNearest] or [Query.FindNearestPath]. type VectorQuery struct { q Query } -// FindNearest returns a query that can perform vector distance (similarity) search with given parameters. +// FindNearest returns a query that can perform vector distance (similarity) search. // -// The returned query, when executed, performs a distance (similarity) search on the specified +// The returned query, when executed, performs a distance search on the specified // vectorField against the given queryVector and returns the top documents that are closest -// to the queryVector;. +// to the queryVector according to measure. At most limit documents are returned. // -// Only documents whose vectorField field is a Vector of the same dimension as queryVector -// participate in the query, all other documents are ignored. +// Only documents whose vectorField field is a Vector32 or Vector64 of the same dimension +// as queryVector participate in the query; all other documents are ignored. +// In particular, fields of type []float32 or []float64 are ignored. // // The vectorField argument can be a single field or a dot-separated sequence of // fields, and must not contain any of the runes "Ëœ*/[]". +// +// The queryVector argument can be any of the following types: +// - []float32 +// - []float64 +// - Vector32 +// - Vector64 func (q Query) FindNearest(vectorField string, queryVector any, limit int, measure DistanceMeasure, options *FindNearestOptions) VectorQuery { // Validate field path fieldPath, err := parseDotSeparatedString(vectorField) if err != nil { q.err = err - return VectorQuery{ - q: q, - } + return VectorQuery{q: q} } return q.FindNearestPath(fieldPath, queryVector, limit, measure, options) } @@ -429,11 +435,9 @@ func (vq VectorQuery) Documents(ctx context.Context) *DocumentIterator { return vq.q.Documents(ctx) } -// FindNearestPath is similar to FindNearest but it accepts a [FieldPath]. +// FindNearestPath is like [Query.FindNearest] but it accepts a [FieldPath]. func (q Query) FindNearestPath(vectorFieldPath FieldPath, queryVector any, limit int, measure DistanceMeasure, options *FindNearestOptions) VectorQuery { - vq := VectorQuery{ - q: q, - } + vq := VectorQuery{q: q} // Convert field path to field reference vectorFieldRef, err := fref(vectorFieldPath) diff --git a/firestore/query_test.go b/firestore/query_test.go index 106a1bbe15bd..a7ff15864e76 100644 --- a/firestore/query_test.go +++ b/firestore/query_test.go @@ -734,6 +734,7 @@ func TestQueryToProto(t *testing.T) { // Convert a Query to a Proto and back again verifying roundtripping func TestQueryFromProtoRoundTrip(t *testing.T) { + t.Skip("flaky due to random map order iteration") c := &Client{projectID: "P", databaseID: "DB"} for _, test := range createTestScenarios(t) { diff --git a/firestore/vector.go b/firestore/vector.go index 3b89d2772573..6bb2300ffb3a 100644 --- a/firestore/vector.go +++ b/firestore/vector.go @@ -33,8 +33,7 @@ type Vector64 []float64 type Vector32 []float32 // vectorToProtoValue returns a Firestore [pb.Value] representing the Vector. -// The calling function should check for type safety -func vectorToProtoValue[vType float32 | float64](v []vType) *pb.Value { +func vectorToProtoValue[T float32 | float64](v []T) *pb.Value { if v == nil { return nullValue } @@ -59,40 +58,27 @@ func vectorToProtoValue[vType float32 | float64](v []vType) *pb.Value { } } -func vectorFromProtoValue(v *pb.Value) (interface{}, error) { - return vector64FromProtoValue(v) -} - func vector32FromProtoValue(v *pb.Value) (Vector32, error) { - pbArrVals, err := pbValToVectorVals(v) - if err != nil { - return nil, err - } - - floats := make([]float32, len(pbArrVals)) - for i, fval := range pbArrVals { - dv, ok := fval.ValueType.(*pb.Value_DoubleValue) - if !ok { - return nil, fmt.Errorf("firestore: failed to convert %v to *pb.Value_DoubleValue", fval.ValueType) - } - floats[i] = float32(dv.DoubleValue) - } - return floats, nil + return vectorFromProtoValue[float32](v) } func vector64FromProtoValue(v *pb.Value) (Vector64, error) { + return vectorFromProtoValue[float64](v) +} + +func vectorFromProtoValue[T float32 | float64](v *pb.Value) ([]T, error) { pbArrVals, err := pbValToVectorVals(v) if err != nil { return nil, err } - floats := make([]float64, len(pbArrVals)) + floats := make([]T, len(pbArrVals)) for i, fval := range pbArrVals { dv, ok := fval.ValueType.(*pb.Value_DoubleValue) if !ok { return nil, fmt.Errorf("firestore: failed to convert %v to *pb.Value_DoubleValue", fval.ValueType) } - floats[i] = dv.DoubleValue + floats[i] = T(dv.DoubleValue) } return floats, nil } diff --git a/firestore/vector_test.go b/firestore/vector_test.go index 9e1497b7ba0e..96d04fee4d01 100644 --- a/firestore/vector_test.go +++ b/firestore/vector_test.go @@ -197,7 +197,7 @@ func TestVectorFromProtoValue(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := vectorFromProtoValue(tt.v) + got, err := vector64FromProtoValue(tt.v) if (err != nil) != tt.wantErr { t.Errorf("vectorFromProtoValue() error = %v, wantErr %v", err, tt.wantErr) return diff --git a/functions/CHANGES.md b/functions/CHANGES.md index 342bf23c3f96..5b58928f2e7b 100644 --- a/functions/CHANGES.md +++ b/functions/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.16.6](https://github.com/googleapis/google-cloud-go/compare/functions/v1.16.5...functions/v1.16.6) (2024-07-24) + + +### Bug Fixes + +* **functions:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.16.5](https://github.com/googleapis/google-cloud-go/compare/functions/v1.16.4...functions/v1.16.5) (2024-07-10) diff --git a/functions/internal/version.go b/functions/internal/version.go index 616b0e2747e3..352732dd9895 100644 --- a/functions/internal/version.go +++ b/functions/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.16.5" +const Version = "1.16.6" diff --git a/gkebackup/CHANGES.md b/gkebackup/CHANGES.md index 11dc305d99b2..94311da571e1 100644 --- a/gkebackup/CHANGES.md +++ b/gkebackup/CHANGES.md @@ -2,6 +2,13 @@ +## [1.5.4](https://github.com/googleapis/google-cloud-go/compare/gkebackup/v1.5.3...gkebackup/v1.5.4) (2024-07-24) + + +### Bug Fixes + +* **gkebackup:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.5.3](https://github.com/googleapis/google-cloud-go/compare/gkebackup/v1.5.2...gkebackup/v1.5.3) (2024-07-10) diff --git a/gkebackup/internal/version.go b/gkebackup/internal/version.go index 3c7538bb65d0..abc7ac66d2c2 100644 --- a/gkebackup/internal/version.go +++ b/gkebackup/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.5.3" +const Version = "1.5.4" diff --git a/gkeconnect/CHANGES.md b/gkeconnect/CHANGES.md index ddf5b64f37cf..2205ec9799b9 100644 --- a/gkeconnect/CHANGES.md +++ b/gkeconnect/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.8.11](https://github.com/googleapis/google-cloud-go/compare/gkeconnect/v0.8.10...gkeconnect/v0.8.11) (2024-07-24) + + +### Bug Fixes + +* **gkeconnect:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.8.10](https://github.com/googleapis/google-cloud-go/compare/gkeconnect/v0.8.9...gkeconnect/v0.8.10) (2024-07-10) diff --git a/gkehub/CHANGES.md b/gkehub/CHANGES.md index 36048d791173..0a3a24414a6b 100644 --- a/gkehub/CHANGES.md +++ b/gkehub/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.14.11](https://github.com/googleapis/google-cloud-go/compare/gkehub/v0.14.10...gkehub/v0.14.11) (2024-07-24) + + +### Bug Fixes + +* **gkehub:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.14.10](https://github.com/googleapis/google-cloud-go/compare/gkehub/v0.14.9...gkehub/v0.14.10) (2024-07-10) diff --git a/gkemulticloud/CHANGES.md b/gkemulticloud/CHANGES.md index 8b894457410b..7c58f51c3cc1 100644 --- a/gkemulticloud/CHANGES.md +++ b/gkemulticloud/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.2.4](https://github.com/googleapis/google-cloud-go/compare/gkemulticloud/v1.2.3...gkemulticloud/v1.2.4) (2024-07-24) + + +### Bug Fixes + +* **gkemulticloud:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.2.3](https://github.com/googleapis/google-cloud-go/compare/gkemulticloud/v1.2.2...gkemulticloud/v1.2.3) (2024-07-10) diff --git a/gkemulticloud/internal/version.go b/gkemulticloud/internal/version.go index a835a62f5ebe..38b974721e57 100644 --- a/gkemulticloud/internal/version.go +++ b/gkemulticloud/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.2.3" +const Version = "1.2.4" diff --git a/grafeas/CHANGES.md b/grafeas/CHANGES.md index 3a1c13922812..8e81856f7274 100644 --- a/grafeas/CHANGES.md +++ b/grafeas/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.3.9](https://github.com/googleapis/google-cloud-go/compare/grafeas/v0.3.8...grafeas/v0.3.9) (2024-07-24) + + +### Bug Fixes + +* **grafeas:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.3.8](https://github.com/googleapis/google-cloud-go/compare/grafeas/v0.3.7...grafeas/v0.3.8) (2024-07-10) diff --git a/grafeas/internal/version.go b/grafeas/internal/version.go index 32f87cf0fedc..09d43de25607 100644 --- a/grafeas/internal/version.go +++ b/grafeas/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.3.8" +const Version = "0.3.9" diff --git a/gsuiteaddons/CHANGES.md b/gsuiteaddons/CHANGES.md index 670b4fda0fca..f106dbda8ddb 100644 --- a/gsuiteaddons/CHANGES.md +++ b/gsuiteaddons/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.6.11](https://github.com/googleapis/google-cloud-go/compare/gsuiteaddons/v1.6.10...gsuiteaddons/v1.6.11) (2024-07-24) + + +### Bug Fixes + +* **gsuiteaddons:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.6.10](https://github.com/googleapis/google-cloud-go/compare/gsuiteaddons/v1.6.9...gsuiteaddons/v1.6.10) (2024-07-10) diff --git a/iam/CHANGES.md b/iam/CHANGES.md index 2331bfc1b1df..bae4733aebb8 100644 --- a/iam/CHANGES.md +++ b/iam/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.1.12](https://github.com/googleapis/google-cloud-go/compare/iam/v1.1.11...iam/v1.1.12) (2024-07-24) + + +### Bug Fixes + +* **iam:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.1.11](https://github.com/googleapis/google-cloud-go/compare/iam/v1.1.10...iam/v1.1.11) (2024-07-10) diff --git a/iap/CHANGES.md b/iap/CHANGES.md index 5cf9607e8298..b24273fb202e 100644 --- a/iap/CHANGES.md +++ b/iap/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.9.10](https://github.com/googleapis/google-cloud-go/compare/iap/v1.9.9...iap/v1.9.10) (2024-07-24) + + +### Bug Fixes + +* **iap:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.9.9](https://github.com/googleapis/google-cloud-go/compare/iap/v1.9.8...iap/v1.9.9) (2024-07-10) diff --git a/iap/internal/version.go b/iap/internal/version.go index 3f6fa1494f94..9e5a4340fa10 100644 --- a/iap/internal/version.go +++ b/iap/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.9.9" +const Version = "1.9.10" diff --git a/identitytoolkit/CHANGES.md b/identitytoolkit/CHANGES.md index 37e46771cbff..9296ce2f35f6 100644 --- a/identitytoolkit/CHANGES.md +++ b/identitytoolkit/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [0.1.3](https://github.com/googleapis/google-cloud-go/compare/identitytoolkit/v0.1.2...identitytoolkit/v0.1.3) (2024-07-24) + + +### Bug Fixes + +* **identitytoolkit:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.1.2](https://github.com/googleapis/google-cloud-go/compare/identitytoolkit/v0.1.1...identitytoolkit/v0.1.2) (2024-07-10) diff --git a/identitytoolkit/internal/version.go b/identitytoolkit/internal/version.go index 7196f28b8f6e..14256f5b3c99 100644 --- a/identitytoolkit/internal/version.go +++ b/identitytoolkit/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.1.2" +const Version = "0.1.3" diff --git a/ids/CHANGES.md b/ids/CHANGES.md index 800affaeba57..c297771aa73c 100644 --- a/ids/CHANGES.md +++ b/ids/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.4.11](https://github.com/googleapis/google-cloud-go/compare/ids/v1.4.10...ids/v1.4.11) (2024-07-24) + + +### Bug Fixes + +* **ids:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.4.10](https://github.com/googleapis/google-cloud-go/compare/ids/v1.4.9...ids/v1.4.10) (2024-07-10) diff --git a/internal/postprocessor/config.yaml b/internal/postprocessor/config.yaml index 0501d8f22962..4cb9c458c492 100644 --- a/internal/postprocessor/config.yaml +++ b/internal/postprocessor/config.yaml @@ -445,6 +445,12 @@ service-configs: - input-directory: google/cloud/bigquery/storage/v1beta2 service-config: bigquerystorage_v1beta2.yaml import-path: cloud.google.com/go/bigquery/storage/apiv1beta2 + - input-directory: google/bigtable/admin/v2 + service-config: bigtableadmin_v2.yaml + import-path: cloud.google.com/go/bigtable/admin/apiv2 + - input-directory: google/bigtable/v2 + service-config: bigtable_v2.yaml + import-path: cloud.google.com/go/bigtable/apiv2 - input-directory: google/cloud/billing/budgets/v1 service-config: billingbudgets.yaml import-path: cloud.google.com/go/billing/budgets/apiv1 diff --git a/iot/CHANGES.md b/iot/CHANGES.md index 75c70ff886cf..0aadf573f41c 100644 --- a/iot/CHANGES.md +++ b/iot/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.7.11](https://github.com/googleapis/google-cloud-go/compare/iot/v1.7.10...iot/v1.7.11) (2024-07-24) + + +### Bug Fixes + +* **iot:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.7.10](https://github.com/googleapis/google-cloud-go/compare/iot/v1.7.9...iot/v1.7.10) (2024-07-10) diff --git a/kms/CHANGES.md b/kms/CHANGES.md index 2cd3f69627bc..7c0b5c90a1d4 100644 --- a/kms/CHANGES.md +++ b/kms/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.18.4](https://github.com/googleapis/google-cloud-go/compare/kms/v1.18.3...kms/v1.18.4) (2024-07-24) + + +### Bug Fixes + +* **kms:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.18.3](https://github.com/googleapis/google-cloud-go/compare/kms/v1.18.2...kms/v1.18.3) (2024-07-10) diff --git a/kms/internal/version.go b/kms/internal/version.go index 3e0a8ebf3fea..202880f6c67f 100644 --- a/kms/internal/version.go +++ b/kms/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.18.3" +const Version = "1.18.4" diff --git a/language/CHANGES.md b/language/CHANGES.md index f222f250e1b1..d66fa0e8d3ba 100644 --- a/language/CHANGES.md +++ b/language/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.12.9](https://github.com/googleapis/google-cloud-go/compare/language/v1.12.8...language/v1.12.9) (2024-07-24) + + +### Bug Fixes + +* **language:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.12.8](https://github.com/googleapis/google-cloud-go/compare/language/v1.12.7...language/v1.12.8) (2024-07-10) diff --git a/language/internal/version.go b/language/internal/version.go index ffafe458fa71..74965ec94d7a 100644 --- a/language/internal/version.go +++ b/language/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.12.8" +const Version = "1.12.9" diff --git a/lifesciences/CHANGES.md b/lifesciences/CHANGES.md index b9cc445fb2ce..175721a8f370 100644 --- a/lifesciences/CHANGES.md +++ b/lifesciences/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.9.11](https://github.com/googleapis/google-cloud-go/compare/lifesciences/v0.9.10...lifesciences/v0.9.11) (2024-07-24) + + +### Bug Fixes + +* **lifesciences:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.9.10](https://github.com/googleapis/google-cloud-go/compare/lifesciences/v0.9.9...lifesciences/v0.9.10) (2024-07-10) diff --git a/logging/CHANGES.md b/logging/CHANGES.md index 799ab3ec86fa..aced14a09b2b 100644 --- a/logging/CHANGES.md +++ b/logging/CHANGES.md @@ -1,5 +1,25 @@ # Changes +## [1.11.0](https://github.com/googleapis/google-cloud-go/compare/logging/v1.10.0...logging/v1.11.0) (2024-07-24) + + +### Features + +* **logging:** OpenTelemetry trace/span ID integration for Go logging library ([#10030](https://github.com/googleapis/google-cloud-go/issues/10030)) ([c6711b8](https://github.com/googleapis/google-cloud-go/commit/c6711b83cb6f9f35032e69a40632b7268fcdbd0a)) + + +### Bug Fixes + +* **logging:** Bump google.golang.org/api@v0.187.0 ([8fa9e39](https://github.com/googleapis/google-cloud-go/commit/8fa9e398e512fd8533fd49060371e61b5725a85b)) +* **logging:** Bump google.golang.org/grpc@v1.64.1 ([8ecc4e9](https://github.com/googleapis/google-cloud-go/commit/8ecc4e9622e5bbe9b90384d5848ab816027226c5)) +* **logging:** Skip automatic resource detection if a CommonResource ([#10441](https://github.com/googleapis/google-cloud-go/issues/10441)) ([fc4c910](https://github.com/googleapis/google-cloud-go/commit/fc4c91099443385d3052e1d6cf1020c7918c0e5a)) +* **logging:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + + +### Documentation + +* **logging:** Documentation for automatic trace/span ID extraction ([#10536](https://github.com/googleapis/google-cloud-go/issues/10536)) ([8cf89a3](https://github.com/googleapis/google-cloud-go/commit/8cf89a340ad75cc1c39e8a9b876b47af069aa273)) + ## [1.10.0](https://github.com/googleapis/google-cloud-go/compare/logging/v1.9.0...logging/v1.10.0) (2024-05-15) diff --git a/logging/internal/version.go b/logging/internal/version.go index 1850527884a3..77cefca24d54 100644 --- a/logging/internal/version.go +++ b/logging/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.10.0" +const Version = "1.11.0" diff --git a/longrunning/CHANGES.md b/longrunning/CHANGES.md index ab02dd00e567..11309574557b 100644 --- a/longrunning/CHANGES.md +++ b/longrunning/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.5.11](https://github.com/googleapis/google-cloud-go/compare/longrunning/v0.5.10...longrunning/v0.5.11) (2024-07-24) + + +### Bug Fixes + +* **longrunning:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.5.10](https://github.com/googleapis/google-cloud-go/compare/longrunning/v0.5.9...longrunning/v0.5.10) (2024-07-10) diff --git a/managedidentities/CHANGES.md b/managedidentities/CHANGES.md index 5f86c5aa4dc4..a4b39b9ff448 100644 --- a/managedidentities/CHANGES.md +++ b/managedidentities/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.6.11](https://github.com/googleapis/google-cloud-go/compare/managedidentities/v1.6.10...managedidentities/v1.6.11) (2024-07-24) + + +### Bug Fixes + +* **managedidentities:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.6.10](https://github.com/googleapis/google-cloud-go/compare/managedidentities/v1.6.9...managedidentities/v1.6.10) (2024-07-10) diff --git a/managedkafka/CHANGES.md b/managedkafka/CHANGES.md index addfaaeb7c27..0ce9b4e938b0 100644 --- a/managedkafka/CHANGES.md +++ b/managedkafka/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [0.1.4](https://github.com/googleapis/google-cloud-go/compare/managedkafka/v0.1.3...managedkafka/v0.1.4) (2024-07-24) + + +### Bug Fixes + +* **managedkafka:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.1.3](https://github.com/googleapis/google-cloud-go/compare/managedkafka/v0.1.2...managedkafka/v0.1.3) (2024-07-10) diff --git a/managedkafka/internal/version.go b/managedkafka/internal/version.go index 14256f5b3c99..a795fcbaaf37 100644 --- a/managedkafka/internal/version.go +++ b/managedkafka/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.1.3" +const Version = "0.1.4" diff --git a/maps/CHANGES.md b/maps/CHANGES.md index 9a7576039e2d..315897594f3d 100644 --- a/maps/CHANGES.md +++ b/maps/CHANGES.md @@ -2,6 +2,18 @@ +## [1.11.5](https://github.com/googleapis/google-cloud-go/compare/maps/v1.11.4...maps/v1.11.5) (2024-07-24) + + +### Bug Fixes + +* **maps:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + + +### Documentation + +* **maps/fleetengine/delivery:** Clarify behavior of UpdateDeliveryVehicle ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) + ## [1.11.4](https://github.com/googleapis/google-cloud-go/compare/maps/v1.11.3...maps/v1.11.4) (2024-07-10) diff --git a/maps/internal/version.go b/maps/internal/version.go index 5be41863ed25..7e6270d86a7b 100644 --- a/maps/internal/version.go +++ b/maps/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.11.4" +const Version = "1.11.5" diff --git a/mediatranslation/CHANGES.md b/mediatranslation/CHANGES.md index 90868cafe18f..3e2a6f4a060c 100644 --- a/mediatranslation/CHANGES.md +++ b/mediatranslation/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.8.11](https://github.com/googleapis/google-cloud-go/compare/mediatranslation/v0.8.10...mediatranslation/v0.8.11) (2024-07-24) + + +### Bug Fixes + +* **mediatranslation:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.8.10](https://github.com/googleapis/google-cloud-go/compare/mediatranslation/v0.8.9...mediatranslation/v0.8.10) (2024-07-10) diff --git a/memcache/CHANGES.md b/memcache/CHANGES.md index a1447300927c..204aa729d80b 100644 --- a/memcache/CHANGES.md +++ b/memcache/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.10.11](https://github.com/googleapis/google-cloud-go/compare/memcache/v1.10.10...memcache/v1.10.11) (2024-07-24) + + +### Bug Fixes + +* **memcache:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.10.10](https://github.com/googleapis/google-cloud-go/compare/memcache/v1.10.9...memcache/v1.10.10) (2024-07-10) diff --git a/metastore/CHANGES.md b/metastore/CHANGES.md index 3c981defb51f..e353d49fe7db 100644 --- a/metastore/CHANGES.md +++ b/metastore/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.13.10](https://github.com/googleapis/google-cloud-go/compare/metastore/v1.13.9...metastore/v1.13.10) (2024-07-24) + + +### Bug Fixes + +* **metastore:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.13.9](https://github.com/googleapis/google-cloud-go/compare/metastore/v1.13.8...metastore/v1.13.9) (2024-07-10) diff --git a/metastore/internal/version.go b/metastore/internal/version.go index 18efd3ab1917..d418bd8c550e 100644 --- a/metastore/internal/version.go +++ b/metastore/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.13.9" +const Version = "1.13.10" diff --git a/migrationcenter/CHANGES.md b/migrationcenter/CHANGES.md index 8f853c7405e7..23ea63c21647 100644 --- a/migrationcenter/CHANGES.md +++ b/migrationcenter/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.0.4](https://github.com/googleapis/google-cloud-go/compare/migrationcenter/v1.0.3...migrationcenter/v1.0.4) (2024-07-24) + + +### Bug Fixes + +* **migrationcenter:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.0.3](https://github.com/googleapis/google-cloud-go/compare/migrationcenter/v1.0.2...migrationcenter/v1.0.3) (2024-07-10) diff --git a/migrationcenter/internal/version.go b/migrationcenter/internal/version.go index ceacc1110ea3..0e104fcfb551 100644 --- a/migrationcenter/internal/version.go +++ b/migrationcenter/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.0.3" +const Version = "1.0.4" diff --git a/monitoring/CHANGES.md b/monitoring/CHANGES.md index 38015185eca2..9e92ba6f16cf 100644 --- a/monitoring/CHANGES.md +++ b/monitoring/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.20.3](https://github.com/googleapis/google-cloud-go/compare/monitoring/v1.20.2...monitoring/v1.20.3) (2024-07-24) + + +### Bug Fixes + +* **monitoring:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.20.2](https://github.com/googleapis/google-cloud-go/compare/monitoring/v1.20.1...monitoring/v1.20.2) (2024-07-10) diff --git a/monitoring/internal/version.go b/monitoring/internal/version.go index 003d19f6ac6c..a8a51fdaa7a2 100644 --- a/monitoring/internal/version.go +++ b/monitoring/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.20.2" +const Version = "1.20.3" diff --git a/netapp/CHANGES.md b/netapp/CHANGES.md index 0b328fd5ad95..9e5f39d3133d 100644 --- a/netapp/CHANGES.md +++ b/netapp/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.1.4](https://github.com/googleapis/google-cloud-go/compare/netapp/v1.1.3...netapp/v1.1.4) (2024-07-24) + + +### Bug Fixes + +* **netapp:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.1.3](https://github.com/googleapis/google-cloud-go/compare/netapp/v1.1.2...netapp/v1.1.3) (2024-07-10) diff --git a/netapp/internal/version.go b/netapp/internal/version.go index 37b53333df2f..a552c792dc1f 100644 --- a/netapp/internal/version.go +++ b/netapp/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.1.3" +const Version = "1.1.4" diff --git a/networkconnectivity/CHANGES.md b/networkconnectivity/CHANGES.md index b65b49da6c63..24ebec1eb93f 100644 --- a/networkconnectivity/CHANGES.md +++ b/networkconnectivity/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.14.10](https://github.com/googleapis/google-cloud-go/compare/networkconnectivity/v1.14.9...networkconnectivity/v1.14.10) (2024-07-24) + + +### Bug Fixes + +* **networkconnectivity:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.14.9](https://github.com/googleapis/google-cloud-go/compare/networkconnectivity/v1.14.8...networkconnectivity/v1.14.9) (2024-07-10) diff --git a/networkconnectivity/internal/version.go b/networkconnectivity/internal/version.go index 243964f803f9..7dfc575323cf 100644 --- a/networkconnectivity/internal/version.go +++ b/networkconnectivity/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.14.9" +const Version = "1.14.10" diff --git a/networkmanagement/CHANGES.md b/networkmanagement/CHANGES.md index f2241604cc41..8f95e2f687a8 100644 --- a/networkmanagement/CHANGES.md +++ b/networkmanagement/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.13.6](https://github.com/googleapis/google-cloud-go/compare/networkmanagement/v1.13.5...networkmanagement/v1.13.6) (2024-07-24) + + +### Bug Fixes + +* **networkmanagement:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.13.5](https://github.com/googleapis/google-cloud-go/compare/networkmanagement/v1.13.4...networkmanagement/v1.13.5) (2024-07-10) diff --git a/networkmanagement/internal/version.go b/networkmanagement/internal/version.go index c7e60e4edbca..f2a7aa3a2d4c 100644 --- a/networkmanagement/internal/version.go +++ b/networkmanagement/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.13.5" +const Version = "1.13.6" diff --git a/networksecurity/CHANGES.md b/networksecurity/CHANGES.md index 20220e4698b7..d3677e54fcaa 100644 --- a/networksecurity/CHANGES.md +++ b/networksecurity/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.9.11](https://github.com/googleapis/google-cloud-go/compare/networksecurity/v0.9.10...networksecurity/v0.9.11) (2024-07-24) + + +### Bug Fixes + +* **networksecurity:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.9.10](https://github.com/googleapis/google-cloud-go/compare/networksecurity/v0.9.9...networksecurity/v0.9.10) (2024-07-10) diff --git a/networkservices/CHANGES.md b/networkservices/CHANGES.md index 6093ca0bb405..7f9cd7dcdbfa 100644 --- a/networkservices/CHANGES.md +++ b/networkservices/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [0.1.5](https://github.com/googleapis/google-cloud-go/compare/networkservices/v0.1.4...networkservices/v0.1.5) (2024-07-24) + + +### Bug Fixes + +* **networkservices:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.1.4](https://github.com/googleapis/google-cloud-go/compare/networkservices/v0.1.3...networkservices/v0.1.4) (2024-07-10) diff --git a/networkservices/internal/version.go b/networkservices/internal/version.go index a795fcbaaf37..85799cdad302 100644 --- a/networkservices/internal/version.go +++ b/networkservices/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.1.4" +const Version = "0.1.5" diff --git a/notebooks/CHANGES.md b/notebooks/CHANGES.md index 579f91c9dd99..fbedb295b499 100644 --- a/notebooks/CHANGES.md +++ b/notebooks/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.11.9](https://github.com/googleapis/google-cloud-go/compare/notebooks/v1.11.8...notebooks/v1.11.9) (2024-07-24) + + +### Bug Fixes + +* **notebooks:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.11.8](https://github.com/googleapis/google-cloud-go/compare/notebooks/v1.11.7...notebooks/v1.11.8) (2024-07-10) diff --git a/notebooks/internal/version.go b/notebooks/internal/version.go index 1906f8408ac2..3c765f9cf5fe 100644 --- a/notebooks/internal/version.go +++ b/notebooks/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.11.8" +const Version = "1.11.9" diff --git a/optimization/CHANGES.md b/optimization/CHANGES.md index b32eefbacbbe..73178c7cb08e 100644 --- a/optimization/CHANGES.md +++ b/optimization/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.6.9](https://github.com/googleapis/google-cloud-go/compare/optimization/v1.6.8...optimization/v1.6.9) (2024-07-24) + + +### Bug Fixes + +* **optimization:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.6.8](https://github.com/googleapis/google-cloud-go/compare/optimization/v1.6.7...optimization/v1.6.8) (2024-07-10) diff --git a/optimization/internal/version.go b/optimization/internal/version.go index 231a1195a2fe..8c25025fcb5a 100644 --- a/optimization/internal/version.go +++ b/optimization/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.6.8" +const Version = "1.6.9" diff --git a/orchestration/CHANGES.md b/orchestration/CHANGES.md index fe93925890de..fb2f4198fcd5 100644 --- a/orchestration/CHANGES.md +++ b/orchestration/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.9.6](https://github.com/googleapis/google-cloud-go/compare/orchestration/v1.9.5...orchestration/v1.9.6) (2024-07-24) + + +### Bug Fixes + +* **orchestration:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.9.5](https://github.com/googleapis/google-cloud-go/compare/orchestration/v1.9.4...orchestration/v1.9.5) (2024-07-10) diff --git a/orchestration/internal/version.go b/orchestration/internal/version.go index 20f367012007..d1fce5a46c4a 100644 --- a/orchestration/internal/version.go +++ b/orchestration/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.9.5" +const Version = "1.9.6" diff --git a/orgpolicy/CHANGES.md b/orgpolicy/CHANGES.md index e2606abd61c4..3102b712c9b3 100644 --- a/orgpolicy/CHANGES.md +++ b/orgpolicy/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.12.7](https://github.com/googleapis/google-cloud-go/compare/orgpolicy/v1.12.6...orgpolicy/v1.12.7) (2024-07-24) + + +### Bug Fixes + +* **orgpolicy:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.12.6](https://github.com/googleapis/google-cloud-go/compare/orgpolicy/v1.12.5...orgpolicy/v1.12.6) (2024-07-10) diff --git a/orgpolicy/internal/version.go b/orgpolicy/internal/version.go index 5890fe10ce63..0a87ebe16a5d 100644 --- a/orgpolicy/internal/version.go +++ b/orgpolicy/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.12.6" +const Version = "1.12.7" diff --git a/osconfig/CHANGES.md b/osconfig/CHANGES.md index fc876dc468c7..ced950a9d74a 100644 --- a/osconfig/CHANGES.md +++ b/osconfig/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.13.2](https://github.com/googleapis/google-cloud-go/compare/osconfig/v1.13.1...osconfig/v1.13.2) (2024-07-24) + + +### Bug Fixes + +* **osconfig:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.13.1](https://github.com/googleapis/google-cloud-go/compare/osconfig/v1.13.0...osconfig/v1.13.1) (2024-07-10) diff --git a/osconfig/internal/version.go b/osconfig/internal/version.go index 507f6903ef19..4724c61f4372 100644 --- a/osconfig/internal/version.go +++ b/osconfig/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.13.1" +const Version = "1.13.2" diff --git a/oslogin/CHANGES.md b/oslogin/CHANGES.md index 1be2abb2b946..078bd54be6b0 100644 --- a/oslogin/CHANGES.md +++ b/oslogin/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.13.7](https://github.com/googleapis/google-cloud-go/compare/oslogin/v1.13.6...oslogin/v1.13.7) (2024-07-24) + + +### Bug Fixes + +* **oslogin:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.13.6](https://github.com/googleapis/google-cloud-go/compare/oslogin/v1.13.5...oslogin/v1.13.6) (2024-07-10) diff --git a/oslogin/internal/version.go b/oslogin/internal/version.go index f2a7aa3a2d4c..986febd53673 100644 --- a/oslogin/internal/version.go +++ b/oslogin/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.13.6" +const Version = "1.13.7" diff --git a/parallelstore/CHANGES.md b/parallelstore/CHANGES.md index 864c1a851eb1..f6e40a14f7bf 100644 --- a/parallelstore/CHANGES.md +++ b/parallelstore/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [0.4.1](https://github.com/googleapis/google-cloud-go/compare/parallelstore/v0.4.0...parallelstore/v0.4.1) (2024-07-24) + + +### Bug Fixes + +* **parallelstore:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.4.0](https://github.com/googleapis/google-cloud-go/compare/parallelstore/v0.3.2...parallelstore/v0.4.0) (2024-07-10) diff --git a/parallelstore/internal/version.go b/parallelstore/internal/version.go index 6a31033a4588..4d14f176c092 100644 --- a/parallelstore/internal/version.go +++ b/parallelstore/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.4.0" +const Version = "0.4.1" diff --git a/phishingprotection/CHANGES.md b/phishingprotection/CHANGES.md index 85f87cf77520..4747d7598219 100644 --- a/phishingprotection/CHANGES.md +++ b/phishingprotection/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.8.11](https://github.com/googleapis/google-cloud-go/compare/phishingprotection/v0.8.10...phishingprotection/v0.8.11) (2024-07-24) + + +### Bug Fixes + +* **phishingprotection:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.8.10](https://github.com/googleapis/google-cloud-go/compare/phishingprotection/v0.8.9...phishingprotection/v0.8.10) (2024-07-10) diff --git a/policysimulator/CHANGES.md b/policysimulator/CHANGES.md index bafef7d03af3..6e73103522be 100644 --- a/policysimulator/CHANGES.md +++ b/policysimulator/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.9](https://github.com/googleapis/google-cloud-go/compare/policysimulator/v0.2.8...policysimulator/v0.2.9) (2024-07-24) + + +### Bug Fixes + +* **policysimulator:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.2.8](https://github.com/googleapis/google-cloud-go/compare/policysimulator/v0.2.7...policysimulator/v0.2.8) (2024-07-10) diff --git a/policysimulator/internal/version.go b/policysimulator/internal/version.go index 6fe402dae17d..89f11e89e80f 100644 --- a/policysimulator/internal/version.go +++ b/policysimulator/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.2.8" +const Version = "0.2.9" diff --git a/policytroubleshooter/CHANGES.md b/policytroubleshooter/CHANGES.md index b2fd29371f8e..feac5aa06f82 100644 --- a/policytroubleshooter/CHANGES.md +++ b/policytroubleshooter/CHANGES.md @@ -2,6 +2,13 @@ +## [1.10.9](https://github.com/googleapis/google-cloud-go/compare/policytroubleshooter/v1.10.8...policytroubleshooter/v1.10.9) (2024-07-24) + + +### Bug Fixes + +* **policytroubleshooter:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.10.8](https://github.com/googleapis/google-cloud-go/compare/policytroubleshooter/v1.10.7...policytroubleshooter/v1.10.8) (2024-07-10) diff --git a/policytroubleshooter/internal/version.go b/policytroubleshooter/internal/version.go index fc1873dbc714..7f12581b9aaf 100644 --- a/policytroubleshooter/internal/version.go +++ b/policytroubleshooter/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.10.8" +const Version = "1.10.9" diff --git a/privatecatalog/CHANGES.md b/privatecatalog/CHANGES.md index b25ac529d067..c3eae46c7cdc 100644 --- a/privatecatalog/CHANGES.md +++ b/privatecatalog/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.9.11](https://github.com/googleapis/google-cloud-go/compare/privatecatalog/v0.9.10...privatecatalog/v0.9.11) (2024-07-24) + + +### Bug Fixes + +* **privatecatalog:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.9.10](https://github.com/googleapis/google-cloud-go/compare/privatecatalog/v0.9.9...privatecatalog/v0.9.10) (2024-07-10) diff --git a/privilegedaccessmanager/CHANGES.md b/privilegedaccessmanager/CHANGES.md index 06729a2ef77b..d9f1ebe26dda 100644 --- a/privilegedaccessmanager/CHANGES.md +++ b/privilegedaccessmanager/CHANGES.md @@ -1,2 +1,15 @@ -# Changes +# Changelog +## 0.1.0 (2024-07-24) + + +### Features + +* **privilegedaccessmanager:** New clients ([#10541](https://github.com/googleapis/google-cloud-go/issues/10541)) ([fd53d47](https://github.com/googleapis/google-cloud-go/commit/fd53d478068c907a08a717b28319dac1ffa7d3d6)) + + +### Bug Fixes + +* **privilegedaccessmanager:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + +## Changes diff --git a/privilegedaccessmanager/internal/version.go b/privilegedaccessmanager/internal/version.go index b662f1b47cf4..20ba73abd675 100644 --- a/privilegedaccessmanager/internal/version.go +++ b/privilegedaccessmanager/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.0.0" +const Version = "0.1.0" diff --git a/rapidmigrationassessment/CHANGES.md b/rapidmigrationassessment/CHANGES.md index 6e76d428ada7..5cd8c328675b 100644 --- a/rapidmigrationassessment/CHANGES.md +++ b/rapidmigrationassessment/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.0.11](https://github.com/googleapis/google-cloud-go/compare/rapidmigrationassessment/v1.0.10...rapidmigrationassessment/v1.0.11) (2024-07-24) + + +### Bug Fixes + +* **rapidmigrationassessment:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.0.10](https://github.com/googleapis/google-cloud-go/compare/rapidmigrationassessment/v1.0.9...rapidmigrationassessment/v1.0.10) (2024-07-10) diff --git a/recaptchaenterprise/CHANGES.md b/recaptchaenterprise/CHANGES.md index df38efefedb1..ed4f290fa599 100644 --- a/recaptchaenterprise/CHANGES.md +++ b/recaptchaenterprise/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [2.14.2](https://github.com/googleapis/google-cloud-go/compare/recaptchaenterprise/v2.14.1...recaptchaenterprise/v2.14.2) (2024-07-24) + + +### Bug Fixes + +* **recaptchaenterprise/v2:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [2.14.1](https://github.com/googleapis/google-cloud-go/compare/recaptchaenterprise/v2.14.0...recaptchaenterprise/v2.14.1) (2024-07-10) diff --git a/recaptchaenterprise/internal/version.go b/recaptchaenterprise/internal/version.go index 559d0f5f6f32..14ff1b5e2136 100644 --- a/recaptchaenterprise/internal/version.go +++ b/recaptchaenterprise/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "2.14.1" +const Version = "2.14.2" diff --git a/recommendationengine/CHANGES.md b/recommendationengine/CHANGES.md index d4013460e65a..d414d527bd12 100644 --- a/recommendationengine/CHANGES.md +++ b/recommendationengine/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [0.8.11](https://github.com/googleapis/google-cloud-go/compare/recommendationengine/v0.8.10...recommendationengine/v0.8.11) (2024-07-24) + + +### Bug Fixes + +* **recommendationengine:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.8.10](https://github.com/googleapis/google-cloud-go/compare/recommendationengine/v0.8.9...recommendationengine/v0.8.10) (2024-07-10) diff --git a/recommender/CHANGES.md b/recommender/CHANGES.md index a8c63ac0ca40..8759a41fd6fe 100644 --- a/recommender/CHANGES.md +++ b/recommender/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.12.7](https://github.com/googleapis/google-cloud-go/compare/recommender/v1.12.6...recommender/v1.12.7) (2024-07-24) + + +### Bug Fixes + +* **recommender:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.12.6](https://github.com/googleapis/google-cloud-go/compare/recommender/v1.12.5...recommender/v1.12.6) (2024-07-10) diff --git a/recommender/internal/version.go b/recommender/internal/version.go index 5890fe10ce63..0a87ebe16a5d 100644 --- a/recommender/internal/version.go +++ b/recommender/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.12.6" +const Version = "1.12.7" diff --git a/redis/CHANGES.md b/redis/CHANGES.md index f89bb9d83525..a96df0032bf4 100644 --- a/redis/CHANGES.md +++ b/redis/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.16.4](https://github.com/googleapis/google-cloud-go/compare/redis/v1.16.3...redis/v1.16.4) (2024-07-24) + + +### Bug Fixes + +* **redis:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.16.3](https://github.com/googleapis/google-cloud-go/compare/redis/v1.16.2...redis/v1.16.3) (2024-07-10) diff --git a/redis/internal/version.go b/redis/internal/version.go index f73c8b5cbd82..39d1b5a7eb9b 100644 --- a/redis/internal/version.go +++ b/redis/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.16.3" +const Version = "1.16.4" diff --git a/resourcemanager/CHANGES.md b/resourcemanager/CHANGES.md index e2396d0c47d5..a70564a2f327 100644 --- a/resourcemanager/CHANGES.md +++ b/resourcemanager/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.9.11](https://github.com/googleapis/google-cloud-go/compare/resourcemanager/v1.9.10...resourcemanager/v1.9.11) (2024-07-24) + + +### Bug Fixes + +* **resourcemanager:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.9.10](https://github.com/googleapis/google-cloud-go/compare/resourcemanager/v1.9.9...resourcemanager/v1.9.10) (2024-07-10) diff --git a/resourcesettings/CHANGES.md b/resourcesettings/CHANGES.md index 6a8fbc3ce193..2edcf60cfd6b 100644 --- a/resourcesettings/CHANGES.md +++ b/resourcesettings/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.7.4](https://github.com/googleapis/google-cloud-go/compare/resourcesettings/v1.7.3...resourcesettings/v1.7.4) (2024-07-24) + + +### Bug Fixes + +* **resourcesettings:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.7.3](https://github.com/googleapis/google-cloud-go/compare/resourcesettings/v1.7.2...resourcesettings/v1.7.3) (2024-07-10) diff --git a/resourcesettings/internal/version.go b/resourcesettings/internal/version.go index c7da07ea6b49..22f603a2cb07 100644 --- a/resourcesettings/internal/version.go +++ b/resourcesettings/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.7.3" +const Version = "1.7.4" diff --git a/retail/CHANGES.md b/retail/CHANGES.md index 1e69fb57813d..2bf6ade7a1d8 100644 --- a/retail/CHANGES.md +++ b/retail/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.17.4](https://github.com/googleapis/google-cloud-go/compare/retail/v1.17.3...retail/v1.17.4) (2024-07-24) + + +### Bug Fixes + +* **retail:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.17.3](https://github.com/googleapis/google-cloud-go/compare/retail/v1.17.2...retail/v1.17.3) (2024-07-10) diff --git a/retail/internal/version.go b/retail/internal/version.go index 5cbb3e596f58..5963541eacf9 100644 --- a/retail/internal/version.go +++ b/retail/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.17.3" +const Version = "1.17.4" diff --git a/run/CHANGES.md b/run/CHANGES.md index a86b75ea8c95..e9e9b07d5a29 100644 --- a/run/CHANGES.md +++ b/run/CHANGES.md @@ -1,6 +1,25 @@ # Changelog +## [1.4.0](https://github.com/googleapis/google-cloud-go/compare/run/v1.3.10...run/v1.4.0) (2024-07-24) + + +### Features + +* **run:** Add Job ExecutionReference.completion_status to show status of the most recent execution ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) +* **run:** Add Job start_execution_token and run_execution_token to execute jobs immediately on creation ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) +* **run:** Support update_mask in Cloud Run UpdateService ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) + + +### Bug Fixes + +* **run:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + + +### Documentation + +* **run:** Clarify optional fields in Cloud Run requests ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) + ## [1.3.10](https://github.com/googleapis/google-cloud-go/compare/run/v1.3.9...run/v1.3.10) (2024-07-10) diff --git a/scheduler/CHANGES.md b/scheduler/CHANGES.md index 26d42c19b3f6..a5f62f746178 100644 --- a/scheduler/CHANGES.md +++ b/scheduler/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.10.12](https://github.com/googleapis/google-cloud-go/compare/scheduler/v1.10.11...scheduler/v1.10.12) (2024-07-24) + + +### Bug Fixes + +* **scheduler:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.10.11](https://github.com/googleapis/google-cloud-go/compare/scheduler/v1.10.10...scheduler/v1.10.11) (2024-07-10) diff --git a/secretmanager/CHANGES.md b/secretmanager/CHANGES.md index 59100f6b7cf0..24b89375d0de 100644 --- a/secretmanager/CHANGES.md +++ b/secretmanager/CHANGES.md @@ -2,6 +2,13 @@ +## [1.13.5](https://github.com/googleapis/google-cloud-go/compare/secretmanager/v1.13.4...secretmanager/v1.13.5) (2024-07-24) + + +### Bug Fixes + +* **secretmanager:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.13.4](https://github.com/googleapis/google-cloud-go/compare/secretmanager/v1.13.3...secretmanager/v1.13.4) (2024-07-10) diff --git a/secretmanager/internal/version.go b/secretmanager/internal/version.go index 12ef756eb84a..c7e60e4edbca 100644 --- a/secretmanager/internal/version.go +++ b/secretmanager/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.13.4" +const Version = "1.13.5" diff --git a/securesourcemanager/CHANGES.md b/securesourcemanager/CHANGES.md index 66534f4ee55b..9f63b75a843c 100644 --- a/securesourcemanager/CHANGES.md +++ b/securesourcemanager/CHANGES.md @@ -2,6 +2,24 @@ +## [1.1.0](https://github.com/googleapis/google-cloud-go/compare/securesourcemanager/v1.0.2...securesourcemanager/v1.1.0) (2024-07-24) + + +### Features + +* **securesourcemanager:** Add constant `UNKNOWN` to field `State` in message `.google.cloud.securesourcemanager.v1.Instance` ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) +* **securesourcemanager:** Add field `private_config` to message `.google.cloud.securesourcemanager.v1.Instance` ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) + + +### Bug Fixes + +* **securesourcemanager:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + + +### Documentation + +* **securesourcemanager:** A comment for field `instance` in message `.google.cloud.securesourcemanager.v1.Repository` is updated to include data plane vs control plane behavior. ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) + ## [1.0.2](https://github.com/googleapis/google-cloud-go/compare/securesourcemanager/v1.0.1...securesourcemanager/v1.0.2) (2024-07-10) diff --git a/securesourcemanager/internal/version.go b/securesourcemanager/internal/version.go index 50eb607d9e94..e6a10523fe60 100644 --- a/securesourcemanager/internal/version.go +++ b/securesourcemanager/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.0.2" +const Version = "1.1.0" diff --git a/security/CHANGES.md b/security/CHANGES.md index dc31bbe6fc50..4c237b96378d 100644 --- a/security/CHANGES.md +++ b/security/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.17.4](https://github.com/googleapis/google-cloud-go/compare/security/v1.17.3...security/v1.17.4) (2024-07-24) + + +### Bug Fixes + +* **security:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.17.3](https://github.com/googleapis/google-cloud-go/compare/security/v1.17.2...security/v1.17.3) (2024-07-10) diff --git a/security/internal/version.go b/security/internal/version.go index 5cbb3e596f58..5963541eacf9 100644 --- a/security/internal/version.go +++ b/security/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.17.3" +const Version = "1.17.4" diff --git a/securitycenter/CHANGES.md b/securitycenter/CHANGES.md index 78ea56bf505f..0f82f234baad 100644 --- a/securitycenter/CHANGES.md +++ b/securitycenter/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.33.1](https://github.com/googleapis/google-cloud-go/compare/securitycenter/v1.33.0...securitycenter/v1.33.1) (2024-07-24) + + +### Bug Fixes + +* **securitycenter:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.33.0](https://github.com/googleapis/google-cloud-go/compare/securitycenter/v1.32.0...securitycenter/v1.33.0) (2024-07-10) diff --git a/securitycenter/internal/version.go b/securitycenter/internal/version.go index ba70a43673b7..35c87b52802a 100644 --- a/securitycenter/internal/version.go +++ b/securitycenter/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.33.0" +const Version = "1.33.1" diff --git a/securitycentermanagement/CHANGES.md b/securitycentermanagement/CHANGES.md index 2ce48ee420e7..ec462c69926f 100644 --- a/securitycentermanagement/CHANGES.md +++ b/securitycentermanagement/CHANGES.md @@ -2,6 +2,13 @@ +## [1.0.3](https://github.com/googleapis/google-cloud-go/compare/securitycentermanagement/v1.0.2...securitycentermanagement/v1.0.3) (2024-07-24) + + +### Bug Fixes + +* **securitycentermanagement:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.0.2](https://github.com/googleapis/google-cloud-go/compare/securitycentermanagement/v1.0.1...securitycentermanagement/v1.0.2) (2024-07-10) diff --git a/securitycentermanagement/internal/version.go b/securitycentermanagement/internal/version.go index 50eb607d9e94..ceacc1110ea3 100644 --- a/securitycentermanagement/internal/version.go +++ b/securitycentermanagement/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.0.2" +const Version = "1.0.3" diff --git a/securityposture/CHANGES.md b/securityposture/CHANGES.md index a7bf9725bf9b..4a2116a0e5bd 100644 --- a/securityposture/CHANGES.md +++ b/securityposture/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [0.1.7](https://github.com/googleapis/google-cloud-go/compare/securityposture/v0.1.6...securityposture/v0.1.7) (2024-07-24) + + +### Bug Fixes + +* **securityposture:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.1.6](https://github.com/googleapis/google-cloud-go/compare/securityposture/v0.1.5...securityposture/v0.1.6) (2024-07-10) diff --git a/securityposture/internal/version.go b/securityposture/internal/version.go index 60aecb0b4c1f..6411290c9559 100644 --- a/securityposture/internal/version.go +++ b/securityposture/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.1.6" +const Version = "0.1.7" diff --git a/servicecontrol/CHANGES.md b/servicecontrol/CHANGES.md index eeab5b065846..9f26db6ce1eb 100644 --- a/servicecontrol/CHANGES.md +++ b/servicecontrol/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.13.6](https://github.com/googleapis/google-cloud-go/compare/servicecontrol/v1.13.5...servicecontrol/v1.13.6) (2024-07-24) + + +### Bug Fixes + +* **servicecontrol:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.13.5](https://github.com/googleapis/google-cloud-go/compare/servicecontrol/v1.13.4...servicecontrol/v1.13.5) (2024-07-10) diff --git a/servicecontrol/internal/version.go b/servicecontrol/internal/version.go index c7e60e4edbca..f2a7aa3a2d4c 100644 --- a/servicecontrol/internal/version.go +++ b/servicecontrol/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.13.5" +const Version = "1.13.6" diff --git a/servicedirectory/CHANGES.md b/servicedirectory/CHANGES.md index 0f4fec6e73b2..bec925a647de 100644 --- a/servicedirectory/CHANGES.md +++ b/servicedirectory/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.11.11](https://github.com/googleapis/google-cloud-go/compare/servicedirectory/v1.11.10...servicedirectory/v1.11.11) (2024-07-24) + + +### Bug Fixes + +* **servicedirectory:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.11.10](https://github.com/googleapis/google-cloud-go/compare/servicedirectory/v1.11.9...servicedirectory/v1.11.10) (2024-07-10) diff --git a/servicehealth/CHANGES.md b/servicehealth/CHANGES.md index 01e9fe43d276..faf1214177f0 100644 --- a/servicehealth/CHANGES.md +++ b/servicehealth/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.0.4](https://github.com/googleapis/google-cloud-go/compare/servicehealth/v1.0.3...servicehealth/v1.0.4) (2024-07-24) + + +### Bug Fixes + +* **servicehealth:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.0.3](https://github.com/googleapis/google-cloud-go/compare/servicehealth/v1.0.2...servicehealth/v1.0.3) (2024-07-10) diff --git a/servicehealth/internal/version.go b/servicehealth/internal/version.go index e8739e33ee34..c60d55c74940 100644 --- a/servicehealth/internal/version.go +++ b/servicehealth/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.0.3" +const Version = "1.0.4" diff --git a/servicemanagement/CHANGES.md b/servicemanagement/CHANGES.md index 7983a9861f14..cb52e137e628 100644 --- a/servicemanagement/CHANGES.md +++ b/servicemanagement/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.9.12](https://github.com/googleapis/google-cloud-go/compare/servicemanagement/v1.9.11...servicemanagement/v1.9.12) (2024-07-24) + + +### Bug Fixes + +* **servicemanagement:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.9.11](https://github.com/googleapis/google-cloud-go/compare/servicemanagement/v1.9.10...servicemanagement/v1.9.11) (2024-07-10) diff --git a/serviceusage/CHANGES.md b/serviceusage/CHANGES.md index b99c68a716c6..4ca92817af71 100644 --- a/serviceusage/CHANGES.md +++ b/serviceusage/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.8.10](https://github.com/googleapis/google-cloud-go/compare/serviceusage/v1.8.9...serviceusage/v1.8.10) (2024-07-24) + + +### Bug Fixes + +* **serviceusage:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.8.9](https://github.com/googleapis/google-cloud-go/compare/serviceusage/v1.8.8...serviceusage/v1.8.9) (2024-07-10) diff --git a/serviceusage/internal/version.go b/serviceusage/internal/version.go index e20f445e27ad..d1c1cd01ce2a 100644 --- a/serviceusage/internal/version.go +++ b/serviceusage/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.8.9" +const Version = "1.8.10" diff --git a/shell/CHANGES.md b/shell/CHANGES.md index 76e6581f094b..ea8d8dc1cea3 100644 --- a/shell/CHANGES.md +++ b/shell/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.7.11](https://github.com/googleapis/google-cloud-go/compare/shell/v1.7.10...shell/v1.7.11) (2024-07-24) + + +### Bug Fixes + +* **shell:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.7.10](https://github.com/googleapis/google-cloud-go/compare/shell/v1.7.9...shell/v1.7.10) (2024-07-10) diff --git a/shopping/CHANGES.md b/shopping/CHANGES.md index ae72d62a2091..efdee8a93ded 100644 --- a/shopping/CHANGES.md +++ b/shopping/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [0.8.6](https://github.com/googleapis/google-cloud-go/compare/shopping/v0.8.5...shopping/v0.8.6) (2024-07-24) + + +### Bug Fixes + +* **shopping:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.8.5](https://github.com/googleapis/google-cloud-go/compare/shopping/v0.8.4...shopping/v0.8.5) (2024-07-10) diff --git a/shopping/internal/version.go b/shopping/internal/version.go index c14d2076cdb7..10a9dc9c7068 100644 --- a/shopping/internal/version.go +++ b/shopping/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.8.5" +const Version = "0.8.6" diff --git a/speech/CHANGES.md b/speech/CHANGES.md index c3978daf2522..b56116a6840b 100644 --- a/speech/CHANGES.md +++ b/speech/CHANGES.md @@ -1,5 +1,23 @@ # Changes +## [1.24.0](https://github.com/googleapis/google-cloud-go/compare/speech/v1.23.4...speech/v1.24.0) (2024-07-24) + + +### Features + +* **speech:** Add locations metadata proto file ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) + + +### Bug Fixes + +* **speech:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + + +### Documentation + +* **speech:** Update the list of automatically detected encodings ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) +* **speech:** Update the maximum number of files that may be included in a BatchRecognizeRequest ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) + ## [1.23.4](https://github.com/googleapis/google-cloud-go/compare/speech/v1.23.3...speech/v1.23.4) (2024-07-10) diff --git a/speech/internal/version.go b/speech/internal/version.go index 27a1970b9d82..291a237fe1cd 100644 --- a/speech/internal/version.go +++ b/speech/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.23.4" +const Version = "1.24.0" diff --git a/storageinsights/CHANGES.md b/storageinsights/CHANGES.md index a1f015178c81..63708cda9daf 100644 --- a/storageinsights/CHANGES.md +++ b/storageinsights/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.0.11](https://github.com/googleapis/google-cloud-go/compare/storageinsights/v1.0.10...storageinsights/v1.0.11) (2024-07-24) + + +### Bug Fixes + +* **storageinsights:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.0.10](https://github.com/googleapis/google-cloud-go/compare/storageinsights/v1.0.9...storageinsights/v1.0.10) (2024-07-10) diff --git a/storagetransfer/CHANGES.md b/storagetransfer/CHANGES.md index 070f25bfab3c..6ac45283d684 100644 --- a/storagetransfer/CHANGES.md +++ b/storagetransfer/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.10.10](https://github.com/googleapis/google-cloud-go/compare/storagetransfer/v1.10.9...storagetransfer/v1.10.10) (2024-07-24) + + +### Bug Fixes + +* **storagetransfer:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.10.9](https://github.com/googleapis/google-cloud-go/compare/storagetransfer/v1.10.8...storagetransfer/v1.10.9) (2024-07-10) diff --git a/storagetransfer/internal/version.go b/storagetransfer/internal/version.go index 7f12581b9aaf..3bec427006ab 100644 --- a/storagetransfer/internal/version.go +++ b/storagetransfer/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.10.9" +const Version = "1.10.10" diff --git a/streetview/CHANGES.md b/streetview/CHANGES.md index 39666c48eae2..17a7641e3208 100644 --- a/streetview/CHANGES.md +++ b/streetview/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [0.1.4](https://github.com/googleapis/google-cloud-go/compare/streetview/v0.1.3...streetview/v0.1.4) (2024-07-24) + + +### Bug Fixes + +* **streetview:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.1.3](https://github.com/googleapis/google-cloud-go/compare/streetview/v0.1.2...streetview/v0.1.3) (2024-07-10) diff --git a/streetview/internal/version.go b/streetview/internal/version.go index 14256f5b3c99..a795fcbaaf37 100644 --- a/streetview/internal/version.go +++ b/streetview/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.1.3" +const Version = "0.1.4" diff --git a/support/CHANGES.md b/support/CHANGES.md index c29f5583d767..4394479fd2a8 100644 --- a/support/CHANGES.md +++ b/support/CHANGES.md @@ -1,6 +1,13 @@ # Changelog +## [1.0.10](https://github.com/googleapis/google-cloud-go/compare/support/v1.0.9...support/v1.0.10) (2024-07-24) + + +### Bug Fixes + +* **support:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.0.9](https://github.com/googleapis/google-cloud-go/compare/support/v1.0.8...support/v1.0.9) (2024-07-10) diff --git a/support/internal/version.go b/support/internal/version.go index 923be538f733..adc5f63c9b34 100644 --- a/support/internal/version.go +++ b/support/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.0.9" +const Version = "1.0.10" diff --git a/talent/CHANGES.md b/talent/CHANGES.md index 517000b74939..de13ca589161 100644 --- a/talent/CHANGES.md +++ b/talent/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.6.12](https://github.com/googleapis/google-cloud-go/compare/talent/v1.6.11...talent/v1.6.12) (2024-07-24) + + +### Bug Fixes + +* **talent:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.6.11](https://github.com/googleapis/google-cloud-go/compare/talent/v1.6.10...talent/v1.6.11) (2024-07-10) diff --git a/telcoautomation/CHANGES.md b/telcoautomation/CHANGES.md index 939208db83f8..d3a3e68c100d 100644 --- a/telcoautomation/CHANGES.md +++ b/telcoautomation/CHANGES.md @@ -2,6 +2,13 @@ +## [1.0.3](https://github.com/googleapis/google-cloud-go/compare/telcoautomation/v1.0.2...telcoautomation/v1.0.3) (2024-07-24) + + +### Bug Fixes + +* **telcoautomation:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.0.2](https://github.com/googleapis/google-cloud-go/compare/telcoautomation/v1.0.1...telcoautomation/v1.0.2) (2024-07-10) diff --git a/telcoautomation/internal/version.go b/telcoautomation/internal/version.go index 50eb607d9e94..ceacc1110ea3 100644 --- a/telcoautomation/internal/version.go +++ b/telcoautomation/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.0.2" +const Version = "1.0.3" diff --git a/texttospeech/CHANGES.md b/texttospeech/CHANGES.md index 4450c7b67c41..99d627df450b 100644 --- a/texttospeech/CHANGES.md +++ b/texttospeech/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.7.11](https://github.com/googleapis/google-cloud-go/compare/texttospeech/v1.7.10...texttospeech/v1.7.11) (2024-07-24) + + +### Bug Fixes + +* **texttospeech:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.7.10](https://github.com/googleapis/google-cloud-go/compare/texttospeech/v1.7.9...texttospeech/v1.7.10) (2024-07-10) diff --git a/tpu/CHANGES.md b/tpu/CHANGES.md index 415d219f402f..f25636f19b62 100644 --- a/tpu/CHANGES.md +++ b/tpu/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.6.11](https://github.com/googleapis/google-cloud-go/compare/tpu/v1.6.10...tpu/v1.6.11) (2024-07-24) + + +### Bug Fixes + +* **tpu:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.6.10](https://github.com/googleapis/google-cloud-go/compare/tpu/v1.6.9...tpu/v1.6.10) (2024-07-10) diff --git a/trace/CHANGES.md b/trace/CHANGES.md index b1fbb7bf7831..73e309a30fe2 100644 --- a/trace/CHANGES.md +++ b/trace/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.10.11](https://github.com/googleapis/google-cloud-go/compare/trace/v1.10.10...trace/v1.10.11) (2024-07-24) + + +### Bug Fixes + +* **trace:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.10.10](https://github.com/googleapis/google-cloud-go/compare/trace/v1.10.9...trace/v1.10.10) (2024-07-10) diff --git a/translate/CHANGES.md b/translate/CHANGES.md index 243a8872fd21..ec6680f58beb 100644 --- a/translate/CHANGES.md +++ b/translate/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.10.7](https://github.com/googleapis/google-cloud-go/compare/translate/v1.10.6...translate/v1.10.7) (2024-07-24) + + +### Bug Fixes + +* **translate:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.10.6](https://github.com/googleapis/google-cloud-go/compare/translate/v1.10.5...translate/v1.10.6) (2024-07-10) diff --git a/translate/internal/version.go b/translate/internal/version.go index aea8a434cf1e..36faf950ae25 100644 --- a/translate/internal/version.go +++ b/translate/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.10.6" +const Version = "1.10.7" diff --git a/video/CHANGES.md b/video/CHANGES.md index e77f4bb36739..6dadc43d49ab 100644 --- a/video/CHANGES.md +++ b/video/CHANGES.md @@ -1,6 +1,25 @@ # Changes +## [1.22.0](https://github.com/googleapis/google-cloud-go/compare/video/v1.21.3...video/v1.22.0) (2024-07-24) + + +### Features + +* **video/livestream:** Added Clip resource for performing clip cutting jobs ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) +* **video/livestream:** Added RetentionConfig for enabling retention of output media segments ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) +* **video/livestream:** Added StaticOverlay for embedding images the whole duration of the live stream ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) + + +### Bug Fixes + +* **video:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + + +### Documentation + +* **video/livestream:** Clarify the format of key/id fields ([eb63f0d](https://github.com/googleapis/google-cloud-go/commit/eb63f0d4f42a06581e1425f99c2a03d52d6cb404)) + ## [1.21.3](https://github.com/googleapis/google-cloud-go/compare/video/v1.21.2...video/v1.21.3) (2024-07-10) diff --git a/video/internal/version.go b/video/internal/version.go index 7278f9a48bfb..eddfee04b0b3 100644 --- a/video/internal/version.go +++ b/video/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.21.3" +const Version = "1.22.0" diff --git a/videointelligence/CHANGES.md b/videointelligence/CHANGES.md index 7f6d380b147c..ba3a46229d9a 100644 --- a/videointelligence/CHANGES.md +++ b/videointelligence/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.11.11](https://github.com/googleapis/google-cloud-go/compare/videointelligence/v1.11.10...videointelligence/v1.11.11) (2024-07-24) + + +### Bug Fixes + +* **videointelligence:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.11.10](https://github.com/googleapis/google-cloud-go/compare/videointelligence/v1.11.9...videointelligence/v1.11.10) (2024-07-10) diff --git a/vision/CHANGES.md b/vision/CHANGES.md index 1a309533c853..59367097c651 100644 --- a/vision/CHANGES.md +++ b/vision/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [2.8.6](https://github.com/googleapis/google-cloud-go/compare/vision/v2.8.5...vision/v2.8.6) (2024-07-24) + + +### Bug Fixes + +* **vision/v2:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [2.8.5](https://github.com/googleapis/google-cloud-go/compare/vision/v2.8.4...vision/v2.8.5) (2024-07-10) diff --git a/vision/internal/version.go b/vision/internal/version.go index 309e66c0d78a..d04cb920efe1 100644 --- a/vision/internal/version.go +++ b/vision/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "2.8.5" +const Version = "2.8.6" diff --git a/visionai/CHANGES.md b/visionai/CHANGES.md index 3e8318d09c69..9ad931958ead 100644 --- a/visionai/CHANGES.md +++ b/visionai/CHANGES.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.4](https://github.com/googleapis/google-cloud-go/compare/visionai/v0.2.3...visionai/v0.2.4) (2024-07-24) + + +### Bug Fixes + +* **visionai:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [0.2.3](https://github.com/googleapis/google-cloud-go/compare/visionai/v0.2.2...visionai/v0.2.3) (2024-07-10) diff --git a/visionai/internal/version.go b/visionai/internal/version.go index 37101c109e28..2a77beb6e44a 100644 --- a/visionai/internal/version.go +++ b/visionai/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.2.3" +const Version = "0.2.4" diff --git a/vmmigration/CHANGES.md b/vmmigration/CHANGES.md index 880d3e29807c..3860f52c7219 100644 --- a/vmmigration/CHANGES.md +++ b/vmmigration/CHANGES.md @@ -1,6 +1,13 @@ # Changes +## [1.7.11](https://github.com/googleapis/google-cloud-go/compare/vmmigration/v1.7.10...vmmigration/v1.7.11) (2024-07-24) + + +### Bug Fixes + +* **vmmigration:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.7.10](https://github.com/googleapis/google-cloud-go/compare/vmmigration/v1.7.9...vmmigration/v1.7.10) (2024-07-10) diff --git a/vmwareengine/CHANGES.md b/vmwareengine/CHANGES.md index b476413b5fb5..ac6e886dbfb7 100644 --- a/vmwareengine/CHANGES.md +++ b/vmwareengine/CHANGES.md @@ -1,6 +1,18 @@ # Changelog +## [1.2.0](https://github.com/googleapis/google-cloud-go/compare/vmwareengine/v1.1.6...vmwareengine/v1.2.0) (2024-07-24) + + +### Features + +* **vmwareengine:** Adding autoscaling settings ([1bb4c84](https://github.com/googleapis/google-cloud-go/commit/1bb4c846ec1ff37f394afb1684823ea76c18d16e)) + + +### Bug Fixes + +* **vmwareengine:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.1.6](https://github.com/googleapis/google-cloud-go/compare/vmwareengine/v1.1.5...vmwareengine/v1.1.6) (2024-07-10) diff --git a/vmwareengine/internal/version.go b/vmwareengine/internal/version.go index 00e89eacc1d0..6508e4822b51 100644 --- a/vmwareengine/internal/version.go +++ b/vmwareengine/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.1.6" +const Version = "1.2.0" diff --git a/vpcaccess/CHANGES.md b/vpcaccess/CHANGES.md index ef301730a125..3d773bb7ac37 100644 --- a/vpcaccess/CHANGES.md +++ b/vpcaccess/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.7.11](https://github.com/googleapis/google-cloud-go/compare/vpcaccess/v1.7.10...vpcaccess/v1.7.11) (2024-07-24) + + +### Bug Fixes + +* **vpcaccess:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.7.10](https://github.com/googleapis/google-cloud-go/compare/vpcaccess/v1.7.9...vpcaccess/v1.7.10) (2024-07-10) diff --git a/webrisk/CHANGES.md b/webrisk/CHANGES.md index 2146bd4218ad..652424a64cb0 100644 --- a/webrisk/CHANGES.md +++ b/webrisk/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.9.11](https://github.com/googleapis/google-cloud-go/compare/webrisk/v1.9.10...webrisk/v1.9.11) (2024-07-24) + + +### Bug Fixes + +* **webrisk:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.9.10](https://github.com/googleapis/google-cloud-go/compare/webrisk/v1.9.9...webrisk/v1.9.10) (2024-07-10) diff --git a/websecurityscanner/CHANGES.md b/websecurityscanner/CHANGES.md index 27cfac62385f..a9d0cb0a6be6 100644 --- a/websecurityscanner/CHANGES.md +++ b/websecurityscanner/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.6.11](https://github.com/googleapis/google-cloud-go/compare/websecurityscanner/v1.6.10...websecurityscanner/v1.6.11) (2024-07-24) + + +### Bug Fixes + +* **websecurityscanner:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.6.10](https://github.com/googleapis/google-cloud-go/compare/websecurityscanner/v1.6.9...websecurityscanner/v1.6.10) (2024-07-10) diff --git a/workflows/CHANGES.md b/workflows/CHANGES.md index 103858ee6b42..3cc64f138ceb 100644 --- a/workflows/CHANGES.md +++ b/workflows/CHANGES.md @@ -1,5 +1,12 @@ # Changes +## [1.12.10](https://github.com/googleapis/google-cloud-go/compare/workflows/v1.12.9...workflows/v1.12.10) (2024-07-24) + + +### Bug Fixes + +* **workflows:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.12.9](https://github.com/googleapis/google-cloud-go/compare/workflows/v1.12.8...workflows/v1.12.9) (2024-07-10) diff --git a/workflows/internal/version.go b/workflows/internal/version.go index 74965ec94d7a..6025694dabc5 100644 --- a/workflows/internal/version.go +++ b/workflows/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.12.9" +const Version = "1.12.10" diff --git a/workstations/CHANGES.md b/workstations/CHANGES.md index 4a41fcb1bf41..1b0dd4dc436f 100644 --- a/workstations/CHANGES.md +++ b/workstations/CHANGES.md @@ -2,6 +2,13 @@ +## [1.0.4](https://github.com/googleapis/google-cloud-go/compare/workstations/v1.0.3...workstations/v1.0.4) (2024-07-24) + + +### Bug Fixes + +* **workstations:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + ## [1.0.3](https://github.com/googleapis/google-cloud-go/compare/workstations/v1.0.2...workstations/v1.0.3) (2024-07-10) diff --git a/workstations/internal/version.go b/workstations/internal/version.go index ceacc1110ea3..0e104fcfb551 100644 --- a/workstations/internal/version.go +++ b/workstations/internal/version.go @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.0.3" +const Version = "1.0.4"