[PATCH] [Kimchi] Validate passthrough inside the task

- 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. Signed-off-by: Jose Ricardo Ziviani <joserz@linux.vnet.ibm.com> --- model/vmhostdevs.py | 22 ++++++++++++++++- ui/js/src/kimchi.guest_edit_main.js | 47 ++++++++++++++++++++----------------- 2 files changed, 47 insertions(+), 22 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 507ae75..5d91b14 100644 --- a/ui/js/src/kimchi.guest_edit_main.js +++ b/ui/js/src/kimchi.guest_edit_main.js @@ -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'); + }); + } } }); }; -- 2.7.4

I'll send my feedback here but consider that it belongs to all the 3 passthrough related patches you've sent. Testing in my TP, with your patches, I had one extra error when switching to the 'To Add' filter. In current master I have the following error: With your patch: There's an extra error 'Node device undefined not found'. Ideally you could get rid of all the errors in this window but at the very least we can't increase them. On 07/27/2016 11:00 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.
Signed-off-by: Jose Ricardo Ziviani <joserz@linux.vnet.ibm.com> --- model/vmhostdevs.py | 22 ++++++++++++++++- ui/js/src/kimchi.guest_edit_main.js | 47 ++++++++++++++++++++----------------- 2 files changed, 47 insertions(+), 22 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 507ae75..5d91b14 100644 --- a/ui/js/src/kimchi.guest_edit_main.js +++ b/ui/js/src/kimchi.guest_edit_main.js @@ -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'); + }); + } } }); };

JFYI....in testing the UI PCI patch from before, I had also encountered the Unknown Parameter error when clicking on the Filter dropdown. On 07/28/2016 11:41 AM, Daniel Henrique Barboza wrote:
I'll send my feedback here but consider that it belongs to all the 3 passthrough related patches you've sent.
Testing in my TP, with your patches, I had one extra error when switching to the 'To Add' filter. In current master I have the following error:
With your patch:
There's an extra error 'Node device undefined not found'.
Ideally you could get rid of all the errors in this window but at the very least we can't increase them.
On 07/27/2016 11:00 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.
Signed-off-by: Jose Ricardo Ziviani<joserz@linux.vnet.ibm.com> --- model/vmhostdevs.py | 22 ++++++++++++++++- ui/js/src/kimchi.guest_edit_main.js | 47 ++++++++++++++++++++----------------- 2 files changed, 47 insertions(+), 22 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 507ae75..5d91b14 100644 --- a/ui/js/src/kimchi.guest_edit_main.js +++ b/ui/js/src/kimchi.guest_edit_main.js @@ -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'); + }); + } } }); };
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel

On 07/28/2016 03:54 PM, Socorro wrote:
JFYI....in testing the UI PCI patch from before, I had also encountered the Unknown Parameter error when clicking on the Filter dropdown.
Yeah, as I've said, one of the errors was already there. My point is that we can't add a new one :)
On 07/28/2016 11:41 AM, Daniel Henrique Barboza wrote:
I'll send my feedback here but consider that it belongs to all the 3 passthrough related patches you've sent.
Testing in my TP, with your patches, I had one extra error when switching to the 'To Add' filter. In current master I have the following error:
With your patch:
There's an extra error 'Node device undefined not found'.
Ideally you could get rid of all the errors in this window but at the very least we can't increase them.
On 07/27/2016 11:00 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.
Signed-off-by: Jose Ricardo Ziviani<joserz@linux.vnet.ibm.com> --- model/vmhostdevs.py | 22 ++++++++++++++++- ui/js/src/kimchi.guest_edit_main.js | 47 ++++++++++++++++++++----------------- 2 files changed, 47 insertions(+), 22 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 507ae75..5d91b14 100644 --- a/ui/js/src/kimchi.guest_edit_main.js +++ b/ui/js/src/kimchi.guest_edit_main.js @@ -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'); + }); + } } }); };
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel

I found the issue, I'm sending a new version to fix it On Thu, Jul 28, 2016 at 03:55:54PM -0300, Daniel Henrique Barboza wrote:
On 07/28/2016 03:54 PM, Socorro wrote:
JFYI....in testing the UI PCI patch from before, I had also encountered the Unknown Parameter error when clicking on the Filter dropdown.
Yeah, as I've said, one of the errors was already there. My point is that we can't add a new one :)
On 07/28/2016 11:41 AM, Daniel Henrique Barboza wrote:
I'll send my feedback here but consider that it belongs to all the 3 passthrough related patches you've sent.
Testing in my TP, with your patches, I had one extra error when switching to the 'To Add' filter. In current master I have the following error:
With your patch:
There's an extra error 'Node device undefined not found'.
Ideally you could get rid of all the errors in this window but at the very least we can't increase them.
On 07/27/2016 11:00 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.
Signed-off-by: Jose Ricardo Ziviani<joserz@linux.vnet.ibm.com> --- model/vmhostdevs.py | 22 ++++++++++++++++- ui/js/src/kimchi.guest_edit_main.js | 47 ++++++++++++++++++++----------------- 2 files changed, 47 insertions(+), 22 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 507ae75..5d91b14 100644 --- a/ui/js/src/kimchi.guest_edit_main.js +++ b/ui/js/src/kimchi.guest_edit_main.js @@ -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'); + }); + } } }); };
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel
participants (5)
-
Daniel Henrique Barboza
-
Daniel Henrique Barboza
-
Jose Ricardo Ziviani
-
joserz@linux.vnet.ibm.com
-
Socorro