mirror of
https://github.com/GNS3/gns3-server
synced 2025-01-22 22:10:57 +00:00
Check for VMware VIX library version. Fixes #413.
This commit is contained in:
parent
40261ec99c
commit
4673424da7
@ -31,6 +31,7 @@ import codecs
|
|||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from gns3server.utils.interfaces import interfaces
|
from gns3server.utils.interfaces import interfaces
|
||||||
from gns3server.utils.asyncio import subprocess_check_output
|
from gns3server.utils.asyncio import subprocess_check_output
|
||||||
|
from pkg_resources import parse_version
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -358,6 +359,31 @@ class VMware(BaseManager):
|
|||||||
|
|
||||||
return stdout_data.decode("utf-8", errors="ignore").splitlines()
|
return stdout_data.decode("utf-8", errors="ignore").splitlines()
|
||||||
|
|
||||||
|
@asyncio.coroutine
|
||||||
|
def check_vmrun_version(self):
|
||||||
|
|
||||||
|
with (yield from self._execute_lock):
|
||||||
|
vmrun_path = self.vmrun_path
|
||||||
|
if not vmrun_path:
|
||||||
|
vmrun_path = self.find_vmrun()
|
||||||
|
|
||||||
|
try:
|
||||||
|
output = yield from subprocess_check_output(vmrun_path)
|
||||||
|
match = re.search("vmrun version ([0-9\.]+)", output)
|
||||||
|
version = None
|
||||||
|
if match:
|
||||||
|
version = match.group(1)
|
||||||
|
log.debug("VMware vmrun version {} detected".format(version))
|
||||||
|
if parse_version(version) < parse_version("1.13"):
|
||||||
|
# VMware VIX library version must be at least >= 1.13
|
||||||
|
raise VMwareError("VMware vmrun executable version must be >= version 1.13")
|
||||||
|
if version is None:
|
||||||
|
log.warning("Could not find VMware vmrun version. Output: {}".format(output))
|
||||||
|
raise VMwareError("Could not find VMware vmrun version. Output: {}".format(output))
|
||||||
|
except (OSError, subprocess.SubprocessError) as e:
|
||||||
|
log.error("Error while looking for the VMware vmrun version: {}".format(e))
|
||||||
|
raise VMwareError("Error while looking for the VMware vmrun version: {}".format(e))
|
||||||
|
|
||||||
@asyncio.coroutine
|
@asyncio.coroutine
|
||||||
def remove_from_vmware_inventory(self, vmx_path):
|
def remove_from_vmware_inventory(self, vmx_path):
|
||||||
"""
|
"""
|
||||||
|
@ -142,6 +142,7 @@ class VMwareVM(BaseVM):
|
|||||||
Creates this VM and handle linked clones.
|
Creates this VM and handle linked clones.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
yield from self.manager.check_vmrun_version()
|
||||||
if self._linked_clone and not os.path.exists(os.path.join(self.working_dir, os.path.basename(self._vmx_path))):
|
if self._linked_clone and not os.path.exists(os.path.join(self.working_dir, os.path.basename(self._vmx_path))):
|
||||||
# create the base snapshot for linked clones
|
# create the base snapshot for linked clones
|
||||||
base_snapshot_name = "GNS3 Linked Base for clones"
|
base_snapshot_name = "GNS3 Linked Base for clones"
|
||||||
|
Loading…
Reference in New Issue
Block a user