Motivation

The PNDA CLI initially only supported creating PNDA on AWS using the Cloud Formation API. Subsequently, support was added for skipping the Cloud Formation parts and installing PNDA on an existing set of servers (the 'existing machines' approach). 

An entirely different code base is used to install PNDA on Openstack using HEAT (this is located in the pnda-heat-templates repository).

There are maintainability benefits to havig a single code base for all CLIs - for example a 100% consistent CLI syntax, shared code to validate user input and so on.

So we would like to move the current PNDA CLI towards a unified CLI that contains specific implementations to support each target deployment environment - AWS, HEAT, Existing machines, and any that may come along in future, while sharing other logic such as user input, configuration and validation. The first step towards this is to refactor the PNDA CLI into a more structured architecture, with the AWS and Existing machines code separated out into their own modules.

Proposal

Plan

Phase 1 (complete)

Phase 2

Phase 3