1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-12-29 18:28:11 +00:00

iourc file creation on the server.

This commit is contained in:
grossmj 2014-03-11 16:33:56 -06:00
parent 0f75dbc68a
commit 3df5cdb76f
2 changed files with 14 additions and 5 deletions

View File

@ -74,10 +74,11 @@ class IOU(IModule):
self._udp_start_port_range = 30001 self._udp_start_port_range = 30001
self._udp_end_port_range = 40001 self._udp_end_port_range = 40001
self._current_udp_port = self._udp_start_port_range self._current_udp_port = self._udp_start_port_range
self._host = "127.0.0.1" self._host = "127.0.0.1" #FIXME: used by ZeroMQ...
self._projects_dir = kwargs["projects_dir"] self._projects_dir = kwargs["projects_dir"]
self._tempdir = kwargs["temp_dir"] self._tempdir = kwargs["temp_dir"]
self._working_dir = self._projects_dir self._working_dir = self._projects_dir
self._iourc = ""
#self._callback = self.add_periodic_callback(self.test, 1000) #self._callback = self.add_periodic_callback(self.test, 1000)
#self._callback.start() #self._callback.start()
@ -122,7 +123,7 @@ class IOU(IModule):
Set or update settings. Set or update settings.
Mandatory request parameters: Mandatory request parameters:
- path (path to the IOU executable) - iourc (base64 encoded iourc file)
Optional request parameters: Optional request parameters:
- working_dir (path to a working directory) - working_dir (path to a working directory)
@ -138,7 +139,15 @@ class IOU(IModule):
self.send_param_error() self.send_param_error()
return return
print(request) if "iourc" in request:
base64iourc = base64.decodestring(request["iourc"].encode("utf-8"))
try:
with tempfile.NamedTemporaryFile(delete=False) as f:
log.info("saving iourc file content to {}".format(f.name))
f.write(base64iourc)
self._iourc = f.name
except EnvironmentError as e:
raise IOUError("Could not save iourc file to {}: {}".format(f.name, e))
if "working_dir" in request and self._working_dir != request["working_dir"]: if "working_dir" in request and self._working_dir != request["working_dir"]:
self._working_dir = request["working_dir"] self._working_dir = request["working_dir"]
@ -168,7 +177,7 @@ class IOU(IModule):
Optional request parameters: Optional request parameters:
- name (IOU name) - name (IOU name)
- path (path to IOU) - path (path to the IOU executable)
Response parameters: Response parameters:
- id (IOU instance identifier) - id (IOU instance identifier)
@ -315,6 +324,7 @@ class IOU(IModule):
try: try:
log.debug("starting IOU with command: {}".format(iou_instance.command())) log.debug("starting IOU with command: {}".format(iou_instance.command()))
iou_instance.iouyap = self._iouyap iou_instance.iouyap = self._iouyap
iou_instance.iourc = self._iourc
iou_instance.start() iou_instance.start()
except IOUError as e: except IOUError as e:
self.send_custom_error(str(e)) self.send_custom_error(str(e))

View File

@ -103,7 +103,6 @@ class IOUDevice(object):
iou_defaults = {"name": self._name, iou_defaults = {"name": self._name,
"path": self._path, "path": self._path,
"iourc": self._iourc,
"startup_config": self._startup_config, "startup_config": self._startup_config,
"ram": self._ram, "ram": self._ram,
"nvram": self._nvram, "nvram": self._nvram,