Clone this wiki locally
Executive Summary: Starts and terminates virtual machines in supported Infrastructure-as-a-Services.
Why do we need it?
AppScale is a Platform-as-a-Service, so it (ideally) runs on top of an Infrastructure-as-a-Service. The complexity associated with starting virtual machines and managing them was originally placed within the AppController, but moving it into its own service allows other services to dynamically scale up and down, without needing to know how to do so for each Infrastructure-as-a-Service that we support. Currently those Infrastructure-as-a-Services are:
- Amazon EC2
What does it do, and how does it do it?
The InfrastructureManager exposes methods via SOAP that can be used to start, query, or terminate virtual machines. Currently the InfrastructureManager uses the euca2ools when interacting with Eucalyptus, and the EC2 tools when interacting with Amazon EC2. In the future, we'd like to refactor this interface to use a Factory pattern - implementers should see how we provide Factory support for pluggable Datastores within the NeptuneManager for inspiration (located in
When does it do it?
In response to an AppController or NeptuneManager asking for virtual machines to be started or terminated.
Where does it do it?
An InfrastructureManager runs on each node within an AppScale deployment.
The InfrastructureManager is written in Ruby, and its code can be found in
appscale/InfrastructureManager. The main InfrastructureManager daemon is called
infrastructure_manager.rb, and the SOAP server that exposes its methods is found in
Tests are written with test/unit and flexmock. Run the current unit test suite from