Download source code

Download this directory

* I started out to add just deferred aggregates; those that are offline
when starting an experiment (and marked in the apt_aggregates table as
being deferable). When an aggregate is offline, we add an entry to the
new apt_deferred_aggregates table, and periodically retry to start the
missing slivers. In order to accomplish this, I split create_instance
into two scripts, first part to create the instance in the DB, and the
second (create_slivers) to create slivers for the instance. The daemon
calls create_slivers for any instances in the deferred table, until
all deferred aggregates are resolved.
On the UI side, there are various changes to deal with allowing
experiments to be partially create. For example used to wait till we
have all the manifests until showing the topology. Now we show the
topo on the first manifest, and then add them as they come in. Various
parts of the UI had to change to deal with missing aggregates, I am
sure I did not get them all.
* And then once I had that, I realized that "scheduled" experiments was
an "easy" addition, its just a degenerate case of deferred. For this I
added some new slots to the tables to hold the scheduled start time,
and added a started stamp so we can distinguish between the time it
was created and the time it was actually started. Lots of data.
On the UI side, there is a new fourth step on the instantiate page to
give the user a choice of immediate or scheduled start. I moved the
experiment duration to this step. I was originally going to add a
calendar choice for termination, but I did not want to change the
existing 16 hour max duration policy, yet.