princeton-sns / firecracker-tools

5 stars 5 forks source link

A functioning controller #8

Closed alevy closed 5 years ago

alevy commented 5 years ago

This is a fairly basic, but mostly complete, controller for a single machine.

Functions are defined in the config.rs module.

It reads requests as JSON from a file and lazily launches Firecracker VMs for the specified functions. It delivers future requests to the same VMs if they are running the right function, queuing all requests to the VM.

There are still some hardcoded values, like the root directory to look for rootfs and appfs filesystem images. I'll clean those up.

LedgeDash commented 5 years ago

Build fails on my end on the controller branch. Here's the error message:

   Compiling firerunner v0.1.0 (/home/luzhuo/Dev/serverless/firecracker-tools/firerunner)
error[E0063]: missing fields `dump_dir`, `load_dir` in initializer of `vmm::vmm_config::instance_info::InstanceInfo`
  --> src/vmm_wrapper.rs:28:52
   |
28 |             let shared_info = Arc::new(RwLock::new(InstanceInfo {
   |                                                    ^^^^^^^^^^^^ missing `dump_dir`, `load_dir`

But master branch build works. My Firecracker submodule is on remote head commit (b53fe76a210526d5d1d55a533857086306e5edb1)

tan-yue commented 5 years ago

I resolved merge conflicts and now controller branch build should work. Please help take a look at them.