github.com/vmware/govmomi@v0.51.0/cli/namespace/flag.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/flags" 12 "github.com/vmware/govmomi/vapi/namespace" 13 ) 14 15 type namespaceFlag struct { 16 *flags.StorageProfileFlag 17 18 library flags.StringList 19 vmclass flags.StringList 20 storage []string 21 } 22 23 func (ns *namespaceFlag) Register(ctx context.Context, f *flag.FlagSet) { 24 ns.StorageProfileFlag, ctx = flags.NewStorageProfileFlag(ctx, "storage") 25 ns.StorageProfileFlag.Register(ctx, f) 26 27 f.Var(&ns.library, "library", "Content library IDs to associate with the vSphere Namespace.") 28 f.Var(&ns.vmclass, "vmclass", "Virtual machine class IDs to associate with the vSphere Namespace.") 29 } 30 31 func (ns *namespaceFlag) Process(ctx context.Context) error { 32 if err := ns.StorageProfileFlag.Process(ctx); err != nil { 33 return err 34 } 35 36 rc, err := ns.RestClient() 37 if err != nil { 38 return err 39 } 40 41 for i, name := range ns.library { 42 l, err := flags.ContentLibrary(ctx, rc, name) 43 if err == nil { 44 ns.library[i] = l.ID 45 } 46 } 47 48 ns.storage, err = ns.StorageProfileList(ctx) 49 50 return err 51 } 52 53 func (ns *namespaceFlag) storageSpec() []namespace.StorageSpec { 54 s := make([]namespace.StorageSpec, len(ns.storage)) 55 for i := range ns.storage { 56 s[i].Policy = ns.storage[i] 57 } 58 return s 59 } 60 61 func (ns *namespaceFlag) vmServiceSpec() namespace.VmServiceSpec { 62 return namespace.VmServiceSpec{ 63 ContentLibraries: ns.library, 64 VmClasses: ns.vmclass, 65 } 66 }