From b4c57d969fe7fd80b07189c4f4f5e50c417cc87a Mon Sep 17 00:00:00 2001 From: Alvaro Aleman Date: Fri, 12 Oct 2018 22:21:24 +0200 Subject: [PATCH 1/3] Add more context to vsphere errors --- pkg/cloudprovider/provider/vsphere/helper.go | 30 +++++++++---------- .../provider/vsphere/provider.go | 12 ++++---- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/pkg/cloudprovider/provider/vsphere/helper.go b/pkg/cloudprovider/provider/vsphere/helper.go index 1ccf91d09..d5f49cae6 100644 --- a/pkg/cloudprovider/provider/vsphere/helper.go +++ b/pkg/cloudprovider/provider/vsphere/helper.go @@ -40,13 +40,13 @@ func createLinkClonedVM(vmName, vmImage, datacenter, clusterName, folder string, dc, err := f.Datacenter(ctx, datacenter) if err != nil { - return err + return fmt.Errorf("failed to get datacenter: %v", err) } f.SetDatacenter(dc) templateVM, err := f.VirtualMachine(ctx, vmImage) if err != nil { - return err + return fmt.Errorf("failed to get virtualmachine: %v", err) } glog.V(3).Infof("Template VM ref is %+v", templateVM) @@ -99,7 +99,7 @@ func createLinkClonedVM(vmName, vmImage, datacenter, clusterName, folder string, var mvm mo.VirtualMachine err = templateVM.Properties(ctx, templateVM.Reference(), []string{"config", "config.vAppConfig", "config.vAppConfig.property"}, &mvm) if err != nil { - return err + return fmt.Errorf("failed to extract vapp properties for coreos: %v", err) } var propertySpecs []types.VAppPropertySpec @@ -153,22 +153,22 @@ func createLinkClonedVM(vmName, vmImage, datacenter, clusterName, folder string, // Create a link cloned VM from the template VM's snapshot clonedVMTask, err := templateVM.Clone(ctx, targetVMFolder, vmName, *cloneSpec) if err != nil { - return err + return fmt.Errorf("failed to clone template vm: %v", err) } _, err = clonedVMTask.WaitForResult(ctx, nil) - return err + return fmt.Errorf("error when waiting for result of clone task: %v", err) } func updateNetworkForVM(ctx context.Context, vm *object.VirtualMachine, currentNetName string, newNetName string) error { newNet, err := getNetworkFromVM(ctx, vm, newNetName) if err != nil { - return err + return fmt.Errorf("failed to get network from vm: %v", err) } availableData, err := getNetworkDevicesAndBackingsFromVM(ctx, vm, currentNetName) if err != nil { - return err + return fmt.Errorf("failed to get network devices for vm: %v", err) } if len(availableData) == 0 { return errors.New("found no matching network adapter") @@ -233,12 +233,12 @@ func getNetworkFromVM(ctx context.Context, vm *object.VirtualMachine, netName st func createSnapshot(ctx context.Context, vm *object.VirtualMachine, snapshotName string, snapshotDesc string) (object.Reference, error) { task, err := vm.CreateSnapshot(ctx, snapshotName, snapshotDesc, false, false) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to create snapshot: %v", err) } taskInfo, err := task.WaitForResult(ctx, nil) if err != nil { - return nil, err + return nil, fmt.Errorf("error waiting for task completion: %v", err) } glog.Infof("taskInfo.Result is %s", taskInfo.Result) return taskInfo.Result.(object.Reference), nil @@ -249,7 +249,7 @@ func findSnapshot(ctx context.Context, vm *object.VirtualMachine, name string) ( err := vm.Properties(ctx, vm.Reference(), []string{"snapshot"}, &moVirtualMachine) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to get vm properties: %v", err) } if moVirtualMachine.Snapshot == nil { @@ -288,29 +288,29 @@ func uploadAndAttachISO(f *find.Finder, vmRef *object.VirtualMachine, localIsoFi datastore, err := f.Datastore(ctx, datastoreName) if err != nil { - return err + return fmt.Errorf("failed to get datastore: %v", err) } p := soap.DefaultUpload remoteIsoFilePath := fmt.Sprintf("%s/%s", vmRef.Name(), "cloud-init.iso") glog.V(3).Infof("Uploading userdata ISO to datastore %+v, destination iso is %s\n", datastore, remoteIsoFilePath) err = datastore.UploadFile(ctx, localIsoFilePath, remoteIsoFilePath, &p) if err != nil { - return err + return fmt.Errorf("failed to upload iso: %v", err) } glog.V(3).Infof("Uploaded ISO file %s", localIsoFilePath) // Find the cd-rom devide and insert the cloud init iso file into it. devices, err := vmRef.Device(ctx) if err != nil { - return err + return fmt.Errorf("failed to get devices: %v", err) } // passing empty cd-rom name so that the first one gets returned cdrom, err := devices.FindCdrom("") - cdrom.Connectable.StartConnected = true if err != nil { - return err + return fmt.Errorf("failed to find cdrom device: %v", err) } + cdrom.Connectable.StartConnected = true iso := datastore.Path(remoteIsoFilePath) return vmRef.EditDevice(ctx, devices.InsertIso(cdrom, iso)) } diff --git a/pkg/cloudprovider/provider/vsphere/provider.go b/pkg/cloudprovider/provider/vsphere/provider.go index 758b04fec..02a1ef9b4 100644 --- a/pkg/cloudprovider/provider/vsphere/provider.go +++ b/pkg/cloudprovider/provider/vsphere/provider.go @@ -125,17 +125,17 @@ func (p *provider) AddDefaults(spec v1alpha1.MachineSpec) (v1alpha1.MachineSpec, finder, err := getDatacenterFinder(cfg.Datacenter, client) if err != nil { - return spec, changed, err + return spec, changed, fmt.Errorf("failed to get datacenter finder: %v", err) } templateVM, err := finder.VirtualMachine(ctx, cfg.TemplateVMName) if err != nil { - return spec, changed, err + return spec, changed, fmt.Errorf("failed to get virtual machine: %v", err) } availableNetworkDevices, err := getNetworkDevicesAndBackingsFromVM(ctx, templateVM, "") if err != nil { - return spec, changed, err + return spec, changed, fmt.Errorf("failed to get network devices for vm: %v", err) } if len(availableNetworkDevices) == 0 { @@ -381,7 +381,7 @@ func (p *provider) Create(machine *v1alpha1.Machine, _ cloud.MachineUpdater, use // Upstream issue: https://bugs.launchpad.net/cloud-images/+bug/1573095 err = removeFloppyDevice(virtualMachine) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to remove floppy device: %v", err) } powerOnTask, err := virtualMachine.PowerOn(context.TODO()) @@ -404,7 +404,7 @@ func (p *provider) Delete(machine *v1alpha1.Machine, _ cloud.MachineUpdater) err if err == cloudprovidererrors.ErrInstanceNotFound { return nil } - return err + return fmt.Errorf("failed to get instance: %v", err) } config, pc, _, err := p.getConfig(machine.Spec.ProviderConfig) @@ -499,7 +499,7 @@ func (p *provider) Get(machine *v1alpha1.Machine) (instance.Instance, error) { finder, err := getDatacenterFinder(config.Datacenter, client) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to get datacenter finder: %v", err) } virtualMachine, err := finder.VirtualMachine(context.TODO(), machine.Spec.Name) if err != nil { From 63ea47871d112d23737d34213bea6f4651b1b2b9 Mon Sep 17 00:00:00 2001 From: Alvaro Aleman Date: Fri, 12 Oct 2018 22:44:34 +0200 Subject: [PATCH 2/3] Do not return an error if there was none --- pkg/cloudprovider/provider/vsphere/helper.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/cloudprovider/provider/vsphere/helper.go b/pkg/cloudprovider/provider/vsphere/helper.go index d5f49cae6..1e48bfd72 100644 --- a/pkg/cloudprovider/provider/vsphere/helper.go +++ b/pkg/cloudprovider/provider/vsphere/helper.go @@ -156,8 +156,10 @@ func createLinkClonedVM(vmName, vmImage, datacenter, clusterName, folder string, return fmt.Errorf("failed to clone template vm: %v", err) } - _, err = clonedVMTask.WaitForResult(ctx, nil) - return fmt.Errorf("error when waiting for result of clone task: %v", err) + if _, err = clonedVMTask.WaitForResult(ctx, nil); err != nil { + return fmt.Errorf("error when waiting for result of clone task: %v", err) + } + return nil } func updateNetworkForVM(ctx context.Context, vm *object.VirtualMachine, currentNetName string, newNetName string) error { From 53692815146dfe09b46bdca9d58756b4a2efe5fb Mon Sep 17 00:00:00 2001 From: Alvaro Aleman Date: Fri, 12 Oct 2018 23:15:29 +0200 Subject: [PATCH 3/3] Disable autoupgrade for coreos in e2e tests to speed up testing --- test/e2e/provisioning/testdata/machinedeployment-aws.yaml | 1 + test/e2e/provisioning/testdata/machinedeployment-azure.yaml | 1 + .../provisioning/testdata/machinedeployment-digitalocean.yaml | 1 + test/e2e/provisioning/testdata/machinedeployment-hetzner.yaml | 1 + .../testdata/machinedeployment-openstack-upgrade.yml | 1 + test/e2e/provisioning/testdata/machinedeployment-openstack.yaml | 1 + .../testdata/machinedeployment-vsphere-static-ip.yaml | 1 + test/e2e/provisioning/testdata/machinedeployment-vsphere.yaml | 1 + 8 files changed, 8 insertions(+) diff --git a/test/e2e/provisioning/testdata/machinedeployment-aws.yaml b/test/e2e/provisioning/testdata/machinedeployment-aws.yaml index a26e8bde7..30cbad4c5 100644 --- a/test/e2e/provisioning/testdata/machinedeployment-aws.yaml +++ b/test/e2e/provisioning/testdata/machinedeployment-aws.yaml @@ -41,6 +41,7 @@ spec: # Can be 'ubuntu', 'coreos' or 'centos' operatingSystem: "<< OS_NAME >>" operatingSystemSpec: + distUpgradeOnBoot: false disableAutoUpdate: true containerRuntimeInfo: name: "<< CONTAINER_RUNTIME >>" diff --git a/test/e2e/provisioning/testdata/machinedeployment-azure.yaml b/test/e2e/provisioning/testdata/machinedeployment-azure.yaml index fd96dc11f..7ca580524 100644 --- a/test/e2e/provisioning/testdata/machinedeployment-azure.yaml +++ b/test/e2e/provisioning/testdata/machinedeployment-azure.yaml @@ -40,6 +40,7 @@ spec: operatingSystem: "<< OS_NAME >>" operatingSystemSpec: distUpgradeOnBoot: false + disableAutoUpdate: true containerRuntimeInfo: name: "<< CONTAINER_RUNTIME >>" versions: diff --git a/test/e2e/provisioning/testdata/machinedeployment-digitalocean.yaml b/test/e2e/provisioning/testdata/machinedeployment-digitalocean.yaml index 5fea2c2cb..9dbccd2dd 100644 --- a/test/e2e/provisioning/testdata/machinedeployment-digitalocean.yaml +++ b/test/e2e/provisioning/testdata/machinedeployment-digitalocean.yaml @@ -39,6 +39,7 @@ spec: operatingSystem: "<< OS_NAME >>" operatingSystemSpec: distUpgradeOnBoot: false + disableAutoUpdate: true containerRuntimeInfo: name: "<< CONTAINER_RUNTIME >>" versions: diff --git a/test/e2e/provisioning/testdata/machinedeployment-hetzner.yaml b/test/e2e/provisioning/testdata/machinedeployment-hetzner.yaml index 67660e359..48d105aeb 100644 --- a/test/e2e/provisioning/testdata/machinedeployment-hetzner.yaml +++ b/test/e2e/provisioning/testdata/machinedeployment-hetzner.yaml @@ -33,6 +33,7 @@ spec: operatingSystem: "<< OS_NAME >>" operatingSystemSpec: distUpgradeOnBoot: false + disableAutoUpdate: true containerRuntimeInfo: name: "<< CONTAINER_RUNTIME >>" versions: diff --git a/test/e2e/provisioning/testdata/machinedeployment-openstack-upgrade.yml b/test/e2e/provisioning/testdata/machinedeployment-openstack-upgrade.yml index ad292ae53..553c744d4 100644 --- a/test/e2e/provisioning/testdata/machinedeployment-openstack-upgrade.yml +++ b/test/e2e/provisioning/testdata/machinedeployment-openstack-upgrade.yml @@ -39,6 +39,7 @@ spec: operatingSystem: "<< OS_NAME >>" operatingSystemSpec: distUpgradeOnBoot: true + disableAutoUpdate: true containerRuntimeInfo: name: "<< CONTAINER_RUNTIME >>" versions: diff --git a/test/e2e/provisioning/testdata/machinedeployment-openstack.yaml b/test/e2e/provisioning/testdata/machinedeployment-openstack.yaml index 28d7a2165..c97284e5c 100644 --- a/test/e2e/provisioning/testdata/machinedeployment-openstack.yaml +++ b/test/e2e/provisioning/testdata/machinedeployment-openstack.yaml @@ -39,6 +39,7 @@ spec: operatingSystem: "<< OS_NAME >>" operatingSystemSpec: distUpgradeOnBoot: false + disableAutoUpdate: true containerRuntimeInfo: name: "<< CONTAINER_RUNTIME >>" versions: diff --git a/test/e2e/provisioning/testdata/machinedeployment-vsphere-static-ip.yaml b/test/e2e/provisioning/testdata/machinedeployment-vsphere-static-ip.yaml index cdaf3edcc..f00d9d54f 100644 --- a/test/e2e/provisioning/testdata/machinedeployment-vsphere-static-ip.yaml +++ b/test/e2e/provisioning/testdata/machinedeployment-vsphere-static-ip.yaml @@ -41,6 +41,7 @@ spec: operatingSystem: "<< OS_NAME >>" operatingSystemSpec: distUpgradeOnBoot: false + disableAutoUpdate: true network: cidr: "192.168.44.<< IP_OCTET >>/20" gateway: "192.168.32.1" diff --git a/test/e2e/provisioning/testdata/machinedeployment-vsphere.yaml b/test/e2e/provisioning/testdata/machinedeployment-vsphere.yaml index 168ed2857..942d50c49 100644 --- a/test/e2e/provisioning/testdata/machinedeployment-vsphere.yaml +++ b/test/e2e/provisioning/testdata/machinedeployment-vsphere.yaml @@ -41,6 +41,7 @@ spec: operatingSystem: "<< OS_NAME >>" operatingSystemSpec: distUpgradeOnBoot: false + disableAutoUpdate: true containerRuntimeInfo: name: "<< CONTAINER_RUNTIME >>" versions: