Support for auto open project

pull/638/head
Julien Duponchelle 8 years ago
parent e710eff22e
commit 0613efa297
No known key found for this signature in database
GPG Key ID: CE8B29639E07F5E8

@ -299,7 +299,7 @@ class Controller:
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)
if load:
if load or project.auto_open:
yield from project.open()
return project

@ -67,6 +67,8 @@ class Project:
assert name is not None
self._name = name
self._auto_start = False
self._auto_close = False
self._auto_open = False
self._status = status
# Disallow overwrite of existing project
@ -139,8 +141,35 @@ class Project:
@property
def auto_start(self):
"""
Should project auto start when opened
"""
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
def controller(self):
return self._controller
@ -604,7 +633,10 @@ class Project:
"project_id": self._id,
"path": self._path,
"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):

@ -31,6 +31,10 @@ PROJECT_CREATE_SCHEMA = {
"type": ["string", "null"],
"minLength": 1
},
"auto_close": {
"description": "Project auto close",
"type": "boolean"
},
"project_id": {
"description": "Project UUID",
"type": ["string", "null"],
@ -56,6 +60,18 @@ PROJECT_UPDATE_SCHEMA = {
"description": "Path of the project on the server (work only with --local)",
"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,
}
@ -90,6 +106,18 @@ PROJECT_OBJECT_SCHEMA = {
"status": {
"description": "Project status Read only",
"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,

@ -59,7 +59,16 @@ def test_affect_uuid():
def test_json(tmpdir):
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):

Loading…
Cancel
Save