From fe22576ae20e2dd70efb6ddf518a368fa61adab2 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Mon, 19 Jan 2015 14:43:35 -0700 Subject: [PATCH] Some quick cleaning. --- gns3server/modules/attic.py | 1 - gns3server/modules/base_manager.py | 8 ++++--- gns3server/modules/port_manager.py | 4 +++- gns3server/modules/project.py | 33 +++++++++++++++----------- gns3server/modules/project_manager.py | 7 +++--- gns3server/modules/vpcs/vpcs_device.py | 8 +++---- 6 files changed, 35 insertions(+), 26 deletions(-) diff --git a/gns3server/modules/attic.py b/gns3server/modules/attic.py index b059b532..be09b57a 100644 --- a/gns3server/modules/attic.py +++ b/gns3server/modules/attic.py @@ -24,7 +24,6 @@ import os import struct import socket import stat -import errno import time import logging diff --git a/gns3server/modules/base_manager.py b/gns3server/modules/base_manager.py index 263cd1c3..42fb1576 100644 --- a/gns3server/modules/base_manager.py +++ b/gns3server/modules/base_manager.py @@ -29,14 +29,16 @@ class BaseManager: """ def __init__(self): + self._vms = {} + self._port_manager = None @classmethod def instance(cls): """ Singleton to return only one instance of BaseManager. - :returns: instance of Manager + :returns: instance of BaseManager """ if not hasattr(cls, "_instance") or cls._instance is None: @@ -55,11 +57,11 @@ class BaseManager: @port_manager.setter def port_manager(self, new_port_manager): + self._port_manager = new_port_manager - @classmethod - @asyncio.coroutine + @asyncio.coroutine # FIXME: why coroutine? def destroy(cls): cls._instance = None diff --git a/gns3server/modules/port_manager.py b/gns3server/modules/port_manager.py index 6bbb01bc..b0188802 100644 --- a/gns3server/modules/port_manager.py +++ b/gns3server/modules/port_manager.py @@ -19,6 +19,7 @@ import socket import ipaddress import asyncio + class PortManager: """ :param host: IP address to bind for console connections @@ -55,8 +56,9 @@ class PortManager: return cls._instance @classmethod - @asyncio.coroutine + @asyncio.coroutine # FIXME: why coroutine? def destroy(cls): + cls._instance = None @property diff --git a/gns3server/modules/project.py b/gns3server/modules/project.py index 9d74d480..289b18a2 100644 --- a/gns3server/modules/project.py +++ b/gns3server/modules/project.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2015 GNS3 Technologies Inc. @@ -25,29 +24,35 @@ class Project: """ A project contains a list of VM. In theory VM are isolated project/project. - """ - """ :param uuid: Force project uuid (None by default auto generate an UUID) :param location: Parent path of the project. (None should create a tmp directory) """ - def __init__(self, uuid = None, location = None): + + def __init__(self, uuid=None, location=None): + if uuid is None: - self.uuid = str(uuid4()) + self._uuid = str(uuid4()) else: - self.uuid = uuid + self._uuid = uuid - self.location = location + self._location = location if location is None: - self.location = tempfile.mkdtemp() + self._location = tempfile.mkdtemp() - self.path = os.path.join(self.location, self.uuid) - if os.path.exists(self.path) is False: - os.mkdir(self.path) - os.mkdir(os.path.join(self.path, 'files')) + self._path = os.path.join(self._location, self._uuid) + if os.path.exists(self._path) is False: + os.mkdir(self._path) + os.mkdir(os.path.join(self._path, 'files')) + + @property + def uuid(self): + + return self._uuid def __json__(self): + return { - "uuid": self.uuid, - "location": self.location + "uuid": self._uuid, + "location": self._location } diff --git a/gns3server/modules/project_manager.py b/gns3server/modules/project_manager.py index 0ff089bc..98dab785 100644 --- a/gns3server/modules/project_manager.py +++ b/gns3server/modules/project_manager.py @@ -21,7 +21,7 @@ from .project import Project class ProjectManager: """ - This singleton, keep track of available projects. + This singleton keeps track of available projects. """ def __init__(self): @@ -30,9 +30,9 @@ class ProjectManager: @classmethod def instance(cls): """ - Singleton to return only one instance of BaseManager. + Singleton to return only one instance of ProjectManager. - :returns: instance of Manager + :returns: instance of ProjectManager """ if not hasattr(cls, "_instance"): @@ -58,6 +58,7 @@ class ProjectManager: See documentation of Project for arguments """ + project = Project(**kwargs) self._projects[project.uuid] = project return project diff --git a/gns3server/modules/vpcs/vpcs_device.py b/gns3server/modules/vpcs/vpcs_device.py index 06ca28de..9d36c305 100644 --- a/gns3server/modules/vpcs/vpcs_device.py +++ b/gns3server/modules/vpcs/vpcs_device.py @@ -193,10 +193,10 @@ class VPCSDevice(BaseVM): flags = subprocess.CREATE_NEW_PROCESS_GROUP with open(self._vpcs_stdout_file, "w") as fd: self._process = yield from asyncio.create_subprocess_exec(*self._command, - stdout=fd, - stderr=subprocess.STDOUT, - cwd=self._working_dir, - creationflags=flags) + stdout=fd, + stderr=subprocess.STDOUT, + cwd=self._working_dir, + creationflags=flags) log.info("VPCS instance {} started PID={}".format(self._id, self._process.pid)) self._started = True except (OSError, subprocess.SubprocessError) as e: