github.com/vmware/govmomi@v0.51.0/cli/disk/tags.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 disk
     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/vim25/types"
    14  )
    15  
    16  type tags struct {
    17  	*flags.ClientFlag
    18  	types.VslmTagEntry
    19  	attach bool
    20  }
    21  
    22  func init() {
    23  	cli.Register("disk.tags.attach", &tags{attach: true})
    24  	cli.Register("disk.tags.detach", &tags{attach: false})
    25  }
    26  
    27  func (cmd *tags) Register(ctx context.Context, f *flag.FlagSet) {
    28  	cmd.ClientFlag, ctx = flags.NewClientFlag(ctx)
    29  	cmd.ClientFlag.Register(ctx, f)
    30  
    31  	f.StringVar(&cmd.ParentCategoryName, "c", "", "Tag category")
    32  }
    33  
    34  func (cmd *tags) Usage() string {
    35  	return "NAME ID"
    36  }
    37  
    38  func (cmd *tags) name() string {
    39  	if cmd.attach {
    40  		return "attach"
    41  	}
    42  	return "detach"
    43  }
    44  
    45  func (cmd *tags) Description() string {
    46  	if cmd.attach {
    47  		return `Attach tag NAME to disk ID.
    48  
    49  Examples:
    50    govc disk.tags.attach -c k8s-region k8s-region-us $id`
    51  	}
    52  
    53  	return `Detach tag NAME from disk ID.
    54  
    55  Examples:
    56    govc disk.tags.detach -c k8s-region k8s-region-us $id`
    57  }
    58  
    59  func (cmd *tags) Run(ctx context.Context, f *flag.FlagSet) error {
    60  	c, err := cmd.Client()
    61  	if err != nil {
    62  		return err
    63  	}
    64  
    65  	m, err := NewManager(ctx, c, nil)
    66  	if err != nil {
    67  		return err
    68  	}
    69  
    70  	cmd.TagName = f.Arg(0)
    71  	method := m.DetachTag
    72  	if cmd.attach {
    73  		method = m.AttachTag
    74  	}
    75  	return method(ctx, f.Arg(1), cmd.VslmTagEntry)
    76  }