diff --git a/gns3server/modules/dynamips/__init__.py b/gns3server/modules/dynamips/__init__.py index bd1b15220..38aeac83a 100644 --- a/gns3server/modules/dynamips/__init__.py +++ b/gns3server/modules/dynamips/__init__.py @@ -473,31 +473,42 @@ class Dynamips(BaseManager): if hasattr(vm, "set_{}".format(name)): setter = getattr(vm, "set_{}".format(name)) yield from setter(value) - elif name.startswith("slot") and value in ADAPTER_MATRIX: slot_id = int(name[-1]) adapter_name = value adapter = ADAPTER_MATRIX[adapter_name]() - if vm.slots[slot_id] and not isinstance(vm.slots[slot_id], type(adapter)): - yield from vm.slot_remove_binding(slot_id) - if not isinstance(vm.slots[slot_id], type(adapter)): - yield from vm.slot_add_binding(slot_id, adapter) + try: + if vm.slots[slot_id] and not isinstance(vm.slots[slot_id], type(adapter)): + yield from vm.slot_remove_binding(slot_id) + if not isinstance(vm.slots[slot_id], type(adapter)): + yield from vm.slot_add_binding(slot_id, adapter) + except IndexError: + raise DynamipsError("Slot {} doesn't exist on this router".format(slot_id)) elif name.startswith("slot") and value is None: slot_id = int(name[-1]) - if vm.slots[slot_id]: - yield from vm.slot_remove_binding(slot_id) + try: + if vm.slots[slot_id]: + yield from vm.slot_remove_binding(slot_id) + except IndexError: + raise DynamipsError("Slot {} doesn't exist on this router".format(slot_id)) elif name.startswith("wic") and value in WIC_MATRIX: wic_slot_id = int(name[-1]) wic_name = value wic = WIC_MATRIX[wic_name]() - if vm.slots[0].wics[wic_slot_id] and not isinstance(vm.slots[0].wics[wic_slot_id], type(wic)): - yield from vm.uninstall_wic(wic_slot_id) - if not isinstance(vm.slots[0].wics[wic_slot_id], type(wic)): - yield from vm.install_wic(wic_slot_id, wic) + try: + if vm.slots[0].wics[wic_slot_id] and not isinstance(vm.slots[0].wics[wic_slot_id], type(wic)): + yield from vm.uninstall_wic(wic_slot_id) + if not isinstance(vm.slots[0].wics[wic_slot_id], type(wic)): + yield from vm.install_wic(wic_slot_id, wic) + except IndexError: + raise DynamipsError("WIC slot {} doesn't exist on this router".format(wic_slot_id)) elif name.startswith("wic") and value is None: wic_slot_id = int(name[-1]) - if vm.slots[0].wics and vm.slots[0].wics[wic_slot_id]: - yield from vm.uninstall_wic(wic_slot_id) + try: + if vm.slots[0].wics and vm.slots[0].wics[wic_slot_id]: + yield from vm.uninstall_wic(wic_slot_id) + except IndexError: + raise DynamipsError("WIC slot {} doesn't exist on this router".format(wic_slot_id)) mmap_support = self.config.get_section_config("Dynamips").getboolean("mmap_support", True) if mmap_support is False: