HEX
Server: Apache/2.4.65 (Ubuntu)
System: Linux ielts-store-v2 6.8.0-1036-gcp #38~22.04.1-Ubuntu SMP Thu Aug 14 01:19:18 UTC 2025 x86_64
User: root (0)
PHP: 7.2.34-54+ubuntu20.04.1+deb.sury.org+1
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
File: //snap/google-cloud-cli/current/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)