This release marks some major enhancements and features:
* Reworked provider roles
* Each Provider is a well-defined set of Ansible playbooks, which are called by the LinchPin API
* `resource_definitions` are validated based upon the `resource_group_type` keyword
* Each Provider contains its own schema, found in ``roles/<provider>/files/schema.json``
* Each Provider also has a playbook named based upon the `resource_group_type`, which the LinchPin API uses to call the proper playbook
* For Providers which didn't have a `resource_definitions` section, LinchPin will convert it for backward compatibility.
* Schema validation is done using the [cerberus](http://docs.python-cerberus.org/en/stable/) json validator, replacing the jsonschema validator
* Validation is done at provision time, rather than initially. This provides a useful mechanism to provide a flag for skipping a provision in the future if one doesn't validate.
* Instead of using a giant single schema (or currently two (2) schemas, each resource has its own set that can be updated independently when something changes.
* New API layout
* Provides a more flexible way for developers to use the LinchPin API
* Specifically separates out the CLI bits from the central API
* Adds a linchpin.shell reference implementation of the linchpin.cli API for the command-line interface
* Simplifies the central API into a single call for any action on any resource
* Allow external providers
* In some cases, it may be advantageous to create a set of Ansible Playbooks which can be validated and called via LinchPin. In this way, with a small modification to the configuration, a Developer can create their own provider to use with LinchPin. A developer could even create a replacement for a deficiency in one of the built-in providers.
* Dynamic Input and Templating
* PinFile can include topology and layout data inline
* PinFile can be dynamically created from an external script
* Using Jinja2 and yaml/json template data, a LinchPin command-line shell user can create any PinFile structure
* Jinja2 and template data can be used in the PinFile, topology, or layout files
* Declaring Hooks can be dynamic, but the hooks themselves do not support Jinja2
* A generated PinFile can be saved to an external file prior to provisioning
* Documentation rework
* Rewrote 80+% of the documentation
* Reworked the examples to use ones that are tested regularly
* Better Getting Started Guide
* Improved Installation Guide, with real world examples
* Detailed configuration options
* Created command-line tools documentation
* Documented Providers on a separate page with details around dependencies, credentials, and other uniqueness
* Explained the new PinFile, topology, and layout formats, and included examples
Bug fixes in this release:
* Partial completion of beaker provision results in no inventory file 289
* Create inception-based testing for libvirt functionality enhancement 158
* Many thanks to p3ck for creating container-based tests for many of the major distros, and for testing libvirt, duffy, and dummy modules. More to come!
* fails on centos6 405