foreman_remote_execution 13.2.0 → 13.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ab4f560e39c672bfce2319a0487db47a3f772a11142591262727b5a16a7a0573
4
- data.tar.gz: 6dab6dc9a69cc43df9a13cc0173651e37639fd29f38b1153e6541567da6ff01c
3
+ metadata.gz: 96681556d3f5a6992e71260803846de43b28006b4c6632dc8def7772ae8c42b5
4
+ data.tar.gz: 13fffbea7ed8fa8a9556db7ce1c251ab4a879de339f85a5fb4e0f83977a12bfc
5
5
  SHA512:
6
- metadata.gz: 0226bedd8d571be5c687abf520499cc26b94981980f6924b51e34a8de5ff300106b8d750474961da5f4270eaaa773cde04fcfe1d8b5050772fb6efada15b5f63
7
- data.tar.gz: 37147e8f31b7a3050f883d24783e2aa10ed0e782c97badeabb511164990c6fe95b65caaf0d2290216c4d9f5616fcc2bcd2538f90dfcb21bad0526c8c24cd65f2
6
+ metadata.gz: e2f596ae2c2dd3ed2483ee32f78104b26fe39e6e4faa60ba50dfefac947346bd639bad3714a5c89e9df47f0a81389ca59c7c05c7915432985bf1ab03ec53e71a
7
+ data.tar.gz: c81d5218ffceb943120ed6c141bad17d7ed87e8feaff517b984fde44684ffffe72598f2adc7f350e187139f8e68c521d8c296a53ec9a88baf2f2987176b2d857
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ Gemfile.lock
15
15
  node_modules/
16
16
  package-lock.json
17
17
  coverage/
18
+ public/
@@ -49,7 +49,8 @@ module Actions
49
49
  provider_type = provider.proxy_feature
50
50
  proxy = determine_proxy!(proxy_selector, provider_type, host)
51
51
  link!(proxy)
52
- input[:proxy_id] = proxy.id
52
+ template_invocation.smart_proxy_id = proxy.id
53
+ template_invocation.save!
53
54
 
54
55
  renderer = InputTemplateRenderer.new(template_invocation.template, host, template_invocation)
55
56
  script = renderer.render
@@ -75,6 +75,7 @@ module Actions
75
75
  end
76
76
 
77
77
  def on_planning_finished
78
+ trigger_remote_batch
78
79
  plan_event(Actions::TriggerProxyBatch::TriggerLastBatch, nil, step_id: input[:trigger_run_step_id])
79
80
  super
80
81
  end
@@ -3,6 +3,7 @@ module ForemanRemoteExecution
3
3
  def self.prepended(base)
4
4
  base.instance_eval do
5
5
  has_many :host_proxy_invocations, :dependent => :destroy
6
+ has_many :template_invocations, :dependent => :nullify
6
7
  end
7
8
  end
8
9
 
@@ -18,6 +18,7 @@ class TemplateInvocation < ApplicationRecord
18
18
  belongs_to :run_host_job_task, :class_name => 'ForemanTasks::Task'
19
19
  has_many :remote_execution_features, :through => :template
20
20
  has_many :template_invocation_events, :dependent => :destroy
21
+ belongs_to :smart_proxy, :class_name => '::SmartProxy', :inverse_of => :template_invocations
21
22
 
22
23
  validates_associated :input_values
23
24
  validate :provides_required_input_values
@@ -28,10 +28,10 @@ end
28
28
  </div>
29
29
  </div>
30
30
  <% if @host %>
31
- <% proxy_id = @template_invocation_task.input[:proxy_id] %>
31
+ <% proxy = @template_invocation.smart_proxy %>
32
32
  <h3>
33
33
  <%= _('Target: ') %><%= link_to(@host, current_host_details_path(@host)) %>
34
- <% if proxy_id && proxy = SmartProxy.find_by(id: proxy_id) %>
34
+ <% if proxy %>
35
35
  <%= _('using Smart Proxy') %> <%= link_to(proxy.name, smart_proxy_path(proxy)) %>
36
36
  <% end %>
37
37
  </h3>
@@ -118,19 +118,27 @@ handle_zypp_res_codes () {
118
118
  end
119
119
  end
120
120
  -%>
121
- OUTFILE=$(mktemp)
122
- trap "rm -f $OUTFILE" EXIT
123
- set -o pipefail
121
+ run_cmd()
122
+ {
123
+ LANG=C apt-get -o APT::Get::Upgrade-Allow-New="true" -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" -y <%= input("options") %> <%= action %> <%= input("package") %> 2>&1
124
+ }
124
125
  export DEBIAN_FRONTEND=noninteractive
125
126
  apt-get -y update
126
- LANG=C apt-get -o APT::Get::Upgrade-Allow-New="true" -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" -y <%= input("options") %> <%= action %> <%= input("package") %> 2>&1 | tee $OUTFILE
127
- RETVAL=$?
128
- if grep -q "Unable to locate" $OUTFILE && [ "$action" = "remove" ]; then
129
- true
127
+ if [ "<%= action %>" = "remove" ]; then
128
+ OUTFILE=$(mktemp)
129
+ trap "rm -f $OUTFILE" EXIT
130
+ run_cmd > $OUTFILE
131
+ RETVAL=$?
132
+ cat $OUTFILE
133
+ if grep -q "Unable to locate" $OUTFILE; then
134
+ RETVAL=0
135
+ fi
130
136
  else
131
- setReturnValue() { RETVAL=$1; return $RETVAL; }
132
- setReturnValue $RETVAL
137
+ run_cmd
138
+ RETVAL=$?
133
139
  fi
140
+ setReturnValue() { RETVAL=$1; return $RETVAL; }
141
+ setReturnValue $RETVAL
134
142
  <% elsif package_manager == 'zypper' -%>
135
143
  <%-
136
144
  if action == "group install"
@@ -141,7 +149,7 @@ handle_zypp_res_codes () {
141
149
  -%>
142
150
  zypper refresh
143
151
  zypper -n <%= action %> <%= input("options") %> <%= input("package") %>
144
- handle_zypp_res_codes $? $action
152
+ handle_zypp_res_codes $? "<%= action %>"
145
153
  <% end -%>
146
154
  RETVAL=$?
147
155
  [ $RETVAL -eq 0 ] || exit_with_message "Package action failed" $RETVAL
@@ -0,0 +1,7 @@
1
+ class AddSmartProxyIdToTemplateInvocation < ActiveRecord::Migration[6.0]
2
+ def change
3
+ change_table :template_invocations do |t|
4
+ t.references :smart_proxy, foreign_key: true
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,16 @@
1
+ class MigrateSmartProxyIdsToTemplateInvocations < ActiveRecord::Migration[6.0]
2
+ def up
3
+ ForemanTasks::Link.joins(:task)
4
+ .where(resource_type: 'SmartProxy', task: { label: 'Actions::RemoteExecution::RunHostJob' })
5
+ .where.not(resource_id: nil)
6
+ .find_in_batches do |batch|
7
+ batch.group_by(&:resource_id).each do |resource_id, links|
8
+ template_invocation_ids = ForemanTasks::Link.where(resource_type: 'TemplateInvocation', task_id: links.map(&:task_id)).select(:resource_id)
9
+ TemplateInvocation.where(id: template_invocation_ids).update_all(smart_proxy_id: resource_id)
10
+ end
11
+ end
12
+ end
13
+
14
+ def down
15
+ end
16
+ end
@@ -1,3 +1,3 @@
1
1
  module ForemanRemoteExecution
2
- VERSION = '13.2.0'.freeze
2
+ VERSION = '13.2.2'.freeze
3
3
  end
@@ -16,7 +16,17 @@
16
16
  ); // So the select box can be shown above the wizard footer and navigation toggle
17
17
  }
18
18
  .pf-c-wizard__main-body {
19
- max-width: 500px;
19
+ @media (max-width: 600px) {
20
+ max-width: 100%;
21
+ }
22
+
23
+ @media (min-width: 601px) and (max-width: 1300px) {
24
+ max-width: 65vw;
25
+ }
26
+ @media (min-width: 1301px) {
27
+ max-width: 50vw;
28
+ }
29
+
20
30
  .advanced-fields-title {
21
31
  margin-bottom: 10px;
22
32
  }
@@ -40,6 +50,9 @@
40
50
  flex-wrap: nowrap;
41
51
  }
42
52
  }
53
+ .foreman-search-field {
54
+ width: 100%;
55
+ }
43
56
  }
44
57
  input[type='radio'],
45
58
  input[type='checkbox'] {
@@ -110,10 +123,6 @@
110
123
  min-height: 40px;
111
124
  min-width: 100px;
112
125
  }
113
- #host-selection {
114
- width: 500px;
115
- }
116
-
117
126
  .pf-c-modal-box {
118
127
  width: auto;
119
128
  }
@@ -61,14 +61,20 @@ describe('Hosts', () => {
61
61
  await act(async () => {
62
62
  fireEvent.click(screen.getByText('Host groups'));
63
63
  });
64
- fireEvent.click(select('host groups'));
64
+ await act(async () => {
65
+ fireEvent.click(select('host groups'));
66
+ });
65
67
  await act(async () => {
66
68
  fireEvent.click(screen.getByText('host_group1'));
67
69
  });
68
70
 
69
- fireEvent.click(
70
- screen.getByText('Host groups', { selector: '.pf-c-select__toggle-text' })
71
- );
71
+ await act(async () => {
72
+ fireEvent.click(
73
+ screen.getByText('Host groups', {
74
+ selector: '.pf-c-select__toggle-text',
75
+ })
76
+ );
77
+ });
72
78
  await act(async () => {
73
79
  fireEvent.click(screen.getByText('Host collections'));
74
80
  });
@@ -49,7 +49,10 @@ const HostsAndInputs = ({
49
49
  hostsSearchQuery,
50
50
  setHostsSearchQuery,
51
51
  }) => {
52
- const [hostMethod, setHostMethod] = useState(hostMethods.hosts);
52
+ const defaultHostMethod = hostsSearchQuery.length
53
+ ? hostMethods.searchQuery
54
+ : hostMethods.hosts;
55
+ const [hostMethod, setHostMethod] = useState(defaultHostMethod);
53
56
  const isLoading = useSelector(selectIsLoadingHosts);
54
57
  const templateInputs = useSelector(selectTemplateInputs);
55
58
  const [hostPreviewOpen, setHostPreviewOpen] = useState(false);
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: 13.2.0
4
+ version: 13.2.2
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: 2024-05-30 00:00:00.000000000 Z
11
+ date: 2024-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deface
@@ -350,6 +350,8 @@ files:
350
350
  - db/migrate/20220822155946_add_time_to_pickup_to_job_invocation.rb
351
351
  - db/migrate/20221129170145_redefine_template_invocation_events_index.rb
352
352
  - db/migrate/20230816154510_drop_time_span_from_job_invocations.rb
353
+ - db/migrate/20240522093412_add_smart_proxy_id_to_template_invocation.rb
354
+ - db/migrate/20240522093413_migrate_smart_proxy_ids_to_template_invocations.rb
353
355
  - db/seeds.d/100-assign_features_with_templates.rb
354
356
  - db/seeds.d/20-permissions.rb
355
357
  - db/seeds.d/50-notification_blueprints.rb