For dynamically allocated blueprints, you'll have some sort of base image that is used to spin up new instances of machines. Currently these images have to be manually built and saved (as an AMI or disk image) and then re-used later.
Instead, we should support a Drydock blueprint which can build these base images by allocating a host on the appropriate backend, performing a set up of steps (perhaps a Harbormaster build?) and then saving the image as an available resource (which can then be leased on by other blueprints).
Each resource (image) in this sense, is a version of the built image. The blueprint should manage automatically closing and deleting the image when all resources stop using it (as long as it's not the latest version of the resource). This blueprint will also need an expiry mechanism, which in this case indicates the time after which it should build a new copy of the image before giving out a lease.