mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-12-22 13:45:20 +00:00
vmm: switch from lazy_static to once_cell
Once_cell does not require using macro and is slated to become part of Rust std at some point. Signed-off-by: Wei Liu <liuwe@microsoft.com>
This commit is contained in:
parent
41cec53bb8
commit
8fa1098629
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -1378,12 +1378,12 @@ dependencies = [
|
|||||||
"gdbstub",
|
"gdbstub",
|
||||||
"gdbstub_arch",
|
"gdbstub_arch",
|
||||||
"hypervisor",
|
"hypervisor",
|
||||||
"lazy_static",
|
|
||||||
"libc",
|
"libc",
|
||||||
"linux-loader",
|
"linux-loader",
|
||||||
"log",
|
"log",
|
||||||
"micro_http",
|
"micro_http",
|
||||||
"net_util",
|
"net_util",
|
||||||
|
"once_cell",
|
||||||
"option_parser",
|
"option_parser",
|
||||||
"pci",
|
"pci",
|
||||||
"qcow",
|
"qcow",
|
||||||
|
@ -29,12 +29,12 @@ event_monitor = { path = "../event_monitor" }
|
|||||||
gdbstub = { version = "0.6.2", optional = true }
|
gdbstub = { version = "0.6.2", optional = true }
|
||||||
gdbstub_arch = { version = "0.2.3", optional = true }
|
gdbstub_arch = { version = "0.2.3", optional = true }
|
||||||
hypervisor = { path = "../hypervisor" }
|
hypervisor = { path = "../hypervisor" }
|
||||||
lazy_static = "1.4.0"
|
|
||||||
libc = "0.2.126"
|
libc = "0.2.126"
|
||||||
linux-loader = { version = "0.4.0", features = ["elf", "bzimage", "pe"] }
|
linux-loader = { version = "0.4.0", features = ["elf", "bzimage", "pe"] }
|
||||||
log = "0.4.17"
|
log = "0.4.17"
|
||||||
micro_http = { git = "https://github.com/firecracker-microvm/micro-http", branch = "main" }
|
micro_http = { git = "https://github.com/firecracker-microvm/micro-http", branch = "main" }
|
||||||
net_util = { path = "../net_util" }
|
net_util = { path = "../net_util" }
|
||||||
|
once_cell = "1.12.0"
|
||||||
option_parser = { path = "../option_parser" }
|
option_parser = { path = "../option_parser" }
|
||||||
pci = { path = "../pci" }
|
pci = { path = "../pci" }
|
||||||
qcow = { path = "../qcow" }
|
qcow = { path = "../qcow" }
|
||||||
|
@ -8,6 +8,7 @@ use crate::api::{ApiError, ApiRequest, VmAction};
|
|||||||
use crate::seccomp_filters::{get_seccomp_filter, Thread};
|
use crate::seccomp_filters::{get_seccomp_filter, Thread};
|
||||||
use crate::{Error as VmmError, Result};
|
use crate::{Error as VmmError, Result};
|
||||||
use micro_http::{Body, HttpServer, MediaType, Method, Request, Response, StatusCode, Version};
|
use micro_http::{Body, HttpServer, MediaType, Method, Request, Response, StatusCode, Version};
|
||||||
|
use once_cell::sync::Lazy;
|
||||||
use seccompiler::{apply_filter, SeccompAction};
|
use seccompiler::{apply_filter, SeccompAction};
|
||||||
use serde_json::Error as SerdeError;
|
use serde_json::Error as SerdeError;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
@ -129,46 +130,125 @@ macro_rules! endpoint {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
lazy_static! {
|
/// HTTP_ROUTES contain all the cloud-hypervisor HTTP routes.
|
||||||
/// HTTP_ROUTES contain all the cloud-hypervisor HTTP routes.
|
pub static HTTP_ROUTES: Lazy<HttpRoutes> = Lazy::new(|| {
|
||||||
pub static ref HTTP_ROUTES: HttpRoutes = {
|
let mut r = HttpRoutes {
|
||||||
let mut r = HttpRoutes {
|
routes: HashMap::new(),
|
||||||
routes: HashMap::new(),
|
|
||||||
};
|
|
||||||
|
|
||||||
r.routes.insert(endpoint!("/vm.add-device"), Box::new(VmActionHandler::new(VmAction::AddDevice(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vm.add-user-device"), Box::new(VmActionHandler::new(VmAction::AddUserDevice(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vm.add-disk"), Box::new(VmActionHandler::new(VmAction::AddDisk(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vm.add-fs"), Box::new(VmActionHandler::new(VmAction::AddFs(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vm.add-net"), Box::new(VmActionHandler::new(VmAction::AddNet(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vm.add-pmem"), Box::new(VmActionHandler::new(VmAction::AddPmem(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vm.add-vdpa"), Box::new(VmActionHandler::new(VmAction::AddVdpa(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vm.add-vsock"), Box::new(VmActionHandler::new(VmAction::AddVsock(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vm.boot"), Box::new(VmActionHandler::new(VmAction::Boot)));
|
|
||||||
r.routes.insert(endpoint!("/vm.counters"), Box::new(VmActionHandler::new(VmAction::Counters)));
|
|
||||||
r.routes.insert(endpoint!("/vm.create"), Box::new(VmCreate {}));
|
|
||||||
r.routes.insert(endpoint!("/vm.delete"), Box::new(VmActionHandler::new(VmAction::Delete)));
|
|
||||||
r.routes.insert(endpoint!("/vm.info"), Box::new(VmInfo {}));
|
|
||||||
r.routes.insert(endpoint!("/vm.pause"), Box::new(VmActionHandler::new(VmAction::Pause)));
|
|
||||||
r.routes.insert(endpoint!("/vm.power-button"), Box::new(VmActionHandler::new(VmAction::PowerButton)));
|
|
||||||
r.routes.insert(endpoint!("/vm.reboot"), Box::new(VmActionHandler::new(VmAction::Reboot)));
|
|
||||||
r.routes.insert(endpoint!("/vm.receive-migration"), Box::new(VmActionHandler::new(VmAction::ReceiveMigration(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vm.remove-device"), Box::new(VmActionHandler::new(VmAction::RemoveDevice(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vm.resize"), Box::new(VmActionHandler::new(VmAction::Resize(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vm.resize-zone"), Box::new(VmActionHandler::new(VmAction::ResizeZone(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vm.restore"), Box::new(VmActionHandler::new(VmAction::Restore(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vm.resume"), Box::new(VmActionHandler::new(VmAction::Resume)));
|
|
||||||
r.routes.insert(endpoint!("/vm.send-migration"), Box::new(VmActionHandler::new(VmAction::SendMigration(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vm.shutdown"), Box::new(VmActionHandler::new(VmAction::Shutdown)));
|
|
||||||
r.routes.insert(endpoint!("/vm.snapshot"), Box::new(VmActionHandler::new(VmAction::Snapshot(Arc::default()))));
|
|
||||||
#[cfg(feature = "guest_debug")]
|
|
||||||
r.routes.insert(endpoint!("/vm.coredump"), Box::new(VmActionHandler::new(VmAction::Coredump(Arc::default()))));
|
|
||||||
r.routes.insert(endpoint!("/vmm.ping"), Box::new(VmmPing {}));
|
|
||||||
r.routes.insert(endpoint!("/vmm.shutdown"), Box::new(VmmShutdown {}));
|
|
||||||
|
|
||||||
r
|
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.add-device"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::AddDevice(Arc::default()))),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.add-user-device"),
|
||||||
|
Box::new(VmActionHandler::new(
|
||||||
|
VmAction::AddUserDevice(Arc::default()),
|
||||||
|
)),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.add-disk"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::AddDisk(Arc::default()))),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.add-fs"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::AddFs(Arc::default()))),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.add-net"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::AddNet(Arc::default()))),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.add-pmem"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::AddPmem(Arc::default()))),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.add-vdpa"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::AddVdpa(Arc::default()))),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.add-vsock"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::AddVsock(Arc::default()))),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.boot"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::Boot)),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.counters"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::Counters)),
|
||||||
|
);
|
||||||
|
r.routes
|
||||||
|
.insert(endpoint!("/vm.create"), Box::new(VmCreate {}));
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.delete"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::Delete)),
|
||||||
|
);
|
||||||
|
r.routes.insert(endpoint!("/vm.info"), Box::new(VmInfo {}));
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.pause"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::Pause)),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.power-button"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::PowerButton)),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.reboot"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::Reboot)),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.receive-migration"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::ReceiveMigration(
|
||||||
|
Arc::default(),
|
||||||
|
))),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.remove-device"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::RemoveDevice(Arc::default()))),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.resize"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::Resize(Arc::default()))),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.resize-zone"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::ResizeZone(Arc::default()))),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.restore"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::Restore(Arc::default()))),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.resume"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::Resume)),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.send-migration"),
|
||||||
|
Box::new(VmActionHandler::new(
|
||||||
|
VmAction::SendMigration(Arc::default()),
|
||||||
|
)),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.shutdown"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::Shutdown)),
|
||||||
|
);
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.snapshot"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::Snapshot(Arc::default()))),
|
||||||
|
);
|
||||||
|
#[cfg(feature = "guest_debug")]
|
||||||
|
r.routes.insert(
|
||||||
|
endpoint!("/vm.coredump"),
|
||||||
|
Box::new(VmActionHandler::new(VmAction::Coredump(Arc::default()))),
|
||||||
|
);
|
||||||
|
r.routes
|
||||||
|
.insert(endpoint!("/vmm.ping"), Box::new(VmmPing {}));
|
||||||
|
r.routes
|
||||||
|
.insert(endpoint!("/vmm.shutdown"), Box::new(VmmShutdown {}));
|
||||||
|
|
||||||
|
r
|
||||||
|
});
|
||||||
|
|
||||||
fn handle_http_request(
|
fn handle_http_request(
|
||||||
request: &Request,
|
request: &Request,
|
||||||
|
@ -6,8 +6,6 @@
|
|||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate event_monitor;
|
extern crate event_monitor;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate lazy_static;
|
|
||||||
#[macro_use]
|
|
||||||
extern crate log;
|
extern crate log;
|
||||||
|
|
||||||
use crate::api::{
|
use crate::api::{
|
||||||
|
Loading…
Reference in New Issue
Block a user