169 lines
5.5 KiB
Python
169 lines
5.5 KiB
Python
# -*- 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.
|
|
"""Set up flags for creating or updating a Github Enterprise config."""
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import unicode_literals
|
|
|
|
from googlecloudsdk.command_lib.builds import flags as build_flags
|
|
|
|
|
|
def AddGitHubEnterpriseConfigArgs(parser, update=False):
|
|
"""Sets up all the argparse flags for creating or updating a GHE config.
|
|
|
|
Args:
|
|
parser: An argparse.ArgumentParser-like object.
|
|
update: If true, use the version of the flags for updating a config.
|
|
Otherwise, use the version for creating a config.
|
|
|
|
Returns:
|
|
The parser argument with GitHub Enterprise config flags added in.
|
|
"""
|
|
parser.add_argument(
|
|
'--host-uri',
|
|
required=not update,
|
|
help='The host uri of the GitHub Enterprise Server.')
|
|
parser.add_argument(
|
|
'--app-id',
|
|
type=int,
|
|
required=not update,
|
|
help=(
|
|
'The app id of the GitHub app that should be associated with this'
|
|
' config.'
|
|
),
|
|
)
|
|
if not update:
|
|
parser.add_argument(
|
|
'--peered-network',
|
|
help="""\
|
|
VPC network that should be used when making calls to the GitHub Enterprise Server.
|
|
|
|
If not specified, calls will be made over the public internet.
|
|
""")
|
|
if update:
|
|
parser.add_argument(
|
|
'CONFIG',
|
|
help=
|
|
'The unique identifier of the GitHub Enterprise Config to be updated.'
|
|
)
|
|
parser.add_argument(
|
|
'--webhook-key',
|
|
help="""\
|
|
The unique identifier that Cloud Build expects to be set as the value for
|
|
the query field `webhook_key` on incoming webhook requests.
|
|
|
|
If this is not set, Cloud Build will generate one on the user's behalf.
|
|
""")
|
|
gcs_or_secretmanager = parser.add_mutually_exclusive_group(
|
|
required=not update)
|
|
gcs = gcs_or_secretmanager.add_argument_group(
|
|
'Cloud Storage location of the GitHub App credentials:')
|
|
gcs.add_argument(
|
|
'--gcs-bucket',
|
|
required=True,
|
|
help='The Cloud Storage bucket containing the credential payload.')
|
|
gcs.add_argument(
|
|
'--gcs-object',
|
|
required=True,
|
|
help='The Cloud Storage object containing the credential payload.')
|
|
gcs.add_argument(
|
|
'--generation',
|
|
type=int,
|
|
help="""\
|
|
The object generation to read the credential payload from.
|
|
|
|
If this is not set, Cloud Build will read the latest version.
|
|
""")
|
|
secretmanager = gcs_or_secretmanager.add_argument_group(
|
|
'Secret Manager resources of the GitHub App credentials:')
|
|
secretmanager.add_argument(
|
|
'--private-key-name',
|
|
required=True,
|
|
help='Secret Manager resource containing the private key.')
|
|
secretmanager.add_argument(
|
|
'--webhook-secret-name',
|
|
required=True,
|
|
help='Secret Manager resource containing the webhook key.')
|
|
secretmanager.add_argument(
|
|
'--oauth-secret-name',
|
|
required=True,
|
|
help='Secret Manager resource containing the oauth secret.')
|
|
secretmanager.add_argument(
|
|
'--oauth-client-id-name',
|
|
required=True,
|
|
help='Secret Manager resource containing the oauth client id.')
|
|
secretmanager.add_argument(
|
|
'--private-key-version-name',
|
|
help='Secret Manager SecretVersion resource containing the private key.'
|
|
)
|
|
secretmanager.add_argument(
|
|
'--webhook-secret-version-name',
|
|
help='Secret Manager SecretVersion resource containing the webhook key.'
|
|
)
|
|
secretmanager.add_argument(
|
|
'--oauth-secret-version-name',
|
|
help='Secret Manager SecretVersion resource containing the oauth secret.'
|
|
)
|
|
secretmanager.add_argument(
|
|
'--oauth-client-id-version-name',
|
|
help=
|
|
'Secret Manager SecretVersion resource containing the oauth client id.',
|
|
)
|
|
return parser
|
|
|
|
|
|
def AddGitHubEnterpriseConfigCreateArgs(parser):
|
|
"""Sets up all the argparse flags for creating a GitHub Enterprise Config.
|
|
|
|
Args:
|
|
parser: An argparse.ArgumentParser-like object.
|
|
|
|
Returns:
|
|
The parser argument with GitHub Enterprise Config flags added in.
|
|
"""
|
|
# Making region and name required together as name is only needed for creating
|
|
# regional GHE configs.
|
|
region = parser.add_argument_group()
|
|
region.add_argument(
|
|
'--name',
|
|
required=True,
|
|
help='The name of the GitHub Enterprise config.',
|
|
)
|
|
region.add_argument(
|
|
'--region',
|
|
required=True,
|
|
help=("""\
|
|
The region of the Cloud Build Service to use.\nMust be set to a supported region
|
|
name (e.g. `us-central1`).\nIf unset, `builds/region`, which is the default
|
|
region to use when working with Cloud Build resources, is used. If builds/region
|
|
is unset, region is set to `global`.
|
|
"""),
|
|
)
|
|
return AddGitHubEnterpriseConfigArgs(parser, update=False)
|
|
|
|
|
|
def AddGitHubEnterpriseConfigUpdateArgs(parser):
|
|
"""Sets up all the argparse flags for updating a GitHub Enterprise Config.
|
|
|
|
Args:
|
|
parser: An argparse.ArgumentParser-like object.
|
|
|
|
Returns:
|
|
The parser argument with GitHub Enterprise Config flags added in.
|
|
"""
|
|
build_flags.AddRegionFlag(parser)
|
|
return AddGitHubEnterpriseConfigArgs(parser, update=True)
|