Skip to content

Commit 752124d

Browse files
authored
Add more context to vsphere errors (#354)
1 parent a957d3a commit 752124d

10 files changed

+32
-22
lines changed

pkg/cloudprovider/provider/vsphere/helper.go

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,13 @@ func createLinkClonedVM(vmName, vmImage, datacenter, clusterName, folder string,
4040

4141
dc, err := f.Datacenter(ctx, datacenter)
4242
if err != nil {
43-
return err
43+
return fmt.Errorf("failed to get datacenter: %v", err)
4444
}
4545
f.SetDatacenter(dc)
4646

4747
templateVM, err := f.VirtualMachine(ctx, vmImage)
4848
if err != nil {
49-
return err
49+
return fmt.Errorf("failed to get virtualmachine: %v", err)
5050
}
5151

5252
glog.V(3).Infof("Template VM ref is %+v", templateVM)
@@ -99,7 +99,7 @@ func createLinkClonedVM(vmName, vmImage, datacenter, clusterName, folder string,
9999
var mvm mo.VirtualMachine
100100
err = templateVM.Properties(ctx, templateVM.Reference(), []string{"config", "config.vAppConfig", "config.vAppConfig.property"}, &mvm)
101101
if err != nil {
102-
return err
102+
return fmt.Errorf("failed to extract vapp properties for coreos: %v", err)
103103
}
104104

105105
var propertySpecs []types.VAppPropertySpec
@@ -153,22 +153,24 @@ func createLinkClonedVM(vmName, vmImage, datacenter, clusterName, folder string,
153153
// Create a link cloned VM from the template VM's snapshot
154154
clonedVMTask, err := templateVM.Clone(ctx, targetVMFolder, vmName, *cloneSpec)
155155
if err != nil {
156-
return err
156+
return fmt.Errorf("failed to clone template vm: %v", err)
157157
}
158158

159-
_, err = clonedVMTask.WaitForResult(ctx, nil)
160-
return err
159+
if _, err = clonedVMTask.WaitForResult(ctx, nil); err != nil {
160+
return fmt.Errorf("error when waiting for result of clone task: %v", err)
161+
}
162+
return nil
161163
}
162164

163165
func updateNetworkForVM(ctx context.Context, vm *object.VirtualMachine, currentNetName string, newNetName string) error {
164166
newNet, err := getNetworkFromVM(ctx, vm, newNetName)
165167
if err != nil {
166-
return err
168+
return fmt.Errorf("failed to get network from vm: %v", err)
167169
}
168170

169171
availableData, err := getNetworkDevicesAndBackingsFromVM(ctx, vm, currentNetName)
170172
if err != nil {
171-
return err
173+
return fmt.Errorf("failed to get network devices for vm: %v", err)
172174
}
173175
if len(availableData) == 0 {
174176
return errors.New("found no matching network adapter")
@@ -233,12 +235,12 @@ func getNetworkFromVM(ctx context.Context, vm *object.VirtualMachine, netName st
233235
func createSnapshot(ctx context.Context, vm *object.VirtualMachine, snapshotName string, snapshotDesc string) (object.Reference, error) {
234236
task, err := vm.CreateSnapshot(ctx, snapshotName, snapshotDesc, false, false)
235237
if err != nil {
236-
return nil, err
238+
return nil, fmt.Errorf("failed to create snapshot: %v", err)
237239
}
238240

239241
taskInfo, err := task.WaitForResult(ctx, nil)
240242
if err != nil {
241-
return nil, err
243+
return nil, fmt.Errorf("error waiting for task completion: %v", err)
242244
}
243245
glog.Infof("taskInfo.Result is %s", taskInfo.Result)
244246
return taskInfo.Result.(object.Reference), nil
@@ -249,7 +251,7 @@ func findSnapshot(ctx context.Context, vm *object.VirtualMachine, name string) (
249251

250252
err := vm.Properties(ctx, vm.Reference(), []string{"snapshot"}, &moVirtualMachine)
251253
if err != nil {
252-
return nil, err
254+
return nil, fmt.Errorf("failed to get vm properties: %v", err)
253255
}
254256

255257
if moVirtualMachine.Snapshot == nil {
@@ -288,29 +290,29 @@ func uploadAndAttachISO(f *find.Finder, vmRef *object.VirtualMachine, localIsoFi
288290

289291
datastore, err := f.Datastore(ctx, datastoreName)
290292
if err != nil {
291-
return err
293+
return fmt.Errorf("failed to get datastore: %v", err)
292294
}
293295
p := soap.DefaultUpload
294296
remoteIsoFilePath := fmt.Sprintf("%s/%s", vmRef.Name(), "cloud-init.iso")
295297
glog.V(3).Infof("Uploading userdata ISO to datastore %+v, destination iso is %s\n", datastore, remoteIsoFilePath)
296298
err = datastore.UploadFile(ctx, localIsoFilePath, remoteIsoFilePath, &p)
297299
if err != nil {
298-
return err
300+
return fmt.Errorf("failed to upload iso: %v", err)
299301
}
300302
glog.V(3).Infof("Uploaded ISO file %s", localIsoFilePath)
301303

302304
// Find the cd-rom devide and insert the cloud init iso file into it.
303305
devices, err := vmRef.Device(ctx)
304306
if err != nil {
305-
return err
307+
return fmt.Errorf("failed to get devices: %v", err)
306308
}
307309

308310
// passing empty cd-rom name so that the first one gets returned
309311
cdrom, err := devices.FindCdrom("")
310-
cdrom.Connectable.StartConnected = true
311312
if err != nil {
312-
return err
313+
return fmt.Errorf("failed to find cdrom device: %v", err)
313314
}
315+
cdrom.Connectable.StartConnected = true
314316
iso := datastore.Path(remoteIsoFilePath)
315317
return vmRef.EditDevice(ctx, devices.InsertIso(cdrom, iso))
316318
}

pkg/cloudprovider/provider/vsphere/provider.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,17 +125,17 @@ func (p *provider) AddDefaults(spec v1alpha1.MachineSpec) (v1alpha1.MachineSpec,
125125

126126
finder, err := getDatacenterFinder(cfg.Datacenter, client)
127127
if err != nil {
128-
return spec, changed, err
128+
return spec, changed, fmt.Errorf("failed to get datacenter finder: %v", err)
129129
}
130130

131131
templateVM, err := finder.VirtualMachine(ctx, cfg.TemplateVMName)
132132
if err != nil {
133-
return spec, changed, err
133+
return spec, changed, fmt.Errorf("failed to get virtual machine: %v", err)
134134
}
135135

136136
availableNetworkDevices, err := getNetworkDevicesAndBackingsFromVM(ctx, templateVM, "")
137137
if err != nil {
138-
return spec, changed, err
138+
return spec, changed, fmt.Errorf("failed to get network devices for vm: %v", err)
139139
}
140140

141141
if len(availableNetworkDevices) == 0 {
@@ -381,7 +381,7 @@ func (p *provider) Create(machine *v1alpha1.Machine, _ cloud.MachineUpdater, use
381381
// Upstream issue: https://bugs.launchpad.net/cloud-images/+bug/1573095
382382
err = removeFloppyDevice(virtualMachine)
383383
if err != nil {
384-
return nil, err
384+
return nil, fmt.Errorf("failed to remove floppy device: %v", err)
385385
}
386386

387387
powerOnTask, err := virtualMachine.PowerOn(context.TODO())
@@ -404,7 +404,7 @@ func (p *provider) Delete(machine *v1alpha1.Machine, _ cloud.MachineUpdater) err
404404
if err == cloudprovidererrors.ErrInstanceNotFound {
405405
return nil
406406
}
407-
return err
407+
return fmt.Errorf("failed to get instance: %v", err)
408408
}
409409

410410
config, pc, _, err := p.getConfig(machine.Spec.ProviderConfig)
@@ -499,7 +499,7 @@ func (p *provider) Get(machine *v1alpha1.Machine) (instance.Instance, error) {
499499

500500
finder, err := getDatacenterFinder(config.Datacenter, client)
501501
if err != nil {
502-
return nil, err
502+
return nil, fmt.Errorf("failed to get datacenter finder: %v", err)
503503
}
504504
virtualMachine, err := finder.VirtualMachine(context.TODO(), machine.Spec.Name)
505505
if err != nil {

test/e2e/provisioning/testdata/machinedeployment-aws.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ spec:
4141
# Can be 'ubuntu', 'coreos' or 'centos'
4242
operatingSystem: "<< OS_NAME >>"
4343
operatingSystemSpec:
44+
distUpgradeOnBoot: false
4445
disableAutoUpdate: true
4546
containerRuntimeInfo:
4647
name: "<< CONTAINER_RUNTIME >>"

test/e2e/provisioning/testdata/machinedeployment-azure.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ spec:
4040
operatingSystem: "<< OS_NAME >>"
4141
operatingSystemSpec:
4242
distUpgradeOnBoot: false
43+
disableAutoUpdate: true
4344
containerRuntimeInfo:
4445
name: "<< CONTAINER_RUNTIME >>"
4546
versions:

test/e2e/provisioning/testdata/machinedeployment-digitalocean.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ spec:
3939
operatingSystem: "<< OS_NAME >>"
4040
operatingSystemSpec:
4141
distUpgradeOnBoot: false
42+
disableAutoUpdate: true
4243
containerRuntimeInfo:
4344
name: "<< CONTAINER_RUNTIME >>"
4445
versions:

test/e2e/provisioning/testdata/machinedeployment-hetzner.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ spec:
3333
operatingSystem: "<< OS_NAME >>"
3434
operatingSystemSpec:
3535
distUpgradeOnBoot: false
36+
disableAutoUpdate: true
3637
containerRuntimeInfo:
3738
name: "<< CONTAINER_RUNTIME >>"
3839
versions:

test/e2e/provisioning/testdata/machinedeployment-openstack-upgrade.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ spec:
3939
operatingSystem: "<< OS_NAME >>"
4040
operatingSystemSpec:
4141
distUpgradeOnBoot: true
42+
disableAutoUpdate: true
4243
containerRuntimeInfo:
4344
name: "<< CONTAINER_RUNTIME >>"
4445
versions:

test/e2e/provisioning/testdata/machinedeployment-openstack.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ spec:
3939
operatingSystem: "<< OS_NAME >>"
4040
operatingSystemSpec:
4141
distUpgradeOnBoot: false
42+
disableAutoUpdate: true
4243
containerRuntimeInfo:
4344
name: "<< CONTAINER_RUNTIME >>"
4445
versions:

test/e2e/provisioning/testdata/machinedeployment-vsphere-static-ip.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ spec:
4141
operatingSystem: "<< OS_NAME >>"
4242
operatingSystemSpec:
4343
distUpgradeOnBoot: false
44+
disableAutoUpdate: true
4445
network:
4546
cidr: "192.168.44.<< IP_OCTET >>/20"
4647
gateway: "192.168.32.1"

test/e2e/provisioning/testdata/machinedeployment-vsphere.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ spec:
4141
operatingSystem: "<< OS_NAME >>"
4242
operatingSystemSpec:
4343
distUpgradeOnBoot: false
44+
disableAutoUpdate: true
4445
containerRuntimeInfo:
4546
name: "<< CONTAINER_RUNTIME >>"
4647
versions:

0 commit comments

Comments
 (0)