From 8f791bd3699459b02cd4784be69bb66dfad999f8 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Mon, 27 May 2024 19:31:50 +0000 Subject: [PATCH 01/24] feat: enable hermetic library generation --- .../{.OwlBot.yaml => .OwlBot-hermetic.yaml} | 0 .../hermetic_library_generation.yaml | 39 ++++++ .../update_googleapis_committish.yaml | 42 ++++++ generation/hermetic_library_generation.sh | 125 ++++++++++++++++++ generation/update_googleapis_committish.sh | 92 +++++++++++++ generation_config.yaml | 33 +++++ 6 files changed, 331 insertions(+) rename .github/{.OwlBot.yaml => .OwlBot-hermetic.yaml} (100%) create mode 100644 .github/workflows/hermetic_library_generation.yaml create mode 100644 .github/workflows/update_googleapis_committish.yaml create mode 100644 generation/hermetic_library_generation.sh create mode 100644 generation/update_googleapis_committish.sh create mode 100644 generation_config.yaml diff --git a/.github/.OwlBot.yaml b/.github/.OwlBot-hermetic.yaml similarity index 100% rename from .github/.OwlBot.yaml rename to .github/.OwlBot-hermetic.yaml diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml new file mode 100644 index 000000000..a7e05557b --- /dev/null +++ b/.github/workflows/hermetic_library_generation.yaml @@ -0,0 +1,39 @@ +# 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. +# GitHub action job to test core java library features on +# downstream client libraries before they are released. +name: Hermetic library generation upon generation config change through pull requests +on: + pull_request: + +jobs: + library_generation: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} + - name: Generate changed libraries + shell: bash + run: | + set -x + [ -z "$(git config user.email)" ] && git config --global user.email "cloud-java-bot@google.com" + [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" + bash generation/hermetic_library_generation.sh \ + --target_branch ${{ github.base_ref }} \ + --current_branch ${{ github.head_ref }} \ + --image_tag $(cat generation_config.yaml | yq .gapic_generator_version) + env: + GH_TOKEN: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} diff --git a/.github/workflows/update_googleapis_committish.yaml b/.github/workflows/update_googleapis_committish.yaml new file mode 100644 index 000000000..aac08d039 --- /dev/null +++ b/.github/workflows/update_googleapis_committish.yaml @@ -0,0 +1,42 @@ +# 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. +# GitHub action job to test core java library features on +# downstream client libraries before they are released. +name: Update googleapis commit +on: + schedule: + - cron: '0 2 * * *' + workflow_dispatch: + +jobs: + update-googleapis-committish: + runs-on: ubuntu-22.04 + env: + # the branch into which the pull request is merged + base_branch: main + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} + - name: Update googleapis committish to latest + shell: bash + run: | + set -x + [ -z "$(git config user.email)" ] && git config --global user.email "cloud-java-bot@google.com" + [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" + bash generation/update_googleapis_committish.sh \ + --base_branch "${base_branch}"\ + --repo ${{ github.repository }} + env: + GH_TOKEN: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} diff --git a/generation/hermetic_library_generation.sh b/generation/hermetic_library_generation.sh new file mode 100644 index 000000000..f425d9c12 --- /dev/null +++ b/generation/hermetic_library_generation.sh @@ -0,0 +1,125 @@ +#!/bin/bash +set -e +# This script should be run at the root of the repository. +# This script is used to, when a pull request changes the generation +# configuration (generation_config.yaml by default): +# 1. Find whether the last commit in this pull request contains changes to +# the generation configuration and exit early if it doesn't have such a change +# since the generation result would be the same. +# 2. Compare generation configurations in the current branch (with which the +# pull request associated) and target branch (into which the pull request is +# merged); +# 3. Generate changed libraries using library_generation image; +# 4. Commit the changes to the pull request, if any. +# 5. Edit the PR body with generated pull request description, if applicable. + +# The following commands need to be installed before running the script: +# 1. git +# 2. gh +# 3. docker + +# The parameters of this script is: +# 1. target_branch, the branch into which the pull request is merged. +# 2. current_branch, the branch with which the pull request is associated. +# 3. image_tag, the tag of gcr.io/cloud-devrel-public-resources/java-library-generation. +# 3. [optional] generation_config, the path to the generation configuration, +# the default value is generation_config.yaml in the repository root. +while [[ $# -gt 0 ]]; do +key="$1" +case "${key}" in + --target_branch) + target_branch="$2" + shift + ;; + --current_branch) + current_branch="$2" + shift + ;; + --image_tag) + image_tag="$2" + shift + ;; + --generation_config) + generation_config="$2" + shift + ;; + *) + echo "Invalid option: [$1]" + exit 1 + ;; +esac +shift +done + +if [ -z "${target_branch}" ]; then + echo "missing required argument --target_branch" + exit 1 +fi + +if [ -z "${current_branch}" ]; then + echo "missing required argument --current_branch" + exit 1 +fi + +if [ -z "${image_tag}" ]; then + echo "missing required argument --image_tag" + exit 1 +fi + +if [ -z "${generation_config}" ]; then + generation_config=generation_config.yaml + echo "Use default generation config: ${generation_config}" +fi + +workspace_name="/workspace" +baseline_generation_config="baseline_generation_config.yaml" +message="chore: generate libraries at $(date)" + +git checkout "${target_branch}" +git checkout "${current_branch}" +# if the last commit doesn't contain changes to generation configuration, +# do not generate again as the result will be the same. +change_of_last_commit="$(git diff-tree --no-commit-id --name-only HEAD~1..HEAD -r)" +if [[ ! ("${change_of_last_commit}" == *"${generation_config}"*) ]]; then + echo "The last commit doesn't contain any changes to the generation_config.yaml, skipping the whole generation process." || true + exit 0 +fi +# copy generation configuration from target branch to current branch. +git show "${target_branch}":"${generation_config}" > "${baseline_generation_config}" +config_diff=$(diff "${generation_config}" "${baseline_generation_config}" || true) + +# run hermetic code generation docker image. +docker run \ + --rm \ + -u "$(id -u):$(id -g)" \ + -v "$(pwd):${workspace_name}" \ + -v "${HOME}/.m2:/home/.m2" \ + gcr.io/cloud-devrel-public-resources/java-library-generation:"${image_tag}" \ + --baseline-generation-config-path="${workspace_name}/${baseline_generation_config}" \ + --current-generation-config-path="${workspace_name}/${generation_config}" + + +# commit the change to the pull request. +if [[ $(basename $(pwd)) == "google-cloud-java" ]]; then + git add java-* pom.xml gapic-libraries-bom/pom.xml versions.txt +else + # The image leaves intermediate folders and files it works with. Here we remove them + rm -rdf output googleapis baseline_generation_config.yaml pr_description.txt + git add . +fi +changed_files=$(git diff --cached --name-only) +if [[ "${changed_files}" == "" ]]; then + echo "There is no generated code change with the generation config change ${config_diff}." + echo "Skip committing to the pull request." + exit 0 +fi + +echo "Configuration diff:" +echo "${config_diff}" +git commit -m "${message}" +git push +# set pr body if pr_description.txt is generated. +if [[ -f "pr_description.txt" ]]; then + pr_num=$(gh pr list -s open -H "${current_branch}" -q . --json number | jq ".[] | .number") + gh pr edit "${pr_num}" --body "$(cat pr_description.txt)" +fi diff --git a/generation/update_googleapis_committish.sh b/generation/update_googleapis_committish.sh new file mode 100644 index 000000000..5dfcaba56 --- /dev/null +++ b/generation/update_googleapis_committish.sh @@ -0,0 +1,92 @@ +#!/bin/bash +set -e +# This script should be run at the root of the repository. +# This script is used to update googleapis committish to latest in generation +# configuration at the time of running and create a pull request. + +# The following commands need to be installed before running the script: +# 1. git +# 2. gh + +# The parameters of this script is: +# 1. base_branch, the base branch of the result pull request. +# 2. repo, organization/repo-name, e.g., googleapis/google-cloud-java +# 3. [optional] generation_config, the path to the generation configuration, +# the default value is generation_config.yaml in the repository root. +while [[ $# -gt 0 ]]; do +key="$1" +case "${key}" in + --base_branch) + base_branch="$2" + shift + ;; + --repo) + repo="$2" + shift + ;; + --generation_config) + generation_config="$2" + shift + ;; + *) + echo "Invalid option: [$1]" + exit 1 + ;; +esac +shift +done + +if [ -z "${base_branch}" ]; then + echo "missing required argument --base_branch" + exit 1 +fi + +if [ -z "${repo}" ]; then + echo "missing required argument --repo" + exit 1 +fi + +if [ -z "${generation_config}" ]; then + generation_config="generation_config.yaml" + echo "Use default generation config: ${generation_config}" +fi + +current_branch="generate-libraries-${base_branch}" +title="chore: update googleapis committish at $(date)" + +# try to find a open pull request associated with the branch +pr_num=$(gh pr list -s open -H "${current_branch}" -q . --json number | jq ".[] | .number") +# create a branch if there's no open pull request associated with the +# branch; otherwise checkout the pull request. +if [ -z "${pr_num}" ]; then + git checkout -b "${current_branch}" +else + gh pr checkout "${pr_num}" +fi + +mkdir tmp-googleapis +# use partial clone because only commit history is needed. +git clone --filter=blob:none https://github.com/googleapis/googleapis.git tmp-googleapis +pushd tmp-googleapis +git pull +latest_commit=$(git rev-parse HEAD) +popd +rm -rf tmp-googleapis +sed -i -e "s/^googleapis_commitish.*$/googleapis_commitish: ${latest_commit}/" "${generation_config}" + +git add "${generation_config}" +changed_files=$(git diff --cached --name-only) +if [[ "${changed_files}" == "" ]]; then + echo "The latest googleapis commit is not changed." + echo "Skip committing to the pull request." + exit 0 +fi +git commit -m "${title}" +if [ -z "${pr_num}" ]; then + git remote add remote_repo https://cloud-java-bot:"${GH_TOKEN}@github.com/${repo}.git" + git fetch -q --unshallow remote_repo + git push -f remote_repo "${current_branch}" + gh pr create --title "${title}" --head "${current_branch}" --body "${title}" --base "${base_branch}" +else + git push +fi diff --git a/generation_config.yaml b/generation_config.yaml new file mode 100644 index 000000000..4cea63eb1 --- /dev/null +++ b/generation_config.yaml @@ -0,0 +1,33 @@ +gapic_generator_version: 2.40.1 +protoc_version: '25.2' +googleapis_commitish: 6f289d775912966eb0cf04bda91e5e355c998d30 +libraries_bom_version: 26.38.0 +template_excludes: + - ".github/workflows/samples.yaml" + - ".kokoro/build.sh" + - ".github/sync-repo-settings.yaml" + - ".github/blunderbuss.yml" + - '.kokoro/requirements.in' + - '.kokoro/requirements.txt' + - '.kokoro/presubmit/graalvm-native.cfg' + - '.kokoro/presubmit/graalvm-native-17.cfg' +ibraries: + - api_shortname: "pubsub" + name_pretty: "Cloud Pub/Sub" + api_reference: "https://cloud.google.com/pubsub/" + product_documentation: "https://cloud.google.com/pubsub/docs/" + client_documentation: "https://cloud.google.com/java/docs/reference/google-cloud-pubsub/latest/history" + api_description: "is designed to provide reliable, many-to-many, asynchronous messaging between applications. Publisher applications can send messages to a topic and other applications can subscribe to that topic to receive the messages. By decoupling senders and receivers, Google Cloud Pub/Sub allows developers to communicate between independently written applications." + issue_tracker: "https://issuetracker.google.com/savedsearches/559741" + release_level: "stable" + language: "java" + repo: "googleapis/java-pubsub" + repo_short: "java-pubsub" + distribution_name: "com.google.cloud:google-cloud-pubsub" + codeowner_team: "@googleapis/api-pubsub" + api_id: "pubsub.googleapis.com" + library_type: "GAPIC_COMBO" + requires_billing: true + recommended_package: "com.google.cloud.pubsub.v1" + GAPICs: + - proto_path: google/pubsub/v1 From 81bcd5452e1a0e58792dde414e1b17079bf55fe2 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Mon, 27 May 2024 20:47:57 +0000 Subject: [PATCH 02/24] fix config yaml syntax --- generation_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generation_config.yaml b/generation_config.yaml index 4cea63eb1..69d385ed4 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -30,4 +30,4 @@ ibraries: requires_billing: true recommended_package: "com.google.cloud.pubsub.v1" GAPICs: - - proto_path: google/pubsub/v1 + - proto_path: google/pubsub/v1 From 462b3fc9a150d7ec02bf0afa9ec66d774f5a6339 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Tue, 28 May 2024 00:08:47 +0000 Subject: [PATCH 03/24] do not map runners home folder --- generation/hermetic_library_generation.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/generation/hermetic_library_generation.sh b/generation/hermetic_library_generation.sh index f425d9c12..9464642d9 100644 --- a/generation/hermetic_library_generation.sh +++ b/generation/hermetic_library_generation.sh @@ -93,7 +93,6 @@ docker run \ --rm \ -u "$(id -u):$(id -g)" \ -v "$(pwd):${workspace_name}" \ - -v "${HOME}/.m2:/home/.m2" \ gcr.io/cloud-devrel-public-resources/java-library-generation:"${image_tag}" \ --baseline-generation-config-path="${workspace_name}/${baseline_generation_config}" \ --current-generation-config-path="${workspace_name}/${generation_config}" From 79fe5dcb540cd196c6832303376a3d39d1c70a02 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Tue, 28 May 2024 00:24:33 +0000 Subject: [PATCH 04/24] try dummy proto_path --- generation_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generation_config.yaml b/generation_config.yaml index 69d385ed4..516297946 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -11,7 +11,7 @@ template_excludes: - '.kokoro/requirements.txt' - '.kokoro/presubmit/graalvm-native.cfg' - '.kokoro/presubmit/graalvm-native-17.cfg' -ibraries: +libraries: - api_shortname: "pubsub" name_pretty: "Cloud Pub/Sub" api_reference: "https://cloud.google.com/pubsub/" From 85ea80da1ee66954b6c0ee35dbb9ea61cbc2df80 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Tue, 28 May 2024 00:39:48 +0000 Subject: [PATCH 05/24] use copyright update comittish --- generation_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generation_config.yaml b/generation_config.yaml index 516297946..507f659dc 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,6 +1,6 @@ gapic_generator_version: 2.40.1 protoc_version: '25.2' -googleapis_commitish: 6f289d775912966eb0cf04bda91e5e355c998d30 +googleapis_committish: 3597f7db2191c00b100400991ef96e52d62f5841 libraries_bom_version: 26.38.0 template_excludes: - ".github/workflows/samples.yaml" From 278b63feb2d4b9ed499afabf5bb1b1c679ff65e8 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Tue, 28 May 2024 00:41:57 +0000 Subject: [PATCH 06/24] correct proto_path --- generation_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generation_config.yaml b/generation_config.yaml index 507f659dc..516297946 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,6 +1,6 @@ gapic_generator_version: 2.40.1 protoc_version: '25.2' -googleapis_committish: 3597f7db2191c00b100400991ef96e52d62f5841 +googleapis_commitish: 6f289d775912966eb0cf04bda91e5e355c998d30 libraries_bom_version: 26.38.0 template_excludes: - ".github/workflows/samples.yaml" From 62c0be2988c24b1fe11f7dc9b4126d4ff6e890c8 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Tue, 28 May 2024 14:29:04 +0000 Subject: [PATCH 07/24] update protoc --- generation_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generation_config.yaml b/generation_config.yaml index 516297946..f040d1994 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,5 +1,5 @@ gapic_generator_version: 2.40.1 -protoc_version: '25.2' +protoc_version: '25.3' googleapis_commitish: 6f289d775912966eb0cf04bda91e5e355c998d30 libraries_bom_version: 26.38.0 template_excludes: From cba00e6eba4785ed27e9056a168b8c264f292f60 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Wed, 29 May 2024 21:32:33 +0000 Subject: [PATCH 08/24] preserve pr_description --- generation/hermetic_library_generation.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generation/hermetic_library_generation.sh b/generation/hermetic_library_generation.sh index 9464642d9..d7e55e3c6 100644 --- a/generation/hermetic_library_generation.sh +++ b/generation/hermetic_library_generation.sh @@ -103,8 +103,8 @@ if [[ $(basename $(pwd)) == "google-cloud-java" ]]; then git add java-* pom.xml gapic-libraries-bom/pom.xml versions.txt else # The image leaves intermediate folders and files it works with. Here we remove them - rm -rdf output googleapis baseline_generation_config.yaml pr_description.txt - git add . + rm -rdf output googleapis "${baseline_generation_config}" + git add --all -- ':!pr_description.txt' fi changed_files=$(git diff --cached --name-only) if [[ "${changed_files}" == "" ]]; then From d9e9e3abd7ee2278f456fb6804f38751422e3f04 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Tue, 4 Jun 2024 20:50:24 +0000 Subject: [PATCH 09/24] update gapic_generator_version to 2.41.0 --- .repo-metadata.json | 10 +- README.md | 12 +- generation_config.yaml | 2 +- .../google/pubsub/v1/CloudStorageConfig.java | 244 +--------- .../v1/CloudStorageConfigOrBuilder.java | 29 -- .../v1/IngestionDataSourceSettings.java | 4 +- .../com/google/pubsub/v1/PubsubProto.java | 453 +++++++++--------- .../com/google/pubsub/v1/PullRequest.java | 8 +- .../pubsub/v1/PullRequestOrBuilder.java | 2 +- .../main/proto/google/pubsub/v1/pubsub.proto | 9 +- .../main/proto/google/pubsub/v1/schema.proto | 2 +- renovate.json | 4 +- 12 files changed, 268 insertions(+), 511 deletions(-) diff --git a/.repo-metadata.json b/.repo-metadata.json index f30706ceb..7e7843024 100644 --- a/.repo-metadata.json +++ b/.repo-metadata.json @@ -1,19 +1,19 @@ { "api_shortname": "pubsub", "name_pretty": "Cloud Pub/Sub", - "api_reference": "https://cloud.google.com/pubsub/", "product_documentation": "https://cloud.google.com/pubsub/docs/", - "client_documentation": "https://cloud.google.com/java/docs/reference/google-cloud-pubsub/latest/history", "api_description": "is designed to provide reliable, many-to-many, asynchronous messaging between applications. Publisher applications can send messages to a topic and other applications can subscribe to that topic to receive the messages. By decoupling senders and receivers, Google Cloud Pub/Sub allows developers to communicate between independently written applications.", - "issue_tracker": "https://issuetracker.google.com/savedsearches/559741", + "client_documentation": "https://cloud.google.com/java/docs/reference/google-cloud-pubsub/latest/history", "release_level": "stable", + "transport": "both", "language": "java", "repo": "googleapis/java-pubsub", "repo_short": "java-pubsub", "distribution_name": "com.google.cloud:google-cloud-pubsub", - "codeowner_team": "@googleapis/api-pubsub", "api_id": "pubsub.googleapis.com", "library_type": "GAPIC_COMBO", "requires_billing": true, - "recommended_package": "com.google.cloud.pubsub.v1" + "api_reference": "https://cloud.google.com/pubsub/", + "codeowner_team": "@googleapis/api-pubsub", + "issue_tracker": "https://issuetracker.google.com/savedsearches/559741" } \ No newline at end of file diff --git a/README.md b/README.md index 55d765048..497c13c73 100644 --- a/README.md +++ b/README.md @@ -52,20 +52,20 @@ If you are using Maven without the BOM, add this to your dependencies: If you are using Gradle 5.x or later, add this to your dependencies: ```Groovy -implementation platform('com.google.cloud:libraries-bom:26.42.0') +implementation platform('com.google.cloud:libraries-bom:26.40.0') implementation 'com.google.cloud:google-cloud-pubsub' ``` If you are using Gradle without BOM, add this to your dependencies: ```Groovy -implementation 'com.google.cloud:google-cloud-pubsub:1.130.1' +implementation 'com.google.cloud:google-cloud-pubsub:1.129.7' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-pubsub" % "1.130.1" +libraryDependencies += "com.google.cloud" % "google-cloud-pubsub" % "1.129.7" ``` @@ -319,6 +319,10 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-pubsub/tree/m To get help, follow the instructions in the [shared Troubleshooting document][troubleshooting]. +## Transport + +Cloud Pub/Sub uses both gRPC and HTTP/JSON for the transport layer. + ## Supported Java Versions Java 8 or above is required for using this client. @@ -411,7 +415,7 @@ Java is a registered trademark of Oracle and/or its affiliates. [kokoro-badge-link-5]: http://storage.googleapis.com/cloud-devrel-public/java/badges/java-pubsub/java11.html [stability-image]: https://img.shields.io/badge/stability-stable-green [maven-version-image]: https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-pubsub.svg -[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-pubsub/1.130.1 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-pubsub/1.129.7 [authentication]: https://github.com/googleapis/google-cloud-java#authentication [auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes [predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles diff --git a/generation_config.yaml b/generation_config.yaml index f040d1994..e0adb5245 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,4 +1,4 @@ -gapic_generator_version: 2.40.1 +gapic_generator_version: 2.41.0 protoc_version: '25.3' googleapis_commitish: 6f289d775912966eb0cf04bda91e5e355c998d30 libraries_bom_version: 26.38.0 diff --git a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfig.java b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfig.java index f847f91d6..1d772e79a 100644 --- a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfig.java +++ b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfig.java @@ -42,7 +42,6 @@ private CloudStorageConfig() { bucket_ = ""; filenamePrefix_ = ""; filenameSuffix_ = ""; - filenameDatetimeFormat_ = ""; state_ = 0; serviceAccountEmail_ = ""; } @@ -1615,61 +1614,6 @@ public com.google.protobuf.ByteString getFilenameSuffixBytes() { } } - public static final int FILENAME_DATETIME_FORMAT_FIELD_NUMBER = 10; - - @SuppressWarnings("serial") - private volatile java.lang.Object filenameDatetimeFormat_ = ""; - /** - * - * - *
-   * Optional. User-provided format string specifying how to represent datetimes
-   * in Cloud Storage filenames. See the [datetime format
-   * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
-   * 
- * - * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; - * - * @return The filenameDatetimeFormat. - */ - @java.lang.Override - public java.lang.String getFilenameDatetimeFormat() { - java.lang.Object ref = filenameDatetimeFormat_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - filenameDatetimeFormat_ = s; - return s; - } - } - /** - * - * - *
-   * Optional. User-provided format string specifying how to represent datetimes
-   * in Cloud Storage filenames. See the [datetime format
-   * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
-   * 
- * - * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; - * - * @return The bytes for filenameDatetimeFormat. - */ - @java.lang.Override - public com.google.protobuf.ByteString getFilenameDatetimeFormatBytes() { - java.lang.Object ref = filenameDatetimeFormat_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - filenameDatetimeFormat_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - public static final int TEXT_CONFIG_FIELD_NUMBER = 4; /** * @@ -2005,12 +1949,6 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (state_ != com.google.pubsub.v1.CloudStorageConfig.State.STATE_UNSPECIFIED.getNumber()) { output.writeEnum(9, state_); } - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(filenameDatetimeFormat_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 10, filenameDatetimeFormat_); - } - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceAccountEmail_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 11, serviceAccountEmail_); - } getUnknownFields().writeTo(output); } @@ -2048,12 +1986,6 @@ public int getSerializedSize() { if (state_ != com.google.pubsub.v1.CloudStorageConfig.State.STATE_UNSPECIFIED.getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(9, state_); } - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(filenameDatetimeFormat_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, filenameDatetimeFormat_); - } - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceAccountEmail_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, serviceAccountEmail_); - } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -2072,7 +2004,6 @@ public boolean equals(final java.lang.Object obj) { if (!getBucket().equals(other.getBucket())) return false; if (!getFilenamePrefix().equals(other.getFilenamePrefix())) return false; if (!getFilenameSuffix().equals(other.getFilenameSuffix())) return false; - if (!getFilenameDatetimeFormat().equals(other.getFilenameDatetimeFormat())) return false; if (hasMaxDuration() != other.hasMaxDuration()) return false; if (hasMaxDuration()) { if (!getMaxDuration().equals(other.getMaxDuration())) return false; @@ -2108,8 +2039,6 @@ public int hashCode() { hash = (53 * hash) + getFilenamePrefix().hashCode(); hash = (37 * hash) + FILENAME_SUFFIX_FIELD_NUMBER; hash = (53 * hash) + getFilenameSuffix().hashCode(); - hash = (37 * hash) + FILENAME_DATETIME_FORMAT_FIELD_NUMBER; - hash = (53 * hash) + getFilenameDatetimeFormat().hashCode(); if (hasMaxDuration()) { hash = (37 * hash) + MAX_DURATION_FIELD_NUMBER; hash = (53 * hash) + getMaxDuration().hashCode(); @@ -2283,7 +2212,6 @@ public Builder clear() { bucket_ = ""; filenamePrefix_ = ""; filenameSuffix_ = ""; - filenameDatetimeFormat_ = ""; if (textConfigBuilder_ != null) { textConfigBuilder_.clear(); } @@ -2346,19 +2274,16 @@ private void buildPartial0(com.google.pubsub.v1.CloudStorageConfig result) { if (((from_bitField0_ & 0x00000004) != 0)) { result.filenameSuffix_ = filenameSuffix_; } - if (((from_bitField0_ & 0x00000008) != 0)) { - result.filenameDatetimeFormat_ = filenameDatetimeFormat_; - } int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000040) != 0)) { + if (((from_bitField0_ & 0x00000020) != 0)) { result.maxDuration_ = maxDurationBuilder_ == null ? maxDuration_ : maxDurationBuilder_.build(); to_bitField0_ |= 0x00000001; } - if (((from_bitField0_ & 0x00000080) != 0)) { + if (((from_bitField0_ & 0x00000040) != 0)) { result.maxBytes_ = maxBytes_; } - if (((from_bitField0_ & 0x00000100) != 0)) { + if (((from_bitField0_ & 0x00000080) != 0)) { result.state_ = state_; } if (((from_bitField0_ & 0x00000200) != 0)) { @@ -2438,11 +2363,6 @@ public Builder mergeFrom(com.google.pubsub.v1.CloudStorageConfig other) { bitField0_ |= 0x00000004; onChanged(); } - if (!other.getFilenameDatetimeFormat().isEmpty()) { - filenameDatetimeFormat_ = other.filenameDatetimeFormat_; - bitField0_ |= 0x00000008; - onChanged(); - } if (other.hasMaxDuration()) { mergeMaxDuration(other.getMaxDuration()); } @@ -2532,33 +2452,21 @@ public Builder mergeFrom( case 50: { input.readMessage(getMaxDurationFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000020; break; } // case 50 case 56: { maxBytes_ = input.readInt64(); - bitField0_ |= 0x00000080; + bitField0_ |= 0x00000040; break; } // case 56 case 72: { state_ = input.readEnum(); - bitField0_ |= 0x00000100; + bitField0_ |= 0x00000080; break; } // case 72 - case 82: - { - filenameDatetimeFormat_ = input.readStringRequireUtf8(); - bitField0_ |= 0x00000008; - break; - } // case 82 - case 90: - { - serviceAccountEmail_ = input.readStringRequireUtf8(); - bitField0_ |= 0x00000200; - break; - } // case 90 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -2940,122 +2848,6 @@ public Builder setFilenameSuffixBytes(com.google.protobuf.ByteString value) { return this; } - private java.lang.Object filenameDatetimeFormat_ = ""; - /** - * - * - *
-     * Optional. User-provided format string specifying how to represent datetimes
-     * in Cloud Storage filenames. See the [datetime format
-     * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
-     * 
- * - * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; - * - * @return The filenameDatetimeFormat. - */ - public java.lang.String getFilenameDatetimeFormat() { - java.lang.Object ref = filenameDatetimeFormat_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - filenameDatetimeFormat_ = s; - return s; - } else { - return (java.lang.String) ref; - } - } - /** - * - * - *
-     * Optional. User-provided format string specifying how to represent datetimes
-     * in Cloud Storage filenames. See the [datetime format
-     * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
-     * 
- * - * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; - * - * @return The bytes for filenameDatetimeFormat. - */ - public com.google.protobuf.ByteString getFilenameDatetimeFormatBytes() { - java.lang.Object ref = filenameDatetimeFormat_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - filenameDatetimeFormat_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * - * - *
-     * Optional. User-provided format string specifying how to represent datetimes
-     * in Cloud Storage filenames. See the [datetime format
-     * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
-     * 
- * - * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; - * - * @param value The filenameDatetimeFormat to set. - * @return This builder for chaining. - */ - public Builder setFilenameDatetimeFormat(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - filenameDatetimeFormat_ = value; - bitField0_ |= 0x00000008; - onChanged(); - return this; - } - /** - * - * - *
-     * Optional. User-provided format string specifying how to represent datetimes
-     * in Cloud Storage filenames. See the [datetime format
-     * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
-     * 
- * - * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; - * - * @return This builder for chaining. - */ - public Builder clearFilenameDatetimeFormat() { - filenameDatetimeFormat_ = getDefaultInstance().getFilenameDatetimeFormat(); - bitField0_ = (bitField0_ & ~0x00000008); - onChanged(); - return this; - } - /** - * - * - *
-     * Optional. User-provided format string specifying how to represent datetimes
-     * in Cloud Storage filenames. See the [datetime format
-     * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
-     * 
- * - * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; - * - * @param value The bytes for filenameDatetimeFormat to set. - * @return This builder for chaining. - */ - public Builder setFilenameDatetimeFormatBytes(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - filenameDatetimeFormat_ = value; - bitField0_ |= 0x00000008; - onChanged(); - return this; - } - private com.google.protobuf.SingleFieldBuilderV3< com.google.pubsub.v1.CloudStorageConfig.TextConfig, com.google.pubsub.v1.CloudStorageConfig.TextConfig.Builder, @@ -3551,7 +3343,7 @@ public com.google.pubsub.v1.CloudStorageConfig.AvroConfigOrBuilder getAvroConfig * @return Whether the maxDuration field is set. */ public boolean hasMaxDuration() { - return ((bitField0_ & 0x00000040) != 0); + return ((bitField0_ & 0x00000020) != 0); } /** * @@ -3597,7 +3389,7 @@ public Builder setMaxDuration(com.google.protobuf.Duration value) { } else { maxDurationBuilder_.setMessage(value); } - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000020; onChanged(); return this; } @@ -3619,7 +3411,7 @@ public Builder setMaxDuration(com.google.protobuf.Duration.Builder builderForVal } else { maxDurationBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000020; onChanged(); return this; } @@ -3637,7 +3429,7 @@ public Builder setMaxDuration(com.google.protobuf.Duration.Builder builderForVal */ public Builder mergeMaxDuration(com.google.protobuf.Duration value) { if (maxDurationBuilder_ == null) { - if (((bitField0_ & 0x00000040) != 0) + if (((bitField0_ & 0x00000020) != 0) && maxDuration_ != null && maxDuration_ != com.google.protobuf.Duration.getDefaultInstance()) { getMaxDurationBuilder().mergeFrom(value); @@ -3648,7 +3440,7 @@ public Builder mergeMaxDuration(com.google.protobuf.Duration value) { maxDurationBuilder_.mergeFrom(value); } if (maxDuration_ != null) { - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000020; onChanged(); } return this; @@ -3666,7 +3458,7 @@ public Builder mergeMaxDuration(com.google.protobuf.Duration value) { * */ public Builder clearMaxDuration() { - bitField0_ = (bitField0_ & ~0x00000040); + bitField0_ = (bitField0_ & ~0x00000020); maxDuration_ = null; if (maxDurationBuilder_ != null) { maxDurationBuilder_.dispose(); @@ -3688,7 +3480,7 @@ public Builder clearMaxDuration() { * */ public com.google.protobuf.Duration.Builder getMaxDurationBuilder() { - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000020; onChanged(); return getMaxDurationFieldBuilder().getBuilder(); } @@ -3777,7 +3569,7 @@ public long getMaxBytes() { public Builder setMaxBytes(long value) { maxBytes_ = value; - bitField0_ |= 0x00000080; + bitField0_ |= 0x00000040; onChanged(); return this; } @@ -3795,7 +3587,7 @@ public Builder setMaxBytes(long value) { * @return This builder for chaining. */ public Builder clearMaxBytes() { - bitField0_ = (bitField0_ & ~0x00000080); + bitField0_ = (bitField0_ & ~0x00000040); maxBytes_ = 0L; onChanged(); return this; @@ -3837,7 +3629,7 @@ public int getStateValue() { */ public Builder setStateValue(int value) { state_ = value; - bitField0_ |= 0x00000100; + bitField0_ |= 0x00000080; onChanged(); return this; } @@ -3880,7 +3672,7 @@ public Builder setState(com.google.pubsub.v1.CloudStorageConfig.State value) { if (value == null) { throw new NullPointerException(); } - bitField0_ |= 0x00000100; + bitField0_ |= 0x00000080; state_ = value.getNumber(); onChanged(); return this; @@ -3900,7 +3692,7 @@ public Builder setState(com.google.pubsub.v1.CloudStorageConfig.State value) { * @return This builder for chaining. */ public Builder clearState() { - bitField0_ = (bitField0_ & ~0x00000100); + bitField0_ = (bitField0_ & ~0x00000080); state_ = 0; onChanged(); return this; diff --git a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfigOrBuilder.java b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfigOrBuilder.java index 11d3fa787..2c7a6cf3a 100644 --- a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfigOrBuilder.java +++ b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfigOrBuilder.java @@ -111,35 +111,6 @@ public interface CloudStorageConfigOrBuilder */ com.google.protobuf.ByteString getFilenameSuffixBytes(); - /** - * - * - *
-   * Optional. User-provided format string specifying how to represent datetimes
-   * in Cloud Storage filenames. See the [datetime format
-   * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
-   * 
- * - * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; - * - * @return The filenameDatetimeFormat. - */ - java.lang.String getFilenameDatetimeFormat(); - /** - * - * - *
-   * Optional. User-provided format string specifying how to represent datetimes
-   * in Cloud Storage filenames. See the [datetime format
-   * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
-   * 
- * - * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; - * - * @return The bytes for filenameDatetimeFormat. - */ - com.google.protobuf.ByteString getFilenameDatetimeFormatBytes(); - /** * * diff --git a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/IngestionDataSourceSettings.java b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/IngestionDataSourceSettings.java index b56f85ee0..9d97d01d2 100644 --- a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/IngestionDataSourceSettings.java +++ b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/IngestionDataSourceSettings.java @@ -310,7 +310,7 @@ public enum State implements com.google.protobuf.ProtocolMessageEnum { * *
        * Permission denied encountered while publishing to the topic. This can
-       * happen if the Pub/Sub SA has not been granted the [appropriate publish
+       * happen due to Pub/Sub SA has not been granted the [appropriate publish
        * permissions](https://cloud.google.com/pubsub/docs/access-control#pubsub.publisher)
        * 
* @@ -383,7 +383,7 @@ public enum State implements com.google.protobuf.ProtocolMessageEnum { * *
        * Permission denied encountered while publishing to the topic. This can
-       * happen if the Pub/Sub SA has not been granted the [appropriate publish
+       * happen due to Pub/Sub SA has not been granted the [appropriate publish
        * permissions](https://cloud.google.com/pubsub/docs/access-control#pubsub.publisher)
        * 
* diff --git a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PubsubProto.java b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PubsubProto.java index a80aaa209..854c09918 100644 --- a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PubsubProto.java +++ b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PubsubProto.java @@ -423,236 +423,232 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "B\003\340A\001\022 \n\023drop_unknown_fields\030\004 \001(\010B\003\340A\001\022" + ":\n\005state\030\005 \001(\0162&.google.pubsub.v1.BigQue" + "ryConfig.StateB\003\340A\003\022\035\n\020use_table_schema\030" - + "\006 \001(\010B\003\340A\001\022\"\n\025service_account_email\030\007 \001(" - + "\tB\003\340A\001\"\212\001\n\005State\022\025\n\021STATE_UNSPECIFIED\020\000\022" - + "\n\n\006ACTIVE\020\001\022\025\n\021PERMISSION_DENIED\020\002\022\r\n\tNO" - + "T_FOUND\020\003\022\023\n\017SCHEMA_MISMATCH\020\004\022#\n\037IN_TRA" - + "NSIT_LOCATION_RESTRICTION\020\005\"\316\005\n\022CloudSto" - + "rageConfig\022\023\n\006bucket\030\001 \001(\tB\003\340A\002\022\034\n\017filen" - + "ame_prefix\030\002 \001(\tB\003\340A\001\022\034\n\017filename_suffix" - + "\030\003 \001(\tB\003\340A\001\022%\n\030filename_datetime_format\030" - + "\n \001(\tB\003\340A\001\022K\n\013text_config\030\004 \001(\0132/.google" - + ".pubsub.v1.CloudStorageConfig.TextConfig" - + "B\003\340A\001H\000\022K\n\013avro_config\030\005 \001(\0132/.google.pu" - + "bsub.v1.CloudStorageConfig.AvroConfigB\003\340" - + "A\001H\000\0224\n\014max_duration\030\006 \001(\0132\031.google.prot" - + "obuf.DurationB\003\340A\001\022\026\n\tmax_bytes\030\007 \001(\003B\003\340" - + "A\001\022>\n\005state\030\t \001(\0162*.google.pubsub.v1.Clo" - + "udStorageConfig.StateB\003\340A\003\022\"\n\025service_ac" - + "count_email\030\013 \001(\tB\003\340A\001\032\014\n\nTextConfig\032H\n\n" - + "AvroConfig\022\033\n\016write_metadata\030\001 \001(\010B\003\340A\001\022" - + "\035\n\020use_topic_schema\030\002 \001(\010B\003\340A\001\"\212\001\n\005State" - + "\022\025\n\021STATE_UNSPECIFIED\020\000\022\n\n\006ACTIVE\020\001\022\025\n\021P" - + "ERMISSION_DENIED\020\002\022\r\n\tNOT_FOUND\020\003\022#\n\037IN_" - + "TRANSIT_LOCATION_RESTRICTION\020\004\022\023\n\017SCHEMA" - + "_MISMATCH\020\005B\017\n\routput_format\"|\n\017Received" - + "Message\022\023\n\006ack_id\030\001 \001(\tB\003\340A\001\0225\n\007message\030" - + "\002 \001(\0132\037.google.pubsub.v1.PubsubMessageB\003" - + "\340A\001\022\035\n\020delivery_attempt\030\003 \001(\005B\003\340A\001\"Z\n\026Ge" - + "tSubscriptionRequest\022@\n\014subscription\030\001 \001" - + "(\tB*\340A\002\372A$\n\"pubsub.googleapis.com/Subscr" - + "iption\"\214\001\n\031UpdateSubscriptionRequest\0229\n\014" - + "subscription\030\001 \001(\0132\036.google.pubsub.v1.Su" - + "bscriptionB\003\340A\002\0224\n\013update_mask\030\002 \001(\0132\032.g" - + "oogle.protobuf.FieldMaskB\003\340A\002\"\221\001\n\030ListSu" - + "bscriptionsRequest\022D\n\007project\030\001 \001(\tB3\340A\002" - + "\372A-\n+cloudresourcemanager.googleapis.com" - + "/Project\022\026\n\tpage_size\030\002 \001(\005B\003\340A\001\022\027\n\npage" - + "_token\030\003 \001(\tB\003\340A\001\"u\n\031ListSubscriptionsRe" - + "sponse\022:\n\rsubscriptions\030\001 \003(\0132\036.google.p" - + "ubsub.v1.SubscriptionB\003\340A\001\022\034\n\017next_page_" - + "token\030\002 \001(\tB\003\340A\001\"]\n\031DeleteSubscriptionRe" - + "quest\022@\n\014subscription\030\001 \001(\tB*\340A\002\372A$\n\"pub" - + "sub.googleapis.com/Subscription\"\223\001\n\027Modi" - + "fyPushConfigRequest\022@\n\014subscription\030\001 \001(" - + "\tB*\340A\002\372A$\n\"pubsub.googleapis.com/Subscri" - + "ption\0226\n\013push_config\030\002 \001(\0132\034.google.pubs" - + "ub.v1.PushConfigB\003\340A\002\"\215\001\n\013PullRequest\022@\n" - + "\014subscription\030\001 \001(\tB*\340A\002\372A$\n\"pubsub.goog" - + "leapis.com/Subscription\022!\n\022return_immedi" - + "ately\030\002 \001(\010B\005\030\001\340A\001\022\031\n\014max_messages\030\003 \001(\005" - + "B\003\340A\002\"Q\n\014PullResponse\022A\n\021received_messag" - + "es\030\001 \003(\0132!.google.pubsub.v1.ReceivedMess" - + "ageB\003\340A\001\"\225\001\n\030ModifyAckDeadlineRequest\022@\n" - + "\014subscription\030\001 \001(\tB*\340A\002\372A$\n\"pubsub.goog" - + "leapis.com/Subscription\022\024\n\007ack_ids\030\004 \003(\t" - + "B\003\340A\002\022!\n\024ack_deadline_seconds\030\003 \001(\005B\003\340A\002" - + "\"l\n\022AcknowledgeRequest\022@\n\014subscription\030\001" - + " \001(\tB*\340A\002\372A$\n\"pubsub.googleapis.com/Subs" - + "cription\022\024\n\007ack_ids\030\002 \003(\tB\003\340A\002\"\307\002\n\024Strea" - + "mingPullRequest\022@\n\014subscription\030\001 \001(\tB*\340" + + "\006 \001(\010B\003\340A\001\"\212\001\n\005State\022\025\n\021STATE_UNSPECIFIE" + + "D\020\000\022\n\n\006ACTIVE\020\001\022\025\n\021PERMISSION_DENIED\020\002\022\r" + + "\n\tNOT_FOUND\020\003\022\023\n\017SCHEMA_MISMATCH\020\004\022#\n\037IN" + + "_TRANSIT_LOCATION_RESTRICTION\020\005\"\316\004\n\022Clou" + + "dStorageConfig\022\023\n\006bucket\030\001 \001(\tB\003\340A\002\022\034\n\017f" + + "ilename_prefix\030\002 \001(\tB\003\340A\001\022\034\n\017filename_su" + + "ffix\030\003 \001(\tB\003\340A\001\022K\n\013text_config\030\004 \001(\0132/.g" + + "oogle.pubsub.v1.CloudStorageConfig.TextC" + + "onfigB\003\340A\001H\000\022K\n\013avro_config\030\005 \001(\0132/.goog" + + "le.pubsub.v1.CloudStorageConfig.AvroConf" + + "igB\003\340A\001H\000\0224\n\014max_duration\030\006 \001(\0132\031.google" + + ".protobuf.DurationB\003\340A\001\022\026\n\tmax_bytes\030\007 \001" + + "(\003B\003\340A\001\022>\n\005state\030\t \001(\0162*.google.pubsub.v" + + "1.CloudStorageConfig.StateB\003\340A\003\032\014\n\nTextC" + + "onfig\032)\n\nAvroConfig\022\033\n\016write_metadata\030\001 " + + "\001(\010B\003\340A\001\"u\n\005State\022\025\n\021STATE_UNSPECIFIED\020\000" + + "\022\n\n\006ACTIVE\020\001\022\025\n\021PERMISSION_DENIED\020\002\022\r\n\tN" + + "OT_FOUND\020\003\022#\n\037IN_TRANSIT_LOCATION_RESTRI" + + "CTION\020\004B\017\n\routput_format\"|\n\017ReceivedMess" + + "age\022\023\n\006ack_id\030\001 \001(\tB\003\340A\001\0225\n\007message\030\002 \001(" + + "\0132\037.google.pubsub.v1.PubsubMessageB\003\340A\001\022" + + "\035\n\020delivery_attempt\030\003 \001(\005B\003\340A\001\"Z\n\026GetSub" + + "scriptionRequest\022@\n\014subscription\030\001 \001(\tB*" + + "\340A\002\372A$\n\"pubsub.googleapis.com/Subscripti" + + "on\"\214\001\n\031UpdateSubscriptionRequest\0229\n\014subs" + + "cription\030\001 \001(\0132\036.google.pubsub.v1.Subscr" + + "iptionB\003\340A\002\0224\n\013update_mask\030\002 \001(\0132\032.googl" + + "e.protobuf.FieldMaskB\003\340A\002\"\221\001\n\030ListSubscr" + + "iptionsRequest\022D\n\007project\030\001 \001(\tB3\340A\002\372A-\n" + + "+cloudresourcemanager.googleapis.com/Pro" + + "ject\022\026\n\tpage_size\030\002 \001(\005B\003\340A\001\022\027\n\npage_tok" + + "en\030\003 \001(\tB\003\340A\001\"u\n\031ListSubscriptionsRespon" + + "se\022:\n\rsubscriptions\030\001 \003(\0132\036.google.pubsu" + + "b.v1.SubscriptionB\003\340A\001\022\034\n\017next_page_toke" + + "n\030\002 \001(\tB\003\340A\001\"]\n\031DeleteSubscriptionReques" + + "t\022@\n\014subscription\030\001 \001(\tB*\340A\002\372A$\n\"pubsub." + + "googleapis.com/Subscription\"\223\001\n\027ModifyPu" + + "shConfigRequest\022@\n\014subscription\030\001 \001(\tB*\340" + "A\002\372A$\n\"pubsub.googleapis.com/Subscriptio" - + "n\022\024\n\007ack_ids\030\002 \003(\tB\003\340A\001\022$\n\027modify_deadli" - + "ne_seconds\030\003 \003(\005B\003\340A\001\022$\n\027modify_deadline" - + "_ack_ids\030\004 \003(\tB\003\340A\001\022(\n\033stream_ack_deadli" - + "ne_seconds\030\005 \001(\005B\003\340A\002\022\026\n\tclient_id\030\006 \001(\t" - + "B\003\340A\001\022%\n\030max_outstanding_messages\030\007 \001(\003B" - + "\003\340A\001\022\"\n\025max_outstanding_bytes\030\010 \001(\003B\003\340A\001" - + "\"\236\006\n\025StreamingPullResponse\022A\n\021received_m" - + "essages\030\001 \003(\0132!.google.pubsub.v1.Receive" - + "dMessageB\003\340A\001\022f\n\030acknowledge_confirmatio" - + "n\030\005 \001(\0132?.google.pubsub.v1.StreamingPull" - + "Response.AcknowledgeConfirmationB\003\340A\001\022t\n" - + " modify_ack_deadline_confirmation\030\003 \001(\0132" - + "E.google.pubsub.v1.StreamingPullResponse" - + ".ModifyAckDeadlineConfirmationB\003\340A\001\022d\n\027s" - + "ubscription_properties\030\004 \001(\0132>.google.pu" - + "bsub.v1.StreamingPullResponse.Subscripti" - + "onPropertiesB\003\340A\001\032\224\001\n\027AcknowledgeConfirm" - + "ation\022\024\n\007ack_ids\030\001 \003(\tB\003\340A\001\022\034\n\017invalid_a" - + "ck_ids\030\002 \003(\tB\003\340A\001\022\036\n\021unordered_ack_ids\030\003" - + " \003(\tB\003\340A\001\022%\n\030temporary_failed_ack_ids\030\004 " - + "\003(\tB\003\340A\001\032z\n\035ModifyAckDeadlineConfirmatio" - + "n\022\024\n\007ack_ids\030\001 \003(\tB\003\340A\001\022\034\n\017invalid_ack_i" - + "ds\030\002 \003(\tB\003\340A\001\022%\n\030temporary_failed_ack_id" - + "s\030\003 \003(\tB\003\340A\001\032k\n\026SubscriptionProperties\022*" - + "\n\035exactly_once_delivery_enabled\030\001 \001(\010B\003\340" - + "A\001\022%\n\030message_ordering_enabled\030\002 \001(\010B\003\340A" - + "\001\"\210\002\n\025CreateSnapshotRequest\0224\n\004name\030\001 \001(" - + "\tB&\340A\002\372A \n\036pubsub.googleapis.com/Snapsho" - + "t\022@\n\014subscription\030\002 \001(\tB*\340A\002\372A$\n\"pubsub." - + "googleapis.com/Subscription\022H\n\006labels\030\003 " - + "\003(\01323.google.pubsub.v1.CreateSnapshotReq" - + "uest.LabelsEntryB\003\340A\001\032-\n\013LabelsEntry\022\013\n\003" - + "key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\200\001\n\025UpdateS" - + "napshotRequest\0221\n\010snapshot\030\001 \001(\0132\032.googl" - + "e.pubsub.v1.SnapshotB\003\340A\002\0224\n\013update_mask" - + "\030\002 \001(\0132\032.google.protobuf.FieldMaskB\003\340A\002\"" - + "\301\002\n\010Snapshot\022\021\n\004name\030\001 \001(\tB\003\340A\001\0222\n\005topic" - + "\030\002 \001(\tB#\340A\001\372A\035\n\033pubsub.googleapis.com/To" - + "pic\0224\n\013expire_time\030\003 \001(\0132\032.google.protob" - + "uf.TimestampB\003\340A\001\022;\n\006labels\030\004 \003(\0132&.goog" - + "le.pubsub.v1.Snapshot.LabelsEntryB\003\340A\001\032-" - + "\n\013LabelsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(" - + "\t:\0028\001:L\352AI\n\036pubsub.googleapis.com/Snapsh" - + "ot\022\'projects/{project}/snapshots/{snapsh" - + "ot}\"N\n\022GetSnapshotRequest\0228\n\010snapshot\030\001 " - + "\001(\tB&\340A\002\372A \n\036pubsub.googleapis.com/Snaps" - + "hot\"\215\001\n\024ListSnapshotsRequest\022D\n\007project\030" - + "\001 \001(\tB3\340A\002\372A-\n+cloudresourcemanager.goog" - + "leapis.com/Project\022\026\n\tpage_size\030\002 \001(\005B\003\340" - + "A\001\022\027\n\npage_token\030\003 \001(\tB\003\340A\001\"i\n\025ListSnaps" - + "hotsResponse\0222\n\tsnapshots\030\001 \003(\0132\032.google" - + ".pubsub.v1.SnapshotB\003\340A\001\022\034\n\017next_page_to" - + "ken\030\002 \001(\tB\003\340A\001\"Q\n\025DeleteSnapshotRequest\022" - + "8\n\010snapshot\030\001 \001(\tB&\340A\002\372A \n\036pubsub.google" - + "apis.com/Snapshot\"\306\001\n\013SeekRequest\022@\n\014sub" + + "n\0226\n\013push_config\030\002 \001(\0132\034.google.pubsub.v" + + "1.PushConfigB\003\340A\002\"\215\001\n\013PullRequest\022@\n\014sub" + + "scription\030\001 \001(\tB*\340A\002\372A$\n\"pubsub.googleap" + + "is.com/Subscription\022!\n\022return_immediatel" + + "y\030\002 \001(\010B\005\030\001\340A\001\022\031\n\014max_messages\030\003 \001(\005B\003\340A" + + "\002\"Q\n\014PullResponse\022A\n\021received_messages\030\001" + + " \003(\0132!.google.pubsub.v1.ReceivedMessageB" + + "\003\340A\001\"\225\001\n\030ModifyAckDeadlineRequest\022@\n\014sub" + "scription\030\001 \001(\tB*\340A\002\372A$\n\"pubsub.googleap" - + "is.com/Subscription\022/\n\004time\030\002 \001(\0132\032.goog" - + "le.protobuf.TimestampB\003\340A\001H\000\022:\n\010snapshot" - + "\030\003 \001(\tB&\340A\001\372A \n\036pubsub.googleapis.com/Sn" - + "apshotH\000B\010\n\006target\"\016\n\014SeekResponse2\270\013\n\tP" - + "ublisher\022q\n\013CreateTopic\022\027.google.pubsub." - + "v1.Topic\032\027.google.pubsub.v1.Topic\"0\332A\004na" - + "me\202\323\344\223\002#\032\036/v1/{name=projects/*/topics/*}" - + ":\001*\022\221\001\n\013UpdateTopic\022$.google.pubsub.v1.U" - + "pdateTopicRequest\032\027.google.pubsub.v1.Top" - + "ic\"C\332A\021topic,update_mask\202\323\344\223\002)2$/v1/{top" - + "ic.name=projects/*/topics/*}:\001*\022\223\001\n\007Publ" - + "ish\022 .google.pubsub.v1.PublishRequest\032!." - + "google.pubsub.v1.PublishResponse\"C\332A\016top" - + "ic,messages\202\323\344\223\002,\"\'/v1/{topic=projects/*" - + "/topics/*}:publish:\001*\022w\n\010GetTopic\022!.goog" - + "le.pubsub.v1.GetTopicRequest\032\027.google.pu" - + "bsub.v1.Topic\"/\332A\005topic\202\323\344\223\002!\022\037/v1/{topi" - + "c=projects/*/topics/*}\022\212\001\n\nListTopics\022#." - + "google.pubsub.v1.ListTopicsRequest\032$.goo" - + "gle.pubsub.v1.ListTopicsResponse\"1\332A\007pro" - + "ject\202\323\344\223\002!\022\037/v1/{project=projects/*}/top" - + "ics\022\272\001\n\026ListTopicSubscriptions\022/.google." - + "pubsub.v1.ListTopicSubscriptionsRequest\032" - + "0.google.pubsub.v1.ListTopicSubscription" - + "sResponse\"=\332A\005topic\202\323\344\223\002/\022-/v1/{topic=pr" - + "ojects/*/topics/*}/subscriptions\022\252\001\n\022Lis" - + "tTopicSnapshots\022+.google.pubsub.v1.ListT" - + "opicSnapshotsRequest\032,.google.pubsub.v1." - + "ListTopicSnapshotsResponse\"9\332A\005topic\202\323\344\223" - + "\002+\022)/v1/{topic=projects/*/topics/*}/snap" - + "shots\022|\n\013DeleteTopic\022$.google.pubsub.v1." - + "DeleteTopicRequest\032\026.google.protobuf.Emp" - + "ty\"/\332A\005topic\202\323\344\223\002!*\037/v1/{topic=projects/" - + "*/topics/*}\022\255\001\n\022DetachSubscription\022+.goo" - + "gle.pubsub.v1.DetachSubscriptionRequest\032" - + ",.google.pubsub.v1.DetachSubscriptionRes" - + "ponse\"<\202\323\344\223\0026\"4/v1/{subscription=project" - + "s/*/subscriptions/*}:detach\032p\312A\025pubsub.g" - + "oogleapis.com\322AUhttps://www.googleapis.c" - + "om/auth/cloud-platform,https://www.googl" - + "eapis.com/auth/pubsub2\322\025\n\nSubscriber\022\264\001\n" - + "\022CreateSubscription\022\036.google.pubsub.v1.S" - + "ubscription\032\036.google.pubsub.v1.Subscript" - + "ion\"^\332A+name,topic,push_config,ack_deadl" - + "ine_seconds\202\323\344\223\002*\032%/v1/{name=projects/*/" - + "subscriptions/*}:\001*\022\241\001\n\017GetSubscription\022" - + "(.google.pubsub.v1.GetSubscriptionReques" - + "t\032\036.google.pubsub.v1.Subscription\"D\332A\014su" - + "bscription\202\323\344\223\002/\022-/v1/{subscription=proj" - + "ects/*/subscriptions/*}\022\273\001\n\022UpdateSubscr" - + "iption\022+.google.pubsub.v1.UpdateSubscrip" - + "tionRequest\032\036.google.pubsub.v1.Subscript" - + "ion\"X\332A\030subscription,update_mask\202\323\344\223\002722" - + "/v1/{subscription.name=projects/*/subscr" - + "iptions/*}:\001*\022\246\001\n\021ListSubscriptions\022*.go" - + "ogle.pubsub.v1.ListSubscriptionsRequest\032" - + "+.google.pubsub.v1.ListSubscriptionsResp" - + "onse\"8\332A\007project\202\323\344\223\002(\022&/v1/{project=pro" - + "jects/*}/subscriptions\022\237\001\n\022DeleteSubscri" - + "ption\022+.google.pubsub.v1.DeleteSubscript" - + "ionRequest\032\026.google.protobuf.Empty\"D\332A\014s" - + "ubscription\202\323\344\223\002/*-/v1/{subscription=pro" - + "jects/*/subscriptions/*}\022\317\001\n\021ModifyAckDe" - + "adline\022*.google.pubsub.v1.ModifyAckDeadl" - + "ineRequest\032\026.google.protobuf.Empty\"v\332A)s" - + "ubscription,ack_ids,ack_deadline_seconds" - + "\202\323\344\223\002D\"?/v1/{subscription=projects/*/sub" - + "scriptions/*}:modifyAckDeadline:\001*\022\250\001\n\013A" - + "cknowledge\022$.google.pubsub.v1.Acknowledg" - + "eRequest\032\026.google.protobuf.Empty\"[\332A\024sub" - + "scription,ack_ids\202\323\344\223\002>\"9/v1/{subscripti" - + "on=projects/*/subscriptions/*}:acknowled" - + "ge:\001*\022\320\001\n\004Pull\022\035.google.pubsub.v1.PullRe" - + "quest\032\036.google.pubsub.v1.PullResponse\"\210\001" - + "\332A,subscription,return_immediately,max_m" - + "essages\332A\031subscription,max_messages\202\323\344\223\002" - + "7\"2/v1/{subscription=projects/*/subscrip" - + "tions/*}:pull:\001*\022f\n\rStreamingPull\022&.goog" - + "le.pubsub.v1.StreamingPullRequest\032\'.goog" - + "le.pubsub.v1.StreamingPullResponse\"\000(\0010\001" - + "\022\273\001\n\020ModifyPushConfig\022).google.pubsub.v1" - + ".ModifyPushConfigRequest\032\026.google.protob" - + "uf.Empty\"d\332A\030subscription,push_config\202\323\344" - + "\223\002C\">/v1/{subscription=projects/*/subscr" - + "iptions/*}:modifyPushConfig:\001*\022\211\001\n\013GetSn" - + "apshot\022$.google.pubsub.v1.GetSnapshotReq" - + "uest\032\032.google.pubsub.v1.Snapshot\"8\332A\010sna" - + "pshot\202\323\344\223\002\'\022%/v1/{snapshot=projects/*/sn" - + "apshots/*}\022\226\001\n\rListSnapshots\022&.google.pu" - + "bsub.v1.ListSnapshotsRequest\032\'.google.pu" - + "bsub.v1.ListSnapshotsResponse\"4\332A\007projec" - + "t\202\323\344\223\002$\022\"/v1/{project=projects/*}/snapsh" - + "ots\022\227\001\n\016CreateSnapshot\022\'.google.pubsub.v" - + "1.CreateSnapshotRequest\032\032.google.pubsub." - + "v1.Snapshot\"@\332A\021name,subscription\202\323\344\223\002&\032" - + "!/v1/{name=projects/*/snapshots/*}:\001*\022\243\001" - + "\n\016UpdateSnapshot\022\'.google.pubsub.v1.Upda" - + "teSnapshotRequest\032\032.google.pubsub.v1.Sna" - + "pshot\"L\332A\024snapshot,update_mask\202\323\344\223\002/2*/v" - + "1/{snapshot.name=projects/*/snapshots/*}" - + ":\001*\022\213\001\n\016DeleteSnapshot\022\'.google.pubsub.v" - + "1.DeleteSnapshotRequest\032\026.google.protobu" - + "f.Empty\"8\332A\010snapshot\202\323\344\223\002\'*%/v1/{snapsho" - + "t=projects/*/snapshots/*}\022\204\001\n\004Seek\022\035.goo" - + "gle.pubsub.v1.SeekRequest\032\036.google.pubsu" - + "b.v1.SeekResponse\"=\202\323\344\223\0027\"2/v1/{subscrip" - + "tion=projects/*/subscriptions/*}:seek:\001*" - + "\032p\312A\025pubsub.googleapis.com\322AUhttps://www" - + ".googleapis.com/auth/cloud-platform,http" - + "s://www.googleapis.com/auth/pubsubB\252\001\n\024c" - + "om.google.pubsub.v1B\013PubsubProtoP\001Z2clou" - + "d.google.com/go/pubsub/apiv1/pubsubpb;pu" - + "bsubpb\370\001\001\252\002\026Google.Cloud.PubSub.V1\312\002\026Goo" - + "gle\\Cloud\\PubSub\\V1\352\002\031Google::Cloud::Pub" - + "Sub::V1b\006proto3" + + "is.com/Subscription\022\024\n\007ack_ids\030\004 \003(\tB\003\340A" + + "\002\022!\n\024ack_deadline_seconds\030\003 \001(\005B\003\340A\002\"l\n\022" + + "AcknowledgeRequest\022@\n\014subscription\030\001 \001(\t" + + "B*\340A\002\372A$\n\"pubsub.googleapis.com/Subscrip" + + "tion\022\024\n\007ack_ids\030\002 \003(\tB\003\340A\002\"\307\002\n\024Streaming" + + "PullRequest\022@\n\014subscription\030\001 \001(\tB*\340A\002\372A" + + "$\n\"pubsub.googleapis.com/Subscription\022\024\n" + + "\007ack_ids\030\002 \003(\tB\003\340A\001\022$\n\027modify_deadline_s" + + "econds\030\003 \003(\005B\003\340A\001\022$\n\027modify_deadline_ack" + + "_ids\030\004 \003(\tB\003\340A\001\022(\n\033stream_ack_deadline_s" + + "econds\030\005 \001(\005B\003\340A\002\022\026\n\tclient_id\030\006 \001(\tB\003\340A" + + "\001\022%\n\030max_outstanding_messages\030\007 \001(\003B\003\340A\001" + + "\022\"\n\025max_outstanding_bytes\030\010 \001(\003B\003\340A\001\"\236\006\n" + + "\025StreamingPullResponse\022A\n\021received_messa" + + "ges\030\001 \003(\0132!.google.pubsub.v1.ReceivedMes" + + "sageB\003\340A\001\022f\n\030acknowledge_confirmation\030\005 " + + "\001(\0132?.google.pubsub.v1.StreamingPullResp" + + "onse.AcknowledgeConfirmationB\003\340A\001\022t\n mod" + + "ify_ack_deadline_confirmation\030\003 \001(\0132E.go" + + "ogle.pubsub.v1.StreamingPullResponse.Mod" + + "ifyAckDeadlineConfirmationB\003\340A\001\022d\n\027subsc" + + "ription_properties\030\004 \001(\0132>.google.pubsub" + + ".v1.StreamingPullResponse.SubscriptionPr" + + "opertiesB\003\340A\001\032\224\001\n\027AcknowledgeConfirmatio" + + "n\022\024\n\007ack_ids\030\001 \003(\tB\003\340A\001\022\034\n\017invalid_ack_i" + + "ds\030\002 \003(\tB\003\340A\001\022\036\n\021unordered_ack_ids\030\003 \003(\t" + + "B\003\340A\001\022%\n\030temporary_failed_ack_ids\030\004 \003(\tB" + + "\003\340A\001\032z\n\035ModifyAckDeadlineConfirmation\022\024\n" + + "\007ack_ids\030\001 \003(\tB\003\340A\001\022\034\n\017invalid_ack_ids\030\002" + + " \003(\tB\003\340A\001\022%\n\030temporary_failed_ack_ids\030\003 " + + "\003(\tB\003\340A\001\032k\n\026SubscriptionProperties\022*\n\035ex" + + "actly_once_delivery_enabled\030\001 \001(\010B\003\340A\001\022%" + + "\n\030message_ordering_enabled\030\002 \001(\010B\003\340A\001\"\210\002" + + "\n\025CreateSnapshotRequest\0224\n\004name\030\001 \001(\tB&\340" + + "A\002\372A \n\036pubsub.googleapis.com/Snapshot\022@\n" + + "\014subscription\030\002 \001(\tB*\340A\002\372A$\n\"pubsub.goog" + + "leapis.com/Subscription\022H\n\006labels\030\003 \003(\0132" + + "3.google.pubsub.v1.CreateSnapshotRequest" + + ".LabelsEntryB\003\340A\001\032-\n\013LabelsEntry\022\013\n\003key\030" + + "\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\200\001\n\025UpdateSnaps" + + "hotRequest\0221\n\010snapshot\030\001 \001(\0132\032.google.pu" + + "bsub.v1.SnapshotB\003\340A\002\0224\n\013update_mask\030\002 \001" + + "(\0132\032.google.protobuf.FieldMaskB\003\340A\002\"\301\002\n\010" + + "Snapshot\022\021\n\004name\030\001 \001(\tB\003\340A\001\0222\n\005topic\030\002 \001" + + "(\tB#\340A\001\372A\035\n\033pubsub.googleapis.com/Topic\022" + + "4\n\013expire_time\030\003 \001(\0132\032.google.protobuf.T" + + "imestampB\003\340A\001\022;\n\006labels\030\004 \003(\0132&.google.p" + + "ubsub.v1.Snapshot.LabelsEntryB\003\340A\001\032-\n\013La" + + "belsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028" + + "\001:L\352AI\n\036pubsub.googleapis.com/Snapshot\022\'" + + "projects/{project}/snapshots/{snapshot}\"" + + "N\n\022GetSnapshotRequest\0228\n\010snapshot\030\001 \001(\tB" + + "&\340A\002\372A \n\036pubsub.googleapis.com/Snapshot\"" + + "\215\001\n\024ListSnapshotsRequest\022D\n\007project\030\001 \001(" + + "\tB3\340A\002\372A-\n+cloudresourcemanager.googleap" + + "is.com/Project\022\026\n\tpage_size\030\002 \001(\005B\003\340A\001\022\027" + + "\n\npage_token\030\003 \001(\tB\003\340A\001\"i\n\025ListSnapshots" + + "Response\0222\n\tsnapshots\030\001 \003(\0132\032.google.pub" + + "sub.v1.SnapshotB\003\340A\001\022\034\n\017next_page_token\030" + + "\002 \001(\tB\003\340A\001\"Q\n\025DeleteSnapshotRequest\0228\n\010s" + + "napshot\030\001 \001(\tB&\340A\002\372A \n\036pubsub.googleapis" + + ".com/Snapshot\"\306\001\n\013SeekRequest\022@\n\014subscri" + + "ption\030\001 \001(\tB*\340A\002\372A$\n\"pubsub.googleapis.c" + + "om/Subscription\022/\n\004time\030\002 \001(\0132\032.google.p" + + "rotobuf.TimestampB\003\340A\001H\000\022:\n\010snapshot\030\003 \001" + + "(\tB&\340A\001\372A \n\036pubsub.googleapis.com/Snapsh" + + "otH\000B\010\n\006target\"\016\n\014SeekResponse2\270\013\n\tPubli" + + "sher\022q\n\013CreateTopic\022\027.google.pubsub.v1.T" + + "opic\032\027.google.pubsub.v1.Topic\"0\332A\004name\202\323" + + "\344\223\002#\032\036/v1/{name=projects/*/topics/*}:\001*\022" + + "\221\001\n\013UpdateTopic\022$.google.pubsub.v1.Updat" + + "eTopicRequest\032\027.google.pubsub.v1.Topic\"C" + + "\332A\021topic,update_mask\202\323\344\223\002)2$/v1/{topic.n" + + "ame=projects/*/topics/*}:\001*\022\223\001\n\007Publish\022" + + " .google.pubsub.v1.PublishRequest\032!.goog" + + "le.pubsub.v1.PublishResponse\"C\332A\016topic,m" + + "essages\202\323\344\223\002,\"\'/v1/{topic=projects/*/top" + + "ics/*}:publish:\001*\022w\n\010GetTopic\022!.google.p" + + "ubsub.v1.GetTopicRequest\032\027.google.pubsub" + + ".v1.Topic\"/\332A\005topic\202\323\344\223\002!\022\037/v1/{topic=pr" + + "ojects/*/topics/*}\022\212\001\n\nListTopics\022#.goog" + + "le.pubsub.v1.ListTopicsRequest\032$.google." + + "pubsub.v1.ListTopicsResponse\"1\332A\007project" + + "\202\323\344\223\002!\022\037/v1/{project=projects/*}/topics\022" + + "\272\001\n\026ListTopicSubscriptions\022/.google.pubs" + + "ub.v1.ListTopicSubscriptionsRequest\0320.go" + + "ogle.pubsub.v1.ListTopicSubscriptionsRes" + + "ponse\"=\332A\005topic\202\323\344\223\002/\022-/v1/{topic=projec" + + "ts/*/topics/*}/subscriptions\022\252\001\n\022ListTop" + + "icSnapshots\022+.google.pubsub.v1.ListTopic" + + "SnapshotsRequest\032,.google.pubsub.v1.List" + + "TopicSnapshotsResponse\"9\332A\005topic\202\323\344\223\002+\022)" + + "/v1/{topic=projects/*/topics/*}/snapshot" + + "s\022|\n\013DeleteTopic\022$.google.pubsub.v1.Dele" + + "teTopicRequest\032\026.google.protobuf.Empty\"/" + + "\332A\005topic\202\323\344\223\002!*\037/v1/{topic=projects/*/to" + + "pics/*}\022\255\001\n\022DetachSubscription\022+.google." + + "pubsub.v1.DetachSubscriptionRequest\032,.go" + + "ogle.pubsub.v1.DetachSubscriptionRespons" + + "e\"<\202\323\344\223\0026\"4/v1/{subscription=projects/*/" + + "subscriptions/*}:detach\032p\312A\025pubsub.googl" + + "eapis.com\322AUhttps://www.googleapis.com/a" + + "uth/cloud-platform,https://www.googleapi" + + "s.com/auth/pubsub2\322\025\n\nSubscriber\022\264\001\n\022Cre" + + "ateSubscription\022\036.google.pubsub.v1.Subsc" + + "ription\032\036.google.pubsub.v1.Subscription\"" + + "^\332A+name,topic,push_config,ack_deadline_" + + "seconds\202\323\344\223\002*\032%/v1/{name=projects/*/subs" + + "criptions/*}:\001*\022\241\001\n\017GetSubscription\022(.go" + + "ogle.pubsub.v1.GetSubscriptionRequest\032\036." + + "google.pubsub.v1.Subscription\"D\332A\014subscr" + + "iption\202\323\344\223\002/\022-/v1/{subscription=projects" + + "/*/subscriptions/*}\022\273\001\n\022UpdateSubscripti" + + "on\022+.google.pubsub.v1.UpdateSubscription" + + "Request\032\036.google.pubsub.v1.Subscription\"" + + "X\332A\030subscription,update_mask\202\323\344\223\002722/v1/" + + "{subscription.name=projects/*/subscripti" + + "ons/*}:\001*\022\246\001\n\021ListSubscriptions\022*.google" + + ".pubsub.v1.ListSubscriptionsRequest\032+.go" + + "ogle.pubsub.v1.ListSubscriptionsResponse" + + "\"8\332A\007project\202\323\344\223\002(\022&/v1/{project=project" + + "s/*}/subscriptions\022\237\001\n\022DeleteSubscriptio" + + "n\022+.google.pubsub.v1.DeleteSubscriptionR" + + "equest\032\026.google.protobuf.Empty\"D\332A\014subsc" + + "ription\202\323\344\223\002/*-/v1/{subscription=project" + + "s/*/subscriptions/*}\022\317\001\n\021ModifyAckDeadli" + + "ne\022*.google.pubsub.v1.ModifyAckDeadlineR" + + "equest\032\026.google.protobuf.Empty\"v\332A)subsc" + + "ription,ack_ids,ack_deadline_seconds\202\323\344\223" + + "\002D\"?/v1/{subscription=projects/*/subscri" + + "ptions/*}:modifyAckDeadline:\001*\022\250\001\n\013Ackno" + + "wledge\022$.google.pubsub.v1.AcknowledgeReq" + + "uest\032\026.google.protobuf.Empty\"[\332A\024subscri" + + "ption,ack_ids\202\323\344\223\002>\"9/v1/{subscription=p" + + "rojects/*/subscriptions/*}:acknowledge:\001" + + "*\022\320\001\n\004Pull\022\035.google.pubsub.v1.PullReques" + + "t\032\036.google.pubsub.v1.PullResponse\"\210\001\332A,s" + + "ubscription,return_immediately,max_messa" + + "ges\332A\031subscription,max_messages\202\323\344\223\0027\"2/" + + "v1/{subscription=projects/*/subscription" + + "s/*}:pull:\001*\022f\n\rStreamingPull\022&.google.p" + + "ubsub.v1.StreamingPullRequest\032\'.google.p" + + "ubsub.v1.StreamingPullResponse\"\000(\0010\001\022\273\001\n" + + "\020ModifyPushConfig\022).google.pubsub.v1.Mod" + + "ifyPushConfigRequest\032\026.google.protobuf.E" + + "mpty\"d\332A\030subscription,push_config\202\323\344\223\002C\"" + + ">/v1/{subscription=projects/*/subscripti" + + "ons/*}:modifyPushConfig:\001*\022\211\001\n\013GetSnapsh" + + "ot\022$.google.pubsub.v1.GetSnapshotRequest" + + "\032\032.google.pubsub.v1.Snapshot\"8\332A\010snapsho" + + "t\202\323\344\223\002\'\022%/v1/{snapshot=projects/*/snapsh" + + "ots/*}\022\226\001\n\rListSnapshots\022&.google.pubsub" + + ".v1.ListSnapshotsRequest\032\'.google.pubsub" + + ".v1.ListSnapshotsResponse\"4\332A\007project\202\323\344" + + "\223\002$\022\"/v1/{project=projects/*}/snapshots\022" + + "\227\001\n\016CreateSnapshot\022\'.google.pubsub.v1.Cr" + + "eateSnapshotRequest\032\032.google.pubsub.v1.S" + + "napshot\"@\332A\021name,subscription\202\323\344\223\002&\032!/v1" + + "/{name=projects/*/snapshots/*}:\001*\022\243\001\n\016Up" + + "dateSnapshot\022\'.google.pubsub.v1.UpdateSn" + + "apshotRequest\032\032.google.pubsub.v1.Snapsho" + + "t\"L\332A\024snapshot,update_mask\202\323\344\223\002/2*/v1/{s" + + "napshot.name=projects/*/snapshots/*}:\001*\022" + + "\213\001\n\016DeleteSnapshot\022\'.google.pubsub.v1.De" + + "leteSnapshotRequest\032\026.google.protobuf.Em" + + "pty\"8\332A\010snapshot\202\323\344\223\002\'*%/v1/{snapshot=pr" + + "ojects/*/snapshots/*}\022\204\001\n\004Seek\022\035.google." + + "pubsub.v1.SeekRequest\032\036.google.pubsub.v1" + + ".SeekResponse\"=\202\323\344\223\0027\"2/v1/{subscription" + + "=projects/*/subscriptions/*}:seek:\001*\032p\312A" + + "\025pubsub.googleapis.com\322AUhttps://www.goo" + + "gleapis.com/auth/cloud-platform,https://" + + "www.googleapis.com/auth/pubsubB\252\001\n\024com.g" + + "oogle.pubsub.v1B\013PubsubProtoP\001Z2cloud.go" + + "ogle.com/go/pubsub/apiv1/pubsubpb;pubsub" + + "pb\370\001\001\252\002\026Google.Cloud.PubSub.V1\312\002\026Google\\" + + "Cloud\\PubSub\\V1\352\002\031Google::Cloud::PubSub:" + + ":V1b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -967,7 +963,6 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Bucket", "FilenamePrefix", "FilenameSuffix", - "FilenameDatetimeFormat", "TextConfig", "AvroConfig", "MaxDuration", diff --git a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequest.java b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequest.java index a26effb78..33951890b 100644 --- a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequest.java +++ b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequest.java @@ -137,7 +137,7 @@ public com.google.protobuf.ByteString getSubscriptionBytes() { * * * @deprecated google.pubsub.v1.PullRequest.return_immediately is deprecated. See - * google/pubsub/v1/pubsub.proto;l=1387 + * google/pubsub/v1/pubsub.proto;l=1358 * @return The returnImmediately. */ @java.lang.Override @@ -688,7 +688,7 @@ public Builder setSubscriptionBytes(com.google.protobuf.ByteString value) { * * * @deprecated google.pubsub.v1.PullRequest.return_immediately is deprecated. See - * google/pubsub/v1/pubsub.proto;l=1387 + * google/pubsub/v1/pubsub.proto;l=1358 * @return The returnImmediately. */ @java.lang.Override @@ -714,7 +714,7 @@ public boolean getReturnImmediately() { * * * @deprecated google.pubsub.v1.PullRequest.return_immediately is deprecated. See - * google/pubsub/v1/pubsub.proto;l=1387 + * google/pubsub/v1/pubsub.proto;l=1358 * @param value The returnImmediately to set. * @return This builder for chaining. */ @@ -744,7 +744,7 @@ public Builder setReturnImmediately(boolean value) { * * * @deprecated google.pubsub.v1.PullRequest.return_immediately is deprecated. See - * google/pubsub/v1/pubsub.proto;l=1387 + * google/pubsub/v1/pubsub.proto;l=1358 * @return This builder for chaining. */ @java.lang.Deprecated diff --git a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequestOrBuilder.java b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequestOrBuilder.java index 94c2e0c10..0a9d2f97b 100644 --- a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequestOrBuilder.java +++ b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequestOrBuilder.java @@ -72,7 +72,7 @@ public interface PullRequestOrBuilder * * * @deprecated google.pubsub.v1.PullRequest.return_immediately is deprecated. See - * google/pubsub/v1/pubsub.proto;l=1387 + * google/pubsub/v1/pubsub.proto;l=1358 * @return The returnImmediately. */ @java.lang.Deprecated diff --git a/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/pubsub.proto b/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/pubsub.proto index b70bda11a..4a312a8d2 100644 --- a/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/pubsub.proto +++ b/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/pubsub.proto @@ -1,4 +1,4 @@ -// Copyright 2024 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -203,7 +203,7 @@ message IngestionDataSourceSettings { KINESIS_PERMISSION_DENIED = 2; // Permission denied encountered while publishing to the topic. This can - // happen if the Pub/Sub SA has not been granted the [appropriate publish + // happen due to Pub/Sub SA has not been granted the [appropriate publish // permissions](https://cloud.google.com/pubsub/docs/access-control#pubsub.publisher) PUBLISH_PERMISSION_DENIED = 3; @@ -1213,11 +1213,6 @@ message CloudStorageConfig { // Must not end in "/". string filename_suffix = 3 [(google.api.field_behavior) = OPTIONAL]; - // Optional. User-provided format string specifying how to represent datetimes - // in Cloud Storage filenames. See the [datetime format - // guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names). - string filename_datetime_format = 10 [(google.api.field_behavior) = OPTIONAL]; - // Defaults to text format. oneof output_format { // Optional. If set, message data will be written to Cloud Storage in text diff --git a/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/schema.proto b/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/schema.proto index d52c678c5..bd17cf0f8 100644 --- a/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/schema.proto +++ b/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/schema.proto @@ -1,4 +1,4 @@ -// Copyright 2024 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/renovate.json b/renovate.json index 58c97664e..df71c3b5a 100644 --- a/renovate.json +++ b/renovate.json @@ -20,7 +20,7 @@ "customManagers": [ { "customType": "regex", - "fileMatch": [ + "fileMatch": [ "^.kokoro/presubmit/graalvm-native.*.cfg$" ], "matchStrings": ["value: \"gcr.io/cloud-devrel-public-resources/graalvm.*:(?.*?)\""], @@ -30,7 +30,7 @@ { "customType": "regex", "fileMatch": [ - "^.github/workflows/unmanaged_dependency_check.yaml$" + "^.github/workflows/unmanaged_dependency_check.yaml$" ], "matchStrings": ["uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v(?.+?)\\n"], "depNameTemplate": "com.google.cloud:sdk-platform-java-config", From e17e35593f4faa8be92bceb54c346286e3c9e922 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Wed, 12 Jun 2024 17:11:46 +0000 Subject: [PATCH 10/24] infer image tag from config yaml --- .../workflows/hermetic_library_generation.yaml | 3 +-- generation/hermetic_library_generation.sh | 15 ++++----------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index a7e05557b..23385a1be 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -33,7 +33,6 @@ jobs: [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" bash generation/hermetic_library_generation.sh \ --target_branch ${{ github.base_ref }} \ - --current_branch ${{ github.head_ref }} \ - --image_tag $(cat generation_config.yaml | yq .gapic_generator_version) + --current_branch ${{ github.head_ref }} env: GH_TOKEN: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} diff --git a/generation/hermetic_library_generation.sh b/generation/hermetic_library_generation.sh index d7e55e3c6..6c3f22d8f 100644 --- a/generation/hermetic_library_generation.sh +++ b/generation/hermetic_library_generation.sh @@ -21,7 +21,6 @@ set -e # The parameters of this script is: # 1. target_branch, the branch into which the pull request is merged. # 2. current_branch, the branch with which the pull request is associated. -# 3. image_tag, the tag of gcr.io/cloud-devrel-public-resources/java-library-generation. # 3. [optional] generation_config, the path to the generation configuration, # the default value is generation_config.yaml in the repository root. while [[ $# -gt 0 ]]; do @@ -35,10 +34,6 @@ case "${key}" in current_branch="$2" shift ;; - --image_tag) - image_tag="$2" - shift - ;; --generation_config) generation_config="$2" shift @@ -61,14 +56,9 @@ if [ -z "${current_branch}" ]; then exit 1 fi -if [ -z "${image_tag}" ]; then - echo "missing required argument --image_tag" - exit 1 -fi - if [ -z "${generation_config}" ]; then generation_config=generation_config.yaml - echo "Use default generation config: ${generation_config}" + echo "Using default generation config: ${generation_config}" fi workspace_name="/workspace" @@ -88,6 +78,9 @@ fi git show "${target_branch}":"${generation_config}" > "${baseline_generation_config}" config_diff=$(diff "${generation_config}" "${baseline_generation_config}" || true) +# parse image tag from the generation configuration. +image_tag=$(grep "gapic_generator_version" "${generation_config}" | cut -d ':' -f 2 | xargs) + # run hermetic code generation docker image. docker run \ --rm \ From a92d99fb31f9d8153899fa191794ccc7832ae515 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Wed, 12 Jun 2024 17:18:29 +0000 Subject: [PATCH 11/24] correct workflow name --- .github/workflows/update_googleapis_committish.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update_googleapis_committish.yaml b/.github/workflows/update_googleapis_committish.yaml index aac08d039..7cc9356f0 100644 --- a/.github/workflows/update_googleapis_committish.yaml +++ b/.github/workflows/update_googleapis_committish.yaml @@ -13,7 +13,7 @@ # limitations under the License. # GitHub action job to test core java library features on # downstream client libraries before they are released. -name: Update googleapis commit +name: Update googleapis committish on: schedule: - cron: '0 2 * * *' From 3d766b865fadc9793a361280564cff056e0a40e2 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Wed, 12 Jun 2024 17:45:18 +0000 Subject: [PATCH 12/24] update config scripts and yamls --- .../scripts}/hermetic_library_generation.sh | 0 .../scripts/update_generation_config.sh | 39 ++++++++++++++--- .../workflows/update_generation_config.yaml | 42 +++++++++++++++++++ 3 files changed, 76 insertions(+), 5 deletions(-) rename {generation => .github/scripts}/hermetic_library_generation.sh (100%) rename generation/update_googleapis_committish.sh => .github/scripts/update_generation_config.sh (59%) create mode 100644 .github/workflows/update_generation_config.yaml diff --git a/generation/hermetic_library_generation.sh b/.github/scripts/hermetic_library_generation.sh similarity index 100% rename from generation/hermetic_library_generation.sh rename to .github/scripts/hermetic_library_generation.sh diff --git a/generation/update_googleapis_committish.sh b/.github/scripts/update_generation_config.sh similarity index 59% rename from generation/update_googleapis_committish.sh rename to .github/scripts/update_generation_config.sh index 5dfcaba56..561a31304 100644 --- a/generation/update_googleapis_committish.sh +++ b/.github/scripts/update_generation_config.sh @@ -1,12 +1,32 @@ #!/bin/bash set -e # This script should be run at the root of the repository. -# This script is used to update googleapis committish to latest in generation -# configuration at the time of running and create a pull request. +# This script is used to update googleapis_commitish, gapic_generator_version, +# and libraries_bom_version in generation configuration at the time of running +# and create a pull request. # The following commands need to be installed before running the script: # 1. git # 2. gh +# 3. jq + +# Utility functions +# Get the latest released version of a Maven artifact. +function get_latest_released_version() { + local group_id=$1 + local artifact_id=$2 + latest=$(curl -s "https://search.maven.org/solrsearch/select?q=g:${group_id}+AND+a:${artifact_id}&core=gav&rows=500&wt=json" | jq -r '.response.docs[] | select(.v | test("^[0-9]+(\\.[0-9]+)*$")) | .v' | sort -V | tail -n 1) + echo "${latest}" +} + +# Update a key to a new value in the generation config. +function update_config() { + local key_word=$1 + local new_value=$2 + local file=$3 + echo "Update ${key_word} to ${new_value} in ${file}" + sed -i -e "s/^${key_word}.*$/${key_word}: ${new_value}/" "${file}" +} # The parameters of this script is: # 1. base_branch, the base branch of the result pull request. @@ -52,7 +72,7 @@ if [ -z "${generation_config}" ]; then fi current_branch="generate-libraries-${base_branch}" -title="chore: update googleapis committish at $(date)" +title="chore: Update generation configuration at $(date)" # try to find a open pull request associated with the branch pr_num=$(gh pr list -s open -H "${current_branch}" -q . --json number | jq ".[] | .number") @@ -72,12 +92,20 @@ git pull latest_commit=$(git rev-parse HEAD) popd rm -rf tmp-googleapis -sed -i -e "s/^googleapis_commitish.*$/googleapis_commitish: ${latest_commit}/" "${generation_config}" +update_config "googleapis_commitish" "${latest_commit}" "${generation_config}" + +# update gapic-generator-java version to the latest +latest_version=$(get_latest_released_version "com.google.api" "gapic-generator-java") +update_config "gapic_generator_version" "${latest_version}" "${generation_config}" + +# update libraries-bom version to the latest +latest_version=$(get_latest_released_version "com.google.cloud" "libraries-bom") +update_config "libraries_bom_version" "${latest_version}" "${generation_config}" git add "${generation_config}" changed_files=$(git diff --cached --name-only) if [[ "${changed_files}" == "" ]]; then - echo "The latest googleapis commit is not changed." + echo "The latest generation config is not changed." echo "Skip committing to the pull request." exit 0 fi @@ -89,4 +117,5 @@ if [ -z "${pr_num}" ]; then gh pr create --title "${title}" --head "${current_branch}" --body "${title}" --base "${base_branch}" else git push + gh pr edit "${pr_num}" --title "${title}" --body "${title}" fi diff --git a/.github/workflows/update_generation_config.yaml b/.github/workflows/update_generation_config.yaml new file mode 100644 index 000000000..70b513312 --- /dev/null +++ b/.github/workflows/update_generation_config.yaml @@ -0,0 +1,42 @@ +# 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. +# GitHub action job to test core java library features on +# downstream client libraries before they are released. +name: Update generation configuration +on: + schedule: + - cron: '0 2 * * *' + workflow_dispatch: + +jobs: + update-generation-config: + runs-on: ubuntu-22.04 + env: + # the branch into which the pull request is merged + base_branch: main + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} + - name: Update params in generation config to latest + shell: bash + run: | + set -x + [ -z "$(git config user.email)" ] && git config --global user.email "cloud-java-bot@google.com" + [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" + bash .github/scripts/update_generation_config.sh.sh \ + --base_branch "${base_branch}"\ + --repo ${{ github.repository }} + env: + GH_TOKEN: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} From 89e3d5dbb71121fbc025f4fb6d6f2aaf93e7698e Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Thu, 20 Jun 2024 20:41:51 +0000 Subject: [PATCH 13/24] remove old update_googleapis_committish workflow --- .../update_googleapis_committish.yaml | 42 ------------------- 1 file changed, 42 deletions(-) delete mode 100644 .github/workflows/update_googleapis_committish.yaml diff --git a/.github/workflows/update_googleapis_committish.yaml b/.github/workflows/update_googleapis_committish.yaml deleted file mode 100644 index 7cc9356f0..000000000 --- a/.github/workflows/update_googleapis_committish.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# 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. -# GitHub action job to test core java library features on -# downstream client libraries before they are released. -name: Update googleapis committish -on: - schedule: - - cron: '0 2 * * *' - workflow_dispatch: - -jobs: - update-googleapis-committish: - runs-on: ubuntu-22.04 - env: - # the branch into which the pull request is merged - base_branch: main - steps: - - uses: actions/checkout@v4 - with: - token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} - - name: Update googleapis committish to latest - shell: bash - run: | - set -x - [ -z "$(git config user.email)" ] && git config --global user.email "cloud-java-bot@google.com" - [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" - bash generation/update_googleapis_committish.sh \ - --base_branch "${base_branch}"\ - --repo ${{ github.repository }} - env: - GH_TOKEN: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} From 0de505483ff4434baed7653c5e28666596277daf Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Thu, 20 Jun 2024 21:33:32 +0000 Subject: [PATCH 14/24] sync config structure with that of google-cloud-java --- generation_config.yaml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/generation_config.yaml b/generation_config.yaml index e0adb5245..27ec6d7d0 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,18 +1,8 @@ gapic_generator_version: 2.41.0 -protoc_version: '25.3' googleapis_commitish: 6f289d775912966eb0cf04bda91e5e355c998d30 libraries_bom_version: 26.38.0 -template_excludes: - - ".github/workflows/samples.yaml" - - ".kokoro/build.sh" - - ".github/sync-repo-settings.yaml" - - ".github/blunderbuss.yml" - - '.kokoro/requirements.in' - - '.kokoro/requirements.txt' - - '.kokoro/presubmit/graalvm-native.cfg' - - '.kokoro/presubmit/graalvm-native-17.cfg' libraries: - - api_shortname: "pubsub" + - api_shortname: pubsub name_pretty: "Cloud Pub/Sub" api_reference: "https://cloud.google.com/pubsub/" product_documentation: "https://cloud.google.com/pubsub/docs/" From 7b74b3e7a849ecd148e7e21577f3ade100746d78 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Tue, 25 Jun 2024 18:54:25 +0000 Subject: [PATCH 15/24] remove quotes from config yamls --- generation_config.yaml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/generation_config.yaml b/generation_config.yaml index 27ec6d7d0..10613e9a1 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -3,21 +3,21 @@ googleapis_commitish: 6f289d775912966eb0cf04bda91e5e355c998d30 libraries_bom_version: 26.38.0 libraries: - api_shortname: pubsub - name_pretty: "Cloud Pub/Sub" - api_reference: "https://cloud.google.com/pubsub/" - product_documentation: "https://cloud.google.com/pubsub/docs/" - client_documentation: "https://cloud.google.com/java/docs/reference/google-cloud-pubsub/latest/history" - api_description: "is designed to provide reliable, many-to-many, asynchronous messaging between applications. Publisher applications can send messages to a topic and other applications can subscribe to that topic to receive the messages. By decoupling senders and receivers, Google Cloud Pub/Sub allows developers to communicate between independently written applications." - issue_tracker: "https://issuetracker.google.com/savedsearches/559741" - release_level: "stable" - language: "java" - repo: "googleapis/java-pubsub" - repo_short: "java-pubsub" - distribution_name: "com.google.cloud:google-cloud-pubsub" - codeowner_team: "@googleapis/api-pubsub" - api_id: "pubsub.googleapis.com" - library_type: "GAPIC_COMBO" + name_pretty: Cloud Pub/Sub + api_reference: https://cloud.google.com/pubsub/ + product_documentation: https://cloud.google.com/pubsub/docs/ + client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-pubsub/latest/history + api_description: is designed to provide reliable, many-to-many, asynchronous messaging between applications. Publisher applications can send messages to a topic and other applications can subscribe to that topic to receive the messages. By decoupling senders and receivers, Google Cloud Pub/Sub allows developers to communicate between independently written applications. + issue_tracker: https://issuetracker.google.com/savedsearches/559741 + release_level: stable + language: java + repo: googleapis/java-pubsub + repo_short: java-pubsub + distribution_name: com.google.cloud:google-cloud-pubsub + codeowner_team: @googleapis/api-pubsub + api_id: pubsub.googleapis.com + library_type: GAPIC_COMBO requires_billing: true - recommended_package: "com.google.cloud.pubsub.v1" + recommended_package: com.google.cloud.pubsub.v1 GAPICs: - proto_path: google/pubsub/v1 From 53a1c5ba26561e3d5e230ab0fa27f6a85c72969e Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Tue, 25 Jun 2024 20:20:11 +0000 Subject: [PATCH 16/24] fix typo in update_generation_config.yaml --- .github/workflows/update_generation_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update_generation_config.yaml b/.github/workflows/update_generation_config.yaml index 70b513312..3cf773992 100644 --- a/.github/workflows/update_generation_config.yaml +++ b/.github/workflows/update_generation_config.yaml @@ -35,7 +35,7 @@ jobs: set -x [ -z "$(git config user.email)" ] && git config --global user.email "cloud-java-bot@google.com" [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" - bash .github/scripts/update_generation_config.sh.sh \ + bash .github/scripts/update_generation_config.sh \ --base_branch "${base_branch}"\ --repo ${{ github.repository }} env: From 1aefc6ee4bddcce4b2cbfb89f099a5ce4b6535f7 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Tue, 25 Jun 2024 20:26:07 +0000 Subject: [PATCH 17/24] correct --- .github/workflows/hermetic_library_generation.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 23385a1be..0c7a82a3c 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -31,7 +31,7 @@ jobs: set -x [ -z "$(git config user.email)" ] && git config --global user.email "cloud-java-bot@google.com" [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" - bash generation/hermetic_library_generation.sh \ + bash .github/scriptes/hermetic_library_generation.sh \ --target_branch ${{ github.base_ref }} \ --current_branch ${{ github.head_ref }} env: From 067b32c2700c80f5f21d87236a8d655b8fba8223 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Wed, 26 Jun 2024 20:47:16 +0000 Subject: [PATCH 18/24] quote codeowners_team in generation config --- generation_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generation_config.yaml b/generation_config.yaml index 10613e9a1..bd76355c5 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -14,7 +14,7 @@ libraries: repo: googleapis/java-pubsub repo_short: java-pubsub distribution_name: com.google.cloud:google-cloud-pubsub - codeowner_team: @googleapis/api-pubsub + codeowner_team: '@googleapis/api-pubsub' api_id: pubsub.googleapis.com library_type: GAPIC_COMBO requires_billing: true From d5a8f200b47d3adcc03f3b5f5adb8064db7f9f09 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Wed, 26 Jun 2024 20:49:59 +0000 Subject: [PATCH 19/24] update generator version --- .repo-metadata.json | 10 +- README.md | 12 +- generation_config.yaml | 2 +- .../google/pubsub/v1/CloudStorageConfig.java | 244 +++++++++- .../v1/CloudStorageConfigOrBuilder.java | 29 ++ .../v1/IngestionDataSourceSettings.java | 4 +- .../com/google/pubsub/v1/PubsubProto.java | 453 +++++++++--------- .../com/google/pubsub/v1/PullRequest.java | 8 +- .../pubsub/v1/PullRequestOrBuilder.java | 2 +- .../main/proto/google/pubsub/v1/pubsub.proto | 9 +- .../main/proto/google/pubsub/v1/schema.proto | 2 +- renovate.json | 4 +- 12 files changed, 511 insertions(+), 268 deletions(-) diff --git a/.repo-metadata.json b/.repo-metadata.json index 7e7843024..f30706ceb 100644 --- a/.repo-metadata.json +++ b/.repo-metadata.json @@ -1,19 +1,19 @@ { "api_shortname": "pubsub", "name_pretty": "Cloud Pub/Sub", + "api_reference": "https://cloud.google.com/pubsub/", "product_documentation": "https://cloud.google.com/pubsub/docs/", - "api_description": "is designed to provide reliable, many-to-many, asynchronous messaging between applications. Publisher applications can send messages to a topic and other applications can subscribe to that topic to receive the messages. By decoupling senders and receivers, Google Cloud Pub/Sub allows developers to communicate between independently written applications.", "client_documentation": "https://cloud.google.com/java/docs/reference/google-cloud-pubsub/latest/history", + "api_description": "is designed to provide reliable, many-to-many, asynchronous messaging between applications. Publisher applications can send messages to a topic and other applications can subscribe to that topic to receive the messages. By decoupling senders and receivers, Google Cloud Pub/Sub allows developers to communicate between independently written applications.", + "issue_tracker": "https://issuetracker.google.com/savedsearches/559741", "release_level": "stable", - "transport": "both", "language": "java", "repo": "googleapis/java-pubsub", "repo_short": "java-pubsub", "distribution_name": "com.google.cloud:google-cloud-pubsub", + "codeowner_team": "@googleapis/api-pubsub", "api_id": "pubsub.googleapis.com", "library_type": "GAPIC_COMBO", "requires_billing": true, - "api_reference": "https://cloud.google.com/pubsub/", - "codeowner_team": "@googleapis/api-pubsub", - "issue_tracker": "https://issuetracker.google.com/savedsearches/559741" + "recommended_package": "com.google.cloud.pubsub.v1" } \ No newline at end of file diff --git a/README.md b/README.md index 497c13c73..55d765048 100644 --- a/README.md +++ b/README.md @@ -52,20 +52,20 @@ If you are using Maven without the BOM, add this to your dependencies: If you are using Gradle 5.x or later, add this to your dependencies: ```Groovy -implementation platform('com.google.cloud:libraries-bom:26.40.0') +implementation platform('com.google.cloud:libraries-bom:26.42.0') implementation 'com.google.cloud:google-cloud-pubsub' ``` If you are using Gradle without BOM, add this to your dependencies: ```Groovy -implementation 'com.google.cloud:google-cloud-pubsub:1.129.7' +implementation 'com.google.cloud:google-cloud-pubsub:1.130.1' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-pubsub" % "1.129.7" +libraryDependencies += "com.google.cloud" % "google-cloud-pubsub" % "1.130.1" ``` @@ -319,10 +319,6 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-pubsub/tree/m To get help, follow the instructions in the [shared Troubleshooting document][troubleshooting]. -## Transport - -Cloud Pub/Sub uses both gRPC and HTTP/JSON for the transport layer. - ## Supported Java Versions Java 8 or above is required for using this client. @@ -415,7 +411,7 @@ Java is a registered trademark of Oracle and/or its affiliates. [kokoro-badge-link-5]: http://storage.googleapis.com/cloud-devrel-public/java/badges/java-pubsub/java11.html [stability-image]: https://img.shields.io/badge/stability-stable-green [maven-version-image]: https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-pubsub.svg -[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-pubsub/1.129.7 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-pubsub/1.130.1 [authentication]: https://github.com/googleapis/google-cloud-java#authentication [auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes [predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles diff --git a/generation_config.yaml b/generation_config.yaml index bd76355c5..e7b53b6d9 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,4 +1,4 @@ -gapic_generator_version: 2.41.0 +gapic_generator_version: 2.42.0 googleapis_commitish: 6f289d775912966eb0cf04bda91e5e355c998d30 libraries_bom_version: 26.38.0 libraries: diff --git a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfig.java b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfig.java index 1d772e79a..f847f91d6 100644 --- a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfig.java +++ b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfig.java @@ -42,6 +42,7 @@ private CloudStorageConfig() { bucket_ = ""; filenamePrefix_ = ""; filenameSuffix_ = ""; + filenameDatetimeFormat_ = ""; state_ = 0; serviceAccountEmail_ = ""; } @@ -1614,6 +1615,61 @@ public com.google.protobuf.ByteString getFilenameSuffixBytes() { } } + public static final int FILENAME_DATETIME_FORMAT_FIELD_NUMBER = 10; + + @SuppressWarnings("serial") + private volatile java.lang.Object filenameDatetimeFormat_ = ""; + /** + * + * + *
+   * Optional. User-provided format string specifying how to represent datetimes
+   * in Cloud Storage filenames. See the [datetime format
+   * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
+   * 
+ * + * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The filenameDatetimeFormat. + */ + @java.lang.Override + public java.lang.String getFilenameDatetimeFormat() { + java.lang.Object ref = filenameDatetimeFormat_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + filenameDatetimeFormat_ = s; + return s; + } + } + /** + * + * + *
+   * Optional. User-provided format string specifying how to represent datetimes
+   * in Cloud Storage filenames. See the [datetime format
+   * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
+   * 
+ * + * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The bytes for filenameDatetimeFormat. + */ + @java.lang.Override + public com.google.protobuf.ByteString getFilenameDatetimeFormatBytes() { + java.lang.Object ref = filenameDatetimeFormat_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + filenameDatetimeFormat_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + public static final int TEXT_CONFIG_FIELD_NUMBER = 4; /** * @@ -1949,6 +2005,12 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (state_ != com.google.pubsub.v1.CloudStorageConfig.State.STATE_UNSPECIFIED.getNumber()) { output.writeEnum(9, state_); } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(filenameDatetimeFormat_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 10, filenameDatetimeFormat_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceAccountEmail_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 11, serviceAccountEmail_); + } getUnknownFields().writeTo(output); } @@ -1986,6 +2048,12 @@ public int getSerializedSize() { if (state_ != com.google.pubsub.v1.CloudStorageConfig.State.STATE_UNSPECIFIED.getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(9, state_); } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(filenameDatetimeFormat_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, filenameDatetimeFormat_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceAccountEmail_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, serviceAccountEmail_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -2004,6 +2072,7 @@ public boolean equals(final java.lang.Object obj) { if (!getBucket().equals(other.getBucket())) return false; if (!getFilenamePrefix().equals(other.getFilenamePrefix())) return false; if (!getFilenameSuffix().equals(other.getFilenameSuffix())) return false; + if (!getFilenameDatetimeFormat().equals(other.getFilenameDatetimeFormat())) return false; if (hasMaxDuration() != other.hasMaxDuration()) return false; if (hasMaxDuration()) { if (!getMaxDuration().equals(other.getMaxDuration())) return false; @@ -2039,6 +2108,8 @@ public int hashCode() { hash = (53 * hash) + getFilenamePrefix().hashCode(); hash = (37 * hash) + FILENAME_SUFFIX_FIELD_NUMBER; hash = (53 * hash) + getFilenameSuffix().hashCode(); + hash = (37 * hash) + FILENAME_DATETIME_FORMAT_FIELD_NUMBER; + hash = (53 * hash) + getFilenameDatetimeFormat().hashCode(); if (hasMaxDuration()) { hash = (37 * hash) + MAX_DURATION_FIELD_NUMBER; hash = (53 * hash) + getMaxDuration().hashCode(); @@ -2212,6 +2283,7 @@ public Builder clear() { bucket_ = ""; filenamePrefix_ = ""; filenameSuffix_ = ""; + filenameDatetimeFormat_ = ""; if (textConfigBuilder_ != null) { textConfigBuilder_.clear(); } @@ -2274,16 +2346,19 @@ private void buildPartial0(com.google.pubsub.v1.CloudStorageConfig result) { if (((from_bitField0_ & 0x00000004) != 0)) { result.filenameSuffix_ = filenameSuffix_; } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.filenameDatetimeFormat_ = filenameDatetimeFormat_; + } int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000020) != 0)) { + if (((from_bitField0_ & 0x00000040) != 0)) { result.maxDuration_ = maxDurationBuilder_ == null ? maxDuration_ : maxDurationBuilder_.build(); to_bitField0_ |= 0x00000001; } - if (((from_bitField0_ & 0x00000040) != 0)) { + if (((from_bitField0_ & 0x00000080) != 0)) { result.maxBytes_ = maxBytes_; } - if (((from_bitField0_ & 0x00000080) != 0)) { + if (((from_bitField0_ & 0x00000100) != 0)) { result.state_ = state_; } if (((from_bitField0_ & 0x00000200) != 0)) { @@ -2363,6 +2438,11 @@ public Builder mergeFrom(com.google.pubsub.v1.CloudStorageConfig other) { bitField0_ |= 0x00000004; onChanged(); } + if (!other.getFilenameDatetimeFormat().isEmpty()) { + filenameDatetimeFormat_ = other.filenameDatetimeFormat_; + bitField0_ |= 0x00000008; + onChanged(); + } if (other.hasMaxDuration()) { mergeMaxDuration(other.getMaxDuration()); } @@ -2452,21 +2532,33 @@ public Builder mergeFrom( case 50: { input.readMessage(getMaxDurationFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000040; break; } // case 50 case 56: { maxBytes_ = input.readInt64(); - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000080; break; } // case 56 case 72: { state_ = input.readEnum(); - bitField0_ |= 0x00000080; + bitField0_ |= 0x00000100; break; } // case 72 + case 82: + { + filenameDatetimeFormat_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000008; + break; + } // case 82 + case 90: + { + serviceAccountEmail_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000200; + break; + } // case 90 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -2848,6 +2940,122 @@ public Builder setFilenameSuffixBytes(com.google.protobuf.ByteString value) { return this; } + private java.lang.Object filenameDatetimeFormat_ = ""; + /** + * + * + *
+     * Optional. User-provided format string specifying how to represent datetimes
+     * in Cloud Storage filenames. See the [datetime format
+     * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
+     * 
+ * + * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The filenameDatetimeFormat. + */ + public java.lang.String getFilenameDatetimeFormat() { + java.lang.Object ref = filenameDatetimeFormat_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + filenameDatetimeFormat_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Optional. User-provided format string specifying how to represent datetimes
+     * in Cloud Storage filenames. See the [datetime format
+     * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
+     * 
+ * + * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The bytes for filenameDatetimeFormat. + */ + public com.google.protobuf.ByteString getFilenameDatetimeFormatBytes() { + java.lang.Object ref = filenameDatetimeFormat_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + filenameDatetimeFormat_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Optional. User-provided format string specifying how to represent datetimes
+     * in Cloud Storage filenames. See the [datetime format
+     * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
+     * 
+ * + * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * @param value The filenameDatetimeFormat to set. + * @return This builder for chaining. + */ + public Builder setFilenameDatetimeFormat(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + filenameDatetimeFormat_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. User-provided format string specifying how to represent datetimes
+     * in Cloud Storage filenames. See the [datetime format
+     * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
+     * 
+ * + * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return This builder for chaining. + */ + public Builder clearFilenameDatetimeFormat() { + filenameDatetimeFormat_ = getDefaultInstance().getFilenameDatetimeFormat(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. User-provided format string specifying how to represent datetimes
+     * in Cloud Storage filenames. See the [datetime format
+     * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
+     * 
+ * + * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * @param value The bytes for filenameDatetimeFormat to set. + * @return This builder for chaining. + */ + public Builder setFilenameDatetimeFormatBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + filenameDatetimeFormat_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + private com.google.protobuf.SingleFieldBuilderV3< com.google.pubsub.v1.CloudStorageConfig.TextConfig, com.google.pubsub.v1.CloudStorageConfig.TextConfig.Builder, @@ -3343,7 +3551,7 @@ public com.google.pubsub.v1.CloudStorageConfig.AvroConfigOrBuilder getAvroConfig * @return Whether the maxDuration field is set. */ public boolean hasMaxDuration() { - return ((bitField0_ & 0x00000020) != 0); + return ((bitField0_ & 0x00000040) != 0); } /** * @@ -3389,7 +3597,7 @@ public Builder setMaxDuration(com.google.protobuf.Duration value) { } else { maxDurationBuilder_.setMessage(value); } - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000040; onChanged(); return this; } @@ -3411,7 +3619,7 @@ public Builder setMaxDuration(com.google.protobuf.Duration.Builder builderForVal } else { maxDurationBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000040; onChanged(); return this; } @@ -3429,7 +3637,7 @@ public Builder setMaxDuration(com.google.protobuf.Duration.Builder builderForVal */ public Builder mergeMaxDuration(com.google.protobuf.Duration value) { if (maxDurationBuilder_ == null) { - if (((bitField0_ & 0x00000020) != 0) + if (((bitField0_ & 0x00000040) != 0) && maxDuration_ != null && maxDuration_ != com.google.protobuf.Duration.getDefaultInstance()) { getMaxDurationBuilder().mergeFrom(value); @@ -3440,7 +3648,7 @@ public Builder mergeMaxDuration(com.google.protobuf.Duration value) { maxDurationBuilder_.mergeFrom(value); } if (maxDuration_ != null) { - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000040; onChanged(); } return this; @@ -3458,7 +3666,7 @@ public Builder mergeMaxDuration(com.google.protobuf.Duration value) { * */ public Builder clearMaxDuration() { - bitField0_ = (bitField0_ & ~0x00000020); + bitField0_ = (bitField0_ & ~0x00000040); maxDuration_ = null; if (maxDurationBuilder_ != null) { maxDurationBuilder_.dispose(); @@ -3480,7 +3688,7 @@ public Builder clearMaxDuration() { * */ public com.google.protobuf.Duration.Builder getMaxDurationBuilder() { - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000040; onChanged(); return getMaxDurationFieldBuilder().getBuilder(); } @@ -3569,7 +3777,7 @@ public long getMaxBytes() { public Builder setMaxBytes(long value) { maxBytes_ = value; - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000080; onChanged(); return this; } @@ -3587,7 +3795,7 @@ public Builder setMaxBytes(long value) { * @return This builder for chaining. */ public Builder clearMaxBytes() { - bitField0_ = (bitField0_ & ~0x00000040); + bitField0_ = (bitField0_ & ~0x00000080); maxBytes_ = 0L; onChanged(); return this; @@ -3629,7 +3837,7 @@ public int getStateValue() { */ public Builder setStateValue(int value) { state_ = value; - bitField0_ |= 0x00000080; + bitField0_ |= 0x00000100; onChanged(); return this; } @@ -3672,7 +3880,7 @@ public Builder setState(com.google.pubsub.v1.CloudStorageConfig.State value) { if (value == null) { throw new NullPointerException(); } - bitField0_ |= 0x00000080; + bitField0_ |= 0x00000100; state_ = value.getNumber(); onChanged(); return this; @@ -3692,7 +3900,7 @@ public Builder setState(com.google.pubsub.v1.CloudStorageConfig.State value) { * @return This builder for chaining. */ public Builder clearState() { - bitField0_ = (bitField0_ & ~0x00000080); + bitField0_ = (bitField0_ & ~0x00000100); state_ = 0; onChanged(); return this; diff --git a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfigOrBuilder.java b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfigOrBuilder.java index 2c7a6cf3a..11d3fa787 100644 --- a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfigOrBuilder.java +++ b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/CloudStorageConfigOrBuilder.java @@ -111,6 +111,35 @@ public interface CloudStorageConfigOrBuilder */ com.google.protobuf.ByteString getFilenameSuffixBytes(); + /** + * + * + *
+   * Optional. User-provided format string specifying how to represent datetimes
+   * in Cloud Storage filenames. See the [datetime format
+   * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
+   * 
+ * + * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The filenameDatetimeFormat. + */ + java.lang.String getFilenameDatetimeFormat(); + /** + * + * + *
+   * Optional. User-provided format string specifying how to represent datetimes
+   * in Cloud Storage filenames. See the [datetime format
+   * guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).
+   * 
+ * + * string filename_datetime_format = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The bytes for filenameDatetimeFormat. + */ + com.google.protobuf.ByteString getFilenameDatetimeFormatBytes(); + /** * * diff --git a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/IngestionDataSourceSettings.java b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/IngestionDataSourceSettings.java index 9d97d01d2..b56f85ee0 100644 --- a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/IngestionDataSourceSettings.java +++ b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/IngestionDataSourceSettings.java @@ -310,7 +310,7 @@ public enum State implements com.google.protobuf.ProtocolMessageEnum { * *
        * Permission denied encountered while publishing to the topic. This can
-       * happen due to Pub/Sub SA has not been granted the [appropriate publish
+       * happen if the Pub/Sub SA has not been granted the [appropriate publish
        * permissions](https://cloud.google.com/pubsub/docs/access-control#pubsub.publisher)
        * 
* @@ -383,7 +383,7 @@ public enum State implements com.google.protobuf.ProtocolMessageEnum { * *
        * Permission denied encountered while publishing to the topic. This can
-       * happen due to Pub/Sub SA has not been granted the [appropriate publish
+       * happen if the Pub/Sub SA has not been granted the [appropriate publish
        * permissions](https://cloud.google.com/pubsub/docs/access-control#pubsub.publisher)
        * 
* diff --git a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PubsubProto.java b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PubsubProto.java index 854c09918..a80aaa209 100644 --- a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PubsubProto.java +++ b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PubsubProto.java @@ -423,232 +423,236 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "B\003\340A\001\022 \n\023drop_unknown_fields\030\004 \001(\010B\003\340A\001\022" + ":\n\005state\030\005 \001(\0162&.google.pubsub.v1.BigQue" + "ryConfig.StateB\003\340A\003\022\035\n\020use_table_schema\030" - + "\006 \001(\010B\003\340A\001\"\212\001\n\005State\022\025\n\021STATE_UNSPECIFIE" - + "D\020\000\022\n\n\006ACTIVE\020\001\022\025\n\021PERMISSION_DENIED\020\002\022\r" - + "\n\tNOT_FOUND\020\003\022\023\n\017SCHEMA_MISMATCH\020\004\022#\n\037IN" - + "_TRANSIT_LOCATION_RESTRICTION\020\005\"\316\004\n\022Clou" - + "dStorageConfig\022\023\n\006bucket\030\001 \001(\tB\003\340A\002\022\034\n\017f" - + "ilename_prefix\030\002 \001(\tB\003\340A\001\022\034\n\017filename_su" - + "ffix\030\003 \001(\tB\003\340A\001\022K\n\013text_config\030\004 \001(\0132/.g" - + "oogle.pubsub.v1.CloudStorageConfig.TextC" - + "onfigB\003\340A\001H\000\022K\n\013avro_config\030\005 \001(\0132/.goog" - + "le.pubsub.v1.CloudStorageConfig.AvroConf" - + "igB\003\340A\001H\000\0224\n\014max_duration\030\006 \001(\0132\031.google" - + ".protobuf.DurationB\003\340A\001\022\026\n\tmax_bytes\030\007 \001" - + "(\003B\003\340A\001\022>\n\005state\030\t \001(\0162*.google.pubsub.v" - + "1.CloudStorageConfig.StateB\003\340A\003\032\014\n\nTextC" - + "onfig\032)\n\nAvroConfig\022\033\n\016write_metadata\030\001 " - + "\001(\010B\003\340A\001\"u\n\005State\022\025\n\021STATE_UNSPECIFIED\020\000" - + "\022\n\n\006ACTIVE\020\001\022\025\n\021PERMISSION_DENIED\020\002\022\r\n\tN" - + "OT_FOUND\020\003\022#\n\037IN_TRANSIT_LOCATION_RESTRI" - + "CTION\020\004B\017\n\routput_format\"|\n\017ReceivedMess" - + "age\022\023\n\006ack_id\030\001 \001(\tB\003\340A\001\0225\n\007message\030\002 \001(" - + "\0132\037.google.pubsub.v1.PubsubMessageB\003\340A\001\022" - + "\035\n\020delivery_attempt\030\003 \001(\005B\003\340A\001\"Z\n\026GetSub" - + "scriptionRequest\022@\n\014subscription\030\001 \001(\tB*" - + "\340A\002\372A$\n\"pubsub.googleapis.com/Subscripti" - + "on\"\214\001\n\031UpdateSubscriptionRequest\0229\n\014subs" - + "cription\030\001 \001(\0132\036.google.pubsub.v1.Subscr" - + "iptionB\003\340A\002\0224\n\013update_mask\030\002 \001(\0132\032.googl" - + "e.protobuf.FieldMaskB\003\340A\002\"\221\001\n\030ListSubscr" - + "iptionsRequest\022D\n\007project\030\001 \001(\tB3\340A\002\372A-\n" - + "+cloudresourcemanager.googleapis.com/Pro" - + "ject\022\026\n\tpage_size\030\002 \001(\005B\003\340A\001\022\027\n\npage_tok" - + "en\030\003 \001(\tB\003\340A\001\"u\n\031ListSubscriptionsRespon" - + "se\022:\n\rsubscriptions\030\001 \003(\0132\036.google.pubsu" - + "b.v1.SubscriptionB\003\340A\001\022\034\n\017next_page_toke" - + "n\030\002 \001(\tB\003\340A\001\"]\n\031DeleteSubscriptionReques" - + "t\022@\n\014subscription\030\001 \001(\tB*\340A\002\372A$\n\"pubsub." - + "googleapis.com/Subscription\"\223\001\n\027ModifyPu" - + "shConfigRequest\022@\n\014subscription\030\001 \001(\tB*\340" + + "\006 \001(\010B\003\340A\001\022\"\n\025service_account_email\030\007 \001(" + + "\tB\003\340A\001\"\212\001\n\005State\022\025\n\021STATE_UNSPECIFIED\020\000\022" + + "\n\n\006ACTIVE\020\001\022\025\n\021PERMISSION_DENIED\020\002\022\r\n\tNO" + + "T_FOUND\020\003\022\023\n\017SCHEMA_MISMATCH\020\004\022#\n\037IN_TRA" + + "NSIT_LOCATION_RESTRICTION\020\005\"\316\005\n\022CloudSto" + + "rageConfig\022\023\n\006bucket\030\001 \001(\tB\003\340A\002\022\034\n\017filen" + + "ame_prefix\030\002 \001(\tB\003\340A\001\022\034\n\017filename_suffix" + + "\030\003 \001(\tB\003\340A\001\022%\n\030filename_datetime_format\030" + + "\n \001(\tB\003\340A\001\022K\n\013text_config\030\004 \001(\0132/.google" + + ".pubsub.v1.CloudStorageConfig.TextConfig" + + "B\003\340A\001H\000\022K\n\013avro_config\030\005 \001(\0132/.google.pu" + + "bsub.v1.CloudStorageConfig.AvroConfigB\003\340" + + "A\001H\000\0224\n\014max_duration\030\006 \001(\0132\031.google.prot" + + "obuf.DurationB\003\340A\001\022\026\n\tmax_bytes\030\007 \001(\003B\003\340" + + "A\001\022>\n\005state\030\t \001(\0162*.google.pubsub.v1.Clo" + + "udStorageConfig.StateB\003\340A\003\022\"\n\025service_ac" + + "count_email\030\013 \001(\tB\003\340A\001\032\014\n\nTextConfig\032H\n\n" + + "AvroConfig\022\033\n\016write_metadata\030\001 \001(\010B\003\340A\001\022" + + "\035\n\020use_topic_schema\030\002 \001(\010B\003\340A\001\"\212\001\n\005State" + + "\022\025\n\021STATE_UNSPECIFIED\020\000\022\n\n\006ACTIVE\020\001\022\025\n\021P" + + "ERMISSION_DENIED\020\002\022\r\n\tNOT_FOUND\020\003\022#\n\037IN_" + + "TRANSIT_LOCATION_RESTRICTION\020\004\022\023\n\017SCHEMA" + + "_MISMATCH\020\005B\017\n\routput_format\"|\n\017Received" + + "Message\022\023\n\006ack_id\030\001 \001(\tB\003\340A\001\0225\n\007message\030" + + "\002 \001(\0132\037.google.pubsub.v1.PubsubMessageB\003" + + "\340A\001\022\035\n\020delivery_attempt\030\003 \001(\005B\003\340A\001\"Z\n\026Ge" + + "tSubscriptionRequest\022@\n\014subscription\030\001 \001" + + "(\tB*\340A\002\372A$\n\"pubsub.googleapis.com/Subscr" + + "iption\"\214\001\n\031UpdateSubscriptionRequest\0229\n\014" + + "subscription\030\001 \001(\0132\036.google.pubsub.v1.Su" + + "bscriptionB\003\340A\002\0224\n\013update_mask\030\002 \001(\0132\032.g" + + "oogle.protobuf.FieldMaskB\003\340A\002\"\221\001\n\030ListSu" + + "bscriptionsRequest\022D\n\007project\030\001 \001(\tB3\340A\002" + + "\372A-\n+cloudresourcemanager.googleapis.com" + + "/Project\022\026\n\tpage_size\030\002 \001(\005B\003\340A\001\022\027\n\npage" + + "_token\030\003 \001(\tB\003\340A\001\"u\n\031ListSubscriptionsRe" + + "sponse\022:\n\rsubscriptions\030\001 \003(\0132\036.google.p" + + "ubsub.v1.SubscriptionB\003\340A\001\022\034\n\017next_page_" + + "token\030\002 \001(\tB\003\340A\001\"]\n\031DeleteSubscriptionRe" + + "quest\022@\n\014subscription\030\001 \001(\tB*\340A\002\372A$\n\"pub" + + "sub.googleapis.com/Subscription\"\223\001\n\027Modi" + + "fyPushConfigRequest\022@\n\014subscription\030\001 \001(" + + "\tB*\340A\002\372A$\n\"pubsub.googleapis.com/Subscri" + + "ption\0226\n\013push_config\030\002 \001(\0132\034.google.pubs" + + "ub.v1.PushConfigB\003\340A\002\"\215\001\n\013PullRequest\022@\n" + + "\014subscription\030\001 \001(\tB*\340A\002\372A$\n\"pubsub.goog" + + "leapis.com/Subscription\022!\n\022return_immedi" + + "ately\030\002 \001(\010B\005\030\001\340A\001\022\031\n\014max_messages\030\003 \001(\005" + + "B\003\340A\002\"Q\n\014PullResponse\022A\n\021received_messag" + + "es\030\001 \003(\0132!.google.pubsub.v1.ReceivedMess" + + "ageB\003\340A\001\"\225\001\n\030ModifyAckDeadlineRequest\022@\n" + + "\014subscription\030\001 \001(\tB*\340A\002\372A$\n\"pubsub.goog" + + "leapis.com/Subscription\022\024\n\007ack_ids\030\004 \003(\t" + + "B\003\340A\002\022!\n\024ack_deadline_seconds\030\003 \001(\005B\003\340A\002" + + "\"l\n\022AcknowledgeRequest\022@\n\014subscription\030\001" + + " \001(\tB*\340A\002\372A$\n\"pubsub.googleapis.com/Subs" + + "cription\022\024\n\007ack_ids\030\002 \003(\tB\003\340A\002\"\307\002\n\024Strea" + + "mingPullRequest\022@\n\014subscription\030\001 \001(\tB*\340" + "A\002\372A$\n\"pubsub.googleapis.com/Subscriptio" - + "n\0226\n\013push_config\030\002 \001(\0132\034.google.pubsub.v" - + "1.PushConfigB\003\340A\002\"\215\001\n\013PullRequest\022@\n\014sub" - + "scription\030\001 \001(\tB*\340A\002\372A$\n\"pubsub.googleap" - + "is.com/Subscription\022!\n\022return_immediatel" - + "y\030\002 \001(\010B\005\030\001\340A\001\022\031\n\014max_messages\030\003 \001(\005B\003\340A" - + "\002\"Q\n\014PullResponse\022A\n\021received_messages\030\001" - + " \003(\0132!.google.pubsub.v1.ReceivedMessageB" - + "\003\340A\001\"\225\001\n\030ModifyAckDeadlineRequest\022@\n\014sub" - + "scription\030\001 \001(\tB*\340A\002\372A$\n\"pubsub.googleap" - + "is.com/Subscription\022\024\n\007ack_ids\030\004 \003(\tB\003\340A" - + "\002\022!\n\024ack_deadline_seconds\030\003 \001(\005B\003\340A\002\"l\n\022" - + "AcknowledgeRequest\022@\n\014subscription\030\001 \001(\t" - + "B*\340A\002\372A$\n\"pubsub.googleapis.com/Subscrip" - + "tion\022\024\n\007ack_ids\030\002 \003(\tB\003\340A\002\"\307\002\n\024Streaming" - + "PullRequest\022@\n\014subscription\030\001 \001(\tB*\340A\002\372A" - + "$\n\"pubsub.googleapis.com/Subscription\022\024\n" - + "\007ack_ids\030\002 \003(\tB\003\340A\001\022$\n\027modify_deadline_s" - + "econds\030\003 \003(\005B\003\340A\001\022$\n\027modify_deadline_ack" - + "_ids\030\004 \003(\tB\003\340A\001\022(\n\033stream_ack_deadline_s" - + "econds\030\005 \001(\005B\003\340A\002\022\026\n\tclient_id\030\006 \001(\tB\003\340A" - + "\001\022%\n\030max_outstanding_messages\030\007 \001(\003B\003\340A\001" - + "\022\"\n\025max_outstanding_bytes\030\010 \001(\003B\003\340A\001\"\236\006\n" - + "\025StreamingPullResponse\022A\n\021received_messa" - + "ges\030\001 \003(\0132!.google.pubsub.v1.ReceivedMes" - + "sageB\003\340A\001\022f\n\030acknowledge_confirmation\030\005 " - + "\001(\0132?.google.pubsub.v1.StreamingPullResp" - + "onse.AcknowledgeConfirmationB\003\340A\001\022t\n mod" - + "ify_ack_deadline_confirmation\030\003 \001(\0132E.go" - + "ogle.pubsub.v1.StreamingPullResponse.Mod" - + "ifyAckDeadlineConfirmationB\003\340A\001\022d\n\027subsc" - + "ription_properties\030\004 \001(\0132>.google.pubsub" - + ".v1.StreamingPullResponse.SubscriptionPr" - + "opertiesB\003\340A\001\032\224\001\n\027AcknowledgeConfirmatio" + + "n\022\024\n\007ack_ids\030\002 \003(\tB\003\340A\001\022$\n\027modify_deadli" + + "ne_seconds\030\003 \003(\005B\003\340A\001\022$\n\027modify_deadline" + + "_ack_ids\030\004 \003(\tB\003\340A\001\022(\n\033stream_ack_deadli" + + "ne_seconds\030\005 \001(\005B\003\340A\002\022\026\n\tclient_id\030\006 \001(\t" + + "B\003\340A\001\022%\n\030max_outstanding_messages\030\007 \001(\003B" + + "\003\340A\001\022\"\n\025max_outstanding_bytes\030\010 \001(\003B\003\340A\001" + + "\"\236\006\n\025StreamingPullResponse\022A\n\021received_m" + + "essages\030\001 \003(\0132!.google.pubsub.v1.Receive" + + "dMessageB\003\340A\001\022f\n\030acknowledge_confirmatio" + + "n\030\005 \001(\0132?.google.pubsub.v1.StreamingPull" + + "Response.AcknowledgeConfirmationB\003\340A\001\022t\n" + + " modify_ack_deadline_confirmation\030\003 \001(\0132" + + "E.google.pubsub.v1.StreamingPullResponse" + + ".ModifyAckDeadlineConfirmationB\003\340A\001\022d\n\027s" + + "ubscription_properties\030\004 \001(\0132>.google.pu" + + "bsub.v1.StreamingPullResponse.Subscripti" + + "onPropertiesB\003\340A\001\032\224\001\n\027AcknowledgeConfirm" + + "ation\022\024\n\007ack_ids\030\001 \003(\tB\003\340A\001\022\034\n\017invalid_a" + + "ck_ids\030\002 \003(\tB\003\340A\001\022\036\n\021unordered_ack_ids\030\003" + + " \003(\tB\003\340A\001\022%\n\030temporary_failed_ack_ids\030\004 " + + "\003(\tB\003\340A\001\032z\n\035ModifyAckDeadlineConfirmatio" + "n\022\024\n\007ack_ids\030\001 \003(\tB\003\340A\001\022\034\n\017invalid_ack_i" - + "ds\030\002 \003(\tB\003\340A\001\022\036\n\021unordered_ack_ids\030\003 \003(\t" - + "B\003\340A\001\022%\n\030temporary_failed_ack_ids\030\004 \003(\tB" - + "\003\340A\001\032z\n\035ModifyAckDeadlineConfirmation\022\024\n" - + "\007ack_ids\030\001 \003(\tB\003\340A\001\022\034\n\017invalid_ack_ids\030\002" - + " \003(\tB\003\340A\001\022%\n\030temporary_failed_ack_ids\030\003 " - + "\003(\tB\003\340A\001\032k\n\026SubscriptionProperties\022*\n\035ex" - + "actly_once_delivery_enabled\030\001 \001(\010B\003\340A\001\022%" - + "\n\030message_ordering_enabled\030\002 \001(\010B\003\340A\001\"\210\002" - + "\n\025CreateSnapshotRequest\0224\n\004name\030\001 \001(\tB&\340" - + "A\002\372A \n\036pubsub.googleapis.com/Snapshot\022@\n" - + "\014subscription\030\002 \001(\tB*\340A\002\372A$\n\"pubsub.goog" - + "leapis.com/Subscription\022H\n\006labels\030\003 \003(\0132" - + "3.google.pubsub.v1.CreateSnapshotRequest" - + ".LabelsEntryB\003\340A\001\032-\n\013LabelsEntry\022\013\n\003key\030" - + "\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\200\001\n\025UpdateSnaps" - + "hotRequest\0221\n\010snapshot\030\001 \001(\0132\032.google.pu" - + "bsub.v1.SnapshotB\003\340A\002\0224\n\013update_mask\030\002 \001" - + "(\0132\032.google.protobuf.FieldMaskB\003\340A\002\"\301\002\n\010" - + "Snapshot\022\021\n\004name\030\001 \001(\tB\003\340A\001\0222\n\005topic\030\002 \001" - + "(\tB#\340A\001\372A\035\n\033pubsub.googleapis.com/Topic\022" - + "4\n\013expire_time\030\003 \001(\0132\032.google.protobuf.T" - + "imestampB\003\340A\001\022;\n\006labels\030\004 \003(\0132&.google.p" - + "ubsub.v1.Snapshot.LabelsEntryB\003\340A\001\032-\n\013La" - + "belsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028" - + "\001:L\352AI\n\036pubsub.googleapis.com/Snapshot\022\'" - + "projects/{project}/snapshots/{snapshot}\"" - + "N\n\022GetSnapshotRequest\0228\n\010snapshot\030\001 \001(\tB" - + "&\340A\002\372A \n\036pubsub.googleapis.com/Snapshot\"" - + "\215\001\n\024ListSnapshotsRequest\022D\n\007project\030\001 \001(" - + "\tB3\340A\002\372A-\n+cloudresourcemanager.googleap" - + "is.com/Project\022\026\n\tpage_size\030\002 \001(\005B\003\340A\001\022\027" - + "\n\npage_token\030\003 \001(\tB\003\340A\001\"i\n\025ListSnapshots" - + "Response\0222\n\tsnapshots\030\001 \003(\0132\032.google.pub" - + "sub.v1.SnapshotB\003\340A\001\022\034\n\017next_page_token\030" - + "\002 \001(\tB\003\340A\001\"Q\n\025DeleteSnapshotRequest\0228\n\010s" - + "napshot\030\001 \001(\tB&\340A\002\372A \n\036pubsub.googleapis" - + ".com/Snapshot\"\306\001\n\013SeekRequest\022@\n\014subscri" - + "ption\030\001 \001(\tB*\340A\002\372A$\n\"pubsub.googleapis.c" - + "om/Subscription\022/\n\004time\030\002 \001(\0132\032.google.p" - + "rotobuf.TimestampB\003\340A\001H\000\022:\n\010snapshot\030\003 \001" - + "(\tB&\340A\001\372A \n\036pubsub.googleapis.com/Snapsh" - + "otH\000B\010\n\006target\"\016\n\014SeekResponse2\270\013\n\tPubli" - + "sher\022q\n\013CreateTopic\022\027.google.pubsub.v1.T" - + "opic\032\027.google.pubsub.v1.Topic\"0\332A\004name\202\323" - + "\344\223\002#\032\036/v1/{name=projects/*/topics/*}:\001*\022" - + "\221\001\n\013UpdateTopic\022$.google.pubsub.v1.Updat" - + "eTopicRequest\032\027.google.pubsub.v1.Topic\"C" - + "\332A\021topic,update_mask\202\323\344\223\002)2$/v1/{topic.n" - + "ame=projects/*/topics/*}:\001*\022\223\001\n\007Publish\022" - + " .google.pubsub.v1.PublishRequest\032!.goog" - + "le.pubsub.v1.PublishResponse\"C\332A\016topic,m" - + "essages\202\323\344\223\002,\"\'/v1/{topic=projects/*/top" - + "ics/*}:publish:\001*\022w\n\010GetTopic\022!.google.p" - + "ubsub.v1.GetTopicRequest\032\027.google.pubsub" - + ".v1.Topic\"/\332A\005topic\202\323\344\223\002!\022\037/v1/{topic=pr" - + "ojects/*/topics/*}\022\212\001\n\nListTopics\022#.goog" - + "le.pubsub.v1.ListTopicsRequest\032$.google." - + "pubsub.v1.ListTopicsResponse\"1\332A\007project" - + "\202\323\344\223\002!\022\037/v1/{project=projects/*}/topics\022" - + "\272\001\n\026ListTopicSubscriptions\022/.google.pubs" - + "ub.v1.ListTopicSubscriptionsRequest\0320.go" - + "ogle.pubsub.v1.ListTopicSubscriptionsRes" - + "ponse\"=\332A\005topic\202\323\344\223\002/\022-/v1/{topic=projec" - + "ts/*/topics/*}/subscriptions\022\252\001\n\022ListTop" - + "icSnapshots\022+.google.pubsub.v1.ListTopic" - + "SnapshotsRequest\032,.google.pubsub.v1.List" - + "TopicSnapshotsResponse\"9\332A\005topic\202\323\344\223\002+\022)" - + "/v1/{topic=projects/*/topics/*}/snapshot" - + "s\022|\n\013DeleteTopic\022$.google.pubsub.v1.Dele" - + "teTopicRequest\032\026.google.protobuf.Empty\"/" - + "\332A\005topic\202\323\344\223\002!*\037/v1/{topic=projects/*/to" - + "pics/*}\022\255\001\n\022DetachSubscription\022+.google." - + "pubsub.v1.DetachSubscriptionRequest\032,.go" - + "ogle.pubsub.v1.DetachSubscriptionRespons" - + "e\"<\202\323\344\223\0026\"4/v1/{subscription=projects/*/" - + "subscriptions/*}:detach\032p\312A\025pubsub.googl" - + "eapis.com\322AUhttps://www.googleapis.com/a" - + "uth/cloud-platform,https://www.googleapi" - + "s.com/auth/pubsub2\322\025\n\nSubscriber\022\264\001\n\022Cre" - + "ateSubscription\022\036.google.pubsub.v1.Subsc" - + "ription\032\036.google.pubsub.v1.Subscription\"" - + "^\332A+name,topic,push_config,ack_deadline_" - + "seconds\202\323\344\223\002*\032%/v1/{name=projects/*/subs" - + "criptions/*}:\001*\022\241\001\n\017GetSubscription\022(.go" - + "ogle.pubsub.v1.GetSubscriptionRequest\032\036." - + "google.pubsub.v1.Subscription\"D\332A\014subscr" - + "iption\202\323\344\223\002/\022-/v1/{subscription=projects" - + "/*/subscriptions/*}\022\273\001\n\022UpdateSubscripti" - + "on\022+.google.pubsub.v1.UpdateSubscription" - + "Request\032\036.google.pubsub.v1.Subscription\"" - + "X\332A\030subscription,update_mask\202\323\344\223\002722/v1/" - + "{subscription.name=projects/*/subscripti" - + "ons/*}:\001*\022\246\001\n\021ListSubscriptions\022*.google" - + ".pubsub.v1.ListSubscriptionsRequest\032+.go" - + "ogle.pubsub.v1.ListSubscriptionsResponse" - + "\"8\332A\007project\202\323\344\223\002(\022&/v1/{project=project" - + "s/*}/subscriptions\022\237\001\n\022DeleteSubscriptio" - + "n\022+.google.pubsub.v1.DeleteSubscriptionR" - + "equest\032\026.google.protobuf.Empty\"D\332A\014subsc" - + "ription\202\323\344\223\002/*-/v1/{subscription=project" - + "s/*/subscriptions/*}\022\317\001\n\021ModifyAckDeadli" - + "ne\022*.google.pubsub.v1.ModifyAckDeadlineR" - + "equest\032\026.google.protobuf.Empty\"v\332A)subsc" - + "ription,ack_ids,ack_deadline_seconds\202\323\344\223" - + "\002D\"?/v1/{subscription=projects/*/subscri" - + "ptions/*}:modifyAckDeadline:\001*\022\250\001\n\013Ackno" - + "wledge\022$.google.pubsub.v1.AcknowledgeReq" - + "uest\032\026.google.protobuf.Empty\"[\332A\024subscri" - + "ption,ack_ids\202\323\344\223\002>\"9/v1/{subscription=p" - + "rojects/*/subscriptions/*}:acknowledge:\001" - + "*\022\320\001\n\004Pull\022\035.google.pubsub.v1.PullReques" - + "t\032\036.google.pubsub.v1.PullResponse\"\210\001\332A,s" - + "ubscription,return_immediately,max_messa" - + "ges\332A\031subscription,max_messages\202\323\344\223\0027\"2/" - + "v1/{subscription=projects/*/subscription" - + "s/*}:pull:\001*\022f\n\rStreamingPull\022&.google.p" - + "ubsub.v1.StreamingPullRequest\032\'.google.p" - + "ubsub.v1.StreamingPullResponse\"\000(\0010\001\022\273\001\n" - + "\020ModifyPushConfig\022).google.pubsub.v1.Mod" - + "ifyPushConfigRequest\032\026.google.protobuf.E" - + "mpty\"d\332A\030subscription,push_config\202\323\344\223\002C\"" - + ">/v1/{subscription=projects/*/subscripti" - + "ons/*}:modifyPushConfig:\001*\022\211\001\n\013GetSnapsh" - + "ot\022$.google.pubsub.v1.GetSnapshotRequest" - + "\032\032.google.pubsub.v1.Snapshot\"8\332A\010snapsho" - + "t\202\323\344\223\002\'\022%/v1/{snapshot=projects/*/snapsh" - + "ots/*}\022\226\001\n\rListSnapshots\022&.google.pubsub" - + ".v1.ListSnapshotsRequest\032\'.google.pubsub" - + ".v1.ListSnapshotsResponse\"4\332A\007project\202\323\344" - + "\223\002$\022\"/v1/{project=projects/*}/snapshots\022" - + "\227\001\n\016CreateSnapshot\022\'.google.pubsub.v1.Cr" - + "eateSnapshotRequest\032\032.google.pubsub.v1.S" - + "napshot\"@\332A\021name,subscription\202\323\344\223\002&\032!/v1" - + "/{name=projects/*/snapshots/*}:\001*\022\243\001\n\016Up" - + "dateSnapshot\022\'.google.pubsub.v1.UpdateSn" - + "apshotRequest\032\032.google.pubsub.v1.Snapsho" - + "t\"L\332A\024snapshot,update_mask\202\323\344\223\002/2*/v1/{s" - + "napshot.name=projects/*/snapshots/*}:\001*\022" - + "\213\001\n\016DeleteSnapshot\022\'.google.pubsub.v1.De" - + "leteSnapshotRequest\032\026.google.protobuf.Em" - + "pty\"8\332A\010snapshot\202\323\344\223\002\'*%/v1/{snapshot=pr" - + "ojects/*/snapshots/*}\022\204\001\n\004Seek\022\035.google." - + "pubsub.v1.SeekRequest\032\036.google.pubsub.v1" - + ".SeekResponse\"=\202\323\344\223\0027\"2/v1/{subscription" - + "=projects/*/subscriptions/*}:seek:\001*\032p\312A" - + "\025pubsub.googleapis.com\322AUhttps://www.goo" - + "gleapis.com/auth/cloud-platform,https://" - + "www.googleapis.com/auth/pubsubB\252\001\n\024com.g" - + "oogle.pubsub.v1B\013PubsubProtoP\001Z2cloud.go" - + "ogle.com/go/pubsub/apiv1/pubsubpb;pubsub" - + "pb\370\001\001\252\002\026Google.Cloud.PubSub.V1\312\002\026Google\\" - + "Cloud\\PubSub\\V1\352\002\031Google::Cloud::PubSub:" - + ":V1b\006proto3" + + "ds\030\002 \003(\tB\003\340A\001\022%\n\030temporary_failed_ack_id" + + "s\030\003 \003(\tB\003\340A\001\032k\n\026SubscriptionProperties\022*" + + "\n\035exactly_once_delivery_enabled\030\001 \001(\010B\003\340" + + "A\001\022%\n\030message_ordering_enabled\030\002 \001(\010B\003\340A" + + "\001\"\210\002\n\025CreateSnapshotRequest\0224\n\004name\030\001 \001(" + + "\tB&\340A\002\372A \n\036pubsub.googleapis.com/Snapsho" + + "t\022@\n\014subscription\030\002 \001(\tB*\340A\002\372A$\n\"pubsub." + + "googleapis.com/Subscription\022H\n\006labels\030\003 " + + "\003(\01323.google.pubsub.v1.CreateSnapshotReq" + + "uest.LabelsEntryB\003\340A\001\032-\n\013LabelsEntry\022\013\n\003" + + "key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\200\001\n\025UpdateS" + + "napshotRequest\0221\n\010snapshot\030\001 \001(\0132\032.googl" + + "e.pubsub.v1.SnapshotB\003\340A\002\0224\n\013update_mask" + + "\030\002 \001(\0132\032.google.protobuf.FieldMaskB\003\340A\002\"" + + "\301\002\n\010Snapshot\022\021\n\004name\030\001 \001(\tB\003\340A\001\0222\n\005topic" + + "\030\002 \001(\tB#\340A\001\372A\035\n\033pubsub.googleapis.com/To" + + "pic\0224\n\013expire_time\030\003 \001(\0132\032.google.protob" + + "uf.TimestampB\003\340A\001\022;\n\006labels\030\004 \003(\0132&.goog" + + "le.pubsub.v1.Snapshot.LabelsEntryB\003\340A\001\032-" + + "\n\013LabelsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(" + + "\t:\0028\001:L\352AI\n\036pubsub.googleapis.com/Snapsh" + + "ot\022\'projects/{project}/snapshots/{snapsh" + + "ot}\"N\n\022GetSnapshotRequest\0228\n\010snapshot\030\001 " + + "\001(\tB&\340A\002\372A \n\036pubsub.googleapis.com/Snaps" + + "hot\"\215\001\n\024ListSnapshotsRequest\022D\n\007project\030" + + "\001 \001(\tB3\340A\002\372A-\n+cloudresourcemanager.goog" + + "leapis.com/Project\022\026\n\tpage_size\030\002 \001(\005B\003\340" + + "A\001\022\027\n\npage_token\030\003 \001(\tB\003\340A\001\"i\n\025ListSnaps" + + "hotsResponse\0222\n\tsnapshots\030\001 \003(\0132\032.google" + + ".pubsub.v1.SnapshotB\003\340A\001\022\034\n\017next_page_to" + + "ken\030\002 \001(\tB\003\340A\001\"Q\n\025DeleteSnapshotRequest\022" + + "8\n\010snapshot\030\001 \001(\tB&\340A\002\372A \n\036pubsub.google" + + "apis.com/Snapshot\"\306\001\n\013SeekRequest\022@\n\014sub" + + "scription\030\001 \001(\tB*\340A\002\372A$\n\"pubsub.googleap" + + "is.com/Subscription\022/\n\004time\030\002 \001(\0132\032.goog" + + "le.protobuf.TimestampB\003\340A\001H\000\022:\n\010snapshot" + + "\030\003 \001(\tB&\340A\001\372A \n\036pubsub.googleapis.com/Sn" + + "apshotH\000B\010\n\006target\"\016\n\014SeekResponse2\270\013\n\tP" + + "ublisher\022q\n\013CreateTopic\022\027.google.pubsub." + + "v1.Topic\032\027.google.pubsub.v1.Topic\"0\332A\004na" + + "me\202\323\344\223\002#\032\036/v1/{name=projects/*/topics/*}" + + ":\001*\022\221\001\n\013UpdateTopic\022$.google.pubsub.v1.U" + + "pdateTopicRequest\032\027.google.pubsub.v1.Top" + + "ic\"C\332A\021topic,update_mask\202\323\344\223\002)2$/v1/{top" + + "ic.name=projects/*/topics/*}:\001*\022\223\001\n\007Publ" + + "ish\022 .google.pubsub.v1.PublishRequest\032!." + + "google.pubsub.v1.PublishResponse\"C\332A\016top" + + "ic,messages\202\323\344\223\002,\"\'/v1/{topic=projects/*" + + "/topics/*}:publish:\001*\022w\n\010GetTopic\022!.goog" + + "le.pubsub.v1.GetTopicRequest\032\027.google.pu" + + "bsub.v1.Topic\"/\332A\005topic\202\323\344\223\002!\022\037/v1/{topi" + + "c=projects/*/topics/*}\022\212\001\n\nListTopics\022#." + + "google.pubsub.v1.ListTopicsRequest\032$.goo" + + "gle.pubsub.v1.ListTopicsResponse\"1\332A\007pro" + + "ject\202\323\344\223\002!\022\037/v1/{project=projects/*}/top" + + "ics\022\272\001\n\026ListTopicSubscriptions\022/.google." + + "pubsub.v1.ListTopicSubscriptionsRequest\032" + + "0.google.pubsub.v1.ListTopicSubscription" + + "sResponse\"=\332A\005topic\202\323\344\223\002/\022-/v1/{topic=pr" + + "ojects/*/topics/*}/subscriptions\022\252\001\n\022Lis" + + "tTopicSnapshots\022+.google.pubsub.v1.ListT" + + "opicSnapshotsRequest\032,.google.pubsub.v1." + + "ListTopicSnapshotsResponse\"9\332A\005topic\202\323\344\223" + + "\002+\022)/v1/{topic=projects/*/topics/*}/snap" + + "shots\022|\n\013DeleteTopic\022$.google.pubsub.v1." + + "DeleteTopicRequest\032\026.google.protobuf.Emp" + + "ty\"/\332A\005topic\202\323\344\223\002!*\037/v1/{topic=projects/" + + "*/topics/*}\022\255\001\n\022DetachSubscription\022+.goo" + + "gle.pubsub.v1.DetachSubscriptionRequest\032" + + ",.google.pubsub.v1.DetachSubscriptionRes" + + "ponse\"<\202\323\344\223\0026\"4/v1/{subscription=project" + + "s/*/subscriptions/*}:detach\032p\312A\025pubsub.g" + + "oogleapis.com\322AUhttps://www.googleapis.c" + + "om/auth/cloud-platform,https://www.googl" + + "eapis.com/auth/pubsub2\322\025\n\nSubscriber\022\264\001\n" + + "\022CreateSubscription\022\036.google.pubsub.v1.S" + + "ubscription\032\036.google.pubsub.v1.Subscript" + + "ion\"^\332A+name,topic,push_config,ack_deadl" + + "ine_seconds\202\323\344\223\002*\032%/v1/{name=projects/*/" + + "subscriptions/*}:\001*\022\241\001\n\017GetSubscription\022" + + "(.google.pubsub.v1.GetSubscriptionReques" + + "t\032\036.google.pubsub.v1.Subscription\"D\332A\014su" + + "bscription\202\323\344\223\002/\022-/v1/{subscription=proj" + + "ects/*/subscriptions/*}\022\273\001\n\022UpdateSubscr" + + "iption\022+.google.pubsub.v1.UpdateSubscrip" + + "tionRequest\032\036.google.pubsub.v1.Subscript" + + "ion\"X\332A\030subscription,update_mask\202\323\344\223\002722" + + "/v1/{subscription.name=projects/*/subscr" + + "iptions/*}:\001*\022\246\001\n\021ListSubscriptions\022*.go" + + "ogle.pubsub.v1.ListSubscriptionsRequest\032" + + "+.google.pubsub.v1.ListSubscriptionsResp" + + "onse\"8\332A\007project\202\323\344\223\002(\022&/v1/{project=pro" + + "jects/*}/subscriptions\022\237\001\n\022DeleteSubscri" + + "ption\022+.google.pubsub.v1.DeleteSubscript" + + "ionRequest\032\026.google.protobuf.Empty\"D\332A\014s" + + "ubscription\202\323\344\223\002/*-/v1/{subscription=pro" + + "jects/*/subscriptions/*}\022\317\001\n\021ModifyAckDe" + + "adline\022*.google.pubsub.v1.ModifyAckDeadl" + + "ineRequest\032\026.google.protobuf.Empty\"v\332A)s" + + "ubscription,ack_ids,ack_deadline_seconds" + + "\202\323\344\223\002D\"?/v1/{subscription=projects/*/sub" + + "scriptions/*}:modifyAckDeadline:\001*\022\250\001\n\013A" + + "cknowledge\022$.google.pubsub.v1.Acknowledg" + + "eRequest\032\026.google.protobuf.Empty\"[\332A\024sub" + + "scription,ack_ids\202\323\344\223\002>\"9/v1/{subscripti" + + "on=projects/*/subscriptions/*}:acknowled" + + "ge:\001*\022\320\001\n\004Pull\022\035.google.pubsub.v1.PullRe" + + "quest\032\036.google.pubsub.v1.PullResponse\"\210\001" + + "\332A,subscription,return_immediately,max_m" + + "essages\332A\031subscription,max_messages\202\323\344\223\002" + + "7\"2/v1/{subscription=projects/*/subscrip" + + "tions/*}:pull:\001*\022f\n\rStreamingPull\022&.goog" + + "le.pubsub.v1.StreamingPullRequest\032\'.goog" + + "le.pubsub.v1.StreamingPullResponse\"\000(\0010\001" + + "\022\273\001\n\020ModifyPushConfig\022).google.pubsub.v1" + + ".ModifyPushConfigRequest\032\026.google.protob" + + "uf.Empty\"d\332A\030subscription,push_config\202\323\344" + + "\223\002C\">/v1/{subscription=projects/*/subscr" + + "iptions/*}:modifyPushConfig:\001*\022\211\001\n\013GetSn" + + "apshot\022$.google.pubsub.v1.GetSnapshotReq" + + "uest\032\032.google.pubsub.v1.Snapshot\"8\332A\010sna" + + "pshot\202\323\344\223\002\'\022%/v1/{snapshot=projects/*/sn" + + "apshots/*}\022\226\001\n\rListSnapshots\022&.google.pu" + + "bsub.v1.ListSnapshotsRequest\032\'.google.pu" + + "bsub.v1.ListSnapshotsResponse\"4\332A\007projec" + + "t\202\323\344\223\002$\022\"/v1/{project=projects/*}/snapsh" + + "ots\022\227\001\n\016CreateSnapshot\022\'.google.pubsub.v" + + "1.CreateSnapshotRequest\032\032.google.pubsub." + + "v1.Snapshot\"@\332A\021name,subscription\202\323\344\223\002&\032" + + "!/v1/{name=projects/*/snapshots/*}:\001*\022\243\001" + + "\n\016UpdateSnapshot\022\'.google.pubsub.v1.Upda" + + "teSnapshotRequest\032\032.google.pubsub.v1.Sna" + + "pshot\"L\332A\024snapshot,update_mask\202\323\344\223\002/2*/v" + + "1/{snapshot.name=projects/*/snapshots/*}" + + ":\001*\022\213\001\n\016DeleteSnapshot\022\'.google.pubsub.v" + + "1.DeleteSnapshotRequest\032\026.google.protobu" + + "f.Empty\"8\332A\010snapshot\202\323\344\223\002\'*%/v1/{snapsho" + + "t=projects/*/snapshots/*}\022\204\001\n\004Seek\022\035.goo" + + "gle.pubsub.v1.SeekRequest\032\036.google.pubsu" + + "b.v1.SeekResponse\"=\202\323\344\223\0027\"2/v1/{subscrip" + + "tion=projects/*/subscriptions/*}:seek:\001*" + + "\032p\312A\025pubsub.googleapis.com\322AUhttps://www" + + ".googleapis.com/auth/cloud-platform,http" + + "s://www.googleapis.com/auth/pubsubB\252\001\n\024c" + + "om.google.pubsub.v1B\013PubsubProtoP\001Z2clou" + + "d.google.com/go/pubsub/apiv1/pubsubpb;pu" + + "bsubpb\370\001\001\252\002\026Google.Cloud.PubSub.V1\312\002\026Goo" + + "gle\\Cloud\\PubSub\\V1\352\002\031Google::Cloud::Pub" + + "Sub::V1b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -963,6 +967,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Bucket", "FilenamePrefix", "FilenameSuffix", + "FilenameDatetimeFormat", "TextConfig", "AvroConfig", "MaxDuration", diff --git a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequest.java b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequest.java index 33951890b..a26effb78 100644 --- a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequest.java +++ b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequest.java @@ -137,7 +137,7 @@ public com.google.protobuf.ByteString getSubscriptionBytes() { * * * @deprecated google.pubsub.v1.PullRequest.return_immediately is deprecated. See - * google/pubsub/v1/pubsub.proto;l=1358 + * google/pubsub/v1/pubsub.proto;l=1387 * @return The returnImmediately. */ @java.lang.Override @@ -688,7 +688,7 @@ public Builder setSubscriptionBytes(com.google.protobuf.ByteString value) { * * * @deprecated google.pubsub.v1.PullRequest.return_immediately is deprecated. See - * google/pubsub/v1/pubsub.proto;l=1358 + * google/pubsub/v1/pubsub.proto;l=1387 * @return The returnImmediately. */ @java.lang.Override @@ -714,7 +714,7 @@ public boolean getReturnImmediately() { * * * @deprecated google.pubsub.v1.PullRequest.return_immediately is deprecated. See - * google/pubsub/v1/pubsub.proto;l=1358 + * google/pubsub/v1/pubsub.proto;l=1387 * @param value The returnImmediately to set. * @return This builder for chaining. */ @@ -744,7 +744,7 @@ public Builder setReturnImmediately(boolean value) { * * * @deprecated google.pubsub.v1.PullRequest.return_immediately is deprecated. See - * google/pubsub/v1/pubsub.proto;l=1358 + * google/pubsub/v1/pubsub.proto;l=1387 * @return This builder for chaining. */ @java.lang.Deprecated diff --git a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequestOrBuilder.java b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequestOrBuilder.java index 0a9d2f97b..94c2e0c10 100644 --- a/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequestOrBuilder.java +++ b/proto-google-cloud-pubsub-v1/src/main/java/com/google/pubsub/v1/PullRequestOrBuilder.java @@ -72,7 +72,7 @@ public interface PullRequestOrBuilder * * * @deprecated google.pubsub.v1.PullRequest.return_immediately is deprecated. See - * google/pubsub/v1/pubsub.proto;l=1358 + * google/pubsub/v1/pubsub.proto;l=1387 * @return The returnImmediately. */ @java.lang.Deprecated diff --git a/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/pubsub.proto b/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/pubsub.proto index 4a312a8d2..b70bda11a 100644 --- a/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/pubsub.proto +++ b/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/pubsub.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// 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. @@ -203,7 +203,7 @@ message IngestionDataSourceSettings { KINESIS_PERMISSION_DENIED = 2; // Permission denied encountered while publishing to the topic. This can - // happen due to Pub/Sub SA has not been granted the [appropriate publish + // happen if the Pub/Sub SA has not been granted the [appropriate publish // permissions](https://cloud.google.com/pubsub/docs/access-control#pubsub.publisher) PUBLISH_PERMISSION_DENIED = 3; @@ -1213,6 +1213,11 @@ message CloudStorageConfig { // Must not end in "/". string filename_suffix = 3 [(google.api.field_behavior) = OPTIONAL]; + // Optional. User-provided format string specifying how to represent datetimes + // in Cloud Storage filenames. See the [datetime format + // guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names). + string filename_datetime_format = 10 [(google.api.field_behavior) = OPTIONAL]; + // Defaults to text format. oneof output_format { // Optional. If set, message data will be written to Cloud Storage in text diff --git a/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/schema.proto b/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/schema.proto index bd17cf0f8..d52c678c5 100644 --- a/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/schema.proto +++ b/proto-google-cloud-pubsub-v1/src/main/proto/google/pubsub/v1/schema.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// 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. diff --git a/renovate.json b/renovate.json index df71c3b5a..58c97664e 100644 --- a/renovate.json +++ b/renovate.json @@ -20,7 +20,7 @@ "customManagers": [ { "customType": "regex", - "fileMatch": [ + "fileMatch": [ "^.kokoro/presubmit/graalvm-native.*.cfg$" ], "matchStrings": ["value: \"gcr.io/cloud-devrel-public-resources/graalvm.*:(?.*?)\""], @@ -30,7 +30,7 @@ { "customType": "regex", "fileMatch": [ - "^.github/workflows/unmanaged_dependency_check.yaml$" + "^.github/workflows/unmanaged_dependency_check.yaml$" ], "matchStrings": ["uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v(?.+?)\\n"], "depNameTemplate": "com.google.cloud:sdk-platform-java-config", From 8b6d6e266ea72e8f90ffc8b4395812b4db250c32 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Fri, 28 Jun 2024 19:07:00 +0000 Subject: [PATCH 20/24] fix library info --- generation_config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generation_config.yaml b/generation_config.yaml index e7b53b6d9..90e686287 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -4,9 +4,9 @@ libraries_bom_version: 26.38.0 libraries: - api_shortname: pubsub name_pretty: Cloud Pub/Sub - api_reference: https://cloud.google.com/pubsub/ + api_reference: https://cloud.google.com/java/docs/reference/google-cloud-pubsub/latest/com.google.cloud.pubsub.v1 product_documentation: https://cloud.google.com/pubsub/docs/ - client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-pubsub/latest/history + client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-pubsub/latest api_description: is designed to provide reliable, many-to-many, asynchronous messaging between applications. Publisher applications can send messages to a topic and other applications can subscribe to that topic to receive the messages. By decoupling senders and receivers, Google Cloud Pub/Sub allows developers to communicate between independently written applications. issue_tracker: https://issuetracker.google.com/savedsearches/559741 release_level: stable From 1507a6efdf005b6658cb5eed02dd7292db6431e1 Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Fri, 28 Jun 2024 19:14:56 +0000 Subject: [PATCH 21/24] retrigger jobs From 713c6de62e490c8f00240d1ec84e779f289c11aa Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Tue, 2 Jul 2024 15:29:17 +0000 Subject: [PATCH 22/24] fix path to hermetic_library_generation --- .github/workflows/hermetic_library_generation.yaml | 2 +- generation_config.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 0c7a82a3c..3ea9ae43e 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -31,7 +31,7 @@ jobs: set -x [ -z "$(git config user.email)" ] && git config --global user.email "cloud-java-bot@google.com" [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" - bash .github/scriptes/hermetic_library_generation.sh \ + bash .github/scripts/hermetic_library_generation.sh \ --target_branch ${{ github.base_ref }} \ --current_branch ${{ github.head_ref }} env: diff --git a/generation_config.yaml b/generation_config.yaml index 90e686287..e7b53b6d9 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -4,9 +4,9 @@ libraries_bom_version: 26.38.0 libraries: - api_shortname: pubsub name_pretty: Cloud Pub/Sub - api_reference: https://cloud.google.com/java/docs/reference/google-cloud-pubsub/latest/com.google.cloud.pubsub.v1 + api_reference: https://cloud.google.com/pubsub/ product_documentation: https://cloud.google.com/pubsub/docs/ - client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-pubsub/latest + client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-pubsub/latest/history api_description: is designed to provide reliable, many-to-many, asynchronous messaging between applications. Publisher applications can send messages to a topic and other applications can subscribe to that topic to receive the messages. By decoupling senders and receivers, Google Cloud Pub/Sub allows developers to communicate between independently written applications. issue_tracker: https://issuetracker.google.com/savedsearches/559741 release_level: stable From 2e43668c15e60d3330602ef37cf771bbd77b6c53 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Tue, 2 Jul 2024 23:33:29 +0000 Subject: [PATCH 23/24] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20?= =?UTF-8?q?post-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 55d765048..9e9ca3e73 100644 --- a/README.md +++ b/README.md @@ -59,13 +59,13 @@ implementation 'com.google.cloud:google-cloud-pubsub' If you are using Gradle without BOM, add this to your dependencies: ```Groovy -implementation 'com.google.cloud:google-cloud-pubsub:1.130.1' +implementation 'com.google.cloud:google-cloud-pubsub:1.131.0' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-pubsub" % "1.130.1" +libraryDependencies += "com.google.cloud" % "google-cloud-pubsub" % "1.131.0" ``` @@ -411,7 +411,7 @@ Java is a registered trademark of Oracle and/or its affiliates. [kokoro-badge-link-5]: http://storage.googleapis.com/cloud-devrel-public/java/badges/java-pubsub/java11.html [stability-image]: https://img.shields.io/badge/stability-stable-green [maven-version-image]: https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-pubsub.svg -[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-pubsub/1.130.1 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-pubsub/1.131.0 [authentication]: https://github.com/googleapis/google-cloud-java#authentication [auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes [predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles From 155fca1e8449a6fa98219c6973a1455e42fef6eb Mon Sep 17 00:00:00 2001 From: diegomarquezp Date: Tue, 2 Jul 2024 23:39:12 +0000 Subject: [PATCH 24/24] fixes to hermetic_library_generation --- .github/workflows/hermetic_library_generation.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 3ea9ae43e..7146cc3dc 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -19,6 +19,8 @@ on: jobs: library_generation: + # skip pull requests coming from a forked repository + if: github.event.pull_request.head.repo.full_name == github.repository runs-on: ubuntu-latest steps: - uses: actions/checkout@v4