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,27 @@
# -*- coding: utf-8 -*- #
# Copyright 2022 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 Build's GitLab Enterprise Configs."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.calliope import base
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class GitLab(base.Group):
"""Manage GitLab Enterprise configurations for Cloud Build."""
category = base.CI_CD_CATEGORY

View File

@@ -0,0 +1,82 @@
# -*- coding: utf-8 -*- #
# Copyright 2022 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.
"""Create GitLab Enterprise config command."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.cloudbuild import cloudbuild_util
from googlecloudsdk.api_lib.util import waiter
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.cloudbuild import gitlab_flags
from googlecloudsdk.core import log
from googlecloudsdk.core import properties
from googlecloudsdk.core import resources
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class CreateAlpha(base.CreateCommand):
"""Create a GitLab Enterprise config for use by Cloud Build."""
@staticmethod
def Args(parser):
"""Register flags for this command.
Args:
parser: An argparse.ArgumentParser-like object. It is mocked out in order
to capture some information, but behaves like an ArgumentParser.
"""
parser = gitlab_flags.AddGitLabConfigCreateArgs(parser)
def Run(self, args):
"""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.
"""
client = cloudbuild_util.GetClientInstance()
messages = cloudbuild_util.GetMessagesModule()
gitlab_config = cloudbuild_util.GitLabConfigFromArgs(args)
parent = properties.VALUES.core.project.Get(required=True)
# Get the parent project location ref
parent_resource = resources.REGISTRY.Create(
collection='cloudbuild.projects.locations',
projectsId=parent,
locationsId=args.region)
# Send the Create request
created_op = client.projects_locations_gitLabConfigs.Create(
messages.CloudbuildProjectsLocationsGitLabConfigsCreateRequest(
parent=parent_resource.RelativeName(),
gitLabConfig=gitlab_config,
gitlabConfigId=args.name))
op_resource = resources.REGISTRY.ParseRelativeName(
created_op.name, collection='cloudbuild.projects.locations.operations')
created_config = waiter.WaitFor(
waiter.CloudOperationPoller(client.projects_locations_gitLabConfigs,
client.projects_locations_operations),
op_resource, 'Creating GitLab Enterprise config')
log.CreatedResource(created_config.name, kind='enterprise_config')
return created_config

View File

@@ -0,0 +1,88 @@
# -*- coding: utf-8 -*- #
# Copyright 2022 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.
"""Delete GitLab Enterprise config command."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.cloudbuild import cloudbuild_util
from googlecloudsdk.api_lib.util import waiter
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.cloudbuild import resource_args
from googlecloudsdk.command_lib.util.concepts import concept_parsers
from googlecloudsdk.core import log
from googlecloudsdk.core import properties
from googlecloudsdk.core import resources
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class DeleteAlpha(base.DeleteCommand):
"""Delete a GitLab Enterprise config from Cloud Build."""
@staticmethod
def Args(parser):
"""Register flags for this command.
Args:
parser: An argparse.ArgumentParser-like object. It is mocked out in order
to capture some information, but behaves like an ArgumentParser.
"""
concept_parsers.ConceptParser.ForResource(
'CONFIG',
resource_args.GetGitLabConfigResourceSpec(),
'GitLab Enterprise config.',
required=True).AddToParser(parser)
def Run(self, args):
"""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:
Nothing on success.
"""
client = cloudbuild_util.GetClientInstance()
messages = cloudbuild_util.GetMessagesModule()
parent = properties.VALUES.core.project.Get(required=True)
config_id = args.CONFIG
# Get the GitLab Enterprise config ref
gitlab_config_resource = resources.REGISTRY.Parse(
None,
collection='cloudbuild.projects.locations.gitLabConfigs',
api_version='v1',
params={
'projectsId': parent,
'locationsId': args.region,
'gitLabConfigsId': config_id,
})
# Send the Delete request
deleted_op = client.projects_locations_gitLabConfigs.Delete(
messages.CloudbuildProjectsLocationsGitLabConfigsDeleteRequest(
name=gitlab_config_resource.RelativeName()))
op_resource = resources.REGISTRY.ParseRelativeName(
deleted_op.name, collection='cloudbuild.projects.locations.operations')
waiter.WaitFor(
waiter.CloudOperationPollerNoResources(
client.projects_locations_operations), op_resource,
'Deleting GitLab Enterprise config')
log.DeletedResource(config_id, kind='enterprise_config')

View File

@@ -0,0 +1,78 @@
# -*- coding: utf-8 -*- #
# Copyright 2022 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.
"""Describe GitLab Enterprise config command."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.cloudbuild import cloudbuild_util
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.cloudbuild import resource_args
from googlecloudsdk.command_lib.util.concepts import concept_parsers
from googlecloudsdk.core import properties
from googlecloudsdk.core import resources
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class DescribeAlpha(base.DescribeCommand):
"""Describe a GitLab Enterprise config in a Google Cloud project."""
@staticmethod
def Args(parser):
"""Register flags for this command.
Args:
parser: An argparse.ArgumentParser-like object. It is mocked out in order
to capture some information, but behaves like an ArgumentParser.
"""
concept_parsers.ConceptParser.ForResource(
'CONFIG',
resource_args.GetGitLabConfigResourceSpec(),
'GitLab Enterprise config.',
required=True).AddToParser(parser)
def Run(self, args):
"""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.
"""
client = cloudbuild_util.GetClientInstance()
messages = cloudbuild_util.GetMessagesModule()
parent = properties.VALUES.core.project.Get(required=True)
config_id = args.CONFIG
# Get the GitLab Enterprise config ref
gitlab_config_resource = resources.REGISTRY.Parse(
None,
collection='cloudbuild.projects.locations.gitLabConfigs',
api_version='v1',
params={
'projectsId': parent,
'locationsId': args.region,
'gitLabConfigsId': config_id,
})
# Send the Get request
gitlab_config = client.projects_locations_gitLabConfigs.Get(
messages.CloudbuildProjectsLocationsGitLabConfigsGetRequest(
name=gitlab_config_resource.RelativeName()))
return gitlab_config

View File

@@ -0,0 +1,71 @@
# -*- coding: utf-8 -*- #
# Copyright 2022 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.
"""List GitLab Enterprise configs command."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.cloudbuild import cloudbuild_util
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.cloudbuild import run_flags
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class ListAlpha(base.ListCommand):
"""List all GitLab Enterprise configs in a Google Cloud project."""
@staticmethod
def Args(parser):
"""Register flags for this command.
Args:
parser: An argparse.ArgumentParser-like object. It is mocked out in order
to capture some information, but behaves like an ArgumentParser.
"""
run_flags.AddsRegionResourceArg(parser)
parser.display_info.AddFormat("""
table(
name,
createTime.date('%Y-%m-%dT%H:%M:%S%Oz', undefined='-'),
enterprise_config.host_uri
)
""")
def Run(self, args):
"""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.
"""
client = cloudbuild_util.GetClientInstance()
messages = cloudbuild_util.GetMessagesModule()
# Get the parent project ref
region_ref = args.CONCEPTS.region.Parse()
parent = region_ref.RelativeName()
# Send the List request
gitlab_config_list = client.projects_locations_gitLabConfigs.List(
messages.CloudbuildProjectsLocationsGitLabConfigsListRequest(
parent=parent)).gitlabConfigs
return gitlab_config_list

View File

@@ -0,0 +1,97 @@
# -*- coding: utf-8 -*- #
# Copyright 2022 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.
"""Update GitLab Enterprise config command."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.cloudbuild import cloudbuild_util
from googlecloudsdk.api_lib.util import waiter
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.cloudbuild import gitlab_flags
from googlecloudsdk.command_lib.cloudbuild import resource_args
from googlecloudsdk.command_lib.util.concepts import concept_parsers
from googlecloudsdk.core import log
from googlecloudsdk.core import properties
from googlecloudsdk.core import resources
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class CreateAlpha(base.CreateCommand):
"""Update a GitLab Enterprise config for use by Cloud Build."""
@staticmethod
def Args(parser):
"""Register flags for this command.
Args:
parser: An argparse.ArgumentParser-like object. It is mocked out in order
to capture some information, but behaves like an ArgumentParser.
"""
concept_parsers.ConceptParser.ForResource(
'CONFIG',
resource_args.GetGitLabConfigResourceSpec(),
'GitLab Enterprise config.',
required=True).AddToParser(parser)
parser = gitlab_flags.AddGitLabConfigUpdateArgs(parser)
def Run(self, args):
"""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.
"""
client = cloudbuild_util.GetClientInstance()
messages = cloudbuild_util.GetMessagesModule()
config_id = args.CONFIG
gitlab = cloudbuild_util.GitLabConfigFromArgs(args)
parent = properties.VALUES.core.project.Get(required=True)
# Get the GitLab Enterprise config ref
gitlab_resource = resources.REGISTRY.Parse(
None,
collection='cloudbuild.projects.locations.gitLabConfigs',
api_version='v1',
params={
'projectsId': parent,
'locationsId': args.region,
'gitLabConfigsId': config_id,
})
update_mask = cloudbuild_util.MessageToFieldPaths(gitlab)
req = messages.CloudbuildProjectsLocationsGitLabConfigsPatchRequest(
name=gitlab_resource.RelativeName(),
gitLabConfig=gitlab,
updateMask=','.join(update_mask))
# Send the Update request
updated_op = client.projects_locations_gitLabConfigs.Patch(req)
op_resource = resources.REGISTRY.ParseRelativeName(
updated_op.name, collection='cloudbuild.projects.locations.operations')
updated_gitlab = waiter.WaitFor(
waiter.CloudOperationPoller(client.projects_locations_gitLabConfigs,
client.projects_locations_operations),
op_resource, 'Updating GitLab Enterprise config')
log.UpdatedResource(config_id, kind='enterprise_config')
return updated_gitlab