Exemple #1
0
    def Run(self, args):
        instance_groups_flags.ValidateMigStatefulFlagsForInstanceConfigs(
            args, need_disk_source=True)

        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        client = holder.client
        resources = holder.resources

        igm_ref = (
            instance_groups_flags.MULTISCOPE_INSTANCE_GROUP_MANAGER_ARG.
            ResolveAsResource)(
                args,
                resources,
                scope_lister=compute_flags.GetDefaultScopeLister(client))

        instance_ref = self._CreateNewInstanceReference(
            holder=holder, igm_ref=igm_ref, instance_name=args.instance)

        per_instance_config_message = (
            instance_configs_messages.CreatePerInstanceConfigMessage)(
                holder,
                instance_ref,
                args.stateful_disk,
                args.stateful_metadata,
                disk_getter=NonExistentDiskGetter())

        operation_ref, service = instance_configs_messages.CallCreateInstances(
            holder=holder,
            igm_ref=igm_ref,
            per_instance_config_message=per_instance_config_message)

        operation_poller = poller.Poller(service)
        create_result = waiter.WaitFor(operation_poller, operation_ref,
                                       'Creating instance.')
        return create_result
Exemple #2
0
    def Run(self, args):
        instance_groups_flags.ValidateMigStatefulFlagsForInstanceConfigs(
            args, for_update=True)

        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        client = holder.client
        resources = holder.resources

        igm_ref = (
            instance_groups_flags.MULTISCOPE_INSTANCE_GROUP_MANAGER_ARG.
            ResolveAsResource)(
                args,
                resources,
                scope_lister=compute_flags.GetDefaultScopeLister(client),
            )
        instance_ref = self._CreateInstanceReference(
            holder=holder, igm_ref=igm_ref, instance_name=args.instance)

        configs_getter = (instance_configs_getter.
                          InstanceConfigsGetterWithSimpleCache)(client)
        configs_getter.check_if_instance_config_exists(
            igm_ref=igm_ref, instance_ref=instance_ref, should_exist=True)

        per_instance_config_message = self._CombinePerInstanceConfigMessage(
            holder, configs_getter, igm_ref, instance_ref, args.stateful_disk,
            args.remove_stateful_disks, args.stateful_metadata,
            args.remove_stateful_metadata)

        operation_ref = instance_configs_messages.CallPerInstanceConfigUpdate(
            holder=holder,
            igm_ref=igm_ref,
            per_instance_config_message=per_instance_config_message)

        if igm_ref.Collection() == 'compute.instanceGroupManagers':
            service = holder.client.apitools_client.instanceGroupManagers
        elif igm_ref.Collection() == 'compute.regionInstanceGroupManagers':
            service = holder.client.apitools_client.regionInstanceGroupManagers
        else:
            raise ValueError('Unknown reference type {0}'.format(
                igm_ref.Collection()))

        operation_poller = poller.Poller(service)
        update_result = waiter.WaitFor(operation_poller, operation_ref,
                                       'Updating instance config.')

        if args.update_instance:
            apply_operation_ref = (
                instance_configs_messages.CallApplyUpdatesToInstances)(
                    holder=holder,
                    igm_ref=igm_ref,
                    instances=[six.text_type(instance_ref)],
                    minimal_action=args.instance_update_minimal_action)
            return waiter.WaitFor(operation_poller, apply_operation_ref,
                                  'Applying updates to instances.')

        return update_result
Exemple #3
0
    def Run(self, args):
        instance_groups_flags.ValidateMigStatefulFlagsForInstanceConfigs(args)

        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        client = holder.client
        resources = holder.resources

        igm_ref = (
            instance_groups_flags.MULTISCOPE_INSTANCE_GROUP_MANAGER_ARG.
            ResolveAsResource)(
                args,
                resources,
                scope_lister=compute_flags.GetDefaultScopeLister(client),
            )

        instance_ref = self._CreateInstanceReference(
            holder=holder, igm_ref=igm_ref, instance_name=args.instance)

        configs_getter = (instance_configs_getter.
                          InstanceConfigsGetterWithSimpleCache)(client)
        configs_getter.check_if_instance_config_exists(
            igm_ref=igm_ref, instance_ref=instance_ref, should_exist=False)

        per_instance_config_message = self._GetPerInstanceConfigMessage(
            holder, instance_ref, args.stateful_disk, args.stateful_metadata)

        operation_ref = instance_configs_messages.CallPerInstanceConfigUpdate(
            holder=holder,
            igm_ref=igm_ref,
            per_instance_config_message=per_instance_config_message)

        if igm_ref.Collection() == 'compute.instanceGroupManagers':
            service = client.apitools_client.instanceGroupManagers
        else:
            service = client.apitools_client.regionInstanceGroupManagers

        operation_poller = poller.Poller(service)
        create_result = waiter.WaitFor(operation_poller, operation_ref,
                                       'Creating instance config.')

        if args.force_instance_update:
            apply_operation_ref = (
                instance_configs_messages.CallApplyUpdatesToInstances)(
                    holder=holder,
                    igm_ref=igm_ref,
                    instances=[str(instance_ref)])
            return waiter.WaitFor(operation_poller, apply_operation_ref,
                                  'Applying updates to instances.')

        return create_result
Exemple #4
0
 def _ValidateStatefulFlagsForInstanceConfigs(self, args):
     instance_groups_flags.ValidateMigStatefulFlagsForInstanceConfigs(
         args, need_disk_source=True)
Exemple #5
0
 def _ValidateStatefulFlagsForInstanceConfigs(self, args):
     instance_groups_flags.ValidateMigStatefulFlagsForInstanceConfigs(args)
 def _ValidateStatefulFlagsForInstanceConfigs(self, args,
                                              per_instance_config):
     instance_groups_flags.ValidateMigStatefulFlagsForInstanceConfigs(
         args, for_update=True)