func (r *DiskSubresource) Update(l object.VirtualDeviceList) ([]types.BaseVirtualDeviceConfigSpec, error) {
	log.Printf("[DEBUG] %s: Beginning update", r)
	disk, err := r.findVirtualDisk(l, false)
	if err != nil {
		return nil, fmt.Errorf("cannot find disk device: %s", err)
	}

	// Has the unit number changed?
	if r.HasChange("unit_number") {
		ctlr, err := r.assignDisk(l, disk)
		if err != nil {
			return nil, fmt.Errorf("cannot assign disk: %s", err)
		}
		r.SetRestart("unit_number")
		if err := r.SaveDevIDs(disk, ctlr); err != nil {
			return nil, fmt.Errorf("error saving device address: %s", err)
		}
		// A change in disk unit number forces a device key change after the
		// reconfigure. We need to keep the key in the device change spec we send
		// along, but we can reset it here safely. Set it to 0, which will send it
		// though the new device loop, but will distinguish it from newly-created
		// devices.
		r.Set("key", 0)
	}

	// We can now expand the rest of the settings.
	if err := r.expandDiskSettings(disk); err != nil {
		return nil, err
	}

	dspec, err := object.VirtualDeviceList{disk}.ConfigSpec(types.VirtualDeviceConfigSpecOperationEdit)
	if err != nil {
		return nil, err
	}
	if len(dspec) != 1 {
		return nil, fmt.Errorf("incorrect number of config spec items returned - expected 1, got %d", len(dspec))
	}
	// Clear file operation - VirtualDeviceList currently sets this to replace, which is invalid
	dspec[0].GetVirtualDeviceConfigSpec().FileOperation = ""
	log.Printf("[DEBUG] %s: Device config operations from update: %s", r, DeviceChangeString(dspec))
	log.Printf("[DEBUG] %s: Update complete", r)
	return dspec, nil
}
func (r *DiskSubresource) Update(l object.VirtualDeviceList) ([]types.BaseVirtualDeviceConfigSpec, error) {
	log.Printf("[DEBUG] %s: Beginning update", r)
	disk, err := r.findVirtualDisk(l, false)
	if err != nil {
		return nil, fmt.Errorf("cannot find disk device: %s", err)
	}

	
	if r.HasChange("unit_number") {
		ctlr, err := r.assignDisk(l, disk)
		if err != nil {
			return nil, fmt.Errorf("cannot assign disk: %s", err)
		}
		r.SetRestart("unit_number")
		if err := r.SaveDevIDs(disk, ctlr); err != nil {
			return nil, fmt.Errorf("error saving device address: %s", err)
		}
		
		
		
		
		
		r.Set("key", 0)
	}

	
	if err := r.expandDiskSettings(disk); err != nil {
		return nil, err
	}

	dspec, err := object.VirtualDeviceList{disk}.ConfigSpec(types.VirtualDeviceConfigSpecOperationEdit)
	if err != nil {
		return nil, err
	}
	if len(dspec) != 1 {
		return nil, fmt.Errorf("incorrect number of config spec items returned - expected 1, got %d", len(dspec))
	}
	
	dspec[0].GetVirtualDeviceConfigSpec().FileOperation = ""
	log.Printf("[DEBUG] %s: Device config operations from update: %s", r, DeviceChangeString(dspec))
	log.Printf("[DEBUG] %s: Update complete", r)
	return dspec, nil
}
func ( r * DiskSubresource ) Update ( l object . VirtualDeviceList ) ( [ ] types . BaseVirtualDeviceConfigSpec , error ) { log . Printf ( " " , r ) disk , err := r . findVirtualDisk ( l , false ) if err != nil { return nil , fmt . Errorf ( " " , err ) } // Has the unit number changed? if r . HasChange ( " " ) { ctlr , err := r . assignDisk ( l , disk ) if err != nil { return nil , fmt . Errorf ( " " , err ) } r . SetRestart ( " " ) if err := r . SaveDevIDs ( disk , ctlr ) ; err != nil { return nil , fmt . Errorf ( " " , err ) } // A change in disk unit number forces a device key change after the // reconfigure. We need to keep the key in the device change spec we send // along, but we can reset it here safely. Set it to 0, which will send it // though the new device loop, but will distinguish it from newly-created // devices. r . Set ( " " , 0 ) } // We can now expand the rest of the settings. if err := r . expandDiskSettings ( disk ) ; err != nil { return nil , err } dspec , err := object . VirtualDeviceList { disk } . ConfigSpec ( types . VirtualDeviceConfigSpecOperationEdit ) if err != nil { return nil , err } if len ( dspec ) != 1 { return nil , fmt . Errorf ( " " , len ( dspec ) ) } // Clear file operation - VirtualDeviceList currently sets this to replace, which is invalid dspec [ 0 ] . GetVirtualDeviceConfigSpec ( ) . FileOperation = " " log . Printf ( " " , r , DeviceChangeString ( dspec ) ) log . Printf ( " " , r ) return dspec , nil }
// Update updates a vsphere_virtual_machine disk sub-resource.
Update updates a vsphere_virtual_machine disk sub - resource .