github.com/vmware/govmomi@v0.51.0/cli/cluster/create.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 cluster
     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 create struct {
    17  	*flags.FolderFlag
    18  
    19  	types.ClusterConfigSpecEx
    20  }
    21  
    22  func init() {
    23  	cli.Register("cluster.create", &create{})
    24  }
    25  
    26  func (cmd *create) Register(ctx context.Context, f *flag.FlagSet) {
    27  	cmd.FolderFlag, ctx = flags.NewFolderFlag(ctx)
    28  	cmd.FolderFlag.Register(ctx, f)
    29  }
    30  
    31  func (cmd *create) Usage() string {
    32  	return "CLUSTER"
    33  }
    34  
    35  func (cmd *create) Description() string {
    36  	return `Create CLUSTER in datacenter.
    37  
    38  The cluster is added to the folder specified by the 'folder' flag. If not given,
    39  this defaults to the host folder in the specified or default datacenter.
    40  
    41  Examples:
    42    govc cluster.create ClusterA
    43    govc cluster.create -folder /dc2/test-folder ClusterB`
    44  }
    45  
    46  func (cmd *create) Process(ctx context.Context) error {
    47  	if err := cmd.FolderFlag.Process(ctx); err != nil {
    48  		return err
    49  	}
    50  	return nil
    51  }
    52  
    53  func (cmd *create) Run(ctx context.Context, f *flag.FlagSet) error {
    54  	if f.NArg() != 1 {
    55  		return flag.ErrHelp
    56  	}
    57  
    58  	folder, err := cmd.FolderOrDefault("host")
    59  	if err != nil {
    60  		return err
    61  	}
    62  
    63  	_, err = folder.CreateCluster(ctx, f.Arg(0), cmd.ClusterConfigSpecEx)
    64  
    65  	return err
    66  }