Commit graph

74 commits

Author SHA1 Message Date
Hannes Mehnert 2239aafdb7 revive vmm_client 2018-10-26 21:29:59 +02:00
Hannes Mehnert bcb280aa00 refactor commands into vmm_commands 2018-10-26 21:29:59 +02:00
Hannes Mehnert efc043cd5c fix 'vmmc info' 2018-10-26 21:29:59 +02:00
Hannes Mehnert 182e2ae10c policies:
vmmc now has more subcommands
  - policy [-n name] returns all policies in name and below
  - add_policy [-n name] [--cpu cpuid] [--mem mem] [--bridge bridge] [--block size] adds a policy
  - remove [-n name] removes policy at name

policy is just the same which is in vmm_req_delegation, and vmm_resources now check them:
- you cannot insert a subpolicy violating the prefix
- you cannot insert a policy which would forbid current resource usage
- you cannot insert a policy with which any subpolicy would be invalid
- you can adjust (increase/decrease) a policy if the above invariants are kept

implement "force create" directly in vmmd: much nicer to
 - check resource constraints,
 - kill vm potentially,
 - and create a new vm,
all as single transaction.
2018-10-26 21:29:59 +02:00
Hannes Mehnert ea83013068 delegation -> policy 2018-10-26 21:29:59 +02:00
Hannes Mehnert f8d8cffa46 no libs 2018-10-26 21:29:59 +02:00
Hannes Mehnert 3abd769425 minor pkg fixes 2018-10-26 21:29:59 +02:00
Hannes Mehnert e413b8c99a remove naming struggle in vm_config and Log.hdr 2018-10-26 21:29:59 +02:00
Hannes Mehnert 7275073d6b 4.04 is broken, and unsupported 2018-10-26 21:29:59 +02:00
Stefan Grundmann 6e925700f5 FreeBSD package creation 2018-10-07 03:17:01 +00:00
Stefan Grundmann b66be32e8b FreeBSD rc(8) service scripts 2018-10-07 03:17:01 +00:00
Stefan Grundmann 4c5a795a3b console fifos in separate directory 2018-10-07 01:24:33 +00:00
Stefan Grundmann 133884faf4 log, stats and console socket go in their own directory 2018-10-07 00:32:25 +00:00
Hannes Mehnert 49ab6a94ce adjust decompress bound 2018-09-30 13:15:28 +02:00
Hannes Mehnert b90bae0340 vmm_influxdb: if there are no vmm stats, don\t report them 2018-09-30 12:13:24 +02:00
Hannes Mehnert 38094a53e3 use vmm_trie in log and stat, cleanups 2018-09-28 22:44:38 +02:00
Hannes Mehnert 91bda433e8 vmmc: some newlines 2018-09-22 11:54:10 +02:00
Hannes Mehnert 0e975a2b32 vmmc: info of everything 2018-09-22 00:39:07 +02:00
Hannes Mehnert 95cdd18f44 . 2018-09-22 00:26:52 +02:00
Hannes Mehnert 02f8d94db8 s/ukvm/hvt/ 2018-09-21 22:31:04 +02:00
Hannes Mehnert 38b98ab318 minor 2018-09-20 23:19:55 +02:00
Hannes Mehnert 99ba1c5e4b stats are back now! no longer two pullers, but now with one pusher :) 2018-09-20 22:53:42 +02:00
Hannes Mehnert e7b4742964 less is more, also unify default socket paths
and vmmc console command
2018-09-19 21:53:18 +02:00
Hannes Mehnert bd10209297 wip, vmmc and vmmd talk with each other! 2018-09-09 20:52:04 +02:00
Hannes Mehnert 9ec69e23cc rename Vmm_commands to Vmm_unix 2018-07-07 23:14:49 +02:00
Hannes Mehnert 9e4cb94884 vmm_influxdb: improve connection handling (next attempt to not leak fds and reconnect on demand) 2018-07-07 12:38:29 +02:00
Hannes Mehnert 43ee0cf4e0 vmm_influx_stats: more debug 2018-05-07 12:43:47 +02:00
Hannes Mehnert 3017adb6c4 vmm_influxd_stats: more safety 2018-05-05 12:49:42 +02:00
Hannes Mehnert 791752f2b9 enough debugging now, remove it 2018-05-02 21:08:40 +02:00
Hannes Mehnert 53b49c5856 vm_console: once 'attach' is called, relay that to the fd which called attach (preparing to be able to communicate with several clients) 2018-05-02 19:53:22 +02:00
Hannes Mehnert e25d15ee1a vmm_influxdb_stats: proper error handling 2018-05-02 15:36:53 +02:00
Hannes Mehnert 3cec5dd35d vmm_stats: unify with other tools to 10s interval by default 2018-05-01 00:14:33 +02:00
Hannes Mehnert 43b152fa6c vmm_influxdb_stats: more printf debug 2018-04-30 00:43:28 +02:00
Hannes Mehnert c9afb6f5dc CLOEXEC for all the openfile() calls to avoid leaking the fifo's (created and opened by vmmd itself) to ukvm-bin started later 2018-04-30 00:20:28 +02:00
Hannes Mehnert 2764899426 vmm_stats: attempt 4 times to vmmapi_open (during tick) to avoid a race condition :( 2018-04-26 23:55:03 +02:00
Hannes Mehnert 2bf1b96178 get rid of FreeBSD kludge by using devfs! 2018-04-26 22:17:54 +02:00
Hannes Mehnert 1355a92292 require lwt.unix for vmm_lwt 2018-04-26 20:49:59 +02:00
Hannes Mehnert 0583fbfaf1 stats: transmit vmid in add/remove/stats, pid only in add
don't use /tmp anymore, but /var/run/albatross for fifos + sockets + vm images,
  and /var/db/albatross for ukvm-bin and crls, and /var/log/albatross for logging

vmm_console/vmm_log/vmm_stats_lwt: delete socket on startup if it exists

vmm_influxdb_stats: connects to vmm_stats socket and pushes every interval in
 influxdb line format via tcp to specified host and port
2018-04-26 00:03:46 +02:00
Hannes Mehnert c04f062960 vmm_stats_lwt: track pids for each socket connection to tear them down individually 2018-04-24 00:14:40 +02:00
Hannes Mehnert 2bb808105e vmmd: make listen port configurable 2018-04-05 02:16:41 +02:00
Hannes Mehnert d83986cab4 vmmd: initialise nocrypto 2018-04-05 02:14:49 +02:00
Hannes Mehnert 9696953cd7 revise force-restart: now with wait for kill and resource cleanup before start
allows to cleanup various hacks, such as checking for pid in vmm_resources
or removing temporarily the allocated resources from the resource map in vmm_engine

semantics is now slightly different, but for sure enhanced.
- each VM has a Lwt.wait () task attached in Vmm_engine.t (tasks : 'c String.Map.t)
- normal create shouldn't be much different, apart from memoizing the sleeper
- after waitpid is done in vmmd, and vmm_engine.shutdown succeeded, Lwt.wakeup is called for the sleeper
- force create now:
 - checks static policies
 - looks for existing VM (and task), if present: kill and wait for task in vmmd
 - continue with presence checking of vm name, dynamic policies, allocate resources (tap, img, fifo)

this means the whole randomness in filenames can be removed, and the
communication between vmm_console and vmm_client is working again (attach/detach
could not work since vmm_console knew only about "albatross.AAA.BBB.RANDOM",
whereas vmm_client insisted on "AAA.BBB"

resource overcommitment (and races in e.g. block device closing + opening) are
gone now, only if the old vm is cleanup up, resources for the new one are
allocated and it is executed
2018-04-05 01:02:45 +02:00
Hannes Mehnert a89b2925fd Vmm_core.cmd is now a variant (no longer polymorphic variant), some renames in Vmm_wire.Stats and Vmm_wire.Console to disambiguate 2018-04-04 22:16:31 +02:00
Hannes Mehnert fdab43aed6 vmm_engine: finish renaming Destroy_image -> Destroy_vm (broken since bb61388cfc) 2018-04-04 21:46:37 +02:00
Hannes Mehnert 7a4661b2e1 style: require lwt 3.0.0, fix warnings, disable 4 (fragile pattern matching) and 48 (implicit elimination of optional argument) 2018-04-03 22:58:31 +02:00
Hannes Mehnert 54179f55fc vmmd: failure semantics of stats socket the same as others (raise exception), no silent dropping of statistics 2018-04-03 22:49:50 +02:00
Hannes Mehnert d9f8f10b04 vmm_stats_lwt: accept command line option for interval 2018-04-03 22:49:00 +02:00
Hannes Mehnert a0c0f39734 vmm_stats: more debug, ignore vmmapi_open failure
vmm_stats_lwt: drop all pids on socket disconnect
vmmd: setup statistics slightly later (after the chmod on FreeBSD)
2018-04-01 23:59:12 +02:00
Hannes Mehnert 66df394d36 vmm_stats: allow vmmapi to fail (and report nothing), more convenient for linux code path 2018-03-24 23:39:16 +01:00
Hannes Mehnert 51d1dc63dc vmm_stats: fix fd leaks (fixes #10)
- vm_open only once per vm (vmmapi_open), returning vmctx
 - get stats descriptions only once in lifetime (vmmapi_statnames)
 - close file descriptor on `remove_pid` (vmmapi_close)

vmm_stats_once: command line utility (for debugging) for stats gathering
2018-03-24 22:33:51 +01:00