Project

General

Profile

« Previous | Next » 

Revision f8d94608

Added by Amos Benari over 11 years ago

  • ID f8d946082e58b60213a27ded3e1e5f5373d976de

fixes #832 - adds parameterized class support

Credits:
This patch is based on the original work of Olivier Favre
<> many many thanks!

This patch adds the following features
  • import class parameters, and try to understand their types
  • support a complex matrix of environments, puppet classes and their
    signature - each class can have a different set of parameters per environment.
  • adds an ignore yaml file 'config/ignored_environments.yml.sample' file were
    users can add regexp or class names that the importer should ignore.
    common usage case for this is classes such as ::config, ::install etc.
  • introduce a new type of smart variable - parameterized.
  • adds complex data types to smart vars, arrays, hashes, json, yaml etc are all supported now.

in order to use the new ENC format for puppet 2.6.5+ you should enable the
Parametrized_Classes_in_ENC and Enable_Smart_Variables_in_ENC within Foreman Settings

This is the initial patch just to get param classes support in, follow-up patches
would include a better UI and the relevant UI updates to host edit page etc.

Signed-off-by: Ohad Levy <>

View differences:

app/views/common/_puppetclasses_or_envs_changed.html.erb
<%= form_tag "/#{controller_path}/obsolete_and_new" do -%>
<fieldset>
<legend>Accept these environment changes found in puppet? </legend>
<table>
<th>Environment</th><th>Operation</th><th>Classes</th>
<% for kind in ["new", "obsolete"] -%>
<table class="table table-striped">
<th>Environment</th><th>Operation</th><th>Puppet Modules</th>
<% for kind in ["new", "obsolete", "updated"] -%>
<% unless (envs = @changed[kind]).empty? -%>
<% for env in envs.keys.sort -%>
<tr class="<%= cycle("even", "odd")-%>" >
<tr>
<td>
<%= check_box_tag "changed[#{kind}][#{env}]", @changed[kind][env].to_json, true %>
<%= env -%>
</td>
<td>
<%= kind == "new" ? "Add:" : "Remove:" -%>
<%= {"new" => "Add:", "obsolete" => "Remove:", "updated" => "Update:"}[kind] -%>
</td>
<% pcs = @changed[kind][env] -%>
<td>
<% pcs = @changed[kind][env] -%>
<%= class_update_text pcs, env %>
</td>
</tr>
......
<%= link_to "Cancel","/" + controller_path, :class => "btn" %>
<%= submit_tag "Update", :class => "btn btn-primary" %>
</div>
<% end -%>
<% end -%>

Also available in: Unified diff