foreman_remote_execution 6.0.0 → 7.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/api/v2/job_invocations_controller.rb +1 -0
- data/app/controllers/foreman_remote_execution/concerns/api/v2/registration_controller_extensions.rb +5 -0
- data/app/controllers/ui_job_wizard_controller.rb +1 -1
- data/app/helpers/hosts_extensions_helper.rb +62 -0
- data/app/helpers/remote_execution_helper.rb +4 -3
- data/app/lib/actions/remote_execution/run_host_job.rb +5 -1
- data/app/lib/actions/remote_execution/run_hosts_job.rb +4 -0
- data/app/models/concerns/foreman_remote_execution/host_extensions.rb +5 -1
- data/app/models/concerns/foreman_remote_execution/nic_extensions.rb +6 -4
- data/app/models/concerns/foreman_remote_execution/smart_proxy_extensions.rb +1 -1
- data/app/models/job_invocation_composer.rb +7 -3
- data/app/models/job_template.rb +4 -1
- data/app/models/remote_execution_provider.rb +10 -1
- data/app/models/ssh_execution_provider.rb +20 -7
- data/app/services/default_proxy_proxy_selector.rb +1 -1
- data/app/services/remote_execution_proxy_selector.rb +7 -2
- data/app/views/api/v2/host/main.rabl +1 -0
- data/app/views/api/v2/job_invocations/base.json.rabl +1 -1
- data/app/views/dashboard/_latest-jobs.html.erb +1 -1
- data/app/views/job_invocations/_card_target_hosts.html.erb +8 -0
- data/app/views/job_invocations/_form.html.erb +2 -0
- data/app/views/templates/{ssh → script}/check_update.erb +2 -2
- data/app/views/templates/{ssh → script}/module_action.erb +2 -2
- data/app/views/templates/{ssh → script}/package_action.erb +5 -2
- data/app/views/templates/{ssh → script}/power_action.erb +2 -2
- data/app/views/templates/{ssh → script}/puppet_agent_disable.erb +2 -2
- data/app/views/templates/{ssh → script}/puppet_agent_enable.erb +2 -2
- data/app/views/templates/{ssh → script}/puppet_install_modules_from_forge.erb +2 -2
- data/app/views/templates/{ssh → script}/puppet_install_modules_from_git.erb +2 -2
- data/app/views/templates/{ssh → script}/puppet_run_once.erb +2 -2
- data/app/views/templates/{ssh → script}/run_command.erb +2 -2
- data/app/views/templates/{ssh → script}/service_action.erb +2 -2
- data/db/migrate/20220321101835_rename_ssh_provider_to_script.rb +29 -0
- data/db/migrate/20220331112719_add_ssh_user_to_job_invocation.rb +5 -0
- data/db/seeds.d/60-ssh_proxy_feature.rb +3 -0
- data/jsconfig.json +8 -0
- data/lib/foreman_remote_execution/engine.rb +10 -5
- data/lib/foreman_remote_execution/version.rb +1 -1
- data/locale/action_names.rb +3 -3
- data/locale/de/foreman_remote_execution.po +23 -23
- data/locale/en/foreman_remote_execution.po +23 -23
- data/locale/en_GB/foreman_remote_execution.po +23 -23
- data/locale/es/foreman_remote_execution.po +23 -23
- data/locale/foreman_remote_execution.pot +64 -66
- data/locale/fr/foreman_remote_execution.po +23 -23
- data/locale/ja/foreman_remote_execution.po +23 -23
- data/locale/ko/foreman_remote_execution.po +23 -23
- data/locale/pt_BR/foreman_remote_execution.po +23 -23
- data/locale/ru/foreman_remote_execution.po +23 -23
- data/locale/zh_CN/foreman_remote_execution.po +23 -23
- data/locale/zh_TW/foreman_remote_execution.po +23 -23
- data/package.json +6 -7
- data/test/unit/concerns/host_extensions_test.rb +2 -1
- data/test/unit/remote_execution_provider_test.rb +2 -0
- data/webpack/JobWizard/JobWizard.js +8 -2
- data/webpack/JobWizard/JobWizardConstants.js +2 -2
- data/webpack/JobWizard/__tests__/fixtures.js +8 -4
- data/webpack/JobWizard/steps/AdvancedFields/__tests__/AdvancedFields.test.js +2 -2
- data/webpack/JobWizard/steps/CategoryAndTemplate/CategoryAndTemplate.js +24 -15
- data/webpack/JobWizard/steps/HostsAndInputs/SelectGQL.js +2 -1
- data/webpack/JobWizard/steps/HostsAndInputs/SelectedChips.js +1 -1
- data/webpack/JobWizard/steps/HostsAndInputs/buildHostQuery.js +1 -1
- data/webpack/JobWizard/steps/HostsAndInputs/hostgroups.gql +1 -0
- data/webpack/JobWizard/steps/HostsAndInputs/hosts.gql +1 -0
- data/webpack/JobWizard/steps/ReviewDetails/index.js +1 -1
- data/webpack/JobWizard/steps/Schedule/__tests__/Schedule.test.js +15 -15
- data/webpack/JobWizard/steps/form/GroupedSelectField.js +7 -1
- data/webpack/JobWizard/steps/form/SearchSelect.js +0 -1
- data/webpack/__mocks__/foremanReact/common/globalIdHelpers.js +1 -0
- data/webpack/global_index.js +2 -4
- data/webpack/react_app/components/FeaturesDropdown/actions.js +13 -0
- data/webpack/react_app/components/FeaturesDropdown/constant.js +2 -0
- data/webpack/react_app/components/FeaturesDropdown/index.js +74 -0
- data/webpack/react_app/components/HostKebab/KebabItems.js +27 -0
- data/webpack/react_app/components/RecentJobsCard/RecentJobsCard.js +10 -5
- data/webpack/react_app/components/RecentJobsCard/RecentJobsTable.js +2 -2
- data/webpack/react_app/components/RecentJobsCard/constants.js +1 -0
- data/webpack/react_app/components/TargetingHosts/TargetingHostsConsts.js +1 -0
- data/webpack/react_app/components/TargetingHosts/TargetingHostsPage.js +8 -3
- data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHostsPage.test.js.snap +9 -1
- data/webpack/react_app/components/TargetingHosts/__tests__/fixtures.js +1 -4
- data/webpack/react_app/components/TargetingHosts/index.js +1 -0
- data/webpack/react_app/extend/Fills.js +48 -0
- metadata +25 -17
- data/app/helpers/concerns/foreman_remote_execution/hosts_helper_extensions.rb +0 -62
- data/webpack/react_app/extend/fillRecentJobsCard.js +0 -11
- data/webpack/react_app/extend/fillregistrationAdvanced.js +0 -11
@@ -0,0 +1,48 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { addGlobalFill } from 'foremanReact/components/common/Fill/GlobalFill';
|
3
|
+
|
4
|
+
import FeaturesDropdown from '../components/FeaturesDropdown';
|
5
|
+
import RexInterface from '../components/RegistrationExtension/RexInterface';
|
6
|
+
import RecentJobsCard from '../components/RecentJobsCard';
|
7
|
+
import KebabItems from '../components/HostKebab/KebabItems';
|
8
|
+
|
9
|
+
const fills = [
|
10
|
+
{
|
11
|
+
slot: 'host-details-kebab',
|
12
|
+
name: 'kebab-items',
|
13
|
+
component: props => <KebabItems {...props} />,
|
14
|
+
weight: 500,
|
15
|
+
},
|
16
|
+
{
|
17
|
+
slot: 'host-overview-cards',
|
18
|
+
name: 'latest-jobs',
|
19
|
+
component: props => <RecentJobsCard {...props} />,
|
20
|
+
weight: 500,
|
21
|
+
},
|
22
|
+
{
|
23
|
+
slot: 'registrationAdvanced',
|
24
|
+
name: 'interface',
|
25
|
+
component: props => <RexInterface {...props} />,
|
26
|
+
weight: 500,
|
27
|
+
},
|
28
|
+
{
|
29
|
+
slot: '_rex-host-features',
|
30
|
+
name: '_rex-host-features',
|
31
|
+
component: props => <FeaturesDropdown {...props} />,
|
32
|
+
weight: 1000,
|
33
|
+
},
|
34
|
+
];
|
35
|
+
|
36
|
+
const registerFills = () => {
|
37
|
+
fills.forEach(({ slot, id, component: Component, weight, metadata }) =>
|
38
|
+
addGlobalFill(
|
39
|
+
slot,
|
40
|
+
id,
|
41
|
+
<Component key={`rex-fill-${id}`} />,
|
42
|
+
weight,
|
43
|
+
metadata
|
44
|
+
)
|
45
|
+
);
|
46
|
+
};
|
47
|
+
|
48
|
+
export default registerFills;
|
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:
|
4
|
+
version: 7.0.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: 2022-
|
11
|
+
date: 2022-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: deface
|
@@ -142,8 +142,8 @@ files:
|
|
142
142
|
- app/graphql/types/recurrence_input.rb
|
143
143
|
- app/graphql/types/scheduling_input.rb
|
144
144
|
- app/graphql/types/targeting_enum.rb
|
145
|
-
- app/helpers/concerns/foreman_remote_execution/hosts_helper_extensions.rb
|
146
145
|
- app/helpers/concerns/foreman_remote_execution/job_templates_extensions.rb
|
146
|
+
- app/helpers/hosts_extensions_helper.rb
|
147
147
|
- app/helpers/job_invocation_output_helper.rb
|
148
148
|
- app/helpers/job_invocations_chart_helper.rb
|
149
149
|
- app/helpers/job_invocations_helper.rb
|
@@ -201,6 +201,7 @@ files:
|
|
201
201
|
- app/views/api/v2/foreign_input_sets/index.json.rabl
|
202
202
|
- app/views/api/v2/foreign_input_sets/main.json.rabl
|
203
203
|
- app/views/api/v2/foreign_input_sets/show.json.rabl
|
204
|
+
- app/views/api/v2/host/main.rabl
|
204
205
|
- app/views/api/v2/interfaces/execution_flag.json.rabl
|
205
206
|
- app/views/api/v2/job_invocations/base.json.rabl
|
206
207
|
- app/views/api/v2/job_invocations/create.json.rabl
|
@@ -263,17 +264,17 @@ files:
|
|
263
264
|
- app/views/template_invocations/_refresh.js.erb
|
264
265
|
- app/views/template_invocations/show.html.erb
|
265
266
|
- app/views/template_invocations/show.js.erb
|
266
|
-
- app/views/templates/
|
267
|
-
- app/views/templates/
|
268
|
-
- app/views/templates/
|
269
|
-
- app/views/templates/
|
270
|
-
- app/views/templates/
|
271
|
-
- app/views/templates/
|
272
|
-
- app/views/templates/
|
273
|
-
- app/views/templates/
|
274
|
-
- app/views/templates/
|
275
|
-
- app/views/templates/
|
276
|
-
- app/views/templates/
|
267
|
+
- app/views/templates/script/check_update.erb
|
268
|
+
- app/views/templates/script/module_action.erb
|
269
|
+
- app/views/templates/script/package_action.erb
|
270
|
+
- app/views/templates/script/power_action.erb
|
271
|
+
- app/views/templates/script/puppet_agent_disable.erb
|
272
|
+
- app/views/templates/script/puppet_agent_enable.erb
|
273
|
+
- app/views/templates/script/puppet_install_modules_from_forge.erb
|
274
|
+
- app/views/templates/script/puppet_install_modules_from_git.erb
|
275
|
+
- app/views/templates/script/puppet_run_once.erb
|
276
|
+
- app/views/templates/script/run_command.erb
|
277
|
+
- app/views/templates/script/service_action.erb
|
277
278
|
- config/routes.rb
|
278
279
|
- db/migrate/20150612121541_add_job_template_to_template.rb
|
279
280
|
- db/migrate/20150708133241_add_targeting.rb
|
@@ -321,6 +322,8 @@ files:
|
|
321
322
|
- db/migrate/20210312074713_add_provider_inputs.rb
|
322
323
|
- db/migrate/2021051713291621250977_add_host_proxy_invocations.rb
|
323
324
|
- db/migrate/20210816100932_rex_setting_category_to_dsl.rb
|
325
|
+
- db/migrate/20220321101835_rename_ssh_provider_to_script.rb
|
326
|
+
- db/migrate/20220331112719_add_ssh_user_to_job_invocation.rb
|
324
327
|
- db/seeds.d/100-assign_features_with_templates.rb
|
325
328
|
- db/seeds.d/20-permissions.rb
|
326
329
|
- db/seeds.d/50-notification_blueprints.rb
|
@@ -333,6 +336,7 @@ files:
|
|
333
336
|
- extra/cockpit/foreman-cockpit.service
|
334
337
|
- extra/cockpit/settings.yml.example
|
335
338
|
- foreman_remote_execution.gemspec
|
339
|
+
- jsconfig.json
|
336
340
|
- lib/foreman_remote_execution.rb
|
337
341
|
- lib/foreman_remote_execution/engine.rb
|
338
342
|
- lib/foreman_remote_execution/version.rb
|
@@ -459,6 +463,7 @@ files:
|
|
459
463
|
- webpack/Routes/routes.js
|
460
464
|
- webpack/__mocks__/foremanReact/Root/Context/ForemanContext/index.js
|
461
465
|
- webpack/__mocks__/foremanReact/common/I18n.js
|
466
|
+
- webpack/__mocks__/foremanReact/common/globalIdHelpers.js
|
462
467
|
- webpack/__mocks__/foremanReact/common/helpers.js
|
463
468
|
- webpack/__mocks__/foremanReact/components/AutoComplete/AutoCompleteActions.js
|
464
469
|
- webpack/__mocks__/foremanReact/components/AutoComplete/AutoCompleteConstants.js
|
@@ -475,6 +480,10 @@ files:
|
|
475
480
|
- webpack/global_index.js
|
476
481
|
- webpack/helpers.js
|
477
482
|
- webpack/index.js
|
483
|
+
- webpack/react_app/components/FeaturesDropdown/actions.js
|
484
|
+
- webpack/react_app/components/FeaturesDropdown/constant.js
|
485
|
+
- webpack/react_app/components/FeaturesDropdown/index.js
|
486
|
+
- webpack/react_app/components/HostKebab/KebabItems.js
|
478
487
|
- webpack/react_app/components/RecentJobsCard/JobStatusIcon.js
|
479
488
|
- webpack/react_app/components/RecentJobsCard/RecentJobsCard.js
|
480
489
|
- webpack/react_app/components/RecentJobsCard/RecentJobsTable.js
|
@@ -507,8 +516,7 @@ files:
|
|
507
516
|
- webpack/react_app/components/jobInvocations/AggregateStatus/index.js
|
508
517
|
- webpack/react_app/components/jobInvocations/AggregateStatus/index.test.js
|
509
518
|
- webpack/react_app/components/jobInvocations/index.js
|
510
|
-
- webpack/react_app/extend/
|
511
|
-
- webpack/react_app/extend/fillregistrationAdvanced.js
|
519
|
+
- webpack/react_app/extend/Fills.js
|
512
520
|
- webpack/react_app/extend/reducers.js
|
513
521
|
- webpack/react_app/redux/actions/jobInvocations/index.js
|
514
522
|
- webpack/react_app/redux/consts.js
|
@@ -536,7 +544,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
536
544
|
- !ruby/object:Gem::Version
|
537
545
|
version: '0'
|
538
546
|
requirements: []
|
539
|
-
rubygems_version: 3.1.
|
547
|
+
rubygems_version: 3.1.4
|
540
548
|
signing_key:
|
541
549
|
specification_version: 4
|
542
550
|
summary: A plugin bringing remote execution to the Foreman, completing the config
|
@@ -1,62 +0,0 @@
|
|
1
|
-
module ForemanRemoteExecution
|
2
|
-
module HostsHelperExtensions
|
3
|
-
def host_overview_buttons(host)
|
4
|
-
[
|
5
|
-
{ :button => link_to_if_authorized(_("Jobs"), hash_for_job_invocations_path(search: "host=#{host.name}"), :title => _("Job invocations"), :class => 'btn btn-default'), :priority => 200 },
|
6
|
-
]
|
7
|
-
end
|
8
|
-
|
9
|
-
def multiple_actions
|
10
|
-
res = super
|
11
|
-
res += [ [_('Schedule Remote Job'), new_job_invocation_path, false] ] if can_schedule_jobs?
|
12
|
-
res
|
13
|
-
end
|
14
|
-
|
15
|
-
def schedule_job_multi_button(*args)
|
16
|
-
host_features = rex_host_features(*args)
|
17
|
-
|
18
|
-
if host_features.present?
|
19
|
-
action_buttons(schedule_job_button(*args), *host_features)
|
20
|
-
else
|
21
|
-
schedule_job_button(*args)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def rex_host_features(host, *_rest)
|
26
|
-
return [] unless can_execute_on_host?(host)
|
27
|
-
RemoteExecutionFeature.with_host_action_button.order(:label).map do |feature|
|
28
|
-
link_to(_('%s') % feature.name, job_invocations_path(:host_ids => [host.id], :feature => feature.label), :method => :post)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def schedule_job_button(host, *_rest)
|
33
|
-
return unless can_execute_on_host?(host)
|
34
|
-
link_to(_('Schedule Remote Job'), new_job_invocation_path(:host_ids => [host.id]), :id => :run_button, :class => 'btn btn-default')
|
35
|
-
end
|
36
|
-
|
37
|
-
def web_console_button(host, *args)
|
38
|
-
return if !authorized_for(permission: 'cockpit_hosts', auth_object: host) || !can_execute_on_infrastructure_host?(host)
|
39
|
-
|
40
|
-
url = SSHExecutionProvider.cockpit_url_for_host(host.name)
|
41
|
-
url ? link_to(_('Web Console'), url, :class => 'btn btn-default', :id => :'web-console-button', :target => '_new') : nil
|
42
|
-
end
|
43
|
-
|
44
|
-
def host_title_actions(*args)
|
45
|
-
title_actions(button_group(schedule_job_multi_button(*args)),
|
46
|
-
button_group(web_console_button(*args)))
|
47
|
-
super(*args)
|
48
|
-
end
|
49
|
-
|
50
|
-
def can_schedule_jobs?
|
51
|
-
authorized_for(controller: :job_invocations, action: :create)
|
52
|
-
end
|
53
|
-
|
54
|
-
def can_execute_on_host?(host)
|
55
|
-
can_schedule_jobs? && can_execute_on_infrastructure_host?(host)
|
56
|
-
end
|
57
|
-
|
58
|
-
def can_execute_on_infrastructure_host?(host)
|
59
|
-
!host.infrastructure_host? || User.current.can?(:execute_jobs_on_infrastructure_hosts)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
import { addGlobalFill } from 'foremanReact/components/common/Fill/GlobalFill';
|
3
|
-
import RecentJobsCard from '../components/RecentJobsCard';
|
4
|
-
|
5
|
-
export default () =>
|
6
|
-
addGlobalFill(
|
7
|
-
'details-cards',
|
8
|
-
'rex-host-details-latest-jobs',
|
9
|
-
<RecentJobsCard key="rex-host-details-latest-jobs" />,
|
10
|
-
1000
|
11
|
-
);
|
@@ -1,11 +0,0 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
import { addGlobalFill } from 'foremanReact/components/common/Fill/GlobalFill';
|
3
|
-
import RexInterface from '../components/RegistrationExtension/RexInterface';
|
4
|
-
|
5
|
-
export default () =>
|
6
|
-
addGlobalFill(
|
7
|
-
'registrationAdvanced',
|
8
|
-
'foreman-remote-exectuion-rex-interface',
|
9
|
-
<RexInterface key="registration-rex-interface" />,
|
10
|
-
100
|
11
|
-
);
|