github.com/vmware/govmomi@v0.51.0/cli/library/subscriber/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 subscriber 6 7 import ( 8 "context" 9 "flag" 10 "fmt" 11 12 "github.com/vmware/govmomi/cli" 13 "github.com/vmware/govmomi/cli/flags" 14 "github.com/vmware/govmomi/vapi/library" 15 ) 16 17 type create struct { 18 *flags.ClusterFlag 19 *flags.ResourcePoolFlag 20 *flags.HostSystemFlag 21 *flags.NetworkFlag 22 *flags.FolderFlag 23 } 24 25 func init() { 26 cli.Register("library.subscriber.create", &create{}) 27 } 28 29 func (cmd *create) Register(ctx context.Context, f *flag.FlagSet) { 30 cmd.ClusterFlag, ctx = flags.NewClusterFlag(ctx) 31 cmd.ClusterFlag.Register(ctx, f) 32 33 cmd.ResourcePoolFlag, ctx = flags.NewResourcePoolFlag(ctx) 34 cmd.ResourcePoolFlag.Register(ctx, f) 35 36 cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) 37 cmd.HostSystemFlag.Register(ctx, f) 38 39 cmd.NetworkFlag, ctx = flags.NewNetworkFlag(ctx) 40 cmd.NetworkFlag.Register(ctx, f) 41 42 cmd.FolderFlag, ctx = flags.NewFolderFlag(ctx) 43 cmd.FolderFlag.Register(ctx, f) 44 } 45 46 func (cmd *create) Process(ctx context.Context) error { 47 if err := cmd.ClusterFlag.Process(ctx); err != nil { 48 return err 49 } 50 if err := cmd.ResourcePoolFlag.Process(ctx); err != nil { 51 return err 52 } 53 if err := cmd.HostSystemFlag.Process(ctx); err != nil { 54 return err 55 } 56 if err := cmd.NetworkFlag.Process(ctx); err != nil { 57 return err 58 } 59 return cmd.FolderFlag.Process(ctx) 60 } 61 62 func (cmd *create) Usage() string { 63 return "PUBLISHED-LIBRARY SUBSCRIPTION-LIBRARY" 64 } 65 66 func (cmd *create) Description() string { 67 return `Create library subscriber. 68 69 Examples: 70 govc library.subscriber.create -cluster my-cluster published-library subscription-library` 71 } 72 73 func (cmd *create) Run(ctx context.Context, f *flag.FlagSet) error { 74 c, err := cmd.RestClient() 75 if err != nil { 76 return err 77 } 78 79 lib, err := flags.ContentLibrary(ctx, c, f.Arg(0)) 80 if err != nil { 81 return err 82 } 83 m := library.NewManager(c) 84 85 sub, err := flags.ContentLibrary(ctx, c, f.Arg(1)) 86 if err != nil { 87 return err 88 } 89 90 cluster, err := cmd.ClusterIfSpecified() 91 if err != nil { 92 return err 93 } 94 pool, err := cmd.ResourcePoolIfSpecified() 95 if err != nil { 96 return err 97 } 98 host, err := cmd.HostSystemIfSpecified() 99 if err != nil { 100 return err 101 } 102 folder, err := cmd.Folder() 103 if err != nil { 104 return err 105 } 106 network, err := cmd.Network() 107 if err != nil { 108 return err 109 } 110 111 spec := library.SubscriberLibrary{ 112 Target: "USE_EXISTING", 113 Location: "LOCAL", 114 LibraryID: sub.ID, 115 Placement: &library.Placement{ 116 Folder: folder.Reference().Value, 117 Network: network.Reference().Value, 118 }, 119 } 120 121 if pool != nil { 122 spec.Placement.ResourcePool = pool.Reference().Value 123 } 124 if host != nil { 125 spec.Placement.Host = host.Reference().Value 126 } 127 if cluster != nil { 128 spec.Placement.Cluster = cluster.Reference().Value 129 } 130 131 id, err := m.CreateSubscriber(ctx, lib, spec) 132 if err != nil { 133 return err 134 } 135 136 fmt.Println(id) 137 return nil 138 }