-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathconfig.ml
More file actions
77 lines (68 loc) · 2.26 KB
/
Copy pathconfig.ml
File metadata and controls
77 lines (68 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
(* mirage >= 4.11.0 & < 4.12.0 *)
open Mirage
let enable_monitoring =
let doc = Key.Arg.info
~doc:"Enable monitoring (syslog, metrics to influx, log level, statmemprof tracing)"
[ "enable-monitoring" ]
in
Key.(create "enable-monitoring" Arg.(flag doc))
let net = generic_stackv4v6 default_network
let management_stack =
if_impl
(Key.value enable_monitoring)
(generic_stackv4v6 ~group:"management"
(netif ~group:"management" "management"))
net
let monitoring =
let monitor = Runtime_arg.(v (monitor None)) in
let connect _ modname = function
| [ stack ; monitor ] ->
code ~pos:__POS__
"Lwt.return (match %s with\
| None -> Logs.warn (fun m -> m \"no monitor specified, not outputting statistics\")\
| Some ip -> %s.create ip ~hostname:(Mirage_runtime.name ()) %s)"
monitor modname stack
| _ -> assert false
in
impl
~packages:[ package ~min:"0.0.6" "mirage-monitoring" ]
~runtime_args:[ monitor ]
~connect "Mirage_monitoring.Make"
(stackv4v6 @-> job)
let syslog =
let syslog = Runtime_arg.(v (syslog None)) in
let connect _ modname = function
| [ stack ; syslog ] ->
code ~pos:__POS__
"Lwt.return (match %s with\
| None -> Logs.warn (fun m -> m \"no syslog specified, dumping on stdout\")\
| Some ip -> Logs.set_reporter (%s.create %s ip ~hostname:(Mirage_runtime.name ()) ()))"
syslog modname stack
| _ -> assert false
in
impl
~packages:[ package ~sublibs:[ "mirage" ] ~min:"0.5.0" "logs-syslog" ]
~runtime_args:[ syslog ]
~connect "Logs_syslog_mirage.Udp"
(stackv4v6 @-> job)
let optional_monitoring stack =
if_impl
(Key.value enable_monitoring)
(monitoring $ stack)
noop
let optional_syslog stack =
if_impl (Key.value enable_monitoring) (syslog $ stack) noop
let packages = [
package "logs" ;
package "cmarkit" ;
package ~min:"3.7.1" "tcpip" ;
package ~min:"9.1.0" ~sublibs:["mirage"] "dns-certify";
package "tls-mirage";
package ~min:"4.5.0" ~sublibs:["network"] "mirage-runtime";
]
let () =
register "retreat" [
optional_syslog management_stack;
optional_monitoring management_stack;
main ~packages "Unikernel.Main" (stackv4v6 @-> stackv4v6 @-> job) $ net $ management_stack
]