lang: Initial implementation of the mgmt language

This is an initial implementation of the mgmt language. It is a
declarative (immutable) functional, reactive, domain specific
programming language. It is intended to be a language that is:

* safe
* powerful
* easy to reason about

With these properties, we hope this language, and the mgmt engine will
allow you to model the real-time systems that you'd like to automate.

This also includes a number of other associated changes. Sorry for the
large size of this patch.
This commit is contained in:
James Shubin
2018-01-20 08:09:29 -05:00
parent 1c8c0b2915
commit b19583e7d3
237 changed files with 25256 additions and 743 deletions

35
examples/lang/states0.mcl Normal file
View File

@@ -0,0 +1,35 @@
$ns = "estate"
$exchanged = kvlookup($ns)
$state = maplookup($exchanged, $hostname, "default")
if $state == "one" || $state == "default" {
file "/tmp/mgmt/state" {
content => "state: one\n",
}
kv "${ns}" {
key => $ns,
value => "two",
}
}
if $state == "two" {
file "/tmp/mgmt/state" {
content => "state: two\n",
}
kv "${ns}" {
key => $ns,
value => "three",
}
}
if $state == "three" {
file "/tmp/mgmt/state" {
content => "state: three\n",
}
kv "${ns}" {
key => $ns,
value => "one",
}
}