feat: Add new gcloud commands, API clients, and third-party libraries across various services.

This commit is contained in:
2026-01-01 20:26:35 +01:00
parent 5e23cbece0
commit a19e592eb7
25221 changed files with 8324611 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
# -*- coding: utf-8 -*- #
# Copyright 2016 Google LLC. All Rights Reserved.
#
# 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.
"""Commands for configuring shared VPC."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.calliope import base
@base.ReleaseTracks(
base.ReleaseTrack.ALPHA, base.ReleaseTrack.BETA, base.ReleaseTrack.GA)
class Xpn(base.Group):
"""Configure shared VPC."""
Xpn.category = base.NETWORKING_CATEGORY
Xpn.detailed_help = {
'DESCRIPTION': """
Configure Shared VPC configurations.
For more information about Shared VPC, see the
[Shared VPC documentation](https://cloud.google.com/vpc/docs/shared-vpc/).
""",
}

View File

@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*- #
# Copyright 2016 Google LLC. All Rights Reserved.
#
# 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.
"""Commands for configuring Shared VPC network associated projects.
"""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.calliope import base
class AssociatedProjects(base.Group):
"""Configure associated projects for Shared VPC networking."""

View File

@@ -0,0 +1,46 @@
# -*- coding: utf-8 -*- #
# Copyright 2016 Google LLC. All Rights Reserved.
#
# 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.
"""The `gcloud compute shared-vpc associated-projects add` command."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.compute import xpn_api
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.compute.xpn import flags
class Add(base.Command):
"""Associate the given project with a given shared VPC host project."""
detailed_help = {
'EXAMPLES':
"""
To add the project `service-project` as an associated service
project of the shared VPC host project `host-project`, run:
$ {command} --host-project=host-project service-project
"""
}
@staticmethod
def Args(parser):
flags.GetProjectIdArgument('add to the host project').AddToParser(parser)
flags.GetHostProjectFlag('add an associated project to').AddToParser(parser)
def Run(self, args):
xpn_client = xpn_api.GetXpnClient(self.ReleaseTrack())
xpn_client.EnableXpnAssociatedProject(args.host_project, args.project)

View File

@@ -0,0 +1,57 @@
# -*- coding: utf-8 -*- #
# Copyright 2016 Google LLC. All Rights Reserved.
#
# 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.
"""The `gcloud compute shared-vpc associated-projects list` command."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.compute import xpn_api
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.compute.xpn import flags
from googlecloudsdk.command_lib.compute.xpn import util as command_lib_util
class List(base.ListCommand):
"""List the associated service projects of the given host project."""
detailed_help = {
'EXAMPLES':
"""
If `service-project1` and `service-project2` are associated service
projects of the shared VPC host project `host-project`,
$ {command} host-project
yields the output
RESOURCE_ID RESOURCE_TYPE
service-project1 PROJECT
service-project2 PROJECT
"""
}
@staticmethod
def Args(parser):
flags.GetProjectIdArgument(
'get associated projects for').AddToParser(parser)
parser.display_info.AddFormat(command_lib_util.XPN_RESOURCE_ID_FORMAT)
def Run(self, args):
xpn_client = xpn_api.GetXpnClient(self.ReleaseTrack())
xpn_types = xpn_client.messages.XpnResourceId.TypeValueValuesEnum
resources = xpn_client.ListEnabledResources(args.project)
return [resource for resource in resources if
resource.type == xpn_types.PROJECT]

View File

@@ -0,0 +1,48 @@
# -*- coding: utf-8 -*- #
# Copyright 2016 Google LLC. All Rights Reserved.
#
# 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.
"""The `gcloud compute shared-vpc associated-projects remove` command."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.compute import xpn_api
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.compute.xpn import flags
class Remove(base.Command):
"""Disassociate the given project from the given shared VPC host project."""
detailed_help = {
'EXAMPLES':
"""
To remove the project `service-project` as an associated shared VPC
service project of the shared VPC host project `host-project`, run:
$ {command} --host-project=host-project service-project
"""
}
@staticmethod
def Args(parser):
flags.GetProjectIdArgument(
'remove from the host project').AddToParser(parser)
flags.GetHostProjectFlag(
'remove the associated project from').AddToParser(parser)
def Run(self, args):
xpn_client = xpn_api.GetXpnClient(self.ReleaseTrack())
xpn_client.DisableXpnAssociatedProject(args.host_project, args.project)

View File

@@ -0,0 +1,49 @@
# -*- coding: utf-8 -*- #
# Copyright 2016 Google LLC. All Rights Reserved.
#
# 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.
"""The `gcloud compute shared-vpc disable` command."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.compute import xpn_api
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.compute.xpn import flags
class Disable(base.Command):
"""Disable the given project as a shared VPC host.
That is, after running this command, this project will not be able to share
VPC networks to other projects.
"""
detailed_help = {
'EXAMPLES':
"""
To disable the project `myproject` as a shared VPC host, run:
$ {command} myproject
"""
}
@staticmethod
def Args(parser):
flags.GetProjectIdArgument('disable as a shared VPC host').AddToParser(
parser)
def Run(self, args):
xpn_client = xpn_api.GetXpnClient(self.ReleaseTrack())
xpn_client.DisableHost(args.project)

View File

@@ -0,0 +1,49 @@
# -*- coding: utf-8 -*- #
# Copyright 2016 Google LLC. All Rights Reserved.
#
# 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.
"""The `gcloud compute shared-vpc enable` command."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.compute import xpn_api
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.compute.xpn import flags
class Enable(base.Command):
"""Enable the given project as a shared VPC host.
That is, after running this command, one *can* enable another project to use
the VPC networks shared by this project.
"""
detailed_help = {
'EXAMPLES':
"""
To enable the project `myproject` as a shared VPC host, run:
$ {command} myproject
"""
}
@staticmethod
def Args(parser):
flags.GetProjectIdArgument('enable as a shared VPC host').AddToParser(
parser)
def Run(self, args):
xpn_client = xpn_api.GetXpnClient(self.ReleaseTrack())
xpn_client.EnableHost(args.project)

View File

@@ -0,0 +1,48 @@
# -*- coding: utf-8 -*- #
# Copyright 2016 Google LLC. All Rights Reserved.
#
# 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.
"""The `gcloud compute shared-vpc get-host-project` command."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.compute import xpn_api
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.compute.xpn import flags
class GetHostProject(base.Command):
"""Get the shared VPC host project that the given project is associated with.
"""
detailed_help = {
'EXAMPLES':
"""
If `service-project1` and `service-project2` are associated service
projects of the shared VPC host project `host-project`,
$ {command} service-project1
will show the `host-project` project.
"""
}
@staticmethod
def Args(parser):
flags.GetProjectIdArgument('get the host project for').AddToParser(parser)
def Run(self, args):
xpn_client = xpn_api.GetXpnClient(self.ReleaseTrack())
return xpn_client.GetHostProject(args.project)

View File

@@ -0,0 +1,55 @@
# -*- coding: utf-8 -*- #
# Copyright 2016 Google LLC. All Rights Reserved.
#
# 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.
"""The `gcloud compute shared-vpc list-associated-resources` command."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.compute import xpn_api
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.compute.xpn import flags
from googlecloudsdk.command_lib.compute.xpn import util as command_lib_util
class ListAssociatedResources(base.ListCommand):
"""List the resources associated with the given shared VPC host project.
"""
detailed_help = {
'EXAMPLES':
"""
If `service-project1` and `service-project2` are associated service
projects of the shared VPC host project `host-project`,
$ {command} host-project
yields the output
RESOURCE_ID RESOURCE_TYPE
service-project1 PROJECT
service-project2 PROJECT
"""
}
@staticmethod
def Args(parser):
flags.GetProjectIdArgument(
'get associated resources for').AddToParser(parser)
parser.display_info.AddFormat(command_lib_util.XPN_RESOURCE_ID_FORMAT)
def Run(self, args):
xpn_client = xpn_api.GetXpnClient(self.ReleaseTrack())
return xpn_client.ListEnabledResources(args.project)

View File

@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*- #
# Copyright 2016 Google LLC. All Rights Reserved.
#
# 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.
"""Commands for configuring Shared VPC network organizations.
"""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.calliope import base
class Organizations(base.Group):
"""Configure organizations for Shared VPC networking."""

View File

@@ -0,0 +1,56 @@
# -*- coding: utf-8 -*- #
# Copyright 2016 Google LLC. All Rights Reserved.
#
# 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.
"""The `gcloud compute shared-vpc organizations list-host-projects` command."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.compute import xpn_api
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.compute.xpn import util as command_lib_util
from googlecloudsdk.command_lib.organizations import flags as organizations_flags
from googlecloudsdk.core import properties
class ListHostProjects(base.ListCommand):
"""List shared VPC host projects in a given organization."""
detailed_help = {
'EXAMPLES':
"""
To list the shared VPC host projects in the organization with ID
12345, run:
$ {command} 12345
NAME CREATION_TIMESTAMP XPN_PROJECT_STATUS
xpn-host1 2000-01-01T12:00:00.00-00:00 HOST
xpn-host2 2000-01-02T12:00:00.00-00:00 HOST
"""
}
@staticmethod
def Args(parser):
organizations_flags.IdArg(
'whose XPN host projects to list.').AddToParser(parser)
parser.display_info.AddFormat(command_lib_util.XPN_PROJECTS_FORMAT)
def Run(self, args):
xpn_client = xpn_api.GetXpnClient(self.ReleaseTrack())
project = properties.VALUES.core.project.Get(required=True)
organization_id = args.id
return xpn_client.ListOrganizationHostProjects(
project, organization_id=organization_id)