foreman_remote_execution 1.0.0 → 1.1.0

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 (29) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/api/v2/foreign_input_sets_controller.rb +3 -2
  3. data/app/controllers/api/v2/job_templates_controller.rb +3 -1
  4. data/app/controllers/api/v2/remote_execution_features_controller.rb +2 -1
  5. data/app/controllers/api/v2/template_inputs_controller.rb +3 -2
  6. data/app/controllers/concerns/foreman/controller/parameters/foreign_input_set.rb +16 -0
  7. data/app/controllers/concerns/foreman/controller/parameters/job_template.rb +31 -0
  8. data/app/controllers/concerns/foreman/controller/parameters/remote_execution_feature.rb +15 -0
  9. data/app/controllers/concerns/foreman/controller/parameters/targeting.rb +11 -0
  10. data/app/controllers/concerns/foreman/controller/parameters/template_input.rb +17 -0
  11. data/app/controllers/job_invocations_controller.rb +3 -2
  12. data/app/controllers/job_templates_controller.rb +2 -0
  13. data/app/controllers/remote_execution_features_controller.rb +2 -1
  14. data/app/models/concerns/foreman_remote_execution/nic_extensions.rb +0 -1
  15. data/app/models/concerns/foreman_remote_execution/subnet_extensions.rb +0 -1
  16. data/app/models/concerns/foreman_remote_execution/template_extensions.rb +0 -1
  17. data/app/models/foreign_input_set.rb +0 -1
  18. data/app/models/job_template.rb +0 -1
  19. data/app/models/job_template_effective_user.rb +0 -2
  20. data/app/models/remote_execution_feature.rb +0 -2
  21. data/app/models/targeting.rb +0 -2
  22. data/app/models/template_input.rb +2 -5
  23. data/app/views/api/v2/job_invocations/base.json.rabl +1 -1
  24. data/app/views/overrides/subnets/_rex_tab_pane.html.erb +1 -1
  25. data/foreman_remote_execution.gemspec +1 -1
  26. data/lib/foreman_remote_execution/engine.rb +4 -1
  27. data/lib/foreman_remote_execution/version.rb +1 -1
  28. data/lib/tasks/foreman_remote_execution_tasks.rake +1 -0
  29. metadata +10 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5b0446f3fb6c5f2d4640bbe0e15ddee61123fd03
4
- data.tar.gz: 49de19a88a35ff89dd770be96886a75600634012
3
+ metadata.gz: 8cf728e4ad2b40152dbac2f4f9db31707da17ed6
4
+ data.tar.gz: 0a74247993db625f0f22321d917569a9073b55ce
5
5
  SHA512:
6
- metadata.gz: 777c28e28ab17cc1e5db620faff516f3b350cb6ae4acb3361e7fecd99821919d1a2ad5ca3706c79e4df246a7f6c92a78e6a0500de52c8fcbb4ac02411e747dab
7
- data.tar.gz: cde19bd5f565b9d823f7668ddb7dbb4458d3d31f1607bef4a685f580bcfd0f340c9fcaef1916b1c9543419f11d6aa794cb7027ee0fa1534f768aefc7fbf9e6b4
6
+ metadata.gz: 0c0893d6c932bb942f330dd37f43bc8edc5bb9d37f0de1baec580e7e73d13b36f35b53349bda05fbe29c72db42419e9bdcdbf30deb27f8945e0fbaeb0521df1f
7
+ data.tar.gz: 102c655a3149a5b5ce5f3372ba384e6a9bf5dc83adbd926b98f960f1cef674e937ce4f8953ef198d95b3d22f27be73762d177f1b863db8d05348c6cca4d3f4fe
@@ -3,6 +3,7 @@ module Api
3
3
  class ForeignInputSetsController < ::Api::V2::BaseController
4
4
  include ::Api::Version2
5
5
  include ::Foreman::Renderer
6
+ include ::Foreman::Controller::Parameters::ForeignInputSet
6
7
 
7
8
  before_filter :find_required_nested_object
8
9
  before_filter :find_resource, :only => %w{show update destroy}
@@ -34,7 +35,7 @@ module Api
34
35
  param :template_id, :identifier, :required => true
35
36
  param_group :foreign_input_set, :as => :create
36
37
  def create
37
- @foreign_input_set = resource_class.new(params[:foreign_input_set].merge(:template_id => @nested_obj.id))
38
+ @foreign_input_set = resource_class.new(foreign_input_set_params.merge(:template_id => @nested_obj.id))
38
39
  process_response @foreign_input_set.save
39
40
  end
40
41
 
@@ -50,7 +51,7 @@ module Api
50
51
  param :id, :identifier, :required => true
51
52
  param_group :foreign_input_set
52
53
  def update
53
- process_response @foreign_input_set.update_attributes(params[:foreign_input_set])
54
+ process_response @foreign_input_set.update_attributes(foreign_input_set_params)
54
55
  end
55
56
 
56
57
  def resource_name(nested_resource = nil)
@@ -5,6 +5,7 @@ module Api
5
5
  include ::Api::TaxonomyScope
6
6
  include ::Foreman::Renderer
7
7
  include ::Foreman::Controller::ProvisioningTemplates
8
+ include ::Foreman::Controller::Parameters::JobTemplate
8
9
 
9
10
  before_filter :find_optional_nested_object
10
11
  before_filter :find_resource, :only => %w{show update destroy clone export}
@@ -118,9 +119,10 @@ module Api
118
119
  private
119
120
 
120
121
  def job_template_params
121
- job_template_params = params[:job_template].dup
122
+ job_template_params = params[:job_template]
122
123
  effective_user_attributes = (job_template_params.delete(:ssh) || {}).fetch(:effective_user, {})
123
124
  job_template_params.merge(:effective_user_attributes => effective_user_attributes)
125
+ super
124
126
  end
125
127
 
126
128
  def action_permission
@@ -2,6 +2,7 @@ module Api
2
2
  module V2
3
3
  class RemoteExecutionFeaturesController < ::Api::V2::BaseController
4
4
  include ::Api::Version2
5
+ include ::Foreman::Controller::Parameters::RemoteExecutionFeature
5
6
 
6
7
  before_filter :find_resource, :only => %w{show update}
7
8
 
@@ -25,7 +26,7 @@ module Api
25
26
  param :id, :identifier, :required => true
26
27
  param_group :remote_execution_feature
27
28
  def update
28
- process_response @remote_execution_feature.update_attributes(params[:remote_execution_feature])
29
+ process_response @remote_execution_feature.update_attributes(remote_execution_feature_params)
29
30
  end
30
31
 
31
32
  private
@@ -3,6 +3,7 @@ module Api
3
3
  class TemplateInputsController < ::Api::V2::BaseController
4
4
  include ::Api::Version2
5
5
  include ::Foreman::Renderer
6
+ include ::Foreman::Controller::Parameters::TemplateInput
6
7
 
7
8
  before_filter :find_required_nested_object
8
9
  before_filter :find_resource, :only => %w{show update destroy}
@@ -40,7 +41,7 @@ module Api
40
41
  param :template_id, :identifier, :required => true
41
42
  param_group :template_input, :as => :create
42
43
  def create
43
- @template_input = resource_class.new(params[:template_input].merge(:template_id => @nested_obj.id))
44
+ @template_input = resource_class.new(template_input_params.merge(:template_id => @nested_obj.id))
44
45
  process_response @template_input.save
45
46
  end
46
47
 
@@ -56,7 +57,7 @@ module Api
56
57
  param :id, :identifier, :required => true
57
58
  param_group :template_input
58
59
  def update
59
- process_response @template_input.update_attributes(params[:template_input])
60
+ process_response @template_input.update_attributes(template_input_params)
60
61
  end
61
62
 
62
63
  def resource_name(nested_resource = nil)
@@ -0,0 +1,16 @@
1
+ module ::Foreman::Controller::Parameters::ForeignInputSet
2
+ extend ActiveSupport::Concern
3
+
4
+ class_methods do
5
+ def foreign_input_set_params_filter
6
+ Foreman::ParameterFilter.new(::ForeignInputSet).tap do |filter|
7
+ filter.permit_by_context(:id, :_destroy, :template_id, :target_template_id, :include_all, :include, :exclude,
8
+ :nested => true)
9
+ end
10
+ end
11
+ end
12
+
13
+ def foreign_input_set_params
14
+ self.class.foreign_input_set_params_filter.filter_params(params, parameter_filter_context, :foreign_input_set)
15
+ end
16
+ end
@@ -0,0 +1,31 @@
1
+ module Foreman::Controller::Parameters::JobTemplate
2
+ extend ActiveSupport::Concern
3
+ include Foreman::Controller::Parameters::Taxonomix
4
+ include Foreman::Controller::Parameters::Template
5
+ include Foreman::Controller::Parameters::TemplateInput
6
+ include Foreman::Controller::Parameters::ForeignInputSet
7
+
8
+ class_methods do
9
+ def job_template_effective_user_filter
10
+ Foreman::ParameterFilter.new(::JobTemplateEffectiveUser).tap do |filter|
11
+ filter.permit_by_context(:value, :current_user, :overridable,
12
+ :nested => true)
13
+ end
14
+ end
15
+
16
+ def job_template_params_filter
17
+ Foreman::ParameterFilter.new(::TemplateInput).tap do |filter|
18
+ filter.permit :job_category, :provider_type, :description_format,
19
+ :effective_user_attributes => [job_template_effective_user_filter],
20
+ :template_inputs_attributes => [template_input_params_filter],
21
+ :foreign_input_sets_attributes => [foreign_input_set_params_filter]
22
+ add_template_params_filter(filter)
23
+ add_taxonomix_params_filter(filter)
24
+ end
25
+ end
26
+ end
27
+
28
+ def job_template_params
29
+ self.class.job_template_params_filter.filter_params(params, parameter_filter_context, :job_template)
30
+ end
31
+ end
@@ -0,0 +1,15 @@
1
+ module Foreman::Controller::Parameters::RemoteExecutionFeature
2
+ extend ActiveSupport::Concern
3
+
4
+ class_methods do
5
+ def remote_execution_feature_params_filter
6
+ ::Foreman::ParameterFilter.new(::RemoteExecutionFeature).tap do |filter|
7
+ filter.permit :label, :name, :provided_input_names, :description, :job_template_id
8
+ end
9
+ end
10
+ end
11
+
12
+ def remote_execution_feature_params
13
+ self.class.remote_execution_feature_params_filter.filter_params(params, parameter_filter_context, :remote_execution_feature)
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ module Foreman::Controller::Parameters::Targeting
2
+ extend ActiveSupport::Concern
3
+
4
+ class_methods do
5
+ def targeting_params_filter
6
+ Foreman::ParameterFilter.new(::Targeting).tap do |filter|
7
+ filter.permit_by_context :targeting_type, :bookmark_id, :user, :search_query, :nested => true
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ module Foreman::Controller::Parameters::TemplateInput
2
+ extend ActiveSupport::Concern
3
+
4
+ class_methods do
5
+ def template_input_params_filter
6
+ Foreman::ParameterFilter.new(::TemplateInput).tap do |filter|
7
+ filter.permit_by_context :id, :_destroy, :name, :required, :input_type, :fact_name,
8
+ :variable_name, :puppet_class_name, :puppet_parameter_name, :description, :template_id,
9
+ :options, :advanced, :nested => true
10
+ end
11
+ end
12
+ end
13
+
14
+ def template_input_params
15
+ self.class.template_input_params_filter.filter_params(params, parameter_filter_context, :template_input)
16
+ end
17
+ end
@@ -1,5 +1,6 @@
1
1
  class JobInvocationsController < ApplicationController
2
- include Foreman::Controller::AutoCompleteSearch
2
+ include ::Foreman::Controller::AutoCompleteSearch
3
+ include ::ForemanTasks::Concerns::Parameters::Triggering
3
4
 
4
5
  def new
5
6
  ui_params = {
@@ -34,7 +35,7 @@ class JobInvocationsController < ApplicationController
34
35
  end
35
36
 
36
37
  def create
37
- @composer = JobInvocationComposer.from_ui_params(params)
38
+ @composer = JobInvocationComposer.from_ui_params(params.merge(:triggering => triggering_params))
38
39
  if @composer.trigger
39
40
  redirect_to job_invocation_path(@composer.job_invocation)
40
41
  else
@@ -1,4 +1,6 @@
1
1
  class JobTemplatesController < ::TemplatesController
2
+ include ::Foreman::Controller::Parameters::JobTemplate
3
+
2
4
  def load_vars_from_template
3
5
  return unless @template
4
6
 
@@ -1,5 +1,6 @@
1
1
  class RemoteExecutionFeaturesController < ::ApplicationController
2
2
  before_filter :find_resource, :only => [:show, :update]
3
+ include ::Foreman::Controller::Parameters::RemoteExecutionFeature
3
4
 
4
5
  def index
5
6
  @remote_execution_features = resource_base.all
@@ -9,7 +10,7 @@ class RemoteExecutionFeaturesController < ::ApplicationController
9
10
  end
10
11
 
11
12
  def update
12
- if @remote_execution_feature.update_attributes(params[:remote_execution_feature])
13
+ if @remote_execution_feature.update_attributes(remote_execution_feature_params)
13
14
  process_success :object => @remote_execution_feature
14
15
  else
15
16
  process_error :object => @remote_execution_feature
@@ -4,7 +4,6 @@ module ForemanRemoteExecution
4
4
 
5
5
  included do
6
6
  before_validation :set_execution_flag
7
- attr_accessible :execution
8
7
  validate :exclusive_execution_interface
9
8
  end
10
9
 
@@ -5,7 +5,6 @@ module ForemanRemoteExecution
5
5
  included do
6
6
  has_many :target_remote_execution_proxies, :as => :target
7
7
  has_many :remote_execution_proxies, :dependent => :destroy, :through => :target_remote_execution_proxies
8
- attr_accessible :remote_execution_proxies, :remote_execution_proxy_ids
9
8
  end
10
9
  end
11
10
  end
@@ -12,7 +12,6 @@ module ForemanRemoteExecution
12
12
  end
13
13
  accepts_nested_attributes_for :template_inputs, :allow_destroy => true
14
14
  accepts_nested_attributes_for :foreign_input_sets, :allow_destroy => true
15
- attr_accessible :template_inputs_attributes, :foreign_input_sets_attributes
16
15
  end
17
16
 
18
17
  # create or overwrite instance methods...
@@ -4,7 +4,6 @@ class ForeignInputSet < ActiveRecord::Base
4
4
  class CircularDependencyError < Foreman::Exception
5
5
  end
6
6
 
7
- attr_accessible :template_id, :target_template_id, :include_all, :include, :exclude
8
7
  attr_exportable :exclude, :include, :include_all, :template => ->(input_set) { input_set.template.name }
9
8
 
10
9
  belongs_to :template
@@ -4,7 +4,6 @@ class JobTemplate < ::Template
4
4
  class NonUniqueInputsError < Foreman::Exception
5
5
  end
6
6
 
7
- attr_accessible :job_category, :provider_type, :description_format, :effective_user_attributes
8
7
  attr_exportable :name, :job_category, :description_format, :snippet, :template_inputs,
9
8
  :foreign_input_sets, :provider_type, :kind => ->(template) { template.class.name.underscore }
10
9
 
@@ -1,7 +1,5 @@
1
1
  class JobTemplateEffectiveUser < ActiveRecord::Base
2
2
 
3
- attr_accessible :value, :current_user, :overridable
4
-
5
3
  belongs_to :job_template
6
4
 
7
5
  before_validation :set_defaults
@@ -1,6 +1,4 @@
1
1
  class RemoteExecutionFeature < ActiveRecord::Base
2
- attr_accessible :label, :name, :provided_input_names, :description, :job_template_id
3
-
4
2
  validates :label, :name, :presence => true, :uniqueness => true
5
3
 
6
4
  belongs_to :job_template
@@ -16,8 +16,6 @@ class Targeting < ActiveRecord::Base
16
16
  validates :targeting_type, :presence => true, :inclusion => Targeting::TYPES.keys
17
17
  validate :bookmark_or_query_is_present
18
18
 
19
- attr_accessible :targeting_type, :bookmark_id, :user, :search_query
20
-
21
19
  before_create :assign_search_query, :if => :static?
22
20
 
23
21
  def clone
@@ -9,11 +9,8 @@ class TemplateInput < ActiveRecord::Base
9
9
  TYPES = { :user => N_('User input'), :fact => N_('Fact value'), :variable => N_('Variable'),
10
10
  :puppet_parameter => N_('Puppet parameter') }.with_indifferent_access
11
11
 
12
- attr_accessible :name, :required, :input_type, :fact_name, :variable_name,
13
- :puppet_class_name, :puppet_parameter_name, :description, :template_id,
14
- :options, :advanced
15
-
16
- attr_exportable(*self.accessible_attributes - %w(template_id))
12
+ attr_exportable(:name, :required, :input_type, :fact_name, :variable_name, :puppet_class_name,
13
+ :puppet_parameter_name, :description, :options, :advanced)
17
14
 
18
15
  belongs_to :template
19
16
  has_many :template_invocation_input_values, :dependent => :destroy
@@ -11,6 +11,6 @@ node do |invocation|
11
11
  }
12
12
  end
13
13
 
14
- child :task do
14
+ child :task => :dynflow_task do
15
15
  attributes :id, :state
16
16
  end
@@ -1,5 +1,5 @@
1
1
  <div class="tab-pane" id="rex_proxies">
2
2
  <%= fields_for :subnet do |f| %>
3
- <%= multiple_selects f, :remote_execution_proxies, SmartProxy.authorized.with_features(RemoteExecutionProvider.provider_names), @subnet.remote_execution_proxy_ids, {:label => _("Proxies"), :help_inline => _("Select as many remote execution proxies as applicable for this subnet. When multiple proxies with the same provider are added, actions will be load balanced among them.")} %>
3
+ <%= multiple_selects f, :remote_execution_proxies, SmartProxy.authorized.with_features(*RemoteExecutionProvider.provider_names), @subnet.remote_execution_proxy_ids, {:label => _("Proxies"), :help_inline => _("Select as many remote execution proxies as applicable for this subnet. When multiple proxies with the same provider are added, actions will be load balanced among them.")} %>
4
4
  <% end %>
5
5
  </div>
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.add_dependency 'deface'
22
22
  s.add_dependency 'dynflow', '~> 0.8.10'
23
- s.add_dependency 'foreman-tasks', '~> 0.7.11'
23
+ s.add_dependency 'foreman-tasks', '~> 0.8.0'
24
24
 
25
25
  s.add_development_dependency 'rubocop'
26
26
  s.add_development_dependency 'rdoc'
@@ -29,7 +29,7 @@ module ForemanRemoteExecution
29
29
 
30
30
  initializer 'foreman_remote_execution.register_plugin', before: :finisher_hook do |_app|
31
31
  Foreman::Plugin.register :foreman_remote_execution do
32
- requires_foreman '>= 1.12'
32
+ requires_foreman '>= 1.13'
33
33
 
34
34
  apipie_documented_controllers ["#{ForemanRemoteExecution::Engine.root}/app/controllers/api/v2/*.rb"]
35
35
 
@@ -103,6 +103,9 @@ module ForemanRemoteExecution
103
103
  register_custom_status HostStatus::ExecutionStatus
104
104
  # add dashboard widget
105
105
  # widget 'foreman_remote_execution_widget', name: N_('Foreman plugin template widget'), sizex: 4, sizey: 1
106
+
107
+ parameter_filter Subnet, :remote_execution_proxies, :remote_execution_proxy_ids
108
+ parameter_filter Nic, :execution
106
109
  end
107
110
  end
108
111
 
@@ -1,3 +1,3 @@
1
1
  module ForemanRemoteExecution
2
- VERSION = '1.0.0'
2
+ VERSION = '1.1.0'
3
3
  end
@@ -16,6 +16,7 @@ namespace :test do
16
16
  t.libs << ['test', test_dir]
17
17
  t.pattern = "#{test_dir}/**/*_test.rb"
18
18
  t.verbose = true
19
+ t.warning = false
19
20
  end
20
21
  end
21
22
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_remote_execution
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Foreman Remote Execution team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-18 00:00:00.000000000 Z
11
+ date: 2016-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deface
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.7.11
47
+ version: 0.8.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.7.11
54
+ version: 0.8.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -147,6 +147,11 @@ files:
147
147
  - app/controllers/api/v2/job_templates_controller.rb
148
148
  - app/controllers/api/v2/remote_execution_features_controller.rb
149
149
  - app/controllers/api/v2/template_inputs_controller.rb
150
+ - app/controllers/concerns/foreman/controller/parameters/foreign_input_set.rb
151
+ - app/controllers/concerns/foreman/controller/parameters/job_template.rb
152
+ - app/controllers/concerns/foreman/controller/parameters/remote_execution_feature.rb
153
+ - app/controllers/concerns/foreman/controller/parameters/targeting.rb
154
+ - app/controllers/concerns/foreman/controller/parameters/template_input.rb
150
155
  - app/controllers/job_invocations_controller.rb
151
156
  - app/controllers/job_templates_controller.rb
152
157
  - app/controllers/remote_execution_features_controller.rb
@@ -394,7 +399,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
394
399
  version: '0'
395
400
  requirements: []
396
401
  rubyforge_project:
397
- rubygems_version: 2.4.8
402
+ rubygems_version: 2.4.5
398
403
  signing_key:
399
404
  specification_version: 4
400
405
  summary: A plugin bringing remote execution to the Foreman, completing the config