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,27 @@
# -*- coding: utf-8 -*- #
# Copyright 2025 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.
"""Command group for Network Connectivity Center transports."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.calliope import base
@base.DefaultUniverseOnly
@base.ReleaseTracks(base.ReleaseTrack.BETA)
class Transports(base.Group):
"""Manage Network Connectivity Center transports."""

View File

@@ -0,0 +1,144 @@
# -*- coding: utf-8 -*- #
# Copyright 2025 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.
"""Command for creating transports."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
import argparse
import textwrap
from googlecloudsdk.api_lib.network_connectivity import networkconnectivity_api
from googlecloudsdk.api_lib.network_connectivity import networkconnectivity_util
from googlecloudsdk.api_lib.util import waiter
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.network_connectivity import flags
from googlecloudsdk.command_lib.util.args import labels_util
from googlecloudsdk.core import log
from googlecloudsdk.core import resources
@base.DefaultUniverseOnly
@base.ReleaseTracks(base.ReleaseTrack.BETA)
class Create(base.Command):
"""Create a new Transport.
Create a new Transport.
"""
@staticmethod
def Args(parser):
flags.AddTransportResourceArg(parser, 'to create')
flags.AddProfileFlag(parser, 'Profile of the transport to create.')
flags.AddBandwidthFlag(parser, 'Bandwidth of the transport to create.')
flags.AddNetworkFlag(parser)
flags.AddAdvertisedRoutesFlag(
parser, 'List of routes to advertise to the remote network.'
)
flags.AddDescriptionFlag(parser, 'Description of the transport to create.')
flags.AddEnableAdminFlag(
parser, 'Administrative state of the underlying connectivity.'
)
flags.AddStackTypeFlag(
parser, 'IP version stack for the established connectivity.'
)
flags.AddAsyncFlag(parser)
flags.AddActivationKeyFlag(
parser,
'Key used for establishing a connection with the remote transport.',
)
flags.AddRemoteAccountIdFlag(
parser,
'The user supplied account id for the CSP associated with the remote'
' profile.',
)
flags.AddRegionFlag(
parser, supports_region_wildcard=True, hidden=False, required=True
)
labels_util.AddCreateLabelsFlags(parser)
def Run(self, args: argparse.Namespace, client=None):
if client is None:
client = networkconnectivity_api.TransportsClient(
release_track=self.ReleaseTrack()
)
transport_ref = args.CONCEPTS.transport.Parse()
labels = labels_util.ParseCreateArgs(
args,
client.messages.TransportsV1BetaTransport.LabelsValue,
)
transport = client.messages.TransportsV1BetaTransport(
remoteProfile=args.remote_profile,
bandwidth=client.messages.TransportsV1BetaTransport.BandwidthValueValuesEnum(
f'BPS_{args.bandwidth}'
),
network=args.network,
advertisedRoutes=args.advertised_routes.split(','),
adminEnabled=args.enable_admin or False,
stackType=client.messages.TransportsV1BetaTransport.StackTypeValueValuesEnum(
args.stack_type
),
description=args.description,
labels=labels,
providedActivationKey=args.activation_key,
remoteAccountId=args.remote_account_id,
)
op_ref = client.CreateBeta(transport_ref, transport)
log.status.Print(f'Create request issued for: [{transport_ref.Name()}]')
if op_ref.done:
log.CreatedResource(transport_ref.Name(), kind='transport')
return op_ref
if args.async_:
log.status.Print(f'Check operation [{op_ref.name}] for status.')
return op_ref
op_resource = resources.REGISTRY.ParseRelativeName(
op_ref.name,
collection='networkconnectivity.projects.locations.operations',
api_version=networkconnectivity_util.VERSION_MAP[self.ReleaseTrack()],
)
poller = waiter.CloudOperationPoller(
client.transport_service, client.operation_service
)
res = waiter.WaitFor(
poller,
op_resource,
f'Waiting for operation [{op_ref.name}] to complete',
)
log.CreatedResource(transport_ref.Name(), kind='transport')
return res
Create.detailed_help = {
'EXAMPLES': textwrap.dedent(""" \
To create a transport named ``mytransport'', run:
$ {command} my-cci-aws-1 --bandwidth 1G \
--profile aws-us-east-1 --network my-network \
--advertised-routes '10.128.0.0/9'
"""),
'API REFERENCE': """ \
This command uses the networkconnectivity/v1 API. The full documentation
for this API can be found at:
https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest
""",
}

View File

@@ -0,0 +1,104 @@
# -*- coding: utf-8 -*- #
# Copyright 2025 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.
"""Command for deleting transports."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.network_connectivity import networkconnectivity_api
from googlecloudsdk.api_lib.network_connectivity import networkconnectivity_util
from googlecloudsdk.api_lib.util import waiter
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.network_connectivity import flags
from googlecloudsdk.core import log
from googlecloudsdk.core import resources
from googlecloudsdk.core.console import console_io
@base.DefaultUniverseOnly
@base.ReleaseTracks(base.ReleaseTrack.BETA)
class Delete(base.DeleteCommand):
"""Delete a transport.
Delete the specified transport.
"""
@staticmethod
def Args(parser):
flags.AddTransportResourceArg(parser, 'to delete')
flags.AddAsyncFlag(parser)
flags.AddRegionFlag(
parser, supports_region_wildcard=True, hidden=False, required=True
)
def Run(self, args):
client = networkconnectivity_api.TransportsClient(
release_track=self.ReleaseTrack()
)
transport_ref = args.CONCEPTS.transport.Parse()
console_io.PromptContinue(
message=(
'You are about to delete transport [{}]'.format(
transport_ref.Name()
)
),
cancel_on_no=True,
)
op_ref = client.DeleteBeta(transport_ref)
log.status.Print(
'Delete request issued for: [{}]'.format(transport_ref.Name())
)
if op_ref.done:
log.DeletedResource(transport_ref.Name(), kind='transport')
return op_ref
if args.async_:
log.status.Print('Check operation [{}] for status.'.format(op_ref.name))
return op_ref
api_version = networkconnectivity_util.VERSION_MAP[self.ReleaseTrack()]
op_resource = resources.REGISTRY.ParseRelativeName(
op_ref.name,
collection='networkconnectivity.projects.locations.operations',
api_version=api_version,
)
poller = waiter.CloudOperationPollerNoResources(client.operation_service)
res = waiter.WaitFor(
poller,
op_resource,
'Waiting for operation [{}] to complete'.format(op_ref.name),
)
log.DeletedResource(transport_ref.Name(), kind='transport')
return res
Delete.detailed_help = {
'EXAMPLES': """ \
To delete a transport named ``mytransport'' in the ``us-central1'' region, run:
$ {command} mytransport --region=us-central1
""",
'API REFERENCE': """ \
This command uses the networkconnectivity/v1 API. The full documentation
for this API can be found at:
https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest
""",
}

View File

@@ -0,0 +1,61 @@
# -*- coding: utf-8 -*- #
# Copyright 2025 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.
"""Command for describing transports."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.network_connectivity import networkconnectivity_api
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.network_connectivity import flags
@base.DefaultUniverseOnly
@base.ReleaseTracks(base.ReleaseTrack.BETA)
class Describe(base.DescribeCommand):
"""Describe a transport.
Retrieve and display details about a transport.
"""
@staticmethod
def Args(parser):
flags.AddTransportResourceArg(parser, 'to describe')
flags.AddRegionFlag(
parser, supports_region_wildcard=True, hidden=False, required=True
)
def Run(self, args):
client = networkconnectivity_api.TransportsClient(
release_track=self.ReleaseTrack()
)
transport_ref = args.CONCEPTS.transport.Parse()
return client.Get(transport_ref)
Describe.detailed_help = {
'EXAMPLES': """ \
To display details about a transport named ``mytransport'' in the ``us-central1'' region, run:
$ {command} mytransport --region=us-central1
""",
'API REFERENCE': """ \
This command uses the networkconnectivity/v1 API. The full documentation
for this API can be found at:
https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest
""",
}

View File

@@ -0,0 +1,78 @@
# -*- coding: utf-8 -*- #
# Copyright 2025 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.
"""Command for listing transports."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.network_connectivity import networkconnectivity_api
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.network_connectivity import flags
from googlecloudsdk.command_lib.network_connectivity import util
from googlecloudsdk.core import properties
@base.DefaultUniverseOnly
@base.ReleaseTracks(base.ReleaseTrack.BETA)
class List(base.ListCommand):
"""List transports.
Retrieve and display a list of all transports in the specified project.
"""
@staticmethod
def Args(parser):
# Remove URI flag to match surface spec
base.URI_FLAG.RemoveFromParser(parser)
# Add flags to identify region
flags.AddRegionFlag(
parser, supports_region_wildcard=True, hidden=False, required=False
)
# Table formatting
parser.display_info.AddFormat(util.LIST_TRANSPORTS_FORMAT)
def Run(self, args):
client = networkconnectivity_api.TransportsClient(
release_track=self.ReleaseTrack()
)
project = properties.VALUES.core.project.GetOrFail()
return client.List(
location_ref=f'projects/{project}/locations/{args.region or "-"}',
limit=args.limit,
filter_expression=None, # Do all filtering client-side.
page_size=args.page_size,
)
List.detailed_help = {
'EXAMPLES': """ \
To list all transports in the ``us-central1'' region, run:
$ {command} --region=us-central1
To list all transports in all regions, run:
$ {command}
""",
'API REFERENCE': """ \
This command uses the networkconnectivity/v1 API. The full documentation
for this API can be found at:
https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest
""",
}

View File

@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*- #
# Copyright 2025 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.
"""Command group for Network Connectivity Center remote transport profiles."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.calliope import base
@base.DefaultUniverseOnly
@base.ReleaseTracks(base.ReleaseTrack.BETA)
class RemoteProfiles(base.Group):
"""Manage Network Connectivity Center remote transport profiles."""

View File

@@ -0,0 +1,61 @@
# -*- coding: utf-8 -*- #
# Copyright 2025 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.
"""Command for describing remote transport profiles."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.network_connectivity import networkconnectivity_api
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.network_connectivity import flags
@base.DefaultUniverseOnly
@base.ReleaseTracks(base.ReleaseTrack.BETA)
class Describe(base.DescribeCommand):
"""Describe a remote transport profile.
Retrieve and display details about a remote transport profile.
"""
@staticmethod
def Args(parser):
flags.AddRemoteProfileResourceArg(parser, 'to describe')
flags.AddRegionFlag(
parser, supports_region_wildcard=True, hidden=False, required=True
)
def Run(self, args):
client = networkconnectivity_api.RemoteProfilesClient(
release_track=self.ReleaseTrack()
)
remote_profile_ref = args.CONCEPTS.remote_profile.Parse()
return client.Get(remote_profile_ref)
Describe.detailed_help = {
'EXAMPLES': """ \
To display details about a remote transport profile named ``myprofile'' in the ``us-central1'' region, run:
$ {command} myprofile --region=us-central1
""",
'API REFERENCE': """ \
This command uses the networkconnectivity/v1 API. The full documentation
for this API can be found at:
https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest
""",
}

View File

@@ -0,0 +1,80 @@
# -*- coding: utf-8 -*- #
# Copyright 2025 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.
"""Command for listing remote transport profiles."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.network_connectivity import networkconnectivity_api
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.network_connectivity import flags
from googlecloudsdk.command_lib.network_connectivity import util
from googlecloudsdk.core import properties
@base.DefaultUniverseOnly
@base.ReleaseTracks(base.ReleaseTrack.BETA)
class List(base.ListCommand):
"""List remote transport profiles.
Retrieve and display a list of all remote transport profiles in the specified
project.
"""
@staticmethod
def Args(parser):
# Remove URI flag to match surface spec
base.URI_FLAG.RemoveFromParser(parser)
# Add flags to identify region
flags.AddRegionFlag(
parser, supports_region_wildcard=True, hidden=False, required=False
)
# Table formatting
parser.display_info.AddFormat(util.LIST_REMOTE_PROFILES_FORMAT)
def Run(self, args):
client = networkconnectivity_api.RemoteProfilesClient(
release_track=self.ReleaseTrack()
)
project = properties.VALUES.core.project.GetOrFail()
return client.List(
location_ref=f'projects/{project}/locations/{args.region or "-"}',
limit=args.limit,
filter_expression=None, # Do all filtering client-side.
page_size=args.page_size,
)
List.detailed_help = {
'EXAMPLES': """ \
To list all remote transport profiles in the ``us-central1'' region, run:
$ {command} --region=us-central1
To list all remote transport profiles in all regions, run:
$ {command}
""",
'API REFERENCE': """ \
This command uses the networkconnectivity/v1 API. The full documentation
for this API can be found at:
https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest
""",
}