Local (LXC) Provider

Registered by Antonio Rosales

[RATIONALE]
Developing and testing charms needs the usage of providers. The usage of external ones like EC2 or an OpenStack installation creates costs and/or dependencies. That hinders the creation of new or maintenance of existing charms. Also new charm contributors may be deterred by those concomitant effects.

A local provider instead allows the testing of new or changed charms without external providers. Additionally the evaluation of Juju in pilot projects gets easier and helps improving the acceptance of Juju.

[GOAL]
- Implement a LXC based provider for local Juju usage.
- Test the provider with a representative set of charms (yet to be defined).
- Provide mechanisms for automated testing (depending on automated testing of Juju).
- Provide an interface to Juju Charm Testing (https://blueprints.launchpad.net/ubuntu/+spec/servercloud-s-juju-charm-testing)

Blueprint information

Status:
Complete
Approver:
Mark Ramm
Priority:
High
Drafter:
Frank Mueller
Direction:
Approved
Assignee:
Tim Penhey
Definition:
Approved
Series goal:
None
Implementation:
Implemented
Milestone target:
None
Started by
Tim Penhey
Completed by
Tim Penhey

Related branches

Whiteboard

[USER STORIES]
As a charm developer I want to deploy and test charms on my local machine.

As a sysop I want to evaluate charms and their configuration on my local machine.

As a charm developer or sysop I want to use the same Juju tool set to administrate the local instances as if I would do it with remote providers.

[ASSUMPTIONS]
Automated testing for Juju will be realized.

[RISKS]
Late detection that LXC is not the optimal tool for virtualization.

Time needed to evaluate LXC alternatives.

[IN SCOPE]
[OUT OF SCOPE]
[USER ACCEPTANCE]
[RELEASE NOTE/BLOG]

(?)

Work Items

Work items:
Add command get-images - write as a plugin size 2: TODO
[thumper] LXC provisioner size 8: DONE
[thumper] Update jujud machine agent to support LXC context size 4: DONE
[thumper] Machine agent supplies IP addresses to containers size 4: INPROGRESS
[thumper] Implement local provider storage size 2: DONE
[thumper] Implement environ provider size 2: DONE
[thumper] Implement environ size 2: DONE
[jcastro] Document limitations of local provider: TODO