mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-11-03 05:51:15 +02:00
186 files changed
+1173
-1206
No files matched your search
@@ -15,7 +15,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from .hypervisor_handler import HypervisorHandler
|
||||
from .compute_handler import ComputeHandler
|
||||
from .project_handler import ProjectHandler
|
||||
from .version_handler import VersionHandler
|
||||
from .vm_handler import VMHandler
|
||||
|
||||
+19
-19
@@ -20,47 +20,47 @@ from aiohttp.web import HTTPForbidden
|
||||
|
||||
from ....web.route import Route
|
||||
from ....config import Config
|
||||
from ....hypervisor.project_manager import ProjectManager
|
||||
from ....schemas.hypervisor import HYPERVISOR_CREATE_SCHEMA, HYPERVISOR_OBJECT_SCHEMA
|
||||
from ....compute.project_manager import ProjectManager
|
||||
from ....schemas.compute import COMPUTE_CREATE_SCHEMA, COMPUTE_OBJECT_SCHEMA
|
||||
from ....controller import Controller
|
||||
from ....controller.hypervisor import Hypervisor
|
||||
from ....controller.compute import Compute
|
||||
|
||||
|
||||
import logging
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class HypervisorHandler:
|
||||
"""API entry points for hypervisor management."""
|
||||
class ComputeHandler:
|
||||
"""API entry points for compute management."""
|
||||
|
||||
@classmethod
|
||||
@Route.post(
|
||||
r"/hypervisors",
|
||||
description="Register a hypervisor",
|
||||
r"/computes",
|
||||
description="Register a compute",
|
||||
status_codes={
|
||||
201: "Hypervisor added"
|
||||
201: "Compute added"
|
||||
},
|
||||
input=HYPERVISOR_CREATE_SCHEMA,
|
||||
output=HYPERVISOR_OBJECT_SCHEMA)
|
||||
input=COMPUTE_CREATE_SCHEMA,
|
||||
output=COMPUTE_OBJECT_SCHEMA)
|
||||
def create(request, response):
|
||||
|
||||
hypervisor = yield from Controller.instance().addHypervisor(**request.json)
|
||||
compute = yield from Controller.instance().addCompute(**request.json)
|
||||
response.set_status(201)
|
||||
response.json(hypervisor)
|
||||
response.json(compute)
|
||||
|
||||
@classmethod
|
||||
@Route.post(
|
||||
r"/hypervisors/shutdown",
|
||||
description="Shutdown the local hypervisor",
|
||||
r"/computes/shutdown",
|
||||
description="Shutdown the local compute",
|
||||
status_codes={
|
||||
201: "Hypervisor is shutting down",
|
||||
403: "Hypervisor shutdown refused"
|
||||
201: "Compute is shutting down",
|
||||
403: "Compute shutdown refused"
|
||||
})
|
||||
def shutdown(request, response):
|
||||
|
||||
config = Config.instance()
|
||||
if config.get_section_config("Hypervisor").getboolean("local", False) is False:
|
||||
raise HTTPForbidden(text="You can only stop a local hypervisor")
|
||||
if config.get_section_config("Server").getboolean("local", False) is False:
|
||||
raise HTTPForbidden(text="You can only stop a local server")
|
||||
|
||||
# close all the projects first
|
||||
pm = ProjectManager.instance()
|
||||
@@ -79,7 +79,7 @@ class HypervisorHandler:
|
||||
log.error("Could not close project {}".format(e), exc_info=1)
|
||||
continue
|
||||
|
||||
# then shutdown the hypervisor itself
|
||||
# then shutdown the compute itself
|
||||
from gns3server.web.web_server import WebServer
|
||||
server = WebServer.instance()
|
||||
asyncio.async(server.shutdown_server())
|
||||
@@ -42,9 +42,9 @@ class VMHandler:
|
||||
def create(request, response):
|
||||
|
||||
controller = Controller.instance()
|
||||
hypervisor = controller.getHypervisor(request.json.pop("hypervisor_id"))
|
||||
compute = controller.getCompute(request.json.pop("compute_id"))
|
||||
project = controller.getProject(request.match_info["project_id"])
|
||||
vm = yield from project.addVM(hypervisor, request.json.pop("vm_id", None), **request.json)
|
||||
vm = yield from project.addVM(compute, request.json.pop("vm_id", None), **request.json)
|
||||
response.set_status(201)
|
||||
response.json(vm)
|
||||
|
||||
|
||||
Reference in new issue
Block a user