package albatross
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=fca03a99220d743386ed97900271e2fb1e38c48c56f10faa2a47757fc931db8e
sha512=ee608bcd42047f702bfe6007f664dc10d71faa4f2aeaedf278802c58f6b3bcfe35d53ebcb73f5e3ce59bbc9e6bfa8f27e81051d10a690876fa035b0279e950da
doc/albatross/Vmm_resources/index.html
Module Vmm_resources
Source
A tree data structure including policies and dynamic usage.
Considering delegation of resources to someone, and further delegation to others - using a process which is not controlled by the authority - requires runtime tracking of these delegations and the actual usage:
If Alice may create 2 virtual machines, and she delegates the same capability further to both Bob and Charlie, the authority must still enforce that Alice, Bob, and Charlie are able to run 2 virtual machines in total, rather than 2 each.
type t = private {
policies : Vmm_core.Policy.t Vmm_trie.t;
block_devices : (int * bool) Vmm_trie.t;
unikernels : Vmm_core.Unikernel.t Vmm_trie.t;
}
The type of the resource tree.
find_unikernel t name
is either Some unikernel
or None
.
find_policy t path
is either Some policy
or None
.
find_block t name
is either Some (size, active)
or None
.
val check_unikernel :
t ->
Vmm_core.Name.t ->
Vmm_core.Unikernel.config ->
(unit, [> `Msg of string ]) result
check_unikernel t name unikernel
checks whether unikernel
under name
in t
would be allowed under the current policies.
insert_unikernel t name unikernel
inserts unikernel
under name
in t
, and returns the new t
. The caller has to ensure (using check_unikernel
) that an unikernel with the same name does not yet exist, and the block device is not in use.
val insert_policy :
t ->
Vmm_core.Name.path ->
Vmm_core.Policy.t ->
(t, [> `Msg of string ]) result
insert_policy t path policy
inserts policy
under path
in t
, and returns the new t
or an error.
check_block t name size
checks whether size
under name
in t
would be allowed under the current policies.
insert_block t name size
inserts size
under name
in t
, and returns the new t
or an error.
remove_unikernel t name
removes unikernel name
from t
.
remove_policy t path
removes policy path
from t
.
remove_block t name
removes block name
from t
.