mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-11-11 09:25:52 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cb5dc36987 | ||
|
|
cc1980ac1c | ||
|
|
8cd66cfc02 | ||
|
|
645031ee15 | ||
|
|
c70b344133 | ||
|
|
e291ec1eb9 | ||
|
|
8e8985c69f |
No files matched your search
@@ -1,5 +1,15 @@
|
||||
# Change Log
|
||||
|
||||
## 2.1.16 15/04/2019
|
||||
|
||||
* Fix broken embedded console for Ethernet switch. Fixes #1574
|
||||
* Remove old unused argument option. Fixes #1569
|
||||
|
||||
## 2.1.15 21/03/2019
|
||||
|
||||
* Fix IOU symlink issue on remote servers.
|
||||
* Fix vcpus configuration for GNS3 VM on VMware. Ref #2738.
|
||||
|
||||
## 2.1.14 27/02/2019
|
||||
|
||||
* Fix issue when setting cpuid.corespersocket for the GNS3 VM. Fixes https://github.com/GNS3/gns3-gui/issues/2723
|
||||
|
||||
@@ -662,6 +662,13 @@ class IOUVM(BaseNode):
|
||||
pass
|
||||
self._iou_process = None
|
||||
|
||||
try:
|
||||
symlink = os.path.join(self.working_dir, os.path.basename(self.path))
|
||||
if os.path.islink(symlink):
|
||||
os.unlink(symlink)
|
||||
except OSError as e:
|
||||
log.warning("Could not delete symbolic link: {}".format(e))
|
||||
|
||||
self._started = False
|
||||
self.save_configs()
|
||||
|
||||
|
||||
@@ -415,7 +415,7 @@ class Project:
|
||||
"""
|
||||
|
||||
files = []
|
||||
for dirpath, dirnames, filenames in os.walk(self.path):
|
||||
for dirpath, dirnames, filenames in os.walk(self.path, followlinks=False):
|
||||
for filename in filenames:
|
||||
if not filename.endswith(".ghost"):
|
||||
path = os.path.relpath(dirpath, self.path)
|
||||
|
||||
@@ -72,18 +72,19 @@ class VMwareGNS3VM(BaseGNS3VM):
|
||||
if ram % 4 != 0:
|
||||
raise GNS3VMError("Allocated memory {} for the GNS3 VM must be a multiple of 4".format(ram))
|
||||
|
||||
available_vcpus = psutil.cpu_count()
|
||||
available_vcpus = psutil.cpu_count(logical=True)
|
||||
if vcpus > available_vcpus:
|
||||
raise GNS3VMError("You have allocated too many vCPUs for the GNS3 VM! (max available is {} vCPUs)".format(available_vcpus))
|
||||
|
||||
try:
|
||||
pairs = VMware.parse_vmware_file(self._vmx_path)
|
||||
pairs["numvcpus"] = str(vcpus)
|
||||
cores_per_sockets = int(available_vcpus / psutil.cpu_count(logical=False))
|
||||
if cores_per_sockets >= 1:
|
||||
pairs["cpuid.corespersocket"] = str(cores_per_sockets)
|
||||
pairs["memsize"] = str(ram)
|
||||
VMware.write_vmx_file(self._vmx_path, pairs)
|
||||
if vcpus > 1:
|
||||
pairs["numvcpus"] = str(vcpus)
|
||||
cores_per_sockets = int(vcpus / psutil.cpu_count(logical=False))
|
||||
if cores_per_sockets > 1:
|
||||
pairs["cpuid.corespersocket"] = str(cores_per_sockets)
|
||||
pairs["memsize"] = str(ram)
|
||||
VMware.write_vmx_file(self._vmx_path, pairs)
|
||||
log.info("GNS3 VM vCPU count set to {} and RAM amount set to {}".format(vcpus, ram))
|
||||
except OSError as e:
|
||||
raise GNS3VMError('Could not read/write VMware VMX file "{}": {}'.format(self._vmx_path, e))
|
||||
|
||||
@@ -57,7 +57,7 @@ class CrashReport:
|
||||
Report crash to a third party service
|
||||
"""
|
||||
|
||||
DSN = "https://3abf3feab0b14c51bfecaa170e846bb9:54b92432fbe94f0e9afe4cbf0dad0126@sentry.io/38482"
|
||||
DSN = "https://6536a51af3154084859112bacb4f2277:72822a229faa463ba6c9338126a6f280@sentry.io/38482"
|
||||
if hasattr(sys, "frozen"):
|
||||
cacert = get_resource("cacert.pem")
|
||||
if cacert is not None and os.path.isfile(cacert):
|
||||
|
||||
@@ -91,7 +91,6 @@ def parse_arguments(argv):
|
||||
parser.add_argument("--host", help="run on the given host/IP address")
|
||||
parser.add_argument("--port", help="run on the given port", type=int)
|
||||
parser.add_argument("--ssl", action="store_true", help="run in SSL mode")
|
||||
parser.add_argument("--no-ubridge", action="store_false", help="do not use ubridge to handle node connections")
|
||||
parser.add_argument("--config", help="Configuration file")
|
||||
parser.add_argument("--certfile", help="SSL cert file")
|
||||
parser.add_argument("--certkey", help="SSL key file")
|
||||
|
||||
@@ -198,8 +198,8 @@ class UnstoppableEventLoop(EventLoop):
|
||||
|
||||
|
||||
class ShellConnection(TelnetConnection):
|
||||
def __init__(self, reader, writer, shell, loop):
|
||||
super(ShellConnection, self).__init__(reader, writer)
|
||||
def __init__(self, reader, writer, shell, window_size_changed_callback, loop):
|
||||
super(ShellConnection, self).__init__(reader, writer, window_size_changed_callback)
|
||||
self._shell = shell
|
||||
self._loop = loop
|
||||
self._cli = None
|
||||
@@ -239,9 +239,12 @@ class ShellConnection(TelnetConnection):
|
||||
def disconnected(self):
|
||||
pass
|
||||
|
||||
@asyncio.coroutine
|
||||
def window_size_changed(self, columns, rows):
|
||||
self._size = Size(rows=rows, columns=columns)
|
||||
self._cb.terminal_size_changed()
|
||||
if self._window_size_changed_callback:
|
||||
yield from self._window_size_changed_callback(columns, rows)
|
||||
|
||||
@asyncio.coroutine
|
||||
def feed(self, data):
|
||||
@@ -291,8 +294,8 @@ def create_telnet_shell(shell, loop=None):
|
||||
if loop is None:
|
||||
loop = asyncio.get_event_loop()
|
||||
|
||||
def factory(reader, writer):
|
||||
return ShellConnection(reader, writer, shell, loop)
|
||||
def factory(reader, writer, window_size_changed_callback):
|
||||
return ShellConnection(reader, writer, shell, window_size_changed_callback, loop)
|
||||
|
||||
return AsyncioTelnetServer(binary=True, echo=True, naws=True, connection_factory=factory)
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
# or negative for a release candidate or beta (after the base version
|
||||
# number has been incremented)
|
||||
|
||||
__version__ = "2.1.15dev1"
|
||||
__version_info__ = (2, 1, 15, 99)
|
||||
__version__ = "2.1.16"
|
||||
__version_info__ = (2, 1, 16, 0)
|
||||
|
||||
# If it's a git checkout try to add the commit
|
||||
if "dev" in __version__:
|
||||
|
||||
Reference in new issue
Block a user