We have a few problems:
1) the Horizon UI doesn't maintain revision history
2) the Wikitech hiera UI needs to go away in order to decouple keystone from Wikitech
3) the Horizon UI is frustratingly slow
Here are proposed steps to address those:
a) Set up a git repo to store the classes and hiera from puppet. One big repo, probably with subdirs per project. Each edit on Horizon will push a patch to that repo using a service user.
b) Remove the custom class-and-args UI from Horizon. We already have a simple list-of-classes and hiera-yaml UI, so have those two edit widgets be the only editing UI.
c) <to do anytime a is complete> move all wikitech-hosted puppet config to Horizon
d) rip out the wikitech/puppet integration, replace each wikitech puppet page with a link to a git browser.
e) <bonus points> remove the custom ENC and labspuppet API and have puppetmasters pull custom puppet classes and hiera directly from git
f) <even more bonus points> Change to one repo per project, have keystone write project adminship to ldap in a way that gerrit can consume it, thus giving +2/merge rights to project admins via gerrit.