File: //snap/google-cloud-cli/396/lib/googlecloudsdk/command_lib/container/fleet/packages/flags.py
# -*- coding: utf-8 -*- #
# Copyright 2024 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.
"""Common flags for fleet packages commands."""
from googlecloudsdk.calliope.concepts import concepts
from googlecloudsdk.calliope.concepts import deps
from googlecloudsdk.core import properties
from googlecloudsdk.core import resources
def GetProject(args):
return args.project or properties.VALUES.core.project.Get(required=True)
def GetLocation(args):
return args.location or properties.VALUES.config_delivery.location.Get(
required=True
)
def AddLessFlag(parser):
parser.add_argument(
'--less',
required=False,
default=False,
action='store_true',
help='Show less verbose output.',
)
def AddNameFlag(parser):
parser.add_argument('name', help='Resource name.')
def AddReleaseFlag(parser):
parser.add_argument(
'release', help='Release identifier, either a version or tag.'
)
def AddFleetPackageFlag(parser):
parser.add_argument(
'--fleet-package',
required=True,
help='Parent Fleet Package of the Rollout.',
)
def AddSourceFlag(parser):
parser.add_argument(
'--source',
required=True,
help='Source file containing Fleet Package configuration.',
)
def AddLocationFlag(parser):
parser.add_argument(
'--location', required=False, help='Google Cloud zone or region.'
)
def AddDescriptionFlag(parser):
parser.add_argument(
'--description', required=False, help='Resource description.'
)
def AddResourceBundleFlag(parser):
parser.add_argument(
'--resource-bundle', required=True, help='Resource Bundle name.'
)
def AddSkipCreatingVariantResourcesFlag(parser):
parser.add_argument(
'--skip-creating-variant-resources',
required=False,
help='Whether to opt-in to the alternate variant upload flow.',
default=False,
hidden=True,
action='store_true',
)
def AddForceDeleteFlag(parser, resource_name):
parser.add_argument(
'--force',
required=False,
default=False,
action='store_true',
help=(
'If true, force deletion of any child resources. Otherwise,'
f' attempting to delete a {resource_name} with children will fail.'
),
)
def AddLifecycleFlag(parser):
parser.add_argument(
'--lifecycle', required=False, help='Lifecycle of the Release.'
)
def AddVariantsPatternFlag(parser):
parser.add_argument(
'--variants-pattern',
required=False,
default='*', # default to include all files in the provided directory.
help="""Glob pattern to Variants of the Release, to be paired with the
``--source'' arg.
ex: --source=/manifests-dir/ --variants-pattern=```**```,
--source=/manifests-dir/ --variants-pattern=us-```*```.yaml,
--source=/manifests/dir/ --variants-pattern=```*/*```.yaml""",
)
def ProjectAttributeConfig():
return concepts.ResourceParameterAttributeConfig(
name='project',
help_text='Project ID for the {resource}.',
fallthroughs=[deps.PropertyFallthrough(properties.VALUES.core.project)],
)
def LocationAttributeConfig():
return concepts.ResourceParameterAttributeConfig(
name='location',
help_text='Google Cloud zone or region for the {resource}.',
fallthroughs=[
deps.PropertyFallthrough(properties.VALUES.config_delivery.location)
],
)
def FleetPackageAttributeConfig():
return concepts.ResourceParameterAttributeConfig(
name='fleet-package', help_text='Fleet Package name.'
)
def RolloutAttributeConfig():
return concepts.ResourceParameterAttributeConfig(
name='rollout', help_text='Rollout name.'
)
def GetFleetPackageResourceSpec():
return concepts.ResourceSpec(
'configdelivery.projects.locations.fleetPackages',
resource_name='fleet-package',
fleetPackagesId=FleetPackageAttributeConfig(),
locationsId=LocationAttributeConfig(),
projectsId=ProjectAttributeConfig(),
)
def GetRolloutResourceSpec():
return concepts.ResourceSpec(
'configdelivery.projects.locations.fleetPackages.rollouts',
resource_name='rollout',
rolloutsId=RolloutAttributeConfig(),
fleetPackagesId=FleetPackageAttributeConfig(),
locationsId=LocationAttributeConfig(),
projectsId=ProjectAttributeConfig(),
)
def AddUriFlags(parser, collection, api_version):
"""Adds `--uri` flag to the parser object for list commands.
Args:
parser: The argparse parser.
collection: str, The resource collection name.
api_version: str, The API version to use.
"""
def _GetResourceUri(resource):
resource_relative_name = resources.REGISTRY.ParseRelativeName(
resource.name, collection=collection, api_version=api_version
)
return resource_relative_name.SelfLink()
parser.display_info.AddUriFunc(_GetResourceUri)