Find an alternative IOS or IOU image if one cannot be found when importing a topology.

This commit is contained in:
grossmj 2014-07-06 16:34:38 -06:00
parent 551b98880b
commit 9fc7650f3f
4 changed files with 19 additions and 1 deletions

View File

@ -19,6 +19,7 @@
Base class (interface) for modules
"""
import os
import sys
import traceback
import gns3server.jsonrpc as jsonrpc
@ -26,6 +27,7 @@ import multiprocessing
import zmq
import signal
from gns3server.config import Config
from jsonschema import validate, ValidationError
import logging
@ -45,6 +47,9 @@ class IModule(multiprocessing.Process):
def __init__(self, name, *args, **kwargs):
config = Config.instance()
server_config = config.get_default_section()
self._images_dir = os.path.expandvars(os.path.expanduser(server_config.get("upload_directory", "~/GNS3/images")))
multiprocessing.Process.__init__(self, name=name)
self._context = None
self._ioloop = None
@ -328,3 +333,8 @@ class IModule(multiprocessing.Process):
cls.modules[module][destination] = method
return method
return wrapper
@property
def images_directory(self):
return self._images_dir

View File

@ -138,6 +138,10 @@ class VM(object):
chassis = request.get("chassis")
router_id = request.get("router_id")
updated_image_path = os.path.join(self.images_directory, image)
if os.path.isfile(updated_image_path):
image = updated_image_path
try:
if platform not in PLATFORMS:

View File

@ -295,6 +295,10 @@ class IOU(IModule):
console = request.get("console")
iou_id = request.get("iou_id")
updated_iou_path = os.path.join(self.images_directory, iou_path)
if os.path.isfile(updated_iou_path):
iou_path = updated_iou_path
try:
iou_instance = IOUDevice(name,
iou_path,

View File

@ -23,5 +23,5 @@
# or negative for a release candidate or beta (after the base version
# number has been incremented)
__version__ = "1.0a8.dev1"
__version__ = "1.0a8.dev2"
__version_info__ = (1, 0, 0, -99)