MCPcopy Create free account
hub / github.com/linuxkit/linuxkit / vCenterConnect

Function vCenterConnect

src/cmd/linuxkit/run_vcenter.go:183–252  ·  view source on GitHub ↗
(ctx context.Context, newVM vmConfig)

Source from the content-addressed store, hash-verified

181}
182
183func vCenterConnect(ctx context.Context, newVM vmConfig) (*govmomi.Client, *object.Datastore, *object.DatacenterFolders, *object.HostSystem, object.NetworkReference, *object.ResourcePool) {
184
185 // Parse URL from string
186 u, err := url.Parse(*newVM.vCenterURL)
187 if err != nil {
188 log.Fatalf("URL can't be parsed, ensure it is https://username:password/<address>/sdk %v", err)
189 }
190
191 // Connect and log in to ESX or vCenter
192 c, err := govmomi.NewClient(ctx, u, true)
193 if err != nil {
194 log.Fatalf("Error logging into vCenter, check address and credentials %v", err)
195 }
196
197 // Create a new finder that will discover the defaults and are looked for Networks/Datastores
198 f := find.NewFinder(c.Client, true)
199
200 // Find one and only datacenter, not sure how VMware linked mode will work
201 dc, err := f.DatacenterOrDefault(ctx, *newVM.dcName)
202 if err != nil {
203 log.Fatalf("No Datacenter instance could be found inside of vCenter %v", err)
204 }
205
206 // Make future calls local to this datacenter
207 f.SetDatacenter(dc)
208
209 // Find Datastore/Network
210 dss, err := f.DatastoreOrDefault(ctx, *newVM.dsName)
211 if err != nil {
212 log.Fatalf("Datastore [%s], could not be found", *newVM.dsName)
213 }
214
215 folders, err := dc.Folders(ctx)
216 if err != nil {
217 log.Fatalln("Error locating default datacenter folder")
218 }
219
220 // This code is shared between Push/Run, a network isn't needed for Pushing an image
221 var net object.NetworkReference
222 if newVM.networkName != nil && *newVM.networkName != "" {
223 net, err = f.NetworkOrDefault(ctx, *newVM.networkName)
224 if err != nil {
225 log.Fatalf("Network [%s], could not be found", *newVM.networkName)
226 }
227 }
228
229 // Check to see if a host has been specified
230 var hs *object.HostSystem
231 if *newVM.vSphereHost != "" {
232 // Find the selected host
233 hs, err = f.HostSystem(ctx, *newVM.vSphereHost)
234 if err != nil {
235 log.Fatalf("vSphere host [%s], could not be found", *newVM.vSphereHost)
236 }
237 } else {
238 allHosts, err := f.HostSystemList(ctx, "*/*")
239 if err != nil || len(allHosts) == 0 {
240 log.Fatalf("No vSphere hosts could be found on vCenter server")

Callers 2

runVCenterCmdFunction · 0.85
pushVCenterCmdFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected