[Kimchi-devel] [PATCH v2] [Kimchi] Validate passthrough inside the task
Socorro Stoppler
socorro at linux.vnet.ibm.com
Thu Jul 28 20:30:40 UTC 2016
With this latest patch, I no longer see the error when clicking on the
Filter dropdown.
On 07/28/2016 12:31 PM, Jose Ricardo Ziviani wrote:
> - In order to validade if a given PCI is ok to be attached, a heavy
> verification has to be done. This commit add such verification
> in the task. This will give a faster response to the UI,
> improving the user experience.
>
> - Add a small fix for an issue in PCI filter, added by commit eb3864f.
>
> Signed-off-by: Jose Ricardo Ziviani <joserz at linux.vnet.ibm.com>
> ---
> v2:
> - Fix issue in PCI Filter button
>
> model/vmhostdevs.py | 22 ++++++++++++++++-
> ui/js/src/kimchi.guest_edit_main.js | 49 ++++++++++++++++++++-----------------
> 2 files changed, 48 insertions(+), 23 deletions(-)
>
> diff --git a/model/vmhostdevs.py b/model/vmhostdevs.py
> index 15b5bec..ef39de3 100644
> --- a/model/vmhostdevs.py
> +++ b/model/vmhostdevs.py
> @@ -89,7 +89,6 @@ class VMHostDevsModel(object):
>
> def create(self, vmid, params):
> dev_name = params['name']
> - self._passthrough_device_validate(dev_name)
> dev_info = self.dev_model.lookup(dev_name)
>
> if dev_info['device_type'] == 'pci':
> @@ -216,6 +215,13 @@ class VMHostDevsModel(object):
> dev_info = params['dev_info']
> lock = params['lock']
>
> + try:
> + self._passthrough_device_validate(dev_info['name'])
> +
> + except InvalidParameter as e:
> + cb(e.message, False)
> + raise
> +
> with lock:
> try:
> self._validate_pci_passthrough_env()
> @@ -455,6 +461,13 @@ class VMHostDevsModel(object):
> dev_info = params['dev_info']
> lock = params['lock']
>
> + try:
> + self._passthrough_device_validate(dev_info['name'])
> +
> + except InvalidParameter as e:
> + cb(e.message, False)
> + raise
> +
> with lock:
> dom = VMModel.get_vm(vmid, self.conn)
>
> @@ -501,6 +514,13 @@ class VMHostDevsModel(object):
> dom = VMModel.get_vm(vmid, self.conn)
> lock = params['lock']
>
> + try:
> + self._passthrough_device_validate(dev_info['name'])
> +
> + except InvalidParameter as e:
> + cb(e.message, False)
> + raise
> +
> with lock:
> with RollbackContext() as rollback:
> xmlstr = self._get_usb_device_xml(dev_info)
> diff --git a/ui/js/src/kimchi.guest_edit_main.js b/ui/js/src/kimchi.guest_edit_main.js
> index c4f39c4..a59d51a 100644
> --- a/ui/js/src/kimchi.guest_edit_main.js
> +++ b/ui/js/src/kimchi.guest_edit_main.js
> @@ -534,7 +534,7 @@ kimchi.guest_edit_main = function() {
> });
> };
> var pciDeviceButtonHandler = function() {
> - $('button', '#form-guest-edit-pci').on('click', function(event) {
> + $('.btn.btn-link', '#form-guest-edit-pci').on('click', function(event) {
> event.preventDefault();
> var obj = $(this);
> var objIcon = obj.find('i');
> @@ -546,9 +546,11 @@ kimchi.guest_edit_main = function() {
> wok.message.error(err.responseJSON.reason, '#alert-modal-container');
> });
> } else {
> + $('html').addClass('in-progress');
> + $('#form-guest-edit-pci > .wok-mask').show();
> + var haveCompanions = false;
> + var pciTitle = i18n['KCHVMED6007M'] + '\n';
> kimchi.getPCIDeviceCompanions(id, function(infoData) {
> - var pciTitle = i18n['KCHVMED6007M'] + '\n';
> - var haveCompanions = false;
> for (var p = 0; p < infoData.length; p++) {
> if (infoData[p].device_type === 'net') {
> haveCompanions = true;
> @@ -564,24 +566,19 @@ kimchi.guest_edit_main = function() {
> pciTitle += ', ' + i18n['KCHVMED6006M'] + ' ' + infoData[p].model + '\n';
> }
> }
> - var settings = {
> - title: i18n['KCHVMED6012M'],
> - content: pciTitle,
> - confirm: i18n['KCHAPI6002M'],
> - cancel: i18n['KCHAPI6003M']
> - };
> + });
> + $('#form-guest-edit-pci > .wok-mask').fadeOut(300, function() {});
> + $('html').removeClass('in-progress');
>
> - if (haveCompanions) {
> - wok.confirm(settings, function() {
> - kimchi.addVMPCIDevice(kimchi.selectedGuest, {
> - name: id
> - }, function(task) {
> - getOngoingAttachingDevices(task);
> - }, function(err) {
> - wok.message.error(err.responseJSON.reason, '#alert-modal-container');
> - });
> - });
> - } else {
> + var settings = {
> + title: i18n['KCHVMED6012M'],
> + content: pciTitle,
> + confirm: i18n['KCHAPI6002M'],
> + cancel: i18n['KCHAPI6003M']
> + };
> +
> + if (haveCompanions) {
> + wok.confirm(settings, function() {
> kimchi.addVMPCIDevice(kimchi.selectedGuest, {
> name: id
> }, function(task) {
> @@ -589,8 +586,16 @@ kimchi.guest_edit_main = function() {
> }, function(err) {
> wok.message.error(err.responseJSON.reason, '#alert-modal-container');
> });
> - }
> - });
> + });
> + } else {
> + kimchi.addVMPCIDevice(kimchi.selectedGuest, {
> + name: id
> + }, function(task) {
> + getOngoingAttachingDevices(task);
> + }, function(err) {
> + wok.message.error(err.responseJSON.reason, '#alert-modal-container');
> + });
> + }
> }
> });
> };
More information about the Kimchi-devel
mailing list