github.com/vmware/govmomi@v0.51.0/cli/namespace/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 namespace 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/vapi/namespace" 14 ) 15 16 type create struct { 17 *flags.ClusterFlag 18 *namespaceFlag 19 20 spec namespace.NamespacesInstanceCreateSpec 21 } 22 23 func init() { 24 cli.Register("namespace.create", &create{}) 25 } 26 27 func (cmd *create) Register(ctx context.Context, f *flag.FlagSet) { 28 cmd.ClusterFlag, ctx = flags.NewClusterFlag(ctx) 29 cmd.ClusterFlag.Register(ctx, f) 30 31 cmd.namespaceFlag = &namespaceFlag{} 32 cmd.namespaceFlag.Register(ctx, f) 33 } 34 35 func (cmd *create) Process(ctx context.Context) error { 36 if err := cmd.ClusterFlag.Process(ctx); err != nil { 37 return err 38 } 39 if err := cmd.namespaceFlag.Process(ctx); err != nil { 40 return err 41 } 42 43 cluster, err := cmd.Cluster() 44 if err != nil { 45 return err 46 } 47 48 cmd.spec.Cluster = cluster.Reference().Value 49 cmd.spec.StorageSpecs = cmd.storageSpec() 50 cmd.spec.VmServiceSpec = cmd.vmServiceSpec() 51 52 return nil 53 } 54 55 func (*create) Usage() string { 56 return "NAME" 57 } 58 59 func (cmd *create) Description() string { 60 return `Creates a new vSphere Namespace on a Supervisor. 61 62 The '-library', '-vmclass' and '-storage' flags can each be specified multiple times. 63 64 Examples: 65 govc namespace.create -cluster C1 test-namespace 66 govc namespace.create -cluster C1 -library vmsvc test-namespace 67 govc namespace.create -cluster C1 -library vmsvc -library tkgs test-namespace -storage wcp-policy 68 govc namespace.create -cluster C1 -vmclass best-effort-2xlarge test-namespace 69 govc namespace.create -cluster C1 -vmclass best-effort-2xlarge -vmclass best-effort-4xlarge test-namespace 70 govc namespace.create -cluster C1 -library vmsvc -library tkgs -vmclass best-effort-2xlarge -vmclass best-effort-4xlarge test-namespace` 71 } 72 73 func (cmd *create) Run(ctx context.Context, f *flag.FlagSet) error { 74 cmd.spec.Namespace = f.Arg(0) 75 if f.NArg() != 1 { 76 return flag.ErrHelp 77 } 78 79 rc, err := cmd.namespaceFlag.RestClient() 80 if err != nil { 81 return err 82 } 83 84 nm := namespace.NewManager(rc) 85 86 return nm.CreateNamespace(ctx, cmd.spec) 87 }