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,25 @@
# -*- coding: utf-8 -*- #
# Copyright 2017 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.
"""Manage the billing account configuration of your projects."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.calliope import base
class Projects(base.Group):
"""Manage the billing account configuration of your projects."""

View File

@@ -0,0 +1,59 @@
# -*- coding: utf-8 -*- #
# Copyright 2017 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 to show metadata for a specified project."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.billing import billing_client
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.billing import flags
from googlecloudsdk.command_lib.billing import utils
class Describe(base.DescribeCommand):
"""Show detailed billing information for a project."""
detailed_help = {
'DESCRIPTION': """\
This command shows billing info for a project, given its ID.
This call can fail for the following reasons:
* The project specified does not exist.
* The active user does not have permission to access the given
project.
""",
'EXAMPLES': """\
To see detailed billing information for a project `my-project`, run:
$ {command} my-project
""",
'API REFERENCE': """\
This command uses the *cloudbilling/v1* API. The full documentation
for this API can be found at:
https://cloud.google.com/billing/v1/getting-started
"""
}
@staticmethod
def Args(parser):
flags.GetProjectIdArgument().AddToParser(parser)
def Run(self, args):
client = billing_client.ProjectsClient()
project_ref = utils.ParseProject(args.project_id)
return client.Get(project_ref)

View File

@@ -0,0 +1,100 @@
# -*- coding: utf-8 -*- #
# Copyright 2017 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 to update a new project."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.billing import billing_client
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.billing import flags
from googlecloudsdk.command_lib.billing import utils
_DETAILED_HELP = {
'DESCRIPTION': """\
This command sets or updates the billing account associated with a
project.
Billing is enabled on a project when the project is linked to a valid,
active Cloud Billing account. The billing account accrues charges
for the usage of resources in all of the linked projects. If the
project is already linked to a billing account, this command moves
the project to the billing account you specify, updating the billing
account that is linked to the project.
Note that associating a project with a closed billing account has the
same effect as disabling billing on the project: any paid resources
in use by the project are shut down, and your application stops
functioning. Unless you want to disable billing, you should always
specify a valid, active Cloud Billing account when you run this
command. Learn how to confirm the status of a Cloud Billing account at
https://cloud.google.com/billing/docs/how-to/verify-billing-enabled#billing_account_status
""",
'EXAMPLES': """\
To link a billing account `0X0X0X-0X0X0X-0X0X0X` with a project
`my-project`, run:
$ {command} my-project --billing-account=0X0X0X-0X0X0X-0X0X0X
""",
'API REFERENCE': """\
This command uses the *cloudbilling/v1* API. The full documentation
for this API can be found at:
https://cloud.google.com/billing/v1/getting-started
"""
}
def _RunLink(args):
client = billing_client.ProjectsClient()
project_ref = utils.ParseProject(args.project_id)
account_ref = utils.ParseAccount(args.billing_account)
return client.Link(project_ref, account_ref)
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class LinkAlpha(base.Command):
"""Link a project with a billing account."""
detailed_help = _DETAILED_HELP
@staticmethod
def Args(parser):
account_args_group = parser.add_mutually_exclusive_group(required=True)
flags.GetOldAccountIdArgument(positional=False).AddToParser(
account_args_group)
flags.GetAccountIdArgument(positional=False).AddToParser(account_args_group)
flags.GetProjectIdArgument().AddToParser(parser)
def Run(self, args):
return _RunLink(args)
@base.ReleaseTracks(base.ReleaseTrack.BETA, base.ReleaseTrack.GA)
class Link(base.Command):
"""Link a project with a billing account."""
detailed_help = _DETAILED_HELP
@staticmethod
def Args(parser):
flags.GetAccountIdArgument(positional=False,
required=True).AddToParser(parser)
flags.GetProjectIdArgument().AddToParser(parser)
def Run(self, args):
return _RunLink(args)

View File

@@ -0,0 +1,110 @@
# -*- coding: utf-8 -*- #
# Copyright 2017 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 to list all Project IDs linked with a billing account."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.billing import billing_client
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.billing import flags
from googlecloudsdk.command_lib.billing import utils
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class ListAlpha(base.ListCommand):
"""List all active projects associated with the specified billing account.
*{command}* ACCOUNT_ID -- lists all active projects, for the specified
billing account id.
## EXAMPLES
To list projects linked to billing account `0X0X0X-0X0X0X-0X0X0X`, run:
$ {command} 0X0X0X-0X0X0X-0X0X0X
## API REFERENCE
This command uses the *cloudbilling/v1* API. The full documentation for this
API can be found at: https://cloud.google.com/billing/v1/getting-started
"""
@staticmethod
def Args(parser):
account_args_group = parser.add_mutually_exclusive_group(required=True)
flags.GetOldAccountIdArgument().AddToParser(account_args_group)
flags.GetAccountIdArgument(positional=False).AddToParser(account_args_group)
base.URI_FLAG.RemoveFromParser(parser)
parser.display_info.AddFormat("""
table(
projectId,
billingAccountName.basename():label=BILLING_ACCOUNT_ID,
billingEnabled
)
""")
parser.display_info.AddCacheUpdater(flags.BillingAccountsCompleter)
@staticmethod
def GetUriCacheUpdateOp():
"""No resource URIs."""
return None
def Run(self, args):
"""Run the list command."""
client = billing_client.ProjectsClient()
account_ref = utils.ParseAccount(args.id or args.billing_account)
return client.List(account_ref, limit=args.limit)
@base.ReleaseTracks(base.ReleaseTrack.BETA, base.ReleaseTrack.GA)
class List(base.ListCommand):
"""List all active projects associated with the specified billing account.
*{command}* ACCOUNT_ID -- lists all active projects, for the specified
billing account id.
## EXAMPLES
To list projects linked to billing account `0X0X0X-0X0X0X-0X0X0X`, run:
$ {command} --billing-account=0X0X0X-0X0X0X-0X0X0X
"""
@staticmethod
def Args(parser):
flags.GetAccountIdArgument(positional=False,
required=True).AddToParser(parser)
base.URI_FLAG.RemoveFromParser(parser)
parser.display_info.AddFormat("""
table(
projectId,
billingAccountName.basename():label=BILLING_ACCOUNT_ID,
billingEnabled
)
""")
@staticmethod
def GetUriCacheUpdateOp():
"""No resource URIs."""
return None
def Run(self, args):
"""Run the list command."""
client = billing_client.ProjectsClient()
account_ref = utils.ParseAccount(args.billing_account)
return client.List(account_ref, limit=args.limit)

View File

@@ -0,0 +1,61 @@
# -*- coding: utf-8 -*- #
# Copyright 2017 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 to disable billing."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.billing import billing_client
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.billing import flags
from googlecloudsdk.command_lib.billing import utils
class Unlink(base.Command):
"""Unlink the account (if any) linked with a project."""
detailed_help = {
'DESCRIPTION': """\
This command unlinks a project from its associated billing account.
This action disables billing on the project. Any billable resources
and services in use in your project are stopped, and your application
stops functioning. Any costs accrued prior to disabling billing on
the project are charged to the previously associated billing account.
Note: To link a project to a different billing account, use the
`billing projects link` command. You do not need to unlink the
project first.
""",
'EXAMPLES': """\
To unlink the project `my-project` from its linked billing account,
run:
$ {command} my-project
""",
'API REFERENCE': """\
This command uses the *cloudbilling/v1* API. The full documentation
for this API can be found at:
https://cloud.google.com/billing/v1/getting-started
"""
}
@staticmethod
def Args(parser):
flags.GetProjectIdArgument().AddToParser(parser)
def Run(self, args):
client = billing_client.ProjectsClient()
project_ref = utils.ParseProject(args.project_id)
return client.Link(project_ref, None)