tumblr/collins — pull request #155 by byxorna (2014-05-01 14:15:46+00:00)
Title: Gabe provision hardware restrictions

This PR introduces the ability for the provisioning system to restrict profiles to only be provisioned on certain classifications of assets. This uses the node classification system. Omitting ```allowed_classes``` in a profile places no restrictions on what hardware can be provisioned. By listing tags of node classifiers, the node profile will only provision on any of the listed classifications of assets.

I.e. if provisioning an asset as ```databasenode```, which is classified as ```web```, and ```databasenode``` is configured thusly:
```
databasenode:
label: "Database Node"
prefix: db
allowed_classes:
- database
- io_node
```
You will see
![screen shot 2014-04-30 at 7 12 17 pm](https://cloud.githubusercontent.com/assets/130194/2852762/c4d35062-d13a-11e3-97f9-537c2ebc6d3d.png)

If the asset does not match any classifiers, and you attempt to provision it as a database node:
![screen shot 2014-04-30 at 7 12 46 pm](https://cloud.githubusercontent.com/assets/130194/2852775/f1eb0964-d13a-11e3-952b-7bf43fcc4dfa.png)

If the asset matches ```io_node``` or ```database``` node classifier, provisioning works.

Note: This still requires tests for loading the profile. Ill add this once https://github.com/tumblr/collins/pull/154 is merged to reduce the amount of conflicts I need to manage.