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,45 @@
# -*- coding: utf-8 -*- #
# Copyright 2023 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 main command group for Cloud Quotas."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.calliope import base
@base.ReleaseTracks(base.ReleaseTrack.BETA)
@base.UniverseCompatible
class CloudQuotasBeta(base.Group):
"""Manage Cloud Quotas quota info, quota preferences and quota adjuster settings."""
category = base.API_PLATFORM_AND_ECOSYSTEMS_CATEGORY
def Filter(self, context, args):
del context, args
base.DisableUserProjectQuota()
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
@base.UniverseCompatible
class CloudQuotas(base.Group):
"""Manage Cloud Quotas quota info and quota preferences."""
category = base.API_PLATFORM_AND_ECOSYSTEMS_CATEGORY
def Filter(self, context, args):
del context, args
base.DisableUserProjectQuota()

View File

@@ -0,0 +1,30 @@
# -*- 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 Adjuster."""
from googlecloudsdk.calliope import base
@base.ReleaseTracks(base.ReleaseTrack.BETA)
@base.UniverseCompatible
class QuotaAdjusterBeta(base.Group):
"""The command group for Cloud Quotas Adjuster."""
@base.Hidden
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
@base.UniverseCompatible
class QuotaAdjusterAlpha(base.Group):
"""The command group for Cloud Quotas Adjuster."""

View File

@@ -0,0 +1,38 @@
# -*- 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 AdjusterSettings."""
from googlecloudsdk.calliope import base
@base.ReleaseTracks(base.ReleaseTrack.BETA)
@base.UniverseCompatible
class QuotaAdjusterSettingsBeta(base.Group):
"""The command group for Cloud Quotas AdjusterSettings.
A QuotaAdjusterSettings resource represents your adjuster setting for a
particular project. Enable this to automatically adjust quotas.
"""
@base.Hidden
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
@base.UniverseCompatible
class QuotaAdjusterSettingsAlpha(base.Group):
"""The command group for Cloud Quotas AdjusterSettings.
A QuotaAdjusterSettings resource represents your adjuster setting for a
particular project. Enable this to automatically adjust quotas.
"""

View File

@@ -0,0 +1,107 @@
# -*- 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.
"""QuotaAdjusterSettings get command."""
from googlecloudsdk.api_lib.quotas import quota_adjuster_settings
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.quotas import flags
@base.ReleaseTracks(base.ReleaseTrack.BETA)
@base.UniverseCompatible
class DescribeBeta(base.DescribeCommand):
"""Gets details of the QuotaAdjusterSettings for a resource container.
This command gets the QuotaAdjusterSettings for a resource container.
## EXAMPLES
To get the QuotaAdjusterSettings for 'projects/12321', run:
$ {command} --project=12321
To get the QuotaAdjusterSettings for 'folders/123', run:
$ {command} --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, 'container id')
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
The requested QuotaAdjusterSettings for the project.
"""
return quota_adjuster_settings.GetQuotaAdjusterSettings(
args, release_track=base.ReleaseTrack.BETA
)
@base.Hidden
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
@base.UniverseCompatible
class DescribeAlpha(base.DescribeCommand):
"""Gets details of the QuotaAdjusterSettings for a resource container.
This command gets the QuotaAdjusterSettings for a resource container.
## EXAMPLES
To get the QuotaAdjusterSettings for 'projects/12321', run:
$ {command} --project=12321
To get the QuotaAdjusterSettings for 'folders/123', run:
$ {command} --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, 'container id')
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
The requested QuotaAdjusterSettings for the project.
"""
# This is because alpha gcloud points to the v1 version of the API.
return quota_adjuster_settings.GetQuotaAdjusterSettings(
args, release_track=base.ReleaseTrack.GA
)

View File

@@ -0,0 +1,159 @@
# -*- 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.
"""QuotaAdjusterSettings update command."""
import json
from apitools.base.py import encoding
from googlecloudsdk.api_lib.quotas import quota_adjuster_settings
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.quotas import flags
from googlecloudsdk.core import log
@base.ReleaseTracks(base.ReleaseTrack.BETA)
@base.UniverseCompatible
class UpdateBeta(base.UpdateCommand):
"""Update the QuotaAdjusterSettings of a resource container.
This command updates the enablement state of a resource container.
## EXAMPLES
To update QuotaAdjusterSettings for `projects/12321`, run:
$ {command}
--enablement=enabled
--project=12321
To update QuotaAdjusterSettings for `folders/123`, run:
$ {command}
--enablement=inherited
--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.
"""
# required flags
flags.AddResourceFlags(parser, 'container id')
flags.Enablement().AddToParser(parser)
# optional flags
flags.ValidateOnly().AddToParser(parser)
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
The updated QuotaAdjusterSettings. If `--validate-only` is specified, it
returns
None or any possible error.
"""
self.updated_resource = quota_adjuster_settings.UpdateQuotaAdjusterSettings(
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=(',', ':'),
)
)
@base.Hidden
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
@base.UniverseCompatible
class UpdateAlpha(base.UpdateCommand):
"""Update the QuotaAdjusterSettings of a resource container.
This command updates the enablement state of the resource container.
## EXAMPLES
To update QuotaAdjusterSettings for `projects/12321`, run:
$ {command}
--enablement=Enabled
--project=12321
To update QuotaAdjusterSettings for `folders/123`, run:
$ {command}
--enablement=inherited
--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.
"""
# required flags
flags.AddResourceFlags(parser, 'container id')
flags.Enablement().AddToParser(parser)
# optional flags
flags.ValidateOnly().AddToParser(parser)
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
The updated QuotaAdjusterSettings. If `--validate-only` is specified, it
returns
None or any possible error.
"""
# This is because alpha gcloud points to the v1 version of the API.
self.updated_resource = quota_adjuster_settings.UpdateQuotaAdjusterSettings(
args, release_track=base.ReleaseTrack.GA
)
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=(',', ':'),
)
)

View File

@@ -0,0 +1,67 @@
# -*- 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 Info."""
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 QuotaInfoAlpha(base.Group):
"""Manage Cloud Quotas QuotaInfo.
QuotaInfo is a read-only resource that provides metadata and quota value
information about a particular quota for a given project, folder or
organization. The QuotaInfo resource contains:
* Metadata such as name and dimension.
* Quota values for different quota dimensions.
Cloud Quotas obtains information from the quotas defined by Google Cloud
services and any fulfilled quota adjustments that you initiate.
Note: Because QuotaInfo is constructed by incorporating information from
different sources, a default quota configuration exists even if you have not
created a QuotaPreference resource. Until you express a preferred state
through quotaPreference.create or quotaPreference.update, QuotaInfo relies on
the default quota information available to determine what quota value to
enforce.
"""
@base.ReleaseTracks(base.ReleaseTrack.BETA)
@base.UniverseCompatible
class QuotaInfoBeta(base.Group):
"""Manage Cloud Quotas QuotaInfo.
QuotaInfo is a read-only resource that provides metadata and quota value
information about a particular quota for a given project, folder or
organization. The QuotaInfo resource contains:
* Metadata such as name and dimension.
* Quota values for different quota dimensions.
Cloud Quotas obtains information from the quotas defined by Google Cloud
services and any fulfilled quota adjustments that you initiate.
Note: Because QuotaInfo is constructed by incorporating information from
different sources, a default quota configuration exists even if you have not
created a QuotaPreference resource. Until you express a preferred state
through quotaPreference.create or quotaPreference.update, QuotaInfo relies on
the default quota information available to determine what quota value to
enforce.
"""

View File

@@ -0,0 +1,126 @@
# -*- 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.
"""QuotaInfo get command."""
from googlecloudsdk.api_lib.quotas import quota_info
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.quotas import flags
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
@base.UniverseCompatible
class DescribeAlpha(base.DescribeCommand):
"""Retrieve the QuotaInfo of a quota for a project, folder or organization.
## EXAMPLES
To get the details about quota `CpusPerProject` for service
`example.$$UNIVERSE_DOMAIN$$` and `projects/my-project`, run:
$ {command} CpusPerProject --service=example.$$UNIVERSE_DOMAIN$$
--project=my-project
To get the details about quota `CpusPerProject` for service
`example.$$UNIVERSE_DOMAIN$$` and `folders/123`, run:
$ {command} CpusPerProject --service=example.$$UNIVERSE_DOMAIN$$
--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.QuotaId().AddToParser(parser)
flags.AddResourceFlags(parser, 'quota info to describe')
flags.Service().AddToParser(parser)
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
The requested QuotaInfo for specified container and service.
"""
# This is because alpha gcloud points to GA version of the API.
return quota_info.GetQuotaInfo(
args.project,
args.folder,
args.organization,
args.service,
args.QUOTA_ID,
release_track=base.ReleaseTrack.GA,
)
@base.ReleaseTracks(base.ReleaseTrack.BETA)
@base.UniverseCompatible
class DescribeBeta(base.DescribeCommand):
"""Retrieve the QuotaInfo of a quota for a project, folder or organization.
## EXAMPLES
To get the details about quota `CpusPerProject` for service
`example.$$UNIVERSE_DOMAIN$$` and `projects/my-project`, run:
$ {command} CpusPerProject --service=example.$$UNIVERSE_DOMAIN$$
--project=my-project
To get the details about quota `CpusPerProject` for service
`example.$$UNIVERSE_DOMAIN$$` and `folders/123`, run:
$ {command} CpusPerProject --service=example.$$UNIVERSE_DOMAIN$$
--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.QuotaId().AddToParser(parser)
flags.AddResourceFlags(parser, 'quota info to describe')
flags.Service().AddToParser(parser)
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
The requested QuotaInfo for specified container and service.
"""
return quota_info.GetQuotaInfo(
args.project,
args.folder,
args.organization,
args.service,
args.QUOTA_ID,
release_track=base.ReleaseTrack.BETA,
)

View File

@@ -0,0 +1,110 @@
# -*- 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.
"""QuotaInfo list command."""
from googlecloudsdk.api_lib.quotas import quota_info
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.quotas import flags
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
@base.UniverseCompatible
class ListAlpha(base.ListCommand):
"""List QuotaInfos of all quotas for a given project, folder or organization.
## EXAMPLES
To list all quota info for service `example.$$UNIVERSE_DOMAIN$$` and
`projects/12321`, run:
$ {command} --service=example.$$UNIVERSE_DOMAIN$$ --project=12321
$ {command} --service=example.$$UNIVERSE_DOMAIN$$ --project=my-project-id
To list first 100 quota info ordered alphabetically for service
`example.$$UNIVERSE_DOMAIN$$` and `folders/123`,
run:
$ {command} --service=example.$$UNIVERSE_DOMAIN$$ --folder=123
--page-size=100
"""
@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 info to list')
flags.Service().AddToParser(parser)
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
List of QuotaInfo for specified container and service.
"""
# This is because alpha gcloud points to GA version of the API.
return quota_info.ListQuotaInfo(args, release_track=base.ReleaseTrack.GA)
@base.ReleaseTracks(base.ReleaseTrack.BETA)
@base.UniverseCompatible
class ListBeta(base.ListCommand):
"""List QuotaInfos of all quotas for a given project, folder or organization.
## EXAMPLES
To list all quota info for service `example.$$UNIVERSE_DOMAIN$$` and
`projects/12321`, run:
$ {command} --service=example.$$UNIVERSE_DOMAIN$$ --project=12321
$ {command} --service=example.$$UNIVERSE_DOMAIN$$m --project=my-project-id
To list first 100 quota info ordered alphabetically for service
`example.$$UNIVERSE_DOMAIN$$` and `folders/123`,
run:
$ {command} --service=example.$$UNIVERSE_DOMAIN$$ --folder=123
--page-size=100
"""
@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 info to list')
flags.Service().AddToParser(parser)
def Run(self, args):
"""Run command.
Args:
args: argparse.Namespace, The arguments that this command was invoked
with.
Returns:
List of QuotaInfo for specified container and service.
"""
return quota_info.ListQuotaInfo(args, release_track=base.ReleaseTrack.BETA)

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=(',', ':'),
)
)