Example #1
0
  def ValidateAndParseDiskRefs(self, args, compute_holder):
    if args.replica_zones is None and args.region is not None:
      raise exceptions.RequiredArgumentException(
          '--replica-zones',
          '--replica-zones is required for regional disk creation')
    if args.replica_zones is not None:
      if len(args.replica_zones) != 2:
        raise exceptions.InvalidArgumentException(
            '--replica-zones', 'Exactly two zones are required.')
      return create.ParseRegionDisksResources(
          compute_holder.resources, args.DISK_NAME, args.replica_zones,
          args.project, args.region)
    disk_refs = Create.disks_arg.ResolveAsResource(
        args,
        compute_holder.resources,
        scope_lister=flags.GetDefaultScopeLister(compute_holder.client))

    # --replica-zones is required for regional disks always - also when region
    # is selected in prompt.
    for disk_ref in disk_refs:
      if disk_ref.Collection() == 'compute.regionDisks':
        raise exceptions.RequiredArgumentException(
            '--replica-zones',
            '--replica-zones is required for regional disk creation [{}]'.
            format(disk_ref.SelfLink()))

    return disk_refs
Example #2
0
 def ValidateAndParse(self, args, compute_holder):
     if args.replica_zones is None and args.region is not None:
         raise exceptions.RequiredArgumentException(
             '--replica-zones',
             '--replica-zones is required for regional disk creation')
     if args.replica_zones is not None:
         if len(args.replica_zones) != 2:
             raise exceptions.InvalidArgumentException(
                 '--replica-zones', 'Exactly two zones are required.')
         return create.ParseRegionDisksResources(compute_holder.resources,
                                                 args.DISK_NAME,
                                                 args.replica_zones,
                                                 args.project, args.region)
     return Create.disks_arg.ResolveAsResource(
         args,
         compute_holder.resources,
         scope_lister=flags.GetDefaultScopeLister(compute_holder.client))
Example #3
0
def _ValidateAndParseDiskRefsRegionalReplica(args, compute_holder):
    """Validate flags and parse disks references.

  Subclasses may override it to customize parsing.

  Args:
    args: The argument namespace
    compute_holder: base_classes.ComputeApiHolder instance

  Returns:
    List of compute.regionDisks resources.
  """
    if not args.IsSpecified('replica_zones') and args.IsSpecified('region'):
        raise exceptions.RequiredArgumentException(
            '--replica-zones',
            '--replica-zones is required for regional disk creation')
    if args.replica_zones is not None:
        return create.ParseRegionDisksResources(compute_holder.resources,
                                                args.DISK_NAME,
                                                args.replica_zones,
                                                args.project, args.region)

    disk_refs = Create.disks_arg.ResolveAsResource(
        args,
        compute_holder.resources,
        scope_lister=flags.GetDefaultScopeLister(compute_holder.client))

    # --replica-zones is required for regional disks always - also when region
    # is selected in prompt.
    for disk_ref in disk_refs:
        if disk_ref.Collection() == 'compute.regionDisks':
            raise exceptions.RequiredArgumentException(
                '--replica-zones',
                '--replica-zones is required for regional disk creation [{}]'.
                format(disk_ref.SelfLink()))

    return disk_refs