mirror of
https://github.com/GNS3/gns3-server
synced 2024-11-24 17:28:08 +00:00
Explicitly send an error if a IOS adapter cannot be added or removed.
This commit is contained in:
parent
ed8b93dee2
commit
2a888f93ce
@ -1224,6 +1224,13 @@ class Router(object):
|
|||||||
slot_id=slot_id,
|
slot_id=slot_id,
|
||||||
adapter=current_adapter))
|
adapter=current_adapter))
|
||||||
|
|
||||||
|
# Only c7200, c3600 and c3745 (NM-4T only) support new adapter while running
|
||||||
|
if self.is_running() and not (self._platform == 'c7200' \
|
||||||
|
and not (self._platform == 'c3600' and self.chassis == '3660') \
|
||||||
|
and not (self._platform == 'c3745' and adapter == 'NM-4T')):
|
||||||
|
raise DynamipsError("Adapter {adapter} cannot be added while router {name} is running".format(adapter=adapter,
|
||||||
|
name=self._name))
|
||||||
|
|
||||||
self._hypervisor.send("vm slot_add_binding {name} {slot_id} 0 {adapter}".format(name=self._name,
|
self._hypervisor.send("vm slot_add_binding {name} {slot_id} 0 {adapter}".format(name=self._name,
|
||||||
slot_id=slot_id,
|
slot_id=slot_id,
|
||||||
adapter=adapter))
|
adapter=adapter))
|
||||||
@ -1235,11 +1242,8 @@ class Router(object):
|
|||||||
|
|
||||||
self._slots[slot_id] = adapter
|
self._slots[slot_id] = adapter
|
||||||
|
|
||||||
# Generate an OIR event if the router is running and
|
# Generate an OIR event if the router is running
|
||||||
# only for c7200, c3600 and c3745 (NM-4T only)
|
if self.is_running():
|
||||||
if self.is_running() and (self._platform == 'c7200' \
|
|
||||||
or (self._platform == 'c3600' and self.chassis == '3660') \
|
|
||||||
or (self._platform == 'c3745' and adapter == 'NM-4T')):
|
|
||||||
|
|
||||||
self._hypervisor.send("vm slot_oir_start {name} {slot_id} 0".format(name=self._name,
|
self._hypervisor.send("vm slot_oir_start {name} {slot_id} 0".format(name=self._name,
|
||||||
slot_id=slot_id))
|
slot_id=slot_id))
|
||||||
@ -1265,13 +1269,15 @@ class Router(object):
|
|||||||
raise DynamipsError("No adapter in slot {slot_id} on router {name}".format(name=self._name,
|
raise DynamipsError("No adapter in slot {slot_id} on router {name}".format(name=self._name,
|
||||||
slot_id=slot_id))
|
slot_id=slot_id))
|
||||||
|
|
||||||
#FIXME: check if adapter can be removed!
|
# Only c7200, c3600 and c3745 (NM-4T only) support to remove adapter while running
|
||||||
|
if self.is_running() and not (self._platform == 'c7200' \
|
||||||
|
and not (self._platform == 'c3600' and self.chassis == '3660') \
|
||||||
|
and not (self._platform == 'c3745' and adapter == 'NM-4T')):
|
||||||
|
raise DynamipsError("Adapter {adapter} cannot be removed while router {name} is running".format(adapter=adapter,
|
||||||
|
name=self._name))
|
||||||
|
|
||||||
# Generate an OIR event if the router is running and
|
# Generate an OIR event if the router is running
|
||||||
# only for c7200, c3600 and c3745 (NM-4T only)
|
if self.is_running():
|
||||||
if self.is_running() and (self._platform == 'c7200' \
|
|
||||||
or (self._platform == 'c3600' and self.chassis == '3660') \
|
|
||||||
or (self._platform == 'c3745' and adapter == 'NM-4T')):
|
|
||||||
|
|
||||||
self._hypervisor.send("vm slot_oir_stop {name} {slot_id} 0".format(name=self._name,
|
self._hypervisor.send("vm slot_oir_stop {name} {slot_id} 0".format(name=self._name,
|
||||||
slot_id=slot_id))
|
slot_id=slot_id))
|
||||||
|
@ -250,43 +250,73 @@ VM_UPDATE_SCHEMA = {
|
|||||||
},
|
},
|
||||||
"slot0": {
|
"slot0": {
|
||||||
"description": "Network module slot 0",
|
"description": "Network module slot 0",
|
||||||
"type": "string",
|
"oneOf": [
|
||||||
|
{"type": "string"},
|
||||||
|
{"type": "null"}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"slot1": {
|
"slot1": {
|
||||||
"description": "Network module slot 1",
|
"description": "Network module slot 1",
|
||||||
"type": "string",
|
"oneOf": [
|
||||||
|
{"type": "string"},
|
||||||
|
{"type": "null"}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"slot2": {
|
"slot2": {
|
||||||
"description": "Network module slot 2",
|
"description": "Network module slot 2",
|
||||||
"type": "string",
|
"oneOf": [
|
||||||
|
{"type": "string"},
|
||||||
|
{"type": "null"}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"slot3": {
|
"slot3": {
|
||||||
"description": "Network module slot 3",
|
"description": "Network module slot 3",
|
||||||
"type": "string",
|
"oneOf": [
|
||||||
|
{"type": "string"},
|
||||||
|
{"type": "null"}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"slot4": {
|
"slot4": {
|
||||||
"description": "Network module slot 4",
|
"description": "Network module slot 4",
|
||||||
"type": "string",
|
"oneOf": [
|
||||||
|
{"type": "string"},
|
||||||
|
{"type": "null"}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"slot5": {
|
"slot5": {
|
||||||
"description": "Network module slot 5",
|
"description": "Network module slot 5",
|
||||||
"type": "string",
|
"oneOf": [
|
||||||
|
{"type": "string"},
|
||||||
|
{"type": "null"}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"slot6": {
|
"slot6": {
|
||||||
"description": "Network module slot 6",
|
"description": "Network module slot 6",
|
||||||
"type": "string",
|
"oneOf": [
|
||||||
|
{"type": "string"},
|
||||||
|
{"type": "null"}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"wic0": {
|
"wic0": {
|
||||||
"description": "Network module WIC slot 0",
|
"description": "Network module WIC slot 0",
|
||||||
"type": "string",
|
"oneOf": [
|
||||||
|
{"type": "string"},
|
||||||
|
{"type": "null"}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"wic1": {
|
"wic1": {
|
||||||
"description": "Network module WIC slot 0",
|
"description": "Network module WIC slot 0",
|
||||||
"type": "string",
|
"oneOf": [
|
||||||
|
{"type": "string"},
|
||||||
|
{"type": "null"}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"wic2": {
|
"wic2": {
|
||||||
"description": "Network module WIC slot 0",
|
"description": "Network module WIC slot 0",
|
||||||
"type": "string",
|
"oneOf": [
|
||||||
|
{"type": "string"},
|
||||||
|
{"type": "null"}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"startup_config_base64": {
|
"startup_config_base64": {
|
||||||
"description": "startup configuration base64 encoded",
|
"description": "startup configuration base64 encoded",
|
||||||
|
Loading…
Reference in New Issue
Block a user