1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-11-24 17:28:08 +00:00

Support for auto open project

This commit is contained in:
Julien Duponchelle 2016-08-15 20:51:59 +02:00
parent e710eff22e
commit 0613efa297
No known key found for this signature in database
GPG Key ID: CE8B29639E07F5E8
4 changed files with 72 additions and 3 deletions

View File

@ -299,7 +299,7 @@ class Controller:
self.remove_project(self._projects[topo_data["project_id"]]) self.remove_project(self._projects[topo_data["project_id"]])
project = yield from self.add_project(path=os.path.dirname(path), status="closed", filename=os.path.basename(path), **topo_data) project = yield from self.add_project(path=os.path.dirname(path), status="closed", filename=os.path.basename(path), **topo_data)
if load: if load or project.auto_open:
yield from project.open() yield from project.open()
return project return project

View File

@ -67,6 +67,8 @@ class Project:
assert name is not None assert name is not None
self._name = name self._name = name
self._auto_start = False self._auto_start = False
self._auto_close = False
self._auto_open = False
self._status = status self._status = status
# Disallow overwrite of existing project # Disallow overwrite of existing project
@ -139,8 +141,35 @@ class Project:
@property @property
def auto_start(self): def auto_start(self):
"""
Should project auto start when opened
"""
return self._auto_start return self._auto_start
@auto_start.setter
def auto_start(self, val):
self._auto_start = val
@property
def auto_close(self):
"""
Should project automaticaly closed when client
stop listening for notification
"""
return self._auto_close
@auto_close.setter
def auto_close(self, val):
self._auto_close = val
@property
def auto_open(self):
return self._auto_open
@auto_open.setter
def auto_open(self, val):
self._auto_open = val
@property @property
def controller(self): def controller(self):
return self._controller return self._controller
@ -604,7 +633,10 @@ class Project:
"project_id": self._id, "project_id": self._id,
"path": self._path, "path": self._path,
"filename": self._filename, "filename": self._filename,
"status": self._status "status": self._status,
"auto_start": self._auto_start,
"auto_close": self._auto_close,
"auto_open": self._auto_open
} }
def __repr__(self): def __repr__(self):

View File

@ -31,6 +31,10 @@ PROJECT_CREATE_SCHEMA = {
"type": ["string", "null"], "type": ["string", "null"],
"minLength": 1 "minLength": 1
}, },
"auto_close": {
"description": "Project auto close",
"type": "boolean"
},
"project_id": { "project_id": {
"description": "Project UUID", "description": "Project UUID",
"type": ["string", "null"], "type": ["string", "null"],
@ -56,6 +60,18 @@ PROJECT_UPDATE_SCHEMA = {
"description": "Path of the project on the server (work only with --local)", "description": "Path of the project on the server (work only with --local)",
"type": ["string", "null"] "type": ["string", "null"]
}, },
"auto_close": {
"description": "Project auto close when client cut off the notifications feed",
"type": "boolean"
},
"auto_open": {
"description": "Project open when GNS3 start",
"type": "boolean"
},
"auto_start": {
"description": "Project start when opened",
"type": "boolean"
}
}, },
"additionalProperties": False, "additionalProperties": False,
} }
@ -90,6 +106,18 @@ PROJECT_OBJECT_SCHEMA = {
"status": { "status": {
"description": "Project status Read only", "description": "Project status Read only",
"enum": ["opened", "closed"] "enum": ["opened", "closed"]
},
"auto_close": {
"description": "Project auto close when client cut off the notifications feed",
"type": "boolean"
},
"auto_open": {
"description": "Project open when GNS3 start",
"type": "boolean"
},
"auto_start": {
"description": "Project start when opened",
"type": "boolean"
} }
}, },
"additionalProperties": False, "additionalProperties": False,

View File

@ -59,7 +59,16 @@ def test_affect_uuid():
def test_json(tmpdir): def test_json(tmpdir):
p = Project(name="Test") p = Project(name="Test")
assert p.__json__() == {"name": "Test", "project_id": p.id, "path": p.path, "status": "opened", "filename": "Test.gns3"} assert p.__json__() == {
"name": "Test",
"project_id": p.id,
"path": p.path,
"status": "opened",
"filename": "Test.gns3",
"auto_start": False,
"auto_close": False,
"auto_open": False
}
def test_update(controller, async_run): def test_update(controller, async_run):