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,23 @@
# -*- 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.
"""The materialized views command group for Bigtable."""
from googlecloudsdk.calliope import base
@base.UniverseCompatible
class MaterializedViews(base.Group):
"""Manage Bigtable materialized views."""

View File

@@ -0,0 +1,99 @@
# -*- 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.
"""Bigtable materialized views create command."""
import textwrap
from apitools.base.py import exceptions
from googlecloudsdk.api_lib.bigtable import materialized_views
from googlecloudsdk.api_lib.bigtable import util
from googlecloudsdk.calliope import base
from googlecloudsdk.calliope import parser_arguments
from googlecloudsdk.calliope import parser_extensions
from googlecloudsdk.command_lib.bigtable import arguments
from googlecloudsdk.core import log
from googlecloudsdk.core import resources
from googlecloudsdk.generated_clients.apis.bigtableadmin.v2 import bigtableadmin_v2_messages
HttpError = exceptions.HttpError
@base.UniverseCompatible
@base.ReleaseTracks(
base.ReleaseTrack.GA, base.ReleaseTrack.BETA, base.ReleaseTrack.ALPHA
)
class CreateMaterializedView(base.CreateCommand):
"""Create a new Bigtable materialized view."""
detailed_help = {
'EXAMPLES': textwrap.dedent("""\
To create a materialized view, run:
$ {command} my-materialized-view-id --instance=my-instance-id --query="SELECT my-column-family FROM my-table --deletion-protection=false"
"""),
}
@staticmethod
def Args(parser: parser_arguments.ArgumentInterceptor) -> None:
arguments.AddMaterializedViewResourceArg(parser, 'to create')
arguments.ArgAdder(parser).AddViewQuery(
required=True
).AddDeletionProtection().AddAsync()
def _CreateMaterializedView(
self,
materialized_view_ref: resources.Resource,
args: parser_extensions.Namespace,
) -> bigtableadmin_v2_messages.MaterializedView:
"""Creates a materialized view with the given arguments.
Args:
materialized_view_ref: A resource reference of the new materialized view.
args: an argparse namespace. All the arguments that were provided to this
command invocation.
Returns:
Created materialized view resource object.
"""
return materialized_views.Create(
materialized_view_ref, args.query, args.deletion_protection
)
def Run(
self, args: parser_extensions.Namespace
) -> bigtableadmin_v2_messages.MaterializedView:
"""This is what gets called when the user runs this command.
Args:
args: an argparse namespace. All the arguments that were provided to this
command invocation.
Returns:
Created resource.
"""
materialized_view_ref = args.CONCEPTS.materialized_view.Parse()
operation = self._CreateMaterializedView(materialized_view_ref, args)
if not args.async_:
operation_ref = util.GetOperationRef(operation)
return util.AwaitMaterializedView(
operation_ref,
'Creating materialized view {0}'.format(materialized_view_ref.Name()),
)
log.CreatedResource(
materialized_view_ref.Name(),
kind='materialized view',
is_async=args.async_,
)
return None

View File

@@ -0,0 +1,74 @@
# -*- 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.
"""Bigtable materialized views delete command."""
import textwrap
from apitools.base.py import exceptions
from googlecloudsdk.api_lib.bigtable import materialized_views
from googlecloudsdk.api_lib.bigtable import util
from googlecloudsdk.calliope import base
from googlecloudsdk.calliope import parser_arguments
from googlecloudsdk.calliope import parser_extensions
from googlecloudsdk.command_lib.bigtable import arguments
from googlecloudsdk.core import log
from googlecloudsdk.core.console import console_io
HttpError = exceptions.HttpError
@base.UniverseCompatible
@base.ReleaseTracks(
base.ReleaseTrack.GA, base.ReleaseTrack.BETA, base.ReleaseTrack.ALPHA
)
class DeleteMaterializedView(base.DeleteCommand):
"""Delete a Bigtable materialized view."""
detailed_help = {
'EXAMPLES': textwrap.dedent("""\
To delete a materialized view, run:
$ {command} my-materialized-view-id --instance=my-instance-id
"""),
}
@staticmethod
def Args(parser: parser_arguments.ArgumentInterceptor):
arguments.AddMaterializedViewResourceArg(parser, 'to delete')
def Run(
self, args: parser_extensions.Namespace
) -> None:
"""This is what gets called when the user runs this command.
Args:
args: an argparse namespace. All the arguments that were provided to this
command invocation.
"""
materialized_view_ref = args.CONCEPTS.materialized_view.Parse()
console_io.PromptContinue(
'You are about to delete materialized view:'
f' [{materialized_view_ref.Name()}]',
throw_if_unattended=True,
cancel_on_no=True,
)
try:
materialized_views.Delete(materialized_view_ref)
except HttpError as e:
util.FormatErrorMessages(e)
else:
log.DeletedResource(materialized_view_ref.Name(), 'materialized view')

View File

@@ -0,0 +1,72 @@
# -*- 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.
"""Bigtable materialized views describe command."""
import textwrap
from googlecloudsdk.api_lib.bigtable import materialized_views
from googlecloudsdk.calliope import base
from googlecloudsdk.calliope import parser_extensions
from googlecloudsdk.command_lib.bigtable import arguments
from googlecloudsdk.generated_clients.apis.bigtableadmin.v2 import bigtableadmin_v2_messages
@base.UniverseCompatible
@base.ReleaseTracks(
base.ReleaseTrack.GA, base.ReleaseTrack.BETA, base.ReleaseTrack.ALPHA
)
class DescribeMaterializedView(base.DescribeCommand):
"""Describe an existing Bigtable materialized view."""
detailed_help = {
'EXAMPLES': textwrap.dedent("""\
To get back information related to a view's schema (for example, description), run:
$ {command} my-materialized-view-id --instance=my-instance-id --view=schema
or (because schema is the default view) simply:
$ {command} my-materialized-view-id --instance=my-instance-id
To get back information related to the view's replication state, run:
$ {command} my-materialized-view-id --instance=my-instance-id --view=replication
To get back all information for the view, run:
$ {command} my-materialized-view-id --instance=my-instance-id --view=full
"""),
}
@staticmethod
def Args(parser) -> None:
"""Register flags for this command."""
arguments.AddMaterializedViewResourceArg(parser, 'to describe')
arguments.AddViewOverMaterializedView(parser)
def Run(
self, args: parser_extensions.Namespace
) -> bigtableadmin_v2_messages.MaterializedView:
"""This is what gets called when the user runs this command.
Args:
args: an argparse namespace. All the arguments that were provided to this
command invocation.
Returns:
Some value that we want to have printed later.
"""
materialized_view_ref = args.CONCEPTS.materialized_view.Parse()
return materialized_views.Describe(materialized_view_ref, view=args.view)

View File

@@ -0,0 +1,69 @@
# -*- 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.
"""Bigtable materialized views list command."""
import textwrap
from typing import Generator
from googlecloudsdk.api_lib.bigtable import materialized_views
from googlecloudsdk.calliope import base
from googlecloudsdk.calliope import parser_arguments
from googlecloudsdk.calliope import parser_extensions
from googlecloudsdk.command_lib.bigtable import arguments
from googlecloudsdk.generated_clients.apis.bigtableadmin.v2 import bigtableadmin_v2_messages
@base.DefaultUniverseOnly
@base.UniverseCompatible
@base.ReleaseTracks(
base.ReleaseTrack.GA, base.ReleaseTrack.BETA, base.ReleaseTrack.ALPHA
)
class ListMaterializedViews(base.ListCommand):
"""List existing Bigtable materialized views."""
detailed_help = {
'EXAMPLES': textwrap.dedent("""\
To list all materialized views for an instance, run:
$ {command} --instance=my-instance-id
You may also specify what information to return by supplying the `--view` flag, such as:
$ {command} --instance=my-instance-id --view=schema
Currently, only the schema view is supported for this command. This is the default view, and it returns information about the schemas of your materialized views.
"""),
}
@staticmethod
def Args(parser: parser_arguments.ArgumentInterceptor) -> None:
"""Register flags for this command."""
arguments.AddInstanceResourceArg(parser, 'to list materialized views for')
arguments.AddViewOverMaterializedView(parser)
def Run(
self, args: parser_extensions.Namespace
) -> Generator[bigtableadmin_v2_messages.MaterializedView, None, None]:
"""This is what gets called when the user runs this command.
Args:
args: an argparse namespace. All the arguments that were provided to this
command invocation.
Returns:
Some value that we want to have printed later.
"""
instance_ref = args.CONCEPTS.instance.Parse()
return materialized_views.List(instance_ref, view=args.view)

View File

@@ -0,0 +1,100 @@
# -*- 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.
"""Bigtable materialized views update command."""
import textwrap
from typing import Optional
from apitools.base.py import exceptions
from googlecloudsdk.api_lib.bigtable import materialized_views
from googlecloudsdk.api_lib.bigtable import util
from googlecloudsdk.calliope import base
from googlecloudsdk.calliope import parser_arguments
from googlecloudsdk.calliope import parser_extensions
from googlecloudsdk.command_lib.bigtable import arguments
from googlecloudsdk.core import log
from googlecloudsdk.core import resources
from googlecloudsdk.generated_clients.apis.bigtableadmin.v2 import bigtableadmin_v2_messages
HttpError = exceptions.HttpError
@base.UniverseCompatible
@base.ReleaseTracks(
base.ReleaseTrack.GA, base.ReleaseTrack.BETA, base.ReleaseTrack.ALPHA
)
class UpdateMaterializedView(base.UpdateCommand):
"""Update a Bigtable materialized view."""
detailed_help = {
'EXAMPLES': textwrap.dedent("""\
To update a materialized view, run:
$ {command} my-materialized-view-id --instance=my-instance-id --deletion-protection=true
"""),
}
@staticmethod
def Args(parser: parser_arguments.ArgumentInterceptor) -> None:
arguments.AddMaterializedViewResourceArg(parser, 'to update')
arguments.ArgAdder(parser).AddDeletionProtection(True).AddAsync()
def _UpdateMaterializedView(
self,
materialized_view_ref: resources.Resource,
args: parser_extensions.Namespace,
) -> bigtableadmin_v2_messages.MaterializedView:
"""Updates a materialized view with the given arguments.
Args:
materialized_view_ref: A resource reference of the new materialized view.
args: an argparse namespace. All the arguments that were provided to this
command invocation.
Returns:
Updated materialized view resource object.
"""
return materialized_views.Update(
materialized_view_ref, args.deletion_protection
)
def Run(
self, args: parser_extensions.Namespace
) -> Optional[bigtableadmin_v2_messages.MaterializedView]:
"""This is what gets called when the user runs this command.
Args:
args: an argparse namespace. All the arguments that were provided to this
command invocation.
Returns:
Updated resource.
"""
materialized_view_ref = args.CONCEPTS.materialized_view.Parse()
operation = self._UpdateMaterializedView(materialized_view_ref, args)
if not args.async_:
operation_ref = util.GetOperationRef(operation)
return util.AwaitMaterializedView(
operation_ref,
'Updating materialized view {0}'.format(materialized_view_ref.Name()),
)
log.UpdatedResource(
materialized_view_ref.Name(),
kind='materialized view',
is_async=args.async_,
)
return None