Design

The following outlines some key points from the design of the library:

Images

Instances are expected to use the latest daily image, unless another image is specifically requested.

cloud-init

The images are expected to have cloud-init in them to properly start. When an instance is started or during launch, the instance is checked for the boot complete file that cloud-init produces.

Instances

Instances shall use consistent operation schema across the clouds. For example:

  • launch
  • start
  • shutdown
  • restart

In addition interactions with the instance are covered by a standard set of commands:

  • execute
  • pull_file
  • push_file
  • console_log

Exceptions

All exceptions from underlying libraries are passed directly through for the end-user. There are a large number of exceptions to catch and possibilities, not to mention that they can change over time. By not catching them it informs the user that issues are found with what they are doing instead of hiding it from them.

Logging

Logging is setup using the standard logging module. It is up to the user to setup their logging configuration and set the appropriate level.

Logging for paramiko, used for SSH communication, is restricted to warning level and higher, otherwise the logging is far too verbose.