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,47 @@
# -*- coding: utf-8 -*- #
# Copyright 2024 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 command group for Cloud Quotas Quota Preference."""
from googlecloudsdk.calliope import base
# We could have multiple tracks here, e.g.
# @base.ReleaseTracks(base.ReleaseTrack.GA, base.ReleaseTrack.ALPHA)
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
@base.UniverseCompatible
class QuotaPreferencesAlpha(base.Group):
"""Manage Cloud Quotas QuotaPreferences.
A QuotaPreference resource represents your preference for a particular
dimension combination. Use this resource to make quota increase adjustments to
quotas in your projects and to make quota decrease adjustments to quotas in
your projects, folders or organizations. Quota increase adjustments are
subject to approval and fulfillment. Quota decreases are fulfilled
immediately. Use the Cloud Quotas console UI or API to set a quota preference.
"""
@base.ReleaseTracks(base.ReleaseTrack.BETA)
@base.UniverseCompatible
class QuotaPreferencesBeta(base.Group):
"""Manage Cloud Quotas QuotaPreferences.
A QuotaPreference resource represents your preference for a particular
dimension combination. Use this resource to make quota increase adjustments to
quotas in your projects and to make quota decrease adjustments to quotas in
your projects, folders or organizations. Quota increase adjustments are
subject to approval and fulfillment. Quota decreases are fulfilled
immediately. Use the Cloud Quotas console UI or API to set a quota preference.
"""

View File

@@ -0,0 +1,183 @@
# -*- coding: utf-8 -*- #
# Copyright 2024 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.
"""QuotaPreference create command."""
import json
from apitools.base.py import encoding
from googlecloudsdk.api_lib.quotas import quota_preference
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.quotas import flags
from googlecloudsdk.core import log
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
@base.UniverseCompatible
class CreateAlpha(base.CreateCommand):
"""Create a new QuotaPreference that declares the desired value for a quota.
## EXAMPLES
To create a quota preference in region `us-central1` that applies to the
`default_limit` quota under service `example.$$UNIVERSE_DOMAIN$$` for
`projects/12321`, run:
$ {command}
--service=example.$$UNIVERSE_DOMAIN$$
--project=12321
--quota-id=default_limit
--preferred-value=100
--dimensions=region=us-central1
--preference-id=example_default-limit_us-central1
To create a quota preference under service `example.$$UNIVERSE_DOMAIN$$` for
`organizations/789` with random preference ID, run:
$ {command}
--service=example.$$UNIVERSE_DOMAIN$$
--organization=789
--quota-id=default_limit
--preferred-value=200
"""
@staticmethod
def Args(parser):
"""Args is called by calliope to gather arguments for this command.
Args:
parser: An argparse parser that you can use to add arguments that go on
the command line after this command. Positional arguments are allowed.
"""
# required flags
flags.AddResourceFlags(parser, 'quota preference to create')
flags.Service().AddToParser(parser)
flags.PreferredValue().AddToParser(parser)
flags.QuotaId(positional=False).AddToParser(parser)
# optional flags
flags.PreferenceId(positional=False).AddToParser(parser)
flags.Dimensions().AddToParser(parser)
flags.AllowsQuotaDecreaseBelowUsage().AddToParser(parser)
flags.AllowHighPercentageQuotaDecrease().AddToParser(parser)
flags.Email().AddToParser(parser)
flags.Justification().AddToParser(parser)
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
The created quota preference.
"""
# This is because alpha gcloud points to GA version of the API.
self.created_resource = quota_preference.CreateQuotaPreference(
args, release_track=base.ReleaseTrack.GA
)
return self.created_resource
def Epilog(self, resources_were_displayed: bool = True):
if resources_were_displayed:
log.status.Print(
json.dumps(
encoding.MessageToDict(self.created_resource),
sort_keys=True,
indent=4,
separators=(',', ':'),
)
)
@base.ReleaseTracks(base.ReleaseTrack.BETA)
@base.UniverseCompatible
class CreateBeta(base.CreateCommand):
"""Create a new QuotaPreference that declares the desired value for a quota.
## EXAMPLES
To create a quota preference in region `us-central1` that applies to the
`default_limit` quota under service `example.$$UNIVERSE_DOMAIN$$` for
`projects/12321`, run:
$ {command}
--service=example.$$UNIVERSE_DOMAIN$$
--project=12321
--quota-id=default_limit
--preferred-value=100
--dimensions=region=us-central1
--preference-id=example_default-limit_us-central1
To create a quota preference under service `example.$$UNIVERSE_DOMAIN$$`` for
`organizations/789` with random preference ID, run:
$ {command}
--service=example.$$UNIVERSE_DOMAIN$$
--organization=789
--quota-id=default_limit
--preferred-value=200
"""
@staticmethod
def Args(parser):
"""Args is called by calliope to gather arguments for this command.
Args:
parser: An argparse parser that you can use to add arguments that go on
the command line after this command. Positional arguments are allowed.
"""
# Required flags.
flags.AddResourceFlags(parser, 'quota preference to create')
flags.Service().AddToParser(parser)
flags.PreferredValue().AddToParser(parser)
flags.QuotaId(positional=False).AddToParser(parser)
# optional flags
flags.PreferenceId(positional=False).AddToParser(parser)
flags.Dimensions().AddToParser(parser)
flags.AllowsQuotaDecreaseBelowUsage().AddToParser(parser)
flags.AllowHighPercentageQuotaDecrease().AddToParser(parser)
flags.Email().AddToParser(parser)
flags.Justification().AddToParser(parser)
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
The created quota preference.
"""
self.created_resource = quota_preference.CreateQuotaPreference(
args, release_track=base.ReleaseTrack.BETA
)
return self.created_resource
def Epilog(self, resources_were_displayed=True):
if resources_were_displayed:
log.status.Print(
json.dumps(
encoding.MessageToDict(self.created_resource),
sort_keys=True,
indent=4,
separators=(',', ':'),
)
)

View File

@@ -0,0 +1,112 @@
# -*- coding: utf-8 -*- #
# Copyright 2024 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.
"""QuotaPreference get command."""
from googlecloudsdk.api_lib.quotas import quota_preference
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.quotas import flags
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
@base.UniverseCompatible
class DescribeAlpha(base.DescribeCommand):
"""Get details about a single QuotaPreference.
## EXAMPLES
To get the details about quota preference `my-preference` for
`projects/12321`, run:
$ {command} my-preference --project=12321
$ {command} my-preference --project=my-project-id
To get the details about quota preference `my-preference` for `folders/123`,
run:
$ {command} my-preference --folder=123
"""
@staticmethod
def Args(parser):
"""Args is called by calliope to gather arguments for this command.
Args:
parser: An argparse parser that you can use to add arguments that go on
the command line after this command. Positional arguments are allowed.
"""
flags.AddResourceFlags(parser, 'quota preference to describe')
flags.PreferenceId().AddToParser(parser)
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
The requested QuotaPreference for specified container and service.
"""
# This is because alpha gcloud points to GA version of the API.
return quota_preference.GetQuotaPreference(
args, release_track=base.ReleaseTrack.GA
)
@base.ReleaseTracks(base.ReleaseTrack.BETA)
@base.UniverseCompatible
class DescribeBeta(base.DescribeCommand):
"""Get details about a single QuotaPreference.
## EXAMPLES
To get the details about quota preference `my-preference` for
`projects/12321`, run:
$ {command} my-preference --project=12321
$ {command} my-preference --project=my-project-id
To get the details about quota preference `my-preference` for `folders/123`,
run:
$ {command} my-preference --folder=123
"""
@staticmethod
def Args(parser):
"""Args is called by calliope to gather arguments for this command.
Args:
parser: An argparse parser that you can use to add arguments that go on
the command line after this command. Positional arguments are allowed.
"""
flags.AddResourceFlags(parser, 'quota preference to describe')
flags.PreferenceId().AddToParser(parser)
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
The requested QuotaPreference for specified container and service.
"""
return quota_preference.GetQuotaPreference(
args, release_track=base.ReleaseTrack.BETA
)

View File

@@ -0,0 +1,124 @@
# -*- coding: utf-8 -*- #
# Copyright 2024 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.
"""QuotaPreference list command."""
from googlecloudsdk.api_lib.quotas import quota_preference
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.quotas import flags
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
@base.UniverseCompatible
class ListAlpha(base.ListCommand):
"""List QuotaPreferences in a given project, folder or organization.
## EXAMPLES
To list the quota preferences for `projects/12321`, run:
$ {command} --project=12321
$ {command} --project=my-project-id
To list first 10 quota preferences ordered by create time for `folder/123`,
run:
$ {command} --folder=123 --page-size=10 --sort-by=create_time
To list all quota preferences in unresolved state in region `us-central1` for
`organization/789`, run:
$ {command} --organization=789 --filter=dimensions.region:us-central1
--reconciling-only
"""
@staticmethod
def Args(parser):
"""Args is called by calliope to gather arguments for this command.
Args:
parser: An argparse parser that you can use to add arguments that go on
the command line after this command. Positional arguments are allowed.
"""
flags.AddResourceFlags(parser, 'quota preferences to list')
flags.ReconcilingOnly().AddToParser(parser)
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
List of quota preferences.
"""
# This is because alpha gcloud points to GA version of the API.
return quota_preference.ListQuotaPreferences(
args, release_track=base.ReleaseTrack.GA
)
@base.ReleaseTracks(base.ReleaseTrack.BETA)
@base.UniverseCompatible
class ListBeta(base.ListCommand):
"""List QuotaPreferences in a given project, folder or organization.
## EXAMPLES
To list the quota preferences for `projects/12321`, run:
$ {command} --project=12321
$ {command} --project=my-project-id
To list first 10 quota preferences ordered by create time for `folder/123`,
run:
$ {command} --folder=123 --page-size=10 --sort-by=create_time
To list all quota preferences in unresolved state in region `us-central1` for
`organization/789`, run:
$ {command} --organization=789 --filter=dimensions.region:us-central1
--reconciling-only
"""
@staticmethod
def Args(parser):
"""Args is called by calliope to gather arguments for this command.
Args:
parser: An argparse parser that you can use to add arguments that go on
the command line after this command. Positional arguments are allowed.
"""
flags.AddResourceFlags(parser, 'quota preferences to list')
flags.ReconcilingOnly().AddToParser(parser)
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
List of quota preferences.
"""
return quota_preference.ListQuotaPreferences(
args, release_track=base.ReleaseTrack.BETA
)

View File

@@ -0,0 +1,192 @@
# -*- coding: utf-8 -*- #
# Copyright 2024 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.
"""QuotaPreference update command."""
import json
from apitools.base.py import encoding
from googlecloudsdk.api_lib.quotas import quota_preference
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.quotas import flags
from googlecloudsdk.core import log
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
@base.UniverseCompatible
class UpdateAlpha(base.UpdateCommand):
"""Update the parameters of a single QuotaPreference.
This command updates an existing or creates a new QuotaPreference. It can
updates the config in any states, not just the ones pending approval.
## EXAMPLES
To update a quota preference with id `my-preference` in region `us-central1`
that applies to the `default_limit` quota for `projects/12321`, run:
$ {command} my-preference
--service=example.$$UNIVERSE_DOMAIN$$
--project=12321
--quota-id=default_limit
--preferred-value=100
--dimensions=region=us-central1
To create a new quota preference for `organizations/789`, run:
$ {command} my-preference
--service=example.$$UNIVERSE_DOMAIN$$
--organization=789
--quota-id=default_limit
--preferred-value=200
--allow-missing
"""
@staticmethod
def Args(parser):
"""Args is called by calliope to gather arguments for this command.
Args:
parser: An argparse parser that you can use to add arguments that go on
the command line after this command. Positional arguments are allowed.
"""
# required flags
flags.PreferenceId().AddToParser(parser)
flags.Service().AddToParser(parser)
flags.PreferredValue().AddToParser(parser)
flags.QuotaId(positional=False).AddToParser(parser)
flags.AddResourceFlags(parser, 'quota preference to update')
# optional flags
flags.Dimensions().AddToParser(parser)
flags.Email().AddToParser(parser)
flags.Justification().AddToParser(parser)
flags.AllowMissing().AddToParser(parser)
flags.ValidateOnly().AddToParser(parser)
flags.AllowsQuotaDecreaseBelowUsage().AddToParser(parser)
flags.AllowHighPercentageQuotaDecrease().AddToParser(parser)
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
The updated QuotaPreference. If `--validate-only` is specified, it returns
None or any possible error.
"""
# This is because alpha gcloud points to GA version of the API.
self.updated_resource = quota_preference.UpdateQuotaPreference(
args, release_track=base.ReleaseTrack.GA
)
self.validate_only = args.validate_only
return self.updated_resource
def Epilog(self, resources_were_displayed: bool = True):
if resources_were_displayed and not self.validate_only:
log.status.Print(
json.dumps(
encoding.MessageToDict(self.updated_resource),
sort_keys=True,
indent=4,
separators=(',', ':'),
)
)
@base.ReleaseTracks(base.ReleaseTrack.BETA)
@base.UniverseCompatible
class UpdateBeta(base.UpdateCommand):
"""Update the parameters of a single QuotaPreference.
This command updates an existing or creates a new QuotaPreference. It can
updates the config in any states, not just the ones pending approval.
## EXAMPLES
To update a quota preference with id `my-preference` in region `us-central1`
that applies to the `default_limit` quota for `projects/12321`, run:
$ {command} my-preference
--service=example.$$UNIVERSE_DOMAIN$$
--project=12321
--quota-id=default_limit
--preferred-value=100
--dimensions=region=us-central1
To create a new quota preference for `organizations/789`, run:
$ {command} my-preference
--service=example.$$UNIVERSE_DOMAIN$$
--organization=789
--quota-id=default_limit
--preferred-value=200
--allow-missing
"""
@staticmethod
def Args(parser):
"""Args is called by calliope to gather arguments for this command.
Args:
parser: An argparse parser that you can use to add arguments that go on
the command line after this command. Positional arguments are allowed.
"""
# Required flags.
flags.PreferenceId().AddToParser(parser)
flags.Service().AddToParser(parser)
flags.PreferredValue().AddToParser(parser)
flags.QuotaId(positional=False).AddToParser(parser)
flags.AddResourceFlags(parser, 'quota preference to update')
# optional flags
flags.Dimensions().AddToParser(parser)
flags.Email().AddToParser(parser)
flags.Justification().AddToParser(parser)
flags.AllowMissing().AddToParser(parser)
flags.ValidateOnly().AddToParser(parser)
flags.AllowsQuotaDecreaseBelowUsage().AddToParser(parser)
flags.AllowHighPercentageQuotaDecrease().AddToParser(parser)
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
The updated QuotaPreference. If `--validate-only` is specified, it returns
None or any possible error.
"""
self.updated_resource = quota_preference.UpdateQuotaPreference(
args, release_track=base.ReleaseTrack.BETA
)
self.validate_only = args.validate_only
return self.updated_resource
def Epilog(self, resources_were_displayed=True):
if resources_were_displayed and not self.validate_only:
log.status.Print(
json.dumps(
encoding.MessageToDict(self.updated_resource),
sort_keys=True,
indent=4,
separators=(',', ':'),
)
)