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,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.
"""The gcloud app domain-mappings group."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.calliope import base
@base.ReleaseTracks(base.ReleaseTrack.GA, base.ReleaseTrack.BETA,
base.ReleaseTrack.ALPHA)
class DomainMappings(base.Group):
"""View and manage your App Engine domain mappings.
This set of commands can be used to view and manage your app's
domain mappings.
App Engine Domain Mappings allow an application to be served via one or many
custom domains, such as `example.com`, instead of the default
`https://<PROJECT-ID>.<REGION-ID>.r.appspot.com` address. You can use a
custom domain with or without SSL.
Use the AUTOMATIC management type to automatically provision an SSL
certificate for your domain. Use the MANUAL management type to provide
your own certificate or omit SSL.
"""
category = base.APP_ENGINE_CATEGORY
detailed_help = {
'DESCRIPTION':
'{description}',
'EXAMPLES':
"""\
To list your App Engine domains, run:
$ {command} list
To create a domain with an automatically managed certificate, run:
$ {command} create 'example.com' --certificate-management=AUTOMATIC
To create a domain with a manual certificate, run:
$ {command} create 'example.com' --certificate-management=manual --certificate-id=1234
""",
}

View File

@@ -0,0 +1,86 @@
# -*- 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.
"""Surface for creating an App Engine domain mapping."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.app.api import appengine_domains_api_client as api_client
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.app import domains_util
from googlecloudsdk.command_lib.app import flags
from googlecloudsdk.core import log
class Create(base.CreateCommand):
"""Creates a domain mapping."""
detailed_help = {
'DESCRIPTION':
'{description}',
'EXAMPLES':
"""\
To create a new App Engine domain mapping with an automatically
managed certificate, run:
$ {command} 'example.com'
Note: managed certificates do not support wildcard domain mappings.
To create a domain with a manual certificate, run:
$ {command} '*.example.com' --certificate-management=manual --certificate-id=1234
To create a domain with no associated certificate, run:
$ {command} '*.example.com' --certificate-management=manual
""",
}
@staticmethod
def Args(parser):
flags.DOMAIN_FLAG.AddToParser(parser)
flags.AddCertificateIdFlag(parser, include_no_cert=False)
parser.display_info.AddFormat('default(id, resourceRecords)')
flags.AddCertificateManagementFlag(parser)
def Run(self, args):
return self.Create(args)
def Create(self, args):
client = api_client.GetApiClientForTrack(self.ReleaseTrack())
domains_util.ValidateCertificateArgs(args.certificate_id,
args.certificate_management)
if not args.certificate_management:
if not args.certificate_id:
args.certificate_management = 'automatic'
else:
args.certificate_management = 'manual'
management_type = domains_util.ParseCertificateManagement(
client.messages, args.certificate_management)
mapping = client.CreateDomainMapping(args.domain, args.certificate_id,
management_type)
log.CreatedResource(args.domain)
log.status.Print(
'Please add the following entries to your domain registrar.'
' DNS changes can require up to 24 hours to take effect.')
return mapping

View File

@@ -0,0 +1,54 @@
# -*- 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.
"""Surface for deleting an App Engine domain mapping."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.app.api import appengine_domains_api_client as api_client
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.app import flags
from googlecloudsdk.core import log
from googlecloudsdk.core.console import console_io
class Delete(base.DeleteCommand):
"""Deletes a specified domain mapping."""
detailed_help = {
'DESCRIPTION':
'{description}',
'EXAMPLES':
"""\
To delete an App Engine domain mapping, run:
$ {command} '*.example.com'
""",
}
@staticmethod
def Args(parser):
flags.DOMAIN_FLAG.AddToParser(parser)
def Run(self, args):
console_io.PromptContinue(
prompt_string=('Deleting mapping [{0}]. This will stop your app from'
' serving from this domain.'.format(args.domain)),
cancel_on_no=True)
client = api_client.GetApiClientForTrack(self.ReleaseTrack())
client.DeleteDomainMapping(args.domain)
log.DeletedResource(args.domain)

View File

@@ -0,0 +1,46 @@
# -*- 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.
"""Surface for retrieving a single domain mapping."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.app.api import appengine_domains_api_client as api_client
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.app import flags
class Describe(base.DescribeCommand):
"""Describes a specified domain mapping."""
detailed_help = {
'DESCRIPTION':
'{description}',
'EXAMPLES':
"""\
To describe an App Engine domain mapping, run:
$ {command} '*.example.com'
""",
}
@staticmethod
def Args(parser):
flags.DOMAIN_FLAG.AddToParser(parser)
def Run(self, args):
client = api_client.GetApiClientForTrack(self.ReleaseTrack())
return client.GetDomainMapping(args.domain)

View File

@@ -0,0 +1,51 @@
# -*- coding: utf-8 -*- #
# Copyright 2016 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.
"""Surface for listing all domain mapping for an app."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.app.api import appengine_domains_api_client as api_client
from googlecloudsdk.calliope import base
class List(base.ListCommand):
"""Lists domain mappings."""
detailed_help = {
'DESCRIPTION':
'{description}',
'EXAMPLES':
"""\
To list all App Engine domain mappings, run:
$ {command}
""",
}
def Run(self, args):
client = api_client.GetApiClientForTrack(self.ReleaseTrack())
return client.ListDomainMappings()
@staticmethod
def Args(parser):
parser.display_info.AddFormat("""
table(
id:sort=1,
ssl_settings.certificate_id:label=SSL_CERTIFICATE_ID,
ssl_settings.sslManagementType.yesno(no='MANUAL'):label=SSL_MANAGEMENT_TYPE,
ssl_settings.pending_managed_certificate_id:label=PENDING_AUTO_CERT)
""")

View File

@@ -0,0 +1,73 @@
# -*- 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.
"""Surface for updating an App Engine domain mapping."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.app.api import appengine_domains_api_client as api_client
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.app import domains_util
from googlecloudsdk.command_lib.app import flags
from googlecloudsdk.core import log
class Update(base.UpdateCommand):
"""Updates a domain mapping."""
detailed_help = {
'DESCRIPTION':
'{description}',
'EXAMPLES':
"""\
To update an App Engine domain mapping, run:
$ {command} '*.example.com' --certificate-id=1234
To remove a certificate from a domain:
$ {command} '*.example.com' --no-certificate-id
""",
}
@staticmethod
def Args(parser):
flags.DOMAIN_FLAG.AddToParser(parser)
flags.AddCertificateIdFlag(parser, include_no_cert=True)
flags.AddCertificateManagementFlag(parser)
def Run(self, args):
client = api_client.GetApiClientForTrack(self.ReleaseTrack())
domains_util.ValidateCertificateArgsForUpdate(args.certificate_id,
args.no_certificate_id,
args.certificate_management)
if (not args.certificate_management and
(args.certificate_id or args.no_certificate_id)):
args.certificate_management = 'manual'
if (args.certificate_management and
args.certificate_management.lower() == 'manual' and
not args.certificate_id and not args.no_certificate_id):
args.no_certificate_id = True
management_type = domains_util.ParseCertificateManagement(
client.messages, args.certificate_management)
mapping = client.UpdateDomainMapping(args.domain, args.certificate_id,
args.no_certificate_id,
management_type)
log.UpdatedResource(args.domain)
return mapping