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 2020 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 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 EnterpriseConfigs(base.Group):
"""Manage Enterprise configurations for Cloud Build."""
category = base.CI_CD_CATEGORY

View File

@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*- #
# Copyright 2021 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 Bitbucket Server 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 BitbucketServer(base.Group):
"""Manage Bitbucket Server configurations for Cloud Build."""
category = base.CI_CD_CATEGORY

View File

@@ -0,0 +1,98 @@
# -*- coding: utf-8 -*- #
# Copyright 2021 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 Bitbucket Server 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 bitbucketserver_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 Bitbucket Server 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 = bitbucketserver_flags.AddBitbucketServerConfigCreateArgs(parser)
parser.display_info.AddFormat("""
table(
name,
createTime.date('%Y-%m-%dT%H:%M:%S%Oz', undefined='-'),
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()
bbs = cloudbuild_util.BitbucketServerConfigFromArgs(args, False)
parent = properties.VALUES.core.project.Get(required=True)
regionprop = properties.VALUES.builds.region.Get()
bbs_region = args.region or regionprop or cloudbuild_util.DEFAULT_REGION
# Get the parent project ref
parent_resource = resources.REGISTRY.Create(
collection='cloudbuild.projects.locations',
projectsId=parent,
locationsId=bbs_region)
# Send the Create request
created_op = client.projects_locations_bitbucketServerConfigs.Create(
messages.CloudbuildProjectsLocationsBitbucketServerConfigsCreateRequest(
parent=parent_resource.RelativeName(),
bitbucketServerConfig=bbs,
bitbucketServerConfigId=args.name))
op_resource = resources.REGISTRY.ParseRelativeName(
created_op.name, collection='cloudbuild.projects.locations.operations')
created_config = waiter.WaitFor(
waiter.CloudOperationPoller(
client.projects_locations_bitbucketServerConfigs,
client.projects_locations_operations), op_resource,
'Creating Bitbucket Server config')
bbs_resource = resources.REGISTRY.Parse(
None,
collection='cloudbuild.projects.locations.bitbucketServerConfigs',
api_version='v1',
params={
'projectsId': parent,
'locationsId': bbs_region,
'bitbucketServerConfigsId': created_config.name,
})
log.CreatedResource(bbs_resource)
return created_config

View File

@@ -0,0 +1,85 @@
# -*- coding: utf-8 -*- #
# Copyright 2021 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 Bitbucket Server 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.builds import flags as build_flags
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 Bitbucket Server 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.
"""
build_flags.AddRegionFlag(parser)
parser.add_argument('CONFIG', help='The id of the Bitbucket Server Config')
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)
regionprop = properties.VALUES.builds.region.Get()
bbs_region = args.region or regionprop or cloudbuild_util.DEFAULT_REGION
config_id = args.CONFIG
# Get the bitbucket server config ref
bbs_resource = resources.REGISTRY.Parse(
None,
collection='cloudbuild.projects.locations.bitbucketServerConfigs',
api_version='v1',
params={
'projectsId': parent,
'locationsId': bbs_region,
'bitbucketServerConfigsId': config_id,
})
# Send the Delete request
deleted_op = client.projects_locations_bitbucketServerConfigs.Delete(
messages.CloudbuildProjectsLocationsBitbucketServerConfigsDeleteRequest(
name=bbs_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 Bitbucket Server config')
log.DeletedResource(bbs_resource)

View File

@@ -0,0 +1,76 @@
# -*- coding: utf-8 -*- #
# Copyright 2021 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 Bitbucket Server 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.builds import flags as build_flags
from googlecloudsdk.core import properties
from googlecloudsdk.core import resources
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class DescribeAlpha(base.DescribeCommand):
"""Describe a Bitbucket Server 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.
"""
build_flags.AddRegionFlag(parser)
parser.add_argument('CONFIG', help='The id of the Bitbucket Server Config')
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()
regionprop = properties.VALUES.builds.region.Get()
bbs_region = args.region or regionprop or cloudbuild_util.DEFAULT_REGION
parent = properties.VALUES.core.project.Get(required=True)
config_id = args.CONFIG
# Get the bitbucket server config ref
bbs_resource = resources.REGISTRY.Parse(
None,
collection='cloudbuild.projects.locations.bitbucketServerConfigs',
api_version='v1',
params={
'projectsId': parent,
'locationsId': bbs_region,
'bitbucketServerConfigsId': config_id,
})
# Send the Get request
bbs = client.projects_locations_bitbucketServerConfigs.Get(
messages.CloudbuildProjectsLocationsBitbucketServerConfigsGetRequest(
name=bbs_resource.RelativeName()))
return bbs

View File

@@ -0,0 +1,77 @@
# -*- coding: utf-8 -*- #
# Copyright 2021 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 Bitbucket Server 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.builds import flags as build_flags
from googlecloudsdk.core import properties
from googlecloudsdk.core import resources
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class ListAlpha(base.ListCommand):
"""List all Bitbucket Server 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.
"""
build_flags.AddRegionFlag(parser)
parser.display_info.AddFormat("""
table(
name,
createTime.date('%Y-%m-%dT%H:%M:%S%Oz', undefined='-'),
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()
parent = properties.VALUES.core.project.Get(required=True)
regionprop = properties.VALUES.builds.region.Get()
bbs_region = args.region or regionprop or cloudbuild_util.DEFAULT_REGION
# Get the parent project ref
parent_resource = resources.REGISTRY.Create(
collection='cloudbuild.projects.locations',
projectsId=parent,
locationsId=bbs_region)
# Send the List request
bbs_list = client.projects_locations_bitbucketServerConfigs.List(
messages.CloudbuildProjectsLocationsBitbucketServerConfigsListRequest(
parent=parent_resource.RelativeName())).bitbucketServerConfigs
return bbs_list

View File

@@ -0,0 +1,101 @@
# -*- coding: utf-8 -*- #
# Copyright 2021 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 Bitbucket Server 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 bitbucketserver_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):
"""Update a Bitbucket Server 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 = bitbucketserver_flags.AddBitbucketServerConfigUpdateArgs(parser)
parser.display_info.AddFormat("""
table(
name,
createTime.date('%Y-%m-%dT%H:%M:%S%Oz', undefined='-'),
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()
config_id = args.CONFIG
bbs = cloudbuild_util.BitbucketServerConfigFromArgs(args, True)
parent = properties.VALUES.core.project.Get(required=True)
regionprop = properties.VALUES.builds.region.Get()
bbs_region = args.region or regionprop or cloudbuild_util.DEFAULT_REGION
# Get the bitbucket server config ref
bbs_resource = resources.REGISTRY.Parse(
None,
collection='cloudbuild.projects.locations.bitbucketServerConfigs',
api_version='v1',
params={
'projectsId': parent,
'locationsId': bbs_region,
'bitbucketServerConfigsId': config_id,
})
update_mask = cloudbuild_util.MessageToFieldPaths(bbs)
req = messages.CloudbuildProjectsLocationsBitbucketServerConfigsPatchRequest(
name=bbs_resource.RelativeName(),
bitbucketServerConfig=bbs,
updateMask=','.join(update_mask))
# Send the Update request
updated_op = client.projects_locations_bitbucketServerConfigs.Patch(req)
op_resource = resources.REGISTRY.ParseRelativeName(
updated_op.name, collection='cloudbuild.projects.locations.operations')
updated_bbs = waiter.WaitFor(
waiter.CloudOperationPoller(
client.projects_locations_bitbucketServerConfigs,
client.projects_locations_operations), op_resource,
'Updating Bitbucket Server config')
log.UpdatedResource(bbs_resource)
return updated_bbs

View File

@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*- #
# Copyright 2020 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 GitHub 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 GitHub(base.Group):
"""Manage GitHub Enterprise configurations for Cloud Build."""
category = base.CI_CD_CATEGORY

View File

@@ -0,0 +1,101 @@
# -*- coding: utf-8 -*- #
# Copyright 2020 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 GitHub 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 githubenterprise_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 GitHub 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 = githubenterprise_flags.AddGitHubEnterpriseConfigCreateArgs(parser)
parser.display_info.AddFormat("""
table(
name,
createTime.date('%Y-%m-%dT%H:%M:%S%Oz', undefined='-'),
host_url,
app_id
)
""")
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()
ghe = cloudbuild_util.GitHubEnterpriseConfigFromArgs(args, False)
regionprop = properties.VALUES.builds.region.Get()
location = args.region or regionprop or cloudbuild_util.DEFAULT_REGION
parent = properties.VALUES.core.project.Get(required=True)
# Get the parent project ref
parent_resource = resources.REGISTRY.Create(
collection='cloudbuild.projects.locations',
projectsId=parent,
locationsId=location)
# Send the Create request
created_op = client.projects_locations_githubEnterpriseConfigs.Create(
messages.CloudbuildProjectsLocationsGithubEnterpriseConfigsCreateRequest(
parent=parent_resource.RelativeName(),
gheConfigId=args.name,
gitHubEnterpriseConfig=ghe,
projectId=parent))
op_resource = resources.REGISTRY.ParseRelativeName(
created_op.name, collection='cloudbuild.projects.locations.operations')
created_config = waiter.WaitFor(
waiter.CloudOperationPoller(client.projects_githubEnterpriseConfigs,
client.projects_locations_operations),
op_resource, 'Creating github enterprise config')
ghe_resource = resources.REGISTRY.Parse(
None,
collection='cloudbuild.projects.locations.githubEnterpriseConfigs',
api_version='v1',
params={
'projectsId': parent,
'githubEnterpriseConfigsId': created_config.name,
'locationsId': location,
})
log.CreatedResource(ghe_resource)
return created_config

View File

@@ -0,0 +1,89 @@
# -*- coding: utf-8 -*- #
# Copyright 2020 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 github 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.builds import flags as build_flags
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 github 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.
"""
parser.add_argument('CONFIG', help='The id of the GitHub Enterprise Config')
build_flags.AddRegionFlag(parser, hidden=False, required=False)
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)
regionprop = properties.VALUES.builds.region.Get()
location = args.region or regionprop or cloudbuild_util.DEFAULT_REGION
config_id = args.CONFIG
# Get the github enterprise config ref
ghe_resource = resources.REGISTRY.Parse(
None,
collection='cloudbuild.projects.locations.githubEnterpriseConfigs',
api_version='v1',
params={
'projectsId': parent,
'githubEnterpriseConfigsId': config_id,
'locationsId': location,
})
# Send the Delete request
deleted_op = client.projects_locations_githubEnterpriseConfigs.Delete(
messages.CloudbuildProjectsLocationsGithubEnterpriseConfigsDeleteRequest(
name=ghe_resource.RelativeName(),
configId=config_id,
projectId=parent))
op_resource = resources.REGISTRY.ParseRelativeName(
deleted_op.name, collection='cloudbuild.projects.locations.operations')
waiter.WaitFor(
waiter.CloudOperationPollerNoResources(
client.projects_locations_operations), op_resource,
'Deleting GitHub Enterprise Config')
log.DeletedResource(ghe_resource)

View File

@@ -0,0 +1,83 @@
# -*- coding: utf-8 -*- #
# Copyright 2020 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 github 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.builds import flags as build_flags
from googlecloudsdk.core import properties
from googlecloudsdk.core import resources
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class DescribeAlpha(base.DescribeCommand):
"""Describe a github enterprise config used 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.add_argument('CONFIG',
help='The id of the GitHub Enterprise Config')
build_flags.AddRegionFlag(parser, hidden=False, required=False)
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
regionprop = properties.VALUES.builds.region.Get()
location = args.region or regionprop or cloudbuild_util.DEFAULT_REGION
# Get the github enterprise config ref
ghe_resource = resources.REGISTRY.Parse(
None,
collection='cloudbuild.projects.locations.githubEnterpriseConfigs',
api_version='v1',
params={
'projectsId': parent,
'githubEnterpriseConfigsId': config_id,
'locationsId': location,
})
# Send the Get request
ghe = client.projects_locations_githubEnterpriseConfigs.Get(
messages.CloudbuildProjectsLocationsGithubEnterpriseConfigsGetRequest(
name=ghe_resource.RelativeName(),
configId=config_id,
projectId=parent))
return ghe

View File

@@ -0,0 +1,82 @@
# -*- coding: utf-8 -*- #
# Copyright 2020 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 github 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.builds import flags as build_flags
from googlecloudsdk.core import properties
from googlecloudsdk.core import resources
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class ListAlpha(base.ListCommand):
"""List all github 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.
"""
parser.display_info.AddFormat("""
table(
name,
createTime.date('%Y-%m-%dT%H:%M:%S%Oz', undefined='-'),
host_url,
app_id
)
""")
build_flags.AddRegionFlag(parser, hidden=False, required=False)
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)
regionprop = properties.VALUES.builds.region.Get()
location = args.region or regionprop or cloudbuild_util.DEFAULT_REGION
# Get the parent project ref
parent_resource = resources.REGISTRY.Create(
collection='cloudbuild.projects.locations',
projectsId=parent,
locationsId=location)
# Send the List request
ghe_list = client.projects_locations_githubEnterpriseConfigs.List(
messages.CloudbuildProjectsLocationsGithubEnterpriseConfigsListRequest(
parent=parent_resource.RelativeName(),
projectId=parent)).configs
return ghe_list

View File

@@ -0,0 +1,113 @@
# -*- coding: utf-8 -*- #
# Copyright 2020 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 github 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 githubenterprise_flags
from googlecloudsdk.core import log
from googlecloudsdk.core import properties
from googlecloudsdk.core import resources
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class UpdateAlpha(base.UpdateCommand):
"""Update github enterprise config used 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 = githubenterprise_flags.AddGitHubEnterpriseConfigUpdateArgs(parser)
parser.display_info.AddFormat("""
table(
name,
createTime.date('%Y-%m-%dT%H:%M:%S%Oz', undefined='-'),
host_url,
app_id
)
""")
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:
The updated github enterprise resource.
"""
client = cloudbuild_util.GetClientInstance()
messages = cloudbuild_util.GetMessagesModule()
config_id = args.CONFIG
ghe = cloudbuild_util.GitHubEnterpriseConfigFromArgs(args, True)
regionprop = properties.VALUES.builds.region.Get()
location = args.region or regionprop or cloudbuild_util.DEFAULT_REGION
parent = properties.VALUES.core.project.Get(required=True)
# Get the github enterprise config ref
ghe_resource = resources.REGISTRY.Parse(
None,
collection='cloudbuild.projects.locations.githubEnterpriseConfigs',
api_version='v1',
params={
'projectsId': parent,
'githubEnterpriseConfigsId': config_id,
'locationsId': location,
},
)
update_mask = cloudbuild_util.MessageToFieldPaths(ghe)
update_mask.sort()
req = (
messages.CloudbuildProjectsLocationsGithubEnterpriseConfigsPatchRequest(
name=ghe_resource.RelativeName(),
gitHubEnterpriseConfig=ghe,
updateMask=','.join(update_mask),
)
)
# Send the Update request
updated_op = client.projects_locations_githubEnterpriseConfigs.Patch(req)
op_resource = resources.REGISTRY.ParseRelativeName(
updated_op.name, collection='cloudbuild.projects.locations.operations'
)
updated_ghe = waiter.WaitFor(
waiter.CloudOperationPoller(
client.projects_locations_githubEnterpriseConfigs,
client.projects_locations_operations,
),
op_resource,
'Updating GitHub Enterprise Config',
)
log.UpdatedResource(ghe_resource)
return updated_ghe

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