github.com/vmware/govmomi@v0.51.0/cli/host/vswitch/add.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 vswitch 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 add struct { 17 *flags.HostSystemFlag 18 19 nic string 20 spec types.HostVirtualSwitchSpec 21 } 22 23 func init() { 24 cli.Register("host.vswitch.add", &add{}) 25 } 26 27 func (cmd *add) Register(ctx context.Context, f *flag.FlagSet) { 28 cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) 29 cmd.HostSystemFlag.Register(ctx, f) 30 31 cmd.spec.NumPorts = 128 // default 32 f.Var(flags.NewInt32(&cmd.spec.NumPorts), "ports", "Number of ports") 33 f.Var(flags.NewInt32(&cmd.spec.Mtu), "mtu", "MTU") 34 f.StringVar(&cmd.nic, "nic", "", "Bridge nic device") 35 } 36 37 func (cmd *add) Process(ctx context.Context) error { 38 if err := cmd.HostSystemFlag.Process(ctx); err != nil { 39 return err 40 } 41 return nil 42 } 43 44 func (cmd *add) Usage() string { 45 return "NAME" 46 } 47 48 func (cmd *add) Run(ctx context.Context, f *flag.FlagSet) error { 49 ns, err := cmd.HostNetworkSystem() 50 if err != nil { 51 return err 52 } 53 54 if cmd.nic != "" { 55 cmd.spec.Bridge = &types.HostVirtualSwitchBondBridge{ 56 NicDevice: []string{cmd.nic}, 57 } 58 } 59 60 return ns.AddVirtualSwitch(ctx, f.Arg(0), &cmd.spec) 61 }