- moved TaskOps into a dedicated object TaskOp
- creation of TaskOps is delegated from AppTaskLauncherActor to taskOpLogic
- adjusted AppTaskLauncherActor to handle TaskOps Launch and ReserveAndCreate
- introduced an OfferOperationFactory – reserve and create both need the framework role and principal and are thus easier to handle as wired class objects rather than singleton objects
- adjusted DefaultTaskOpLigic to infer TaskOps depending on whether the app is resident or not.
- new functions in the TaskBuilder targeting resident apps expect a ResourceMatch/VolumeMatch to be passed in (in order to decide which taskOp to generate, we need to know whether there's a volumeMatch or not – before using tha taskBuilder)
- validate the responsibilities of TaskOpLogic/TaskBuilder and related classes
- validate the counting logic inside AppTaskLauncherActor
- write unit/integration tests for resident tasks that verify the behavior on each layer
- role and principal are currently passed along from DefaultTaskOpLogic to TaskOpFactory to OfferOperationFactory. This is ugly but the alternative would be to wire all these via Guice.
- ... surely some more open points