Skip to content
Permalink
Browse files
feat(v1): update client with new API features (#51)
fix: deprecate SetLocations; use UpdateCluster
refactor: provide name alias for GetOperation (as method signature annotation)
feat: support for GetJSONWebKeys
feat: support for Workload Identity
feat: support for Gvisor in nodes
feat: support for node reservation affinity
feat: support for Customer Managed Encryption in nodes
fix: deprecate basic auth fields (removed in 1.19 clusters)
feat: support for NodeLocalDNS
feat: support for ConfigConnector
feat: support for private cluster VPC peering
feat: support for CloudRun load balancers
feat: support using routes for pod IPs
feat: support for Shielded Nodes
feat: support for release channels
fix: deprecated Cluster/NodePool.status_message; use conditions
feat: support for disabling default sNAT
feat: operations now store more granular progress
feat: support for node Surge Upgrades
feat: support for updating node pool locations.
feat: support for Node Auto Provisioning
feat: support for specifying node disk size and type
docs: many minor documentation clarifications
  • Loading branch information
yoshi-automation committed Nov 17, 2020
1 parent 2f3ba96 commit d3f546574300cd18bb0cb1627f226cfe34ee8098
Showing with 4,191 additions and 1,475 deletions.
  1. +1 −1 .kokoro/docs/common.cfg
  2. +6 −0 .kokoro/samples/python3.6/common.cfg
  3. +6 −0 .kokoro/samples/python3.7/common.cfg
  4. +6 −0 .kokoro/samples/python3.8/common.cfg
  5. +7 −1 .kokoro/test-samples.sh
  6. +87 −36 CODE_OF_CONDUCT.md
  7. +0 −19 CONTRIBUTING.rst
  8. +2 −0 docs/conf.py
  9. +1 −0 docs/container_v1/types.rst
  10. +1 −0 docs/container_v1beta1/types.rst
  11. +34 −0 google/cloud/container/__init__.py
  12. +32 −0 google/cloud/container_v1/__init__.py
  13. +769 −214 google/cloud/container_v1/proto/cluster_service.proto
  14. +190 −56 google/cloud/container_v1/services/cluster_manager/async_client.py
  15. +184 −29 google/cloud/container_v1/services/cluster_manager/client.py
  16. +15 −0 google/cloud/container_v1/services/cluster_manager/transports/base.py
  17. +43 −10 google/cloud/container_v1/services/cluster_manager/transports/grpc.py
  18. +39 −1 google/cloud/container_v1/services/cluster_manager/transports/grpc_asyncio.py
  19. +32 −0 google/cloud/container_v1/types/__init__.py
  20. +905 −154 google/cloud/container_v1/types/cluster_service.py
  21. +113 −49 google/cloud/container_v1beta1/services/cluster_manager/async_client.py
  22. +87 −17 google/cloud/container_v1beta1/services/cluster_manager/client.py
  23. +11 −11 google/cloud/container_v1beta1/services/cluster_manager/transports/base.py
  24. +9 −9 google/cloud/container_v1beta1/services/cluster_manager/transports/grpc.py
  25. +4 −0 google/cloud/container_v1beta1/services/cluster_manager/transports/grpc_asyncio.py
  26. +33 −31 google/cloud/container_v1beta1/types/cluster_service.py
  27. +4 −2 noxfile.py
  28. +3 −1 scripts/fixup_container_v1_keywords.py
  29. +1 −0 scripts/fixup_container_v1beta1_keywords.py
  30. +117 −2 synth.metadata
  31. +788 −409 tests/unit/gapic/container_v1/test_cluster_manager.py
  32. +661 −423 tests/unit/gapic/container_v1beta1/test_cluster_manager.py
@@ -30,7 +30,7 @@ env_vars: {

env_vars: {
key: "V2_STAGING_BUCKET"
value: "docs-staging-v2-staging"
value: "docs-staging-v2"
}

# It will upload the docker image after successful builds.
@@ -13,6 +13,12 @@ env_vars: {
value: "py-3.6"
}

# Declare build specific Cloud project.
env_vars: {
key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
value: "python-docs-samples-tests-py36"
}

env_vars: {
key: "TRAMPOLINE_BUILD_FILE"
value: "github/python-container/.kokoro/test-samples.sh"
@@ -13,6 +13,12 @@ env_vars: {
value: "py-3.7"
}

# Declare build specific Cloud project.
env_vars: {
key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
value: "python-docs-samples-tests-py37"
}

env_vars: {
key: "TRAMPOLINE_BUILD_FILE"
value: "github/python-container/.kokoro/test-samples.sh"
@@ -13,6 +13,12 @@ env_vars: {
value: "py-3.8"
}

# Declare build specific Cloud project.
env_vars: {
key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
value: "python-docs-samples-tests-py38"
}

env_vars: {
key: "TRAMPOLINE_BUILD_FILE"
value: "github/python-container/.kokoro/test-samples.sh"
@@ -28,6 +28,12 @@ if [[ $KOKORO_BUILD_ARTIFACTS_SUBDIR = *"periodic"* ]]; then
git checkout $LATEST_RELEASE
fi

# Exit early if samples directory doesn't exist
if [ ! -d "./samples" ]; then
echo "No tests run. `./samples` not found"
exit 0
fi

# Disable buffering, so that the logs stream through.
export PYTHONUNBUFFERED=1

@@ -101,4 +107,4 @@ cd "$ROOT"
# Workaround for Kokoro permissions issue: delete secrets
rm testing/{test-env.sh,client-secrets.json,service-account.json}

exit "$RTN"
exit "$RTN"
@@ -1,44 +1,95 @@
<!-- # Generated by synthtool. DO NOT EDIT! !-->
# Contributor Code of Conduct
# Code of Conduct

As contributors and maintainers of this project,
and in the interest of fostering an open and welcoming community,
we pledge to respect all people who contribute through reporting issues,
posting feature requests, updating documentation,
submitting pull requests or patches, and other activities.
## Our Pledge

We are committed to making participation in this project
a harassment-free experience for everyone,
regardless of level of experience, gender, gender identity and expression,
sexual orientation, disability, personal appearance,
body size, race, ethnicity, age, religion, or nationality.
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of
experience, education, socio-economic status, nationality, personal appearance,
race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery
* Personal attacks
* Trolling or insulting/derogatory comments
* Public or private harassment
* Publishing other's private information,
such as physical or electronic
addresses, without explicit permission
* Other unethical or unprofessional conduct.
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct.
By adopting this Code of Conduct,
project maintainers commit themselves to fairly and consistently
applying these principles to every aspect of managing this project.
Project maintainers who do not follow or enforce the Code of Conduct
may be permanently removed from the project team.

This code of conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community.

Instances of abusive, harassing, or otherwise unacceptable behavior
may be reported by opening an issue
or contacting one or more of the project maintainers.

This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0,
available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, or to ban temporarily or permanently any
contributor for other behaviors that they deem inappropriate, threatening,
offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

This Code of Conduct also applies outside the project spaces when the Project
Steward has a reasonable belief that an individual's behavior may have a
negative impact on the project or its community.

## Conflict Resolution

We do not believe that all conflict is bad; healthy debate and disagreement
often yield positive results. However, it is never okay to be disrespectful or
to engage in behavior that violates the project’s code of conduct.

If you see someone violating the code of conduct, you are encouraged to address
the behavior directly with those involved. Many issues can be resolved quickly
and easily, and this gives people more control over the outcome of their
dispute. If you are unable to resolve the matter for any reason, or if the
behavior is threatening or harassing, report it. We are dedicated to providing
an environment where participants feel welcome and safe.


Reports should be directed to *googleapis-stewards@google.com*, the
Project Steward(s) for *Google Cloud Client Libraries*. It is the Project Steward’s duty to
receive and address reported violations of the code of conduct. They will then
work with a committee consisting of representatives from the Open Source
Programs Office and the Google Open Source Strategy team. If for any reason you
are uncomfortable reaching out to the Project Steward, please email
opensource@google.com.

We will investigate every complaint, but you may not receive a direct response.
We will use our discretion in determining when and how to follow up on reported
incidents, which may range from not taking action to permanent expulsion from
the project and project-sponsored spaces. We will notify the accused of the
report and provide them an opportunity to discuss it before any action is taken.
The identity of the reporter will be omitted from the details of the report
supplied to the accused. In potentially harmful situations, such as ongoing
harassment or threats to anyone's safety, we may take action without notice.

## Attribution

This Code of Conduct is adapted from the Contributor Covenant, version 1.4,
available at
https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
@@ -80,25 +80,6 @@ We use `nox <https://nox.readthedocs.io/en/latest/>`__ to instrument our tests.

.. nox: https://pypi.org/project/nox/
Note on Editable Installs / Develop Mode
========================================

- As mentioned previously, using ``setuptools`` in `develop mode`_
or a ``pip`` `editable install`_ is not possible with this
library. This is because this library uses `namespace packages`_.
For context see `Issue #2316`_ and the relevant `PyPA issue`_.

Since ``editable`` / ``develop`` mode can't be used, packages
need to be installed directly. Hence your changes to the source
tree don't get incorporated into the **already installed**
package.

.. _namespace packages: https://www.python.org/dev/peps/pep-0420/
.. _Issue #2316: https://github.com/GoogleCloudPlatform/google-cloud-python/issues/2316
.. _PyPA issue: https://github.com/pypa/packaging-problems/issues/12
.. _develop mode: https://setuptools.readthedocs.io/en/latest/setuptools.html#development-mode
.. _editable install: https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs

*****************************************
I'm getting weird errors... Can you help?
*****************************************
@@ -39,6 +39,7 @@
"sphinx.ext.autosummary",
"sphinx.ext.intersphinx",
"sphinx.ext.coverage",
"sphinx.ext.doctest",
"sphinx.ext.napoleon",
"sphinx.ext.todo",
"sphinx.ext.viewcode",
@@ -348,6 +349,7 @@
"google-auth": ("https://google-auth.readthedocs.io/en/stable", None),
"google.api_core": ("https://googleapis.dev/python/google-api-core/latest/", None,),
"grpc": ("https://grpc.io/grpc/python/", None),
"proto-plus": ("https://proto-plus-python.readthedocs.io/en/latest/", None),
}


@@ -3,3 +3,4 @@ Types for Google Container v1 API

.. automodule:: google.cloud.container_v1.types
:members:
:show-inheritance:
@@ -3,3 +3,4 @@ Types for Google Container v1beta1 API

.. automodule:: google.cloud.container_v1beta1.types
:members:
:show-inheritance:
@@ -36,20 +36,28 @@
from google.cloud.container_v1.types.cluster_service import ClusterAutoscaling
from google.cloud.container_v1.types.cluster_service import ClusterUpdate
from google.cloud.container_v1.types.cluster_service import CompleteIPRotationRequest
from google.cloud.container_v1.types.cluster_service import ConfigConnectorConfig
from google.cloud.container_v1.types.cluster_service import CreateClusterRequest
from google.cloud.container_v1.types.cluster_service import CreateNodePoolRequest
from google.cloud.container_v1.types.cluster_service import DailyMaintenanceWindow
from google.cloud.container_v1.types.cluster_service import DatabaseEncryption
from google.cloud.container_v1.types.cluster_service import DefaultSnatStatus
from google.cloud.container_v1.types.cluster_service import DeleteClusterRequest
from google.cloud.container_v1.types.cluster_service import DeleteNodePoolRequest
from google.cloud.container_v1.types.cluster_service import DnsCacheConfig
from google.cloud.container_v1.types.cluster_service import GetClusterRequest
from google.cloud.container_v1.types.cluster_service import GetJSONWebKeysRequest
from google.cloud.container_v1.types.cluster_service import GetJSONWebKeysResponse
from google.cloud.container_v1.types.cluster_service import GetNodePoolRequest
from google.cloud.container_v1.types.cluster_service import GetOpenIDConfigRequest
from google.cloud.container_v1.types.cluster_service import GetOpenIDConfigResponse
from google.cloud.container_v1.types.cluster_service import GetOperationRequest
from google.cloud.container_v1.types.cluster_service import GetServerConfigRequest
from google.cloud.container_v1.types.cluster_service import HorizontalPodAutoscaling
from google.cloud.container_v1.types.cluster_service import HttpLoadBalancing
from google.cloud.container_v1.types.cluster_service import IPAllocationPolicy
from google.cloud.container_v1.types.cluster_service import IntraNodeVisibilityConfig
from google.cloud.container_v1.types.cluster_service import Jwk
from google.cloud.container_v1.types.cluster_service import KubernetesDashboard
from google.cloud.container_v1.types.cluster_service import LegacyAbac
from google.cloud.container_v1.types.cluster_service import ListClustersRequest
@@ -78,13 +86,20 @@
from google.cloud.container_v1.types.cluster_service import NodePoolAutoscaling
from google.cloud.container_v1.types.cluster_service import NodeTaint
from google.cloud.container_v1.types.cluster_service import Operation
from google.cloud.container_v1.types.cluster_service import OperationProgress
from google.cloud.container_v1.types.cluster_service import PrivateClusterConfig
from google.cloud.container_v1.types.cluster_service import (
PrivateClusterMasterGlobalAccessConfig,
)
from google.cloud.container_v1.types.cluster_service import RecurringTimeWindow
from google.cloud.container_v1.types.cluster_service import ReleaseChannel
from google.cloud.container_v1.types.cluster_service import ReservationAffinity
from google.cloud.container_v1.types.cluster_service import ResourceLimit
from google.cloud.container_v1.types.cluster_service import ResourceUsageExportConfig
from google.cloud.container_v1.types.cluster_service import (
RollbackNodePoolUpgradeRequest,
)
from google.cloud.container_v1.types.cluster_service import SandboxConfig
from google.cloud.container_v1.types.cluster_service import ServerConfig
from google.cloud.container_v1.types.cluster_service import SetAddonsConfigRequest
from google.cloud.container_v1.types.cluster_service import SetLabelsRequest
@@ -101,6 +116,7 @@
from google.cloud.container_v1.types.cluster_service import SetNodePoolManagementRequest
from google.cloud.container_v1.types.cluster_service import SetNodePoolSizeRequest
from google.cloud.container_v1.types.cluster_service import ShieldedInstanceConfig
from google.cloud.container_v1.types.cluster_service import ShieldedNodes
from google.cloud.container_v1.types.cluster_service import StartIPRotationRequest
from google.cloud.container_v1.types.cluster_service import StatusCondition
from google.cloud.container_v1.types.cluster_service import TimeWindow
@@ -112,6 +128,8 @@
UsableSubnetworkSecondaryRange,
)
from google.cloud.container_v1.types.cluster_service import VerticalPodAutoscaling
from google.cloud.container_v1.types.cluster_service import WorkloadIdentityConfig
from google.cloud.container_v1.types.cluster_service import WorkloadMetadataConfig

__all__ = (
"AcceleratorConfig",
@@ -129,20 +147,28 @@
"ClusterManagerClient",
"ClusterUpdate",
"CompleteIPRotationRequest",
"ConfigConnectorConfig",
"CreateClusterRequest",
"CreateNodePoolRequest",
"DailyMaintenanceWindow",
"DatabaseEncryption",
"DefaultSnatStatus",
"DeleteClusterRequest",
"DeleteNodePoolRequest",
"DnsCacheConfig",
"GetClusterRequest",
"GetJSONWebKeysRequest",
"GetJSONWebKeysResponse",
"GetNodePoolRequest",
"GetOpenIDConfigRequest",
"GetOpenIDConfigResponse",
"GetOperationRequest",
"GetServerConfigRequest",
"HorizontalPodAutoscaling",
"HttpLoadBalancing",
"IPAllocationPolicy",
"IntraNodeVisibilityConfig",
"Jwk",
"KubernetesDashboard",
"LegacyAbac",
"ListClustersRequest",
@@ -167,11 +193,16 @@
"NodePoolAutoscaling",
"NodeTaint",
"Operation",
"OperationProgress",
"PrivateClusterConfig",
"PrivateClusterMasterGlobalAccessConfig",
"RecurringTimeWindow",
"ReleaseChannel",
"ReservationAffinity",
"ResourceLimit",
"ResourceUsageExportConfig",
"RollbackNodePoolUpgradeRequest",
"SandboxConfig",
"ServerConfig",
"SetAddonsConfigRequest",
"SetLabelsRequest",
@@ -186,6 +217,7 @@
"SetNodePoolManagementRequest",
"SetNodePoolSizeRequest",
"ShieldedInstanceConfig",
"ShieldedNodes",
"StartIPRotationRequest",
"StatusCondition",
"TimeWindow",
@@ -195,4 +227,6 @@
"UsableSubnetwork",
"UsableSubnetworkSecondaryRange",
"VerticalPodAutoscaling",
"WorkloadIdentityConfig",
"WorkloadMetadataConfig",
)
Loading

0 comments on commit d3f5465

Please sign in to comment.