github.com/vmware/govmomi@v0.51.0/cli/task/cancel.go (about)

     1  // © Broadcom. All Rights Reserved.
     2  // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
     3  // SPDX-License-Identifier: Apache-2.0
     4  
     5  package task
     6  
     7  import (
     8  	"context"
     9  	"flag"
    10  
    11  	"github.com/vmware/govmomi/cli"
    12  	"github.com/vmware/govmomi/cli/flags"
    13  	"github.com/vmware/govmomi/object"
    14  	"github.com/vmware/govmomi/vim25/types"
    15  )
    16  
    17  type cancel struct {
    18  	*flags.ClientFlag
    19  }
    20  
    21  func init() {
    22  	cli.Register("task.cancel", &cancel{})
    23  }
    24  
    25  func (cmd *cancel) Register(ctx context.Context, f *flag.FlagSet) {
    26  	cmd.ClientFlag, ctx = flags.NewClientFlag(ctx)
    27  	cmd.ClientFlag.Register(ctx, f)
    28  }
    29  
    30  func (cmd *cancel) Description() string {
    31  	return `Cancel tasks.
    32  
    33  Examples:
    34    govc task.cancel task-759`
    35  }
    36  
    37  func (cmd *cancel) Usage() string {
    38  	return "ID..."
    39  }
    40  
    41  func (cmd *cancel) Process(ctx context.Context) error {
    42  	if err := cmd.ClientFlag.Process(ctx); err != nil {
    43  		return err
    44  	}
    45  	return nil
    46  }
    47  
    48  func (cmd *cancel) Run(ctx context.Context, f *flag.FlagSet) error {
    49  	c, err := cmd.Client()
    50  	if err != nil {
    51  		return err
    52  	}
    53  
    54  	for _, id := range f.Args() {
    55  		var ref types.ManagedObjectReference
    56  
    57  		if !ref.FromString(id) {
    58  			ref.Type = "Task"
    59  			ref.Value = id
    60  		}
    61  
    62  		err = object.NewTask(c, ref).Cancel(ctx)
    63  		if err != nil {
    64  			return err
    65  		}
    66  	}
    67  
    68  	return nil
    69  }