foreman_salt 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/foreman_salt/concerns/hosts_controller_extensions.rb +5 -3
  3. data/app/controllers/foreman_salt/salt_environments_controller.rb +45 -0
  4. data/app/models/concerns/foreman_salt/host_managed_extensions.rb +1 -0
  5. data/app/models/concerns/foreman_salt/hostgroup_extensions.rb +14 -0
  6. data/app/models/concerns/foreman_salt/orchestration/salt.rb +4 -3
  7. data/app/models/foreman_salt/salt_environment.rb +21 -0
  8. data/app/models/foreman_salt/salt_module.rb +1 -1
  9. data/app/overrides/foreman/salt_modules/_host_tab.html.erb +1 -1
  10. data/app/overrides/foreman/salt_modules/_host_tab_pane.html.erb +2 -2
  11. data/app/overrides/salt_environment_selector.rb +13 -0
  12. data/app/views/foreman_salt/salt_environments/_form.html.erb +15 -0
  13. data/app/views/foreman_salt/salt_environments/edit.html.erb +4 -0
  14. data/app/views/foreman_salt/salt_environments/index.html.erb +23 -0
  15. data/app/views/foreman_salt/salt_environments/new.html.erb +4 -0
  16. data/app/views/foreman_salt/salt_modules/_form.html.erb +1 -1
  17. data/app/views/foreman_salt/salt_modules/edit.html.erb +1 -1
  18. data/app/views/foreman_salt/salt_modules/index.html.erb +2 -2
  19. data/app/views/foreman_salt/salt_modules/new.html.erb +1 -1
  20. data/config/routes.rb +7 -1
  21. data/db/migrate/20140920232200_create_salt_environments.rb +19 -0
  22. data/lib/foreman_salt/engine.rb +19 -5
  23. data/lib/foreman_salt/version.rb +1 -1
  24. data/test/integration/salt_environment_test.rb +27 -0
  25. data/test/integration/salt_module_test.rb +2 -2
  26. data/test/unit/salt_modules_test.rb +17 -0
  27. metadata +62 -50
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dbf372535a8e277e4a1fd65d32271fa7b26b1e31
4
- data.tar.gz: dea79e99a14a254b5550cfd7aa73ba1b2c27034a
3
+ metadata.gz: 2e2b2790368b1ac4ecfb5b3fcd19bfcdb0274acc
4
+ data.tar.gz: 987a376ba11c90087cee57d7fed8c824c3465fe7
5
5
  SHA512:
6
- metadata.gz: c5ae749eac1dfcdf696ff34cfb12c1b816ece02b047eef2c9c8e7836bd7b0b1b9a1b98e4d8f3ff0341046dbf287f60ac665d178ef7488b92c6cf7e927f9012ab
7
- data.tar.gz: cf6e273a09c29a1208ce0752acf58db2fff6d47f270866b3c97d956a57c71cf6e55e94040938f517bbc00c84b30d30fe52615762a3e16b11e4c3b930614f4cd3
6
+ metadata.gz: 8f505bfe69b144df567bebed2b5ae9c188ded36f39ac3bce3bf5801a8856c26f53724bac9f3dd5fddeafb82c76d66455886531354882a56da5a9f35075bffc2c
7
+ data.tar.gz: 23ba6cec5f63d40124c02ba81b4aabb4e272ae87ce6939d625c1dc9f1db53424a667f8f8eee224ba4a71e3f43caadd0af57ade326092df3a16d8bab0f3ad0a39
@@ -24,10 +24,12 @@ module ForemanSalt
24
24
  begin
25
25
  @host = resource_base.find_by_name(params[:name])
26
26
  enc = {}
27
+ env = @host.salt_environment.blank? ? 'base' : @host.salt_environment
27
28
  enc["classes"] = @host.salt_modules.any? ? @host.salt_modules.map(&:name) : []
28
29
  enc["parameters"] = @host.info["parameters"]
30
+ enc["environment"] = env
29
31
  respond_to do |format|
30
- format.html { render :text => "<pre>#{ERB::Util.html_escape(enc.to_yaml)}</pre>" }
32
+ format.html { render :text => "<pre>#{ERB::Util.html_escape(enc.to_yaml)}</pre>" }
31
33
  format.yml { render :text => enc.to_yaml }
32
34
  end
33
35
  rescue
@@ -40,7 +42,7 @@ module ForemanSalt
40
42
  @hostgroup = Hostgroup.find(params[:host][:hostgroup_id]) if params[:host][:hostgroup_id].to_i > 0
41
43
  return head(:not_found) unless @hostgroup
42
44
 
43
- @salt_modules = @host.salt_modules if @host
45
+ @salt_modules = @host.salt_modules if @host
44
46
  @inherited_salt_modules = @hostgroup.salt_modules
45
47
  process_hostgroup_without_salt_modules
46
48
  end
@@ -60,7 +62,7 @@ module ForemanSalt
60
62
 
61
63
  def load_vars_for_ajax_with_salt_modules
62
64
  return unless @host
63
- @salt_modules = @host.salt_modules
65
+ @salt_modules = @host.salt_modules
64
66
  @inherited_salt_modules = @host.hostgroup.salt_modules if @host.hostgroup
65
67
  load_vars_for_ajax_without_salt_modules
66
68
  end
@@ -0,0 +1,45 @@
1
+ module ForemanSalt
2
+ class SaltEnvironmentsController < ::ApplicationController
3
+ include Foreman::Controller::AutoCompleteSearch
4
+
5
+ before_filter :find_by_name, :only => [:edit, :update, :destroy]
6
+
7
+ def index
8
+ @salt_environments = resource_base.search_for(params[:search], :order => params[:order]).paginate(:page => params[:page])
9
+ end
10
+
11
+ def new
12
+ @salt_environment = SaltEnvironment.new
13
+ end
14
+
15
+ def create
16
+ logger.info("Params: #{params.inspect}")
17
+ @salt_environment = SaltEnvironment.new(params[:foreman_salt_salt_environment])
18
+ if @salt_environment.save
19
+ process_success
20
+ else
21
+ process_error
22
+ end
23
+ end
24
+
25
+ def edit
26
+ end
27
+
28
+ def update
29
+ if @salt_environment.update_attributes(params[:foreman_salt_salt_environment])
30
+ notice _("Successfully updated %s." % @salt_environment.to_s)
31
+ redirect_to salt_environments_path
32
+ else
33
+ process_error
34
+ end
35
+ end
36
+
37
+ def destroy
38
+ if @salt_environment.destroy
39
+ process_success
40
+ else
41
+ process_error
42
+ end
43
+ end
44
+ end
45
+ end
@@ -5,6 +5,7 @@ module ForemanSalt
5
5
  included do
6
6
  has_and_belongs_to_many :salt_modules, :class_name => "ForemanSalt::SaltModule", :join_table => "hosts_salt_modules", :foreign_key => "host_id"
7
7
  belongs_to :salt_proxy, :class_name => "SmartProxy"
8
+ belongs_to :salt_environment, :class_name => "ForemanSalt::SaltEnvironment"
8
9
  alias_method_chain :params, :salt_proxy
9
10
  alias_method_chain :set_hostgroup_defaults, :salt_proxy
10
11
  alias_method_chain :smart_proxy_ids, :salt_proxy
@@ -5,6 +5,7 @@ module ForemanSalt
5
5
  included do
6
6
  has_and_belongs_to_many :salt_modules, :class_name => "ForemanSalt::SaltModule"
7
7
  belongs_to :salt_proxy, :class_name => "SmartProxy"
8
+ belongs_to :salt_environment, :class_name => "ForemanSalt::SaltEnvironment"
8
9
  end
9
10
 
10
11
  def salt_modules
@@ -42,6 +43,19 @@ module ForemanSalt
42
43
  end
43
44
  end
44
45
 
46
+ def salt_environment
47
+ return super unless ancestry.present?
48
+ ForemanSalt::SaltEnvironment.find_by_id(inherited_salt_environment_id)
49
+ end
50
+
51
+ def inherited_salt_environment_id
52
+ if ancestry.present?
53
+ read_attribute(:salt_environment_id) || self.class.sort_by_ancestry(ancestors.where("salt_environment_id is not NULL")).last.try(:salt_environment_id)
54
+ else
55
+ self.salt_environment_id
56
+ end
57
+ end
58
+
45
59
  def salt_master
46
60
  salt_proxy.to_s
47
61
  end
@@ -34,6 +34,7 @@ module ForemanSalt
34
34
  end
35
35
 
36
36
  def queue_salt_destroy
37
+ return unless salt? && errors.empty?
37
38
  queue.create(:name => _("Remove autosign entry for %s") % self, :priority => 50, :action => [self, :salt_autosign_remove])
38
39
  queue.create(:name => _("Delete existing salt key for %s") % self, :priority => 50, :action => [self, :salt_key_delete])
39
40
  end
@@ -49,7 +50,7 @@ module ForemanSalt
49
50
  salt_key_delete # if there's already an existing key
50
51
  @salt_api.autosign_create name
51
52
  rescue => e
52
- failure _("Failed to create %{name}'s Salt autosign entry: %{e}") % { :name => name, :e => proxy_error(e) }
53
+ failure _("Failed to create %{name}'s Salt autosign entry: %{e}") % { :name => name, :e => e }
53
54
  end
54
55
 
55
56
  def salt_autosign_remove
@@ -57,7 +58,7 @@ module ForemanSalt
57
58
  initialize_salt
58
59
  @salt_api.autosign_remove name
59
60
  rescue => e
60
- failure _("Failed to remove %{name}'s Salt autosign entry: %{e}") % { :name => name, :e => proxy_error(e) }
61
+ failure _("Failed to remove %{name}'s Salt autosign entry: %{e}") % { :name => name, :e => e }
61
62
  end
62
63
 
63
64
  def salt_key_delete
@@ -65,7 +66,7 @@ module ForemanSalt
65
66
  initialize_salt
66
67
  @salt_api.key_delete name
67
68
  rescue => e
68
- failure _("Failed to delete %{name}'s Salt key: %{e}") % { :name => name, :e => proxy_error(e) }
69
+ failure _("Failed to delete %{name}'s Salt key: %{e}") % { :name => name, :e => e }
69
70
  end
70
71
  end
71
72
  end
@@ -0,0 +1,21 @@
1
+ module ForemanSalt
2
+ class SaltEnvironment < ActiveRecord::Base
3
+ include Taxonomix
4
+ include Authorizable
5
+
6
+ before_destroy EnsureNotUsedBy.new(:hosts, :hostgroups)
7
+
8
+ has_many :hosts, :class_name => "::Host::Managed"
9
+ has_many :hostgroups, :class_name => "::Hostgroup"
10
+
11
+ validates :name, :uniqueness => true, :presence => true, :format => { :with => /\A[\w\d\.]+\z/, :message => N_("is alphanumeric and cannot contain spaces") }
12
+
13
+ default_scope lambda {
14
+ order("salt_environments.name")
15
+ }
16
+
17
+ scoped_search :on => :name, :complete_value => true
18
+ scoped_search :in => :hostgroups, :on => :name, :complete_value => true, :rename => :hostgroup
19
+ scoped_search :in => :hosts, :on => :name, :complete_value => true, :rename => :host
20
+ end
21
+ end
@@ -9,7 +9,7 @@ module ForemanSalt
9
9
 
10
10
  has_and_belongs_to_many :hostgroups, :class_name => "::Hostgroup", :join_table => "hostgroups_salt_modules"
11
11
 
12
- validates :name, :uniqueness => true, :presence => true, :format => { :with => /\A[\w\d]+\z/, :message => N_("is alphanumeric and cannot contain spaces") }
12
+ validates :name, :uniqueness => true, :presence => true, :format => { :with => /\A(?:[\w\d]+\.{0,1})+[^\.]\z/, :message => N_("must be alphanumeric, can contain dots and must not contain spaces") }
13
13
 
14
14
  default_scope lambda {
15
15
  order("salt_modules.name")
@@ -1,2 +1,2 @@
1
- <li><a href="#salt_modules" data-toggle="tab"><%= _('Salt Modules') %></a></li>
1
+ <li><a href="#salt_modules" data-toggle="tab"><%= _('Salt States') %></a></li>
2
2
 
@@ -2,7 +2,7 @@
2
2
  <div class="tab-pane" id="salt_modules">
3
3
  <div class="row">
4
4
  <div class="col-md-4">
5
- <h3>Inherited Modules</h3>
5
+ <h3>Inherited States</h3>
6
6
  <ul>
7
7
  <% @inherited_salt_modules.sort.each do |salt_module| -%>
8
8
  <li title="Inherited from hostgroup"><%= salt_module.name -%></li>
@@ -10,7 +10,7 @@
10
10
  </ul>
11
11
  </div>
12
12
  <div class="col-md-8">
13
- <h3>Salt Modules</h3>
13
+ <h3>Salt States</h3>
14
14
  <% if @inherited_salt_modules.blank? -%>
15
15
  <%= multiple_selects f, :salt_module, ::ForemanSalt::SaltModule, @salt_modules.try(:map, &:id), :label => "" %>
16
16
  <% else -%>
@@ -0,0 +1,13 @@
1
+ selector_text = "<%= select_f f, :salt_environment_id, ForemanSalt::SaltEnvironment.all, :id, :name,
2
+ { :include_blank => blank_or_inherit_f(f, :salt_environment) },
3
+ { :label => _('Salt Environment') } %>"
4
+
5
+ Deface::Override.new(:virtual_path => "hosts/_form",
6
+ :name => "add_salt_environment_to_host",
7
+ :insert_bottom => 'div#primary',
8
+ :text => selector_text)
9
+
10
+ Deface::Override.new(:virtual_path => "hostgroups/_form",
11
+ :name => "add_salt_environment_to_hostgroup",
12
+ :insert_bottom => 'div#primary',
13
+ :text => selector_text)
@@ -0,0 +1,15 @@
1
+ <%= form_for @salt_environment, :url => (@salt_environment.new_record? ? salt_environments_path : salt_environment_path(:id => @salt_environment.id)) do |f| %>
2
+ <%= base_errors_for @salt_environment %>
3
+ <ul class="nav nav-tabs" data-tabs="tabs">
4
+ <li class="active"><a href="#primary" data-toggle="tab"><%= _('Salt Environments') %></a></li>
5
+ </ul>
6
+
7
+ <div class="tab-content">
8
+ <div class="tab-pane active" id="primary">
9
+ <%= text_f f, :name %>
10
+ </div>
11
+ </div>
12
+
13
+ <%= submit_or_cancel f %>
14
+ <% end %>
15
+
@@ -0,0 +1,4 @@
1
+ <% title(_("Edit Salt Environment %s") % @salt_environment) %>
2
+
3
+ <%= render :partial => 'form' %>
4
+
@@ -0,0 +1,23 @@
1
+ <% title _("Salt Environments") %>
2
+
3
+ <% title_actions button_group(display_link_if_authorized(_("New Salt Environment"), hash_for_new_salt_environment_path)) %>
4
+
5
+ <table class="table table-bordered table-striped">
6
+ <tr>
7
+ <th><%= sort :name, :as => s_("SaltEnvironment|Name") %></th>
8
+ <th></th>
9
+ </tr>
10
+ <% for salt_environment in @salt_environments %>
11
+ <tr>
12
+ <td><%=link_to_if_authorized h(salt_environment.name), hash_for_edit_salt_environment_path(:id => salt_environment).merge(:auth_object => salt_environment, :authorizer => authorizer) %></td>
13
+ <td>
14
+ <%= action_buttons(display_delete_if_authorized hash_for_salt_environment_path(:id => salt_environment).merge(:auth_object => salt_environment, :authorizer => authorizer),
15
+ :confirm => _("Delete %s?") % salt_environment.name) %>
16
+ </td>
17
+ </tr>
18
+ <% end %>
19
+ </table>
20
+
21
+ <%= page_entries_info @salt_environments %>
22
+ <%= will_paginate @salt_environments %>
23
+
@@ -0,0 +1,4 @@
1
+ <% title _("New Salt Environment") %>
2
+
3
+ <%= render :partial => 'form' %>
4
+
@@ -1,7 +1,7 @@
1
1
  <%= form_for @salt_module, :url => (@salt_module.new_record? ? salt_modules_path : salt_module_path(:id => @salt_module.id)) do |f| %>
2
2
  <%= base_errors_for @salt_module %>
3
3
  <ul class="nav nav-tabs" data-tabs="tabs">
4
- <li class="active"><a href="#primary" data-toggle="tab"><%= _('Salt Modules') %></a></li>
4
+ <li class="active"><a href="#primary" data-toggle="tab"><%= _('Salt States') %></a></li>
5
5
  </ul>
6
6
 
7
7
  <div class="tab-content">
@@ -1,4 +1,4 @@
1
- <% title(_("Edit Salt Module %s") % @salt_module) %>
1
+ <% title(_("Edit Salt State %s") % @salt_module) %>
2
2
 
3
3
  <%= render :partial => 'form' %>
4
4
 
@@ -1,6 +1,6 @@
1
- <% title _("Salt modules") %>
1
+ <% title _("Salt States") %>
2
2
 
3
- <% title_actions button_group(display_link_if_authorized(_("New Salt module"), hash_for_new_salt_module_path)) %>
3
+ <% title_actions button_group(display_link_if_authorized(_("New Salt State"), hash_for_new_salt_module_path)) %>
4
4
 
5
5
  <table class="table table-bordered table-striped">
6
6
  <tr>
@@ -1,4 +1,4 @@
1
- <% title _("New Salt module") %>
1
+ <% title _("New Salt State") %>
2
2
 
3
3
  <%= render :partial => 'form' %>
4
4
 
data/config/routes.rb CHANGED
@@ -3,7 +3,13 @@ Rails.application.routes.draw do
3
3
  scope :salt, :path => '/salt' do
4
4
  match "/node/:name" => 'hosts#salt_external_node', :constraints => { :name => /[^\.][\w\.-]+/ }
5
5
 
6
- resources :salt_modules, :controller => 'foreman_salt/salt_modules' do
6
+ resources :salt_environments, :controller => 'foreman_salt/salt_environments' do
7
+ collection do
8
+ get 'auto_complete_search'
9
+ end
10
+ end
11
+
12
+ resources :salt_modules, :controller => 'foreman_salt/salt_modules' do
7
13
  collection do
8
14
  get 'auto_complete_search'
9
15
  end
@@ -0,0 +1,19 @@
1
+ class CreateSaltEnvironments < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :salt_environments do |t|
4
+ t.string :name, :default => "", :null => false
5
+ t.timestamps
6
+ end
7
+
8
+ add_column :hosts, :salt_environment_id, :integer
9
+ add_column :hostgroups, :salt_environment_id, :integer
10
+
11
+ add_index :salt_environments, :name, :unique => true
12
+ end
13
+
14
+ def self.down
15
+ remove_column :hosts, :salt_environment_id
16
+ remove_column :hostgroups, :salt_environment_id
17
+ drop_table :salt_environments
18
+ end
19
+ end
@@ -19,9 +19,15 @@ module ForemanSalt
19
19
  Foreman::Plugin.register :foreman_salt do
20
20
  requires_foreman '>= 1.6'
21
21
 
22
- menu :top_menu, :salt,
22
+ menu :top_menu, :salt_environments,
23
+ :url_hash => {:controller => :'foreman_salt/salt_environments', :action => :index },
24
+ :caption => 'Environments',
25
+ :parent => :configure_menu,
26
+ :after => :common_parameters
27
+
28
+ menu :top_menu, :salt_modules,
23
29
  :url_hash => {:controller => :'foreman_salt/salt_modules', :action => :index },
24
- :caption => 'Modules',
30
+ :caption => 'States',
25
31
  :parent => :configure_menu,
26
32
  :after => :common_parameters
27
33
 
@@ -34,6 +40,13 @@ module ForemanSalt
34
40
  permission :view_hosts, {:hosts => [:salt_external_node]}, :resource_type => 'Host'
35
41
  end
36
42
 
43
+ security_block :salt_environments do |map|
44
+ permission :create_salt_environments, {:'foreman_salt/salt_environments' => [:new, :create]}, :resource_type => "ForemanSalt::SaltEnvironment"
45
+ permission :view_salt_environments, {:'foreman_salt/salt_environments' => [:index, :show, :auto_complete_search]}, :resource_type => "ForemanSalt::SaltEnvironment"
46
+ permission :edit_salt_environments, {:'foreman_salt/salt_environments' => [:update, :edit]},:resource_type => "ForemanSalt::SaltEnvironment"
47
+ permission :destroy_salt_environments, {:'foreman_salt/salt_environments' => [:destroy]}, :resource_type => "ForemanSalt::SaltEnvironment"
48
+ end
49
+
37
50
  security_block :salt_modules do |map|
38
51
  permission :create_salt_modules, {:'foreman_salt/salt_modules' => [:new, :create]}, :resource_type => "ForemanSalt::SaltModule"
39
52
  permission :view_salt_modules, {:'foreman_salt/salt_modules' => [:index, :show, :auto_complete_search]}, :resource_type => "ForemanSalt::SaltModule"
@@ -54,9 +67,10 @@ module ForemanSalt
54
67
  end
55
68
 
56
69
  role "Salt admin", [:saltrun_hosts, :create_salt_modules, :view_salt_modules, :edit_salt_modules, :destroy_salt_modules,
57
- :view_smart_proxies_salt_keys, :destroy_smart_proxies_salt_keys, :edit_smart_proxies_salt_keys,
58
- :create_smart_proxies_salt_autosign, :view_smart_proxies_salt_autosign, :destroy_smart_proxies_salt_autosign]
59
-
70
+ :view_smart_proxies_salt_keys, :destroy_smart_proxies_salt_keys, :edit_smart_proxies_salt_keys,
71
+ :create_smart_proxies_salt_autosign, :view_smart_proxies_salt_autosign, :destroy_smart_proxies_salt_autosign,
72
+ :create_salt_environments, :view_salt_environments, :edit_salt_environments, :destroy_salt_environments]
73
+
60
74
  end
61
75
  end
62
76
 
@@ -1,3 +1,3 @@
1
1
  module ForemanSalt
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,27 @@
1
+ require 'test_plugin_helper'
2
+
3
+ module ForemanSalt
4
+ class SaltEnvironmentTest < ActionDispatch::IntegrationTest
5
+
6
+ test "index page" do
7
+ FactoryGirl.create_list :salt_environment, 50
8
+ assert_index_page(salt_environments_path, "Salt Environment", "New Salt Environment")
9
+ end
10
+
11
+ test "create new page" do
12
+ assert_new_button(salt_environments_path, "New Salt Environment", new_salt_environment_path)
13
+ fill_in "foreman_salt_salt_environment_name", :with => "common"
14
+ assert_submit_button(salt_environments_path)
15
+ assert page.has_link? 'common'
16
+ end
17
+
18
+ test "edit page" do
19
+ salt_environment = FactoryGirl.create :salt_environment
20
+ visit salt_environments_path
21
+ click_link salt_environment.name
22
+ fill_in "foreman_salt_salt_environment_name", :with => "some_other_name"
23
+ assert_submit_button(salt_environments_path)
24
+ assert page.has_link? 'some_other_name'
25
+ end
26
+ end
27
+ end
@@ -5,11 +5,11 @@ module ForemanSalt
5
5
 
6
6
  test "index page" do
7
7
  FactoryGirl.create_list :salt_module, 50
8
- assert_index_page(salt_modules_path, "Salt modules", "New Salt module")
8
+ assert_index_page(salt_modules_path, "Salt State", "New Salt State")
9
9
  end
10
10
 
11
11
  test "create new page" do
12
- assert_new_button(salt_modules_path, "New Salt module", new_salt_module_path)
12
+ assert_new_button(salt_modules_path, "New Salt State", new_salt_module_path)
13
13
  fill_in "foreman_salt_salt_module_name", :with => "common"
14
14
  assert_submit_button(salt_modules_path)
15
15
  assert page.has_link? 'common'
@@ -0,0 +1,17 @@
1
+ require 'test_plugin_helper'
2
+
3
+ class SaltKeysTest < ActiveSupport::TestCase
4
+ setup do
5
+ User.current = User.find_by_login "admin"
6
+ end
7
+
8
+ test "salt module has a valid name" do
9
+ salt_module = ForemanSalt::SaltModule.new(:name => 'foo.bar.baz')
10
+ assert_valid salt_module
11
+ end
12
+
13
+ test "salt module has invalid name" do
14
+ salt_module = ForemanSalt::SaltModule.new(:name => "&bad$name")
15
+ refute_valid salt_module, :name, /alphanumeric/
16
+ end
17
+ end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_salt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen Benjamin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-31 00:00:00.000000000 Z
11
+ date: 2014-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deface
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  description: Foreman Plug-in for Salt
@@ -31,59 +31,69 @@ executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
- - app/helpers/foreman_salt/salt_keys_helper.rb
35
- - app/helpers/concerns/foreman_salt/smart_proxies_helper_extensions.rb
34
+ - LICENSE
35
+ - README.md
36
+ - Rakefile
37
+ - app/controllers/foreman_salt/concerns/hostgroups_controller_extensions.rb
38
+ - app/controllers/foreman_salt/concerns/hosts_controller_extensions.rb
39
+ - app/controllers/foreman_salt/concerns/smart_proxy_auth_extensions.rb
40
+ - app/controllers/foreman_salt/concerns/unattended_controller_extensions.rb
41
+ - app/controllers/foreman_salt/salt_autosign_controller.rb
42
+ - app/controllers/foreman_salt/salt_environments_controller.rb
43
+ - app/controllers/foreman_salt/salt_keys_controller.rb
44
+ - app/controllers/foreman_salt/salt_modules_controller.rb
36
45
  - app/helpers/concerns/foreman_salt/hosts_helper_extensions.rb
37
- - app/overrides/salt_modules_selector.rb
46
+ - app/helpers/concerns/foreman_salt/smart_proxies_helper_extensions.rb
47
+ - app/helpers/foreman_salt/salt_keys_helper.rb
48
+ - app/lib/proxy_api/salt.rb
49
+ - app/models/concerns/foreman_salt/host_managed_extensions.rb
50
+ - app/models/concerns/foreman_salt/hostgroup_extensions.rb
51
+ - app/models/concerns/foreman_salt/orchestration/salt.rb
52
+ - app/models/foreman_salt/fact_name.rb
53
+ - app/models/foreman_salt/salt_environment.rb
54
+ - app/models/foreman_salt/salt_module.rb
38
55
  - app/overrides/foreman/salt_modules/_host_tab.html.erb
39
56
  - app/overrides/foreman/salt_modules/_host_tab_pane.html.erb
57
+ - app/overrides/salt_environment_selector.rb
58
+ - app/overrides/salt_modules_selector.rb
40
59
  - app/overrides/salt_proxy_selector.rb
41
- - app/views/foreman_salt/salt_modules/index.html.erb
42
- - app/views/foreman_salt/salt_modules/new.html.erb
43
- - app/views/foreman_salt/salt_modules/_form.html.erb
44
- - app/views/foreman_salt/salt_modules/edit.html.erb
45
- - app/views/foreman_salt/salt_keys/index.erb
60
+ - app/services/foreman_salt/fact_importer.rb
61
+ - app/services/foreman_salt/smart_proxies/salt_keys.rb
62
+ - app/views/foreman_salt/salt_autosign/_form.html.erb
46
63
  - app/views/foreman_salt/salt_autosign/index.html.erb
47
64
  - app/views/foreman_salt/salt_autosign/new.html.erb
48
- - app/views/foreman_salt/salt_autosign/_form.html.erb
49
- - app/services/foreman_salt/smart_proxies/salt_keys.rb
50
- - app/services/foreman_salt/fact_importer.rb
51
- - app/models/foreman_salt/salt_module.rb
52
- - app/models/foreman_salt/fact_name.rb
53
- - app/models/concerns/foreman_salt/hostgroup_extensions.rb
54
- - app/models/concerns/foreman_salt/host_managed_extensions.rb
55
- - app/models/concerns/foreman_salt/orchestration/salt.rb
56
- - app/controllers/foreman_salt/salt_modules_controller.rb
57
- - app/controllers/foreman_salt/salt_autosign_controller.rb
58
- - app/controllers/foreman_salt/salt_keys_controller.rb
59
- - app/controllers/foreman_salt/concerns/hostgroups_controller_extensions.rb
60
- - app/controllers/foreman_salt/concerns/smart_proxy_auth_extensions.rb
61
- - app/controllers/foreman_salt/concerns/hosts_controller_extensions.rb
62
- - app/controllers/foreman_salt/concerns/unattended_controller_extensions.rb
63
- - app/lib/proxy_api/salt.rb
65
+ - app/views/foreman_salt/salt_environments/_form.html.erb
66
+ - app/views/foreman_salt/salt_environments/edit.html.erb
67
+ - app/views/foreman_salt/salt_environments/index.html.erb
68
+ - app/views/foreman_salt/salt_environments/new.html.erb
69
+ - app/views/foreman_salt/salt_keys/index.erb
70
+ - app/views/foreman_salt/salt_modules/_form.html.erb
71
+ - app/views/foreman_salt/salt_modules/edit.html.erb
72
+ - app/views/foreman_salt/salt_modules/index.html.erb
73
+ - app/views/foreman_salt/salt_modules/new.html.erb
64
74
  - config/routes.rb
65
- - db/seeds.d/75-salt-seeds.rb
75
+ - db/migrate/20140813081913_add_salt_proxy_to_host_and_host_group.rb
66
76
  - db/migrate/20140817210214_create_salt_modules.rb
67
77
  - db/migrate/20140829210214_add_salt_modules_to_hostgroups.rb
68
- - db/migrate/20140813081913_add_salt_proxy_to_host_and_host_group.rb
78
+ - db/migrate/20140920232200_create_salt_environments.rb
79
+ - db/seeds.d/75-salt-seeds.rb
80
+ - lib/foreman_salt.rb
69
81
  - lib/foreman_salt/engine.rb
70
82
  - lib/foreman_salt/version.rb
71
83
  - lib/tasks/foreman_salt_tasks.rake
72
- - lib/foreman_salt.rb
73
- - LICENSE
74
- - Rakefile
75
- - README.md
84
+ - test/factories/foreman_salt_factories.rb
85
+ - test/functional/hosts_controller_test.rb
86
+ - test/integration/salt_autosign_test.rb
87
+ - test/integration/salt_environment_test.rb
76
88
  - test/integration/salt_keys_test.rb
77
89
  - test/integration/salt_module_test.rb
78
- - test/integration/salt_autosign_test.rb
79
- - test/unit/salt_keys_test.rb
90
+ - test/test_plugin_helper.rb
80
91
  - test/unit/grains_centos.json
81
- - test/unit/host_extensions_test.rb
82
92
  - test/unit/grains_importer_test.rb
93
+ - test/unit/host_extensions_test.rb
83
94
  - test/unit/hostgroup_extensions_test.rb
84
- - test/test_plugin_helper.rb
85
- - test/factories/foreman_salt_factories.rb
86
- - test/functional/hosts_controller_test.rb
95
+ - test/unit/salt_keys_test.rb
96
+ - test/unit/salt_modules_test.rb
87
97
  homepage: http://github.com/theforeman/foreman_salt
88
98
  licenses:
89
99
  - GPL-3
@@ -94,29 +104,31 @@ require_paths:
94
104
  - lib
95
105
  required_ruby_version: !ruby/object:Gem::Requirement
96
106
  requirements:
97
- - - '>='
107
+ - - ">="
98
108
  - !ruby/object:Gem::Version
99
109
  version: '0'
100
110
  required_rubygems_version: !ruby/object:Gem::Requirement
101
111
  requirements:
102
- - - '>='
112
+ - - ">="
103
113
  - !ruby/object:Gem::Version
104
114
  version: '0'
105
115
  requirements: []
106
116
  rubyforge_project:
107
- rubygems_version: 2.1.11
117
+ rubygems_version: 2.2.2
108
118
  signing_key:
109
119
  specification_version: 4
110
120
  summary: Foreman Plug-in for Salt
111
121
  test_files:
112
- - test/integration/salt_keys_test.rb
113
- - test/integration/salt_module_test.rb
114
- - test/integration/salt_autosign_test.rb
115
- - test/unit/salt_keys_test.rb
116
- - test/unit/grains_centos.json
122
+ - test/factories/foreman_salt_factories.rb
117
123
  - test/unit/host_extensions_test.rb
124
+ - test/unit/salt_keys_test.rb
118
125
  - test/unit/grains_importer_test.rb
119
126
  - test/unit/hostgroup_extensions_test.rb
120
- - test/test_plugin_helper.rb
121
- - test/factories/foreman_salt_factories.rb
127
+ - test/unit/salt_modules_test.rb
128
+ - test/unit/grains_centos.json
122
129
  - test/functional/hosts_controller_test.rb
130
+ - test/integration/salt_autosign_test.rb
131
+ - test/integration/salt_keys_test.rb
132
+ - test/integration/salt_environment_test.rb
133
+ - test/integration/salt_module_test.rb
134
+ - test/test_plugin_helper.rb