v1.36.0
New Libraries
We are introducing client libraries for many (>50) GCP services. While we do not
anticipate any API changes to these libraries before declaring them GA, we are
releasing them early in case they elicit some feedback that requires changes.
Expand to see the full list of new libraries...
- Access Approval
- Access Context Manager
- Anthos GKE API
- API Gateway
- App Engine Admin API
- Artifact Registry
- Assured Workloads
- AutoML
- Binary Authorization
- Certificate Authority Service
- Channel Services
- Cloud Asset Inventory
- Cloud Billing
- Cloud Build
- Cloud Composer
- Cloud Data Loss Prevention (DLP)
- Cloud Debugger
- Cloud Functions
- Cloud Intrusion Detection System (IDS)
- Cloud IoT
- Cloud Key Management Service (KMS)
- Cloud Scheduler
- Cloud Shell
- Cloud TPU
- Cloud Trace
- Cloud Translation
- Cloud Vision
- Compute Engine OS Config
- Compute Engine OS Login
- Connectivity Tests
- Container Analysis
- Database Migration Service (DMS)
- Eventarc
- Filestore
- Game Servers
- Google Kubernetes Engine (GKE)
- Identity-Aware Proxy (IAP)
- Memorystore for Memcached
- Memorystore for Redis
- Migrate for Compute Engine
- Organization Policy Service
- Policy Troubleshooter
- Recommender
- Resource Manager
- Retail
- Security Command Center
- Serverless VPC Access
- Service Control
- Service Directory
- Service Management
- Service Usage
- Storage Transfer Service
- Talent Solution
- Text-to-Speech
- Vertex AI Workbench
- Video Intelligence API
- Web Risk
- Web Security Scanner
- Workflows
BigQuery
- feat(generator): merge connection options into client options (#8158)
- feat(generator): connection respects per call policies (#8013)
- fix: add mock library aliases (#7844)
Bigtable
BREAKING CHANGE: The bigtable::InstanceAdminClient interface has changed
significantly. Any code that extends this class or calls its experimental public
APIs (reset(), Channel()) will be broken. For the most part, this should
only affect customers who mock this class in their tests. Code that calls
bigtable::MakeInstanceAdminClient() or
bigtable::CreateDefaultInstanceAdminClient() will continue to work as before.
This change will allow us to deliver new features more quickly by reducing the
maintenance costs of the library. It also provides a better mocking interface
for bigtable::InstanceAdmin. We apologize if you are inconvenienced by this
change.
Expand here to see the transition guide for this change...
If only your tests are broken, please use `bigtable_admin_mocks::MockBigtableInstanceAdminConnection` in place of `bigtable::testing::MockInstanceAdminClient`. The new mock should be more intuitive because of the differences described below:
MockBigtableInstanceAdminConnection |
MockInstanceAdminClient |
|---|---|
| Mocks result of entire retry loop | Mocks result of one call in a retry loop |
Returns familiar google::cloud:: types |
Returns grpc:: types |
If more than your tests are broken, please use
bigtable_admin::BigtableInstanceAdminClient in favor of
bigtable::InstanceAdmin, and bigtable_admin::BigtableInstanceAdminConnection
in favor of bigtable::InstanceAdminClient. These classes will incorporate the
newest features of both the Cloud Bigtable Admin API and the C++ client
library. For more information on these new classes, see our
Architecture Design document.
Again, we apologize for making this breaking change, but we believe it is in the
best long-term interest of our customers.
OTHER CHANGES:
- fix(generator): fix options handling in SetIamPolicy() OCC loop (#8203)
- feat(bigtable): cheap Admin creation with different resource name (#8194)
- feat(bigtable): cheap Table creation with different resource name (#8172)
- feat(generator): merge connection options into client options (#8158)
- feat(generator): connection respects per call policies (#8013)
- fix(bigtable): polling policy clones initial state (#7854)
- fix: add mock library aliases (#7844)
Cloud Tasks
- fix(generator): fix options handling in SetIamPolicy() OCC loop (#8203)
- feat(generator): merge connection options into client options (#8158)
- feat(generator): connection respects per call policies (#8013)
- fix: add mock library aliases (#7844)
IAM
- fix(generator): fix options handling in SetIamPolicy() OCC loop (#8203)
- feat(generator): merge connection options into client options (#8158)
- feat(generator): connection respects per call policies (#8013)
- fix: add mock library aliases (#7844)
Pub/Sub
- fix: add mock library aliases (#7844)
Secret Manager
- fix(generator): fix options handling in SetIamPolicy() OCC loop (#8203)
- feat(generator): merge connection options into client options (#8158)
- feat(generator): connection respects per call policies (#8013)
- fix: add mock library aliases (#7844)
Spanner
- fix(generator): fix options handling in SetIamPolicy() OCC loop (#8203)
- feat(generator): merge connection options into client options (#8158)
- feat(spanner): merge connection options into client options (#8090)
- fix(spanner): apply policy options in (generated) client ctor (#8064)
- feat(generator): connection respects per call policies (#8013)
- fix: add mock library aliases (#7844)
- feat(spanner): support unified credentials (#7824)
Storage
BREAKING CHANGE: with this release any use of the
storage::internal::ResumableUploadResponse type requires changes. Applications
should have little need for this type, outside mocks, so the changes should not
affect production code.
Nevertheless, we apologize for the inconvenience, and while we would have
preferred to avoid breaking changes, it was inevitable to introduce some
breaking changes to fix a data loss bug (see #7835).
If you are affected by this change, you will need to change your tests following this guide. Expand to see it...
Any place where you return a `ResumableUploadResponse` needs to change from:
storage::internal::ResumableUploadResource{
/*upload_session_url=*/std::string{"typically-unused"},
/*last_committed_byte=*/std::uint64_t{value},
/*payload=*/absl::nullopt, // or some gcs::ObjectMetadata value
/*upload_state=*/ResumableUploadResponse::kInProgress, // or kDone
/*annotations=*/std::string{"typically-unused"}
}to:
storage::internal::ResumableUploadResource{
/*upload_session_url=*/std::string{"typically-unused"},
/*upload_state=*/ResumableUploadResponse::kInProgress, // or kDone
/*committed_size=*/value + 1, // or absl::nullopt
/*payload=*/absl::nullopt, // or some gcs::ObjectMetadata value
/*annotations=*/std::string{"typically-unused"}
}That is, you need to re-order the fields and increase the value to reflect
the number of committed bytes vs. the index in the last committed byte.
Changing the order of the fields was intentional. It will create a build
failure, which is easier to detect and repair than a run-time error in
your tests.
OTHER CHANGES:
- fix(storage): missing options in UpdateObject() (#8193)
- fix(storage): missing kms key option in CopyObject() (#8188)
- fix(storage): missing option for CopyObject() (#8171)
- fix(storage): add missing options for PatchObject() (#8137)
- feat(storage): per-upload buffer size configuration (#8096)
- fix(storage): improve JSON validation (#8033)
- fix(storage)!: handle missing range header in uploads (#7877)
- cleanup(storage)!: uploads track committed_size (#7868)
Common Libraries
- fix(generator): fix options handling in SetIamPolicy() OCC loop (#8203)
- feat(generator):
*Clientwith bidir streaming RPCs (#8187) - feat(generator): merge connection options into client options (#8158)
- feat(generator): better metadata decorators for bidir streaming RPCs (#8077)
- feat(generator): connection respects per call policies (#8013)
- feat(pubsublite): add TopicStats service (#7966)
- fix(generator): bidir streaming RPCs improvements (#7937)
- feat(generator): support bidir streams in Connection (#7933)
- fix(common): polling policy clones initial state (#7858)
- fix: add mock library aliases (#7844)
Bazel support
BREAKING CHANGE: We stopped testing with Bazel 3.5 and moved most of our
Bazel tests to Bazel 4.0, which is now our minimum supported Bazel version. We
also added a bazel-latest build to ensure that we always work with the newest
Bazel release (currently 5.0). For more details on the changes, see #8095 and
#8099. For more info about Bazel, see https://bazel.build/.