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/394/lib/googlecloudsdk/command_lib/netapp/host_groups/flags.py
# -*- coding: utf-8 -*- #
# Copyright 2025 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.

"""Flags and helpers for the Cloud NetApp Files Host Groups commands."""

from googlecloudsdk.calliope import arg_parsers
from googlecloudsdk.command_lib.netapp import flags
from googlecloudsdk.command_lib.util.apis import arg_utils
from googlecloudsdk.command_lib.util.args import labels_util
from googlecloudsdk.command_lib.util.concepts import concept_parsers

## Helper functions to add args / flags for HostGroups gcloud commands ##


def GetHostGroupTypeEnumFromArg(choice, messages):
  """Returns the Choice Enum for Host Group Type.

  Args:
    choice: The choice for host group type as string
    messages: The messages module.

  Returns:
    the host group type enum.
  """
  return arg_utils.ChoiceToEnum(
      choice=choice,
      enum_type=messages.HostGroup.TypeValueValuesEnum,
  )


def GetHostGroupOsTypeEnumFromArg(choice, messages):
  """Returns the Choice Enum for Host Group OS Type.

  Args:
    choice: The choice for host group os type as string
    messages: The messages module.

  Returns:
    the host group os type enum.
  """
  return arg_utils.ChoiceToEnum(
      choice=choice,
      enum_type=messages.HostGroup.OsTypeValueValuesEnum,
  )


def AddHostGroupTypeArg(parser):
  help_text = """\
  String indicating the type of host group.
  The supported values are: 'ISCSI_INITIATOR'
  """

  parser.add_argument(
      '--type',
      type=str,
      help=help_text,
      required=True,
      choices=['ISCSI_INITIATOR'],
  )


def AddHostGroupHostsArg(parser, required=False):
  help_text = """\
  List of hosts in the host group.
  """

  parser.add_argument(
      '--hosts',
      type=arg_parsers.ArgList(min_length=1, element_type=str),
      help=help_text,
      required=required,
      metavar='HOST',
  )


def AddHostGroupOsTypeArg(parser):
  help_text = """\
  String indicating the OS type of the hosts in the host group.
  The supported values are: 'LINUX', 'WINDOWS', 'ESXI'
  """

  parser.add_argument(
      '--os-type',
      type=str,
      help=help_text,
      required=True,
      choices=['LINUX', 'WINDOWS', 'ESXI'],
  )

## Helper function to combine HostGroups args / flags for gcloud commands ##


def AddHostGroupCreateArgs(parser):
  """Add args for creating a Host Group."""
  concept_parsers.ConceptParser([
      flags.GetHostGroupPresentationSpec('The Host Group to create.')
  ]).AddToParser(parser)
  AddHostGroupTypeArg(parser)
  AddHostGroupHostsArg(parser, required=True)
  AddHostGroupOsTypeArg(parser)
  flags.AddResourceDescriptionArg(parser, 'Host Group')
  flags.AddResourceAsyncFlag(parser)
  labels_util.AddCreateLabelsFlags(parser)


def AddHostGroupUpdateArgs(parser):
  """Add args for updating a Host Group."""
  concept_parsers.ConceptParser([
      flags.GetHostGroupPresentationSpec('The Host Group to update.')
  ]).AddToParser(parser)
  AddHostGroupHostsArg(parser, required=False)
  flags.AddResourceDescriptionArg(parser, 'Host Group')
  flags.AddResourceAsyncFlag(parser)
  labels_util.AddUpdateLabelsFlags(parser)