示例#1
0
 def _CreateInstanceGroupManager(self, args, group_ref, template_ref,
                                 client, holder):
     """Create parts of Instance Group Manager shared for the track."""
     instance_groups_flags.ValidateManagedInstanceGroupScopeArgs(
         args, holder.resources)
     instance_groups_flags.ValidateManagedInstanceGroupStatefulProperties(
         args)
     health_check = managed_instance_groups_utils.GetHealthCheckUri(
         holder.resources, args, self.HEALTH_CHECK_ARG)
     return client.messages.InstanceGroupManager(
         name=group_ref.Name(),
         description=args.description,
         instanceTemplate=template_ref.SelfLink(),
         baseInstanceName=self._GetInstanceGroupManagerBaseInstanceName(
             args.base_instance_name, group_ref),
         targetPools=self._GetInstanceGroupManagerTargetPools(
             args.target_pool, group_ref, holder),
         targetSize=int(args.size),
         autoHealingPolicies=(
             managed_instance_groups_utils.CreateAutohealingPolicies(
                 client.messages, health_check, args.initial_delay)),
         distributionPolicy=self._CreateDistributionPolicy(
             args.zones, holder.resources, client.messages),
         statefulPolicy=self._GetStatefulPolicy(args, client),
     )
示例#2
0
  def _CreateInstanceGroupManager(self, args, group_ref, template_ref, client,
                                  holder):
    """Create parts of Instance Group Manager shared for the track."""
    instance_groups_flags.ValidateManagedInstanceGroupScopeArgs(
        args, holder.resources)
    health_check = managed_instance_groups_utils.GetHealthCheckUri(
        holder.resources, args)
    auto_healing_policies = (
        managed_instance_groups_utils.CreateAutohealingPolicies(
            client.messages, health_check, args.initial_delay))
    managed_instance_groups_utils.ValidateAutohealingPolicies(
        auto_healing_policies)
    instance_groups_flags.ValidateMigInstanceRedistributionTypeFlag(
        args.GetValue('instance_redistribution_type'), group_ref)
    update_policy = (managed_instance_groups_utils
                     .ApplyInstanceRedistributionTypeToUpdatePolicy)(
                         client, args.GetValue('instance_redistribution_type'),
                         None)

    return client.messages.InstanceGroupManager(
        name=group_ref.Name(),
        description=args.description,
        instanceTemplate=template_ref.SelfLink(),
        baseInstanceName=self._GetInstanceGroupManagerBaseInstanceName(
            args.base_instance_name, group_ref),
        targetPools=self._GetInstanceGroupManagerTargetPools(
            args.target_pool, group_ref, holder),
        targetSize=int(args.size),
        autoHealingPolicies=auto_healing_policies,
        distributionPolicy=self._CreateDistributionPolicy(
            args.zones, holder.resources, client.messages),
        updatePolicy=update_policy,
    )
示例#3
0
 def _CreateInstanceGroupManager(
     self, args, group_ref, template_ref, client, holder):
   """Create parts of Instance Group Manager shared for the track."""
   if (group_ref.Collection() != 'compute.instanceGroupManagers' and
       args.IsSpecified('stateful_disks')):
     raise exceptions.BadArgumentException(
         '--stateful-disks',
         'Allowed only with zonal managed instance groups.')
   instance_groups_flags.ValidateManagedInstanceGroupScopeArgs(
       args, holder.resources)
   health_check = managed_instance_groups_utils.GetHealthCheckUri(
       holder.resources, args, self.HEALTH_CHECK_ARG)
   return client.messages.InstanceGroupManager(
       name=group_ref.Name(),
       description=args.description,
       instanceTemplate=template_ref.SelfLink(),
       baseInstanceName=self._GetInstanceGroupManagerBaseInstanceName(
           args.base_instance_name, group_ref),
       targetPools=self._GetInstanceGroupManagerTargetPools(
           args.target_pool, group_ref, holder),
       targetSize=int(args.size),
       autoHealingPolicies=(
           managed_instance_groups_utils.CreateAutohealingPolicies(
               client.messages, health_check, args.initial_delay)),
       distributionPolicy=self._CreateDistributionPolicy(
           args.zones, holder.resources, client.messages),
       statefulPolicy=self._GetStatefulPolicy(args.stateful_disks, client),
   )
示例#4
0
    def CreateRequests(self, args):
        """Creates and returns an instanceGroupManagers.Insert request.

    Args:
      args: the argparse arguments that this command was invoked with.

    Returns:
      request: a singleton list containing
               ComputeManagedInstanceGroupsInsertRequest message object.
    """
        instance_groups_flags.ValidateManagedInstanceGroupScopeArgs(
            args, self.resources)
        group_ref = self._CreateGroupReference(args)
        template_ref = self.resources.Parse(
            args.template, collection='compute.instanceTemplates')
        instance_group_manager = self._CreateInstanceGroupManager(
            args, group_ref, template_ref)
        instance_group_manager.autoHealingPolicies = (
            managed_instance_groups_utils.CreateAutohealingPolicies(
                self.resources, self.messages, args))
        instance_group_manager.distributionPolicy = self._CreateDistributionPolicy(
            args.zones)
        request = self.CreateResourceRequest(group_ref, instance_group_manager)
        service = self.GetServiceForGroup(group_ref)
        return [(service, self.method, request)]
示例#5
0
 def _CreateInstanceGroupManager(self, args, group_ref, template_ref,
                                 client, holder):
     """Create parts of Instance Group Manager shared for the track."""
     instance_groups_flags.ValidateManagedInstanceGroupScopeArgs(
         args, holder.resources)
     return client.messages.InstanceGroupManager(
         name=group_ref.Name(),
         description=args.description,
         instanceTemplate=template_ref.SelfLink(),
         baseInstanceName=self._GetInstanceGroupManagerBaseInstanceName(
             args.base_instance_name, group_ref),
         targetPools=self._GetInstanceGroupManagerTargetPools(
             args.target_pool, group_ref, holder),
         targetSize=int(args.size),
         distributionPolicy=self._CreateDistributionPolicy(
             args.zones, holder.resources, client.messages),
     )
    def _CreateInstanceGroupManager(self, args, group_ref, template_ref,
                                    client, holder):
        """Create parts of Instance Group Manager shared for the track."""
        managed_flags.ValidateRegionalMigFlagsUsage(args, REGIONAL_FLAGS,
                                                    group_ref)
        instance_groups_flags.ValidateManagedInstanceGroupScopeArgs(
            args, holder.resources)
        health_check = managed_instance_groups_utils.GetHealthCheckUri(
            holder.resources, args)
        auto_healing_policies = (
            managed_instance_groups_utils.CreateAutohealingPolicies(
                client.messages, health_check, args.initial_delay))
        managed_instance_groups_utils.ValidateAutohealingPolicies(
            auto_healing_policies)
        update_policy = (managed_instance_groups_utils.
                         ApplyInstanceRedistributionTypeToUpdatePolicy)(
                             client,
                             args.GetValue('instance_redistribution_type'),
                             None)

        instance_group_manager = client.messages.InstanceGroupManager(
            name=group_ref.Name(),
            description=args.description,
            instanceTemplate=template_ref.SelfLink(),
            baseInstanceName=args.base_instance_name,
            targetPools=self._GetInstanceGroupManagerTargetPools(
                args.target_pool, group_ref, holder),
            targetSize=int(args.size),
            autoHealingPolicies=auto_healing_policies,
            distributionPolicy=self._CreateDistributionPolicy(
                args, holder.resources, client.messages),
            updatePolicy=update_policy,
        )

        self._HandleStatefulArgs(instance_group_manager, args, client)

        # Validate updatePolicy + statefulPolicy combination
        ValidateUpdatePolicyAgainstStateful(
            instance_group_manager.updatePolicy, group_ref,
            instance_group_manager.statefulPolicy, client)

        return instance_group_manager