Skip to content

Commit 5723dca

Browse files
committed
vsphere: Improve createImportSpec logging, sprinkle trace logging
1 parent a0b2be0 commit 5723dca

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

provider/vsphere/internal/vsphereclient/client.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ func (c *Client) lister(ref types.ManagedObjectReference) *list.Lister {
102102
// return the pointer for the same folder, and should also deal with
103103
// the case where folderPath is nil or empty.
104104
func (c *Client) FindFolder(ctx context.Context, folderPath string) (vmFolder *object.Folder, err error) {
105+
c.logger.Tracef("FindFolder() path=%q", folderPath)
105106
if strings.Contains(folderPath, "..") {
106107
// ".." not supported as per:
107108
// https://github.com/vmware/govmomi/blob/master/find/finder.go#L114
@@ -155,6 +156,7 @@ func (c *Client) finder(ctx context.Context) (*find.Finder, *object.Datacenter,
155156
// RemoveVirtualMachines removes VMs matching the given path from the
156157
// system. The path may include wildcards, to match multiple VMs.
157158
func (c *Client) RemoveVirtualMachines(ctx context.Context, path string) error {
159+
c.logger.Tracef("RemoveVirtualMachines() path=%q", path)
158160
finder, _, err := c.finder(ctx)
159161
if err != nil {
160162
return errors.Trace(err)
@@ -215,6 +217,7 @@ func (c *Client) RemoveVirtualMachines(ctx context.Context, path string) error {
215217

216218
// VirtualMachines return list of all VMs in the system matching the given path.
217219
func (c *Client) VirtualMachines(ctx context.Context, path string) ([]*mo.VirtualMachine, error) {
220+
c.logger.Tracef("VirtualMachines() path=%q", path)
218221
finder, _, err := c.finder(ctx)
219222
if err != nil {
220223
return nil, errors.Trace(err)
@@ -242,6 +245,7 @@ func (c *Client) VirtualMachines(ctx context.Context, path string) ([]*mo.Virtua
242245
// ComputeResources returns a slice of all compute resources in the datacenter,
243246
// along with a slice of each compute resource's full path.
244247
func (c *Client) ComputeResources(ctx context.Context) ([]ComputeResource, error) {
248+
c.logger.Tracef("ComputeResources()")
245249
_, datacenter, err := c.finder(ctx)
246250
if err != nil {
247251
return nil, errors.Trace(err)
@@ -294,6 +298,7 @@ func (c *Client) computeResourcesFromRef(ctx context.Context, ref types.ManagedO
294298

295299
// Folders returns the datacenter's folders object.
296300
func (c *Client) Folders(ctx context.Context) (*object.DatacenterFolders, error) {
301+
c.logger.Tracef("Folders()")
297302
_, datacenter, err := c.finder(ctx)
298303
if err != nil {
299304
return nil, errors.Trace(err)
@@ -307,6 +312,7 @@ func (c *Client) Folders(ctx context.Context) (*object.DatacenterFolders, error)
307312

308313
// Datastores returns list of all datastores in the system.
309314
func (c *Client) Datastores(ctx context.Context) ([]mo.Datastore, error) {
315+
c.logger.Tracef("Datastores()")
310316
finder, datacenter, err := c.finder(ctx)
311317
if err != nil {
312318
return nil, errors.Trace(err)
@@ -344,6 +350,7 @@ func (c *Client) Datastores(ctx context.Context) ([]mo.Datastore, error) {
344350
// ResourcePools returns a list of all of the resource pools (possibly
345351
// nested) under the given path.
346352
func (c *Client) ResourcePools(ctx context.Context, path string) ([]*object.ResourcePool, error) {
353+
c.logger.Tracef("ResourcePools() path=%q", path)
347354
finder, _, err := c.finder(ctx)
348355
if err != nil {
349356
return nil, errors.Trace(err)
@@ -365,7 +372,7 @@ func (c *Client) ResourcePools(ctx context.Context, path string) ([]*object.Reso
365372
// whereas parentFolderName is the subfolder in DC's root-folder.
366373
// The parentFolderName will fallback to DC's root-folder if it's an empty string.
367374
func (c *Client) EnsureVMFolder(ctx context.Context, parentFolderName string, relativeFolderPath string) (*object.Folder, error) {
368-
375+
c.logger.Tracef("EnsureVMFolder() parent=%q, rel=%q", parentFolderName, relativeFolderPath)
369376
finder, _, err := c.finder(ctx)
370377
if err != nil {
371378
return nil, errors.Trace(err)
@@ -409,6 +416,7 @@ func (c *Client) EnsureVMFolder(ctx context.Context, parentFolderName string, re
409416

410417
// DestroyVMFolder destroys a folder(folderPath could be either relative path of vmfolder of datacenter or full path).
411418
func (c *Client) DestroyVMFolder(ctx context.Context, folderPath string) error {
419+
c.logger.Tracef("DestroyVMFolder() path=%q", folderPath)
412420
folder, err := c.FindFolder(ctx, folderPath)
413421
if errors.IsNotFound(err) {
414422
return nil
@@ -430,6 +438,7 @@ func (c *Client) DestroyVMFolder(ctx context.Context, folderPath string) error {
430438

431439
// MoveVMFolderInto moves one VM folder into another.
432440
func (c *Client) MoveVMFolderInto(ctx context.Context, parentPath, childPath string) error {
441+
c.logger.Tracef("MoveVMFolderInto() parent=%q, child=%q", parentPath, childPath)
433442
parent, err := c.FindFolder(ctx, parentPath)
434443
if err != nil {
435444
return errors.Trace(err)
@@ -455,6 +464,7 @@ func (c *Client) MoveVMsInto(
455464
folderPath string,
456465
vms ...types.ManagedObjectReference,
457466
) error {
467+
c.logger.Tracef("MoveVMsInto() path=%q, vms=%v", folderPath, vms)
458468
folder, err := c.FindFolder(ctx, folderPath)
459469
if err != nil {
460470
return errors.Trace(err)
@@ -479,6 +489,8 @@ func (c *Client) UpdateVirtualMachineExtraConfig(
479489
vmInfo *mo.VirtualMachine,
480490
metadata map[string]string,
481491
) error {
492+
c.logger.Tracef("UpdateVirtualMachineExtraConfig() vmInfo.Name=%q, metadata=%v",
493+
vmInfo.Name, metadata)
482494
var spec types.VirtualMachineConfigSpec
483495
for k, v := range metadata {
484496
opt := &types.OptionValue{Key: k, Value: v}
@@ -497,6 +509,7 @@ func (c *Client) UpdateVirtualMachineExtraConfig(
497509

498510
// DeleteDatastoreFile deletes a file or directory in the datastore.
499511
func (c *Client) DeleteDatastoreFile(ctx context.Context, datastorePath string) error {
512+
c.logger.Tracef("DeleteDatastoreFile() path=%q", datastorePath)
500513
_, datacenter, err := c.finder(ctx)
501514
if err != nil {
502515
return errors.Trace(err)
@@ -724,6 +737,7 @@ func isManagedObjectNotFound(err error) bool {
724737
// UserHasRootLevelPrivilege returns whether the connected user has the
725738
// specified privilege on the root-level object.
726739
func (c *Client) UserHasRootLevelPrivilege(ctx context.Context, privilege string) (bool, error) {
740+
c.logger.Tracef("UserHasRootLevelPrivilege() privilege=%q", privilege)
727741
session, err := c.client.SessionManager.UserSession(ctx)
728742
if err != nil {
729743
return false, errors.Annotate(err, "getting user session")

provider/vsphere/internal/vsphereclient/createvm.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,6 @@ func (c *Client) ensureTemplateVM(
168168
datastore *object.Datastore,
169169
args CreateVirtualMachineParams,
170170
) (vm *object.VirtualMachine, err error) {
171-
172171
templateFolder, err := c.FindFolder(ctx, path.Join(args.RootVMFolder, vmTemplatePath(args)))
173172
if err != nil && !errors.IsNotFound(err) {
174173
return nil, errors.Trace(err)
@@ -309,6 +308,7 @@ func (c *Client) CreateVirtualMachine(
309308
ctx context.Context,
310309
args CreateVirtualMachineParams,
311310
) (_ *mo.VirtualMachine, err error) {
311+
c.logger.Tracef("CreateVirtualMachine() args.Name=%q", args.Name)
312312
_, datacenter, err := c.finder(ctx)
313313
if err != nil {
314314
return nil, errors.Trace(err)
@@ -422,20 +422,28 @@ func (c *Client) createImportSpec(
422422
args CreateVirtualMachineParams,
423423
datastore *object.Datastore,
424424
) (*types.OvfCreateImportSpecResult, error) {
425-
c.logger.Debugf("Creating import spec")
426425
cisp := types.OvfCreateImportSpecParams{
427426
EntityName: vmTemplateName(args),
428427
}
428+
c.logger.Debugf("Creating import spec: pool=%q, datastore=%q, entity=%q",
429+
args.ResourcePool, datastore, cisp.EntityName)
429430

430431
c.logger.Debugf("Fetching OVF manager")
431432
ovfManager := ovf.NewManager(c.client.Client)
432433
spec, err := ovfManager.CreateImportSpec(ctx, UbuntuOVF, args.ResourcePool, datastore, cisp)
433-
c.logger.Debugf("ImportSpec built")
434434
if err != nil {
435+
c.logger.Debugf("CreateImportSpec error: err=%v", err)
435436
return nil, errors.Trace(err)
436-
} else if spec.Error != nil {
437-
return nil, errors.New(spec.Error[0].LocalizedMessage)
437+
} else if len(spec.Error) > 0 {
438+
messages := make([]string, len(spec.Error))
439+
for i, e := range spec.Error {
440+
messages[i] = e.LocalizedMessage
441+
}
442+
message := strings.Join(messages, "; ")
443+
c.logger.Debugf("CreateImportSpec fault: messages=%s", message)
444+
return nil, errors.New(message)
438445
}
446+
c.logger.Debugf("CreateImportSpec succeeded")
439447
return spec, nil
440448
}
441449

0 commit comments

Comments
 (0)