foreman_ansible 15.0.7 → 16.0.1

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 (76) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/foreman_ansible/locale/ca/foreman_ansible.js +10 -1
  3. data/app/assets/javascripts/foreman_ansible/locale/cs_CZ/foreman_ansible.js +10 -1
  4. data/app/assets/javascripts/foreman_ansible/locale/de/foreman_ansible.js +10 -1
  5. data/app/assets/javascripts/foreman_ansible/locale/es/foreman_ansible.js +10 -1
  6. data/app/assets/javascripts/foreman_ansible/locale/gl/foreman_ansible.js +10 -1
  7. data/app/assets/javascripts/foreman_ansible/locale/it/foreman_ansible.js +10 -1
  8. data/app/assets/javascripts/foreman_ansible/locale/ka/foreman_ansible.js +10 -1
  9. data/app/assets/javascripts/foreman_ansible/locale/nl_NL/foreman_ansible.js +10 -1
  10. data/app/assets/javascripts/foreman_ansible/locale/pl/foreman_ansible.js +10 -1
  11. data/app/assets/javascripts/foreman_ansible/locale/pt_BR/foreman_ansible.js +10 -1
  12. data/app/assets/javascripts/foreman_ansible/locale/ru/foreman_ansible.js +10 -1
  13. data/app/assets/javascripts/foreman_ansible/locale/sv_SE/foreman_ansible.js +10 -1
  14. data/app/assets/javascripts/foreman_ansible/locale/zh_TW/foreman_ansible.js +10 -1
  15. data/app/controllers/concerns/foreman/controller/parameters/job_template_extensions.rb +1 -1
  16. data/app/controllers/foreman_ansible/api/v2/job_templates_controller_extensions.rb +1 -0
  17. data/app/models/foreman_ansible/ansible_provider.rb +1 -0
  18. data/app/views/api/v2/job_templates/job_templates.json.rabl +1 -1
  19. data/app/views/foreman_ansible/job_templates/package_action_-_ansible_default.erb +19 -3
  20. data/app/views/foreman_ansible/job_templates/snippet/check_bootc_status.erb +22 -0
  21. data/app/views/job_templates/_job_template_callback_tab_content.html.erb +1 -0
  22. data/db/migrate/20241022000000_add_ansible_check_mode_to_templates.rb +5 -0
  23. data/lib/foreman_ansible/register.rb +1 -1
  24. data/lib/foreman_ansible/version.rb +1 -1
  25. data/locale/ca/LC_MESSAGES/foreman_ansible.mo +0 -0
  26. data/locale/ca/foreman_ansible.po +10 -1
  27. data/locale/cs_CZ/LC_MESSAGES/foreman_ansible.mo +0 -0
  28. data/locale/cs_CZ/foreman_ansible.po +10 -1
  29. data/locale/de/LC_MESSAGES/foreman_ansible.mo +0 -0
  30. data/locale/de/foreman_ansible.po +10 -1
  31. data/locale/es/LC_MESSAGES/foreman_ansible.mo +0 -0
  32. data/locale/es/foreman_ansible.po +11 -2
  33. data/locale/gl/LC_MESSAGES/foreman_ansible.mo +0 -0
  34. data/locale/gl/foreman_ansible.po +10 -1
  35. data/locale/it/LC_MESSAGES/foreman_ansible.mo +0 -0
  36. data/locale/it/foreman_ansible.po +10 -1
  37. data/locale/ka/LC_MESSAGES/foreman_ansible.mo +0 -0
  38. data/locale/ka/foreman_ansible.po +10 -1
  39. data/locale/nl_NL/LC_MESSAGES/foreman_ansible.mo +0 -0
  40. data/locale/nl_NL/foreman_ansible.po +10 -1
  41. data/locale/pl/LC_MESSAGES/foreman_ansible.mo +0 -0
  42. data/locale/pl/foreman_ansible.po +10 -1
  43. data/locale/pt_BR/LC_MESSAGES/foreman_ansible.mo +0 -0
  44. data/locale/pt_BR/foreman_ansible.po +10 -1
  45. data/locale/ru/LC_MESSAGES/foreman_ansible.mo +0 -0
  46. data/locale/ru/foreman_ansible.po +10 -1
  47. data/locale/sv_SE/LC_MESSAGES/foreman_ansible.mo +0 -0
  48. data/locale/sv_SE/foreman_ansible.po +10 -1
  49. data/locale/zh_TW/LC_MESSAGES/foreman_ansible.mo +0 -0
  50. data/locale/zh_TW/foreman_ansible.po +10 -1
  51. data/webpack/components/AnsibleHostDetail/AnsibleHostDetail.scss +1 -1
  52. data/webpack/components/AnsibleHostDetail/components/AnsibleVariableOverrides/AnsibleVariableOverridesTable.js +4 -11
  53. data/webpack/components/AnsibleHostDetail/components/AnsibleVariableOverrides/EditableValueHelper.js +11 -5
  54. data/webpack/components/AnsibleHostDetail/components/AnsibleVariableOverrides/__test__/AnsibleVariableOverrides.test.js +1 -1
  55. data/webpack/components/AnsibleHostDetail/components/AnsibleVariableOverrides/__test__/AnsibleVariableOverridesDelete.test.js +2 -2
  56. data/webpack/components/AnsibleHostDetail/components/JobsTab/NewRecurringJobModal.scss +2 -2
  57. data/webpack/components/AnsibleHostDetail/components/JobsTab/PreviousJobsTable.js +3 -10
  58. data/webpack/components/AnsibleHostDetail/components/JobsTab/RecurringJobsTable.js +3 -10
  59. data/webpack/components/AnsibleHostDetail/components/JobsTab/__test__/JobsTab.test.js +2 -1
  60. data/webpack/components/AnsibleHostDetail/components/RolesTab/AllRolesModal/AllRolesTable.js +3 -10
  61. data/webpack/components/AnsibleHostDetail/components/RolesTab/EditRolesModal/EditRolesModal.scss +1 -1
  62. data/webpack/components/AnsibleHostDetail/components/RolesTab/RolesTable.js +3 -10
  63. data/webpack/components/AnsibleRolesAndVariables/AnsibleRolesAndVariables.js +3 -3
  64. data/webpack/components/DualList/ListControls.js +9 -9
  65. data/webpack/components/DualList/ListHeader.js +5 -3
  66. data/webpack/components/DualList/ListItem.js +9 -9
  67. data/webpack/components/DualList/ListPane.js +3 -3
  68. data/webpack/components/DualList/SelectedStatus.js +2 -2
  69. data/webpack/components/DualList/index.js +1 -1
  70. data/webpack/formHelper.js +26 -29
  71. data/webpack/routes/HostgroupJobs/__test__/HostgroupJobs.test.js +1 -0
  72. metadata +10 -12
  73. data/app/assets/javascripts/foreman_ansible/locale/en/foreman_ansible.js +0 -910
  74. data/app/assets/javascripts/foreman_ansible/locale/en_GB/foreman_ansible.js +0 -910
  75. data/locale/en/foreman_ansible.po +0 -908
  76. data/locale/en_GB/foreman_ansible.po +0 -912
@@ -3,10 +3,10 @@ import PropTypes from 'prop-types';
3
3
  import { translate as __ } from 'foremanReact/common/I18n';
4
4
 
5
5
  const ListControls = props => (
6
- <div className="pf-c-dual-list-selector__controls">
7
- <div className="pf-c-dual-list-selector__controls-item">
6
+ <div className="pf-v5-c-dual-list-selector__controls">
7
+ <div className="pf-v5-c-dual-list-selector__controls-item">
8
8
  <button
9
- className="pf-c-button pf-m-plain"
9
+ className="pf-v5-c-button pf-m-plain"
10
10
  type="button"
11
11
  disabled={props.addSelectedDisabled}
12
12
  onClick={props.onAddSelected}
@@ -15,9 +15,9 @@ const ListControls = props => (
15
15
  <i className="fas fa-fw fa-angle-right" />
16
16
  </button>
17
17
  </div>
18
- <div className="pf-c-dual-list-selector__controls-item">
18
+ <div className="pf-v5-c-dual-list-selector__controls-item">
19
19
  <button
20
- className="pf-c-button pf-m-plain"
20
+ className="pf-v5-c-button pf-m-plain"
21
21
  type="button"
22
22
  disabled={props.addAllDisabled}
23
23
  onClick={props.onAddAll}
@@ -26,9 +26,9 @@ const ListControls = props => (
26
26
  <i className="fas fa-fw fa-angle-double-right" />
27
27
  </button>
28
28
  </div>
29
- <div className="pf-c-dual-list-selector__controls-item">
29
+ <div className="pf-v5-c-dual-list-selector__controls-item">
30
30
  <button
31
- className="pf-c-button pf-m-plain"
31
+ className="pf-v5-c-button pf-m-plain"
32
32
  type="button"
33
33
  disabled={props.removeAllDisabled}
34
34
  onClick={props.onRemoveAll}
@@ -37,9 +37,9 @@ const ListControls = props => (
37
37
  <i className="fas fa-fw fa-angle-double-left" />
38
38
  </button>
39
39
  </div>
40
- <div className="pf-c-dual-list-selector__controls-item">
40
+ <div className="pf-v5-c-dual-list-selector__controls-item">
41
41
  <button
42
- className="pf-c-button pf-m-plain"
42
+ className="pf-v5-c-button pf-m-plain"
43
43
  type="button"
44
44
  disabled={props.removeSelectedDisabled}
45
45
  onClick={props.onRemoveSelected}
@@ -2,9 +2,11 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
4
  const ListHeader = props => (
5
- <div className="pf-c-dual-list-selector__header">
6
- <div className="pf-c-dual-list-selector__title">
7
- <div className="pf-c-dual-list-selector__title-text">{props.title}</div>
5
+ <div className="pf-v5-c-dual-list-selector__header">
6
+ <div className="pf-v5-c-dual-list-selector__title">
7
+ <div className="pf-v5-c-dual-list-selector__title-text">
8
+ {props.title}
9
+ </div>
8
10
  </div>
9
11
  </div>
10
12
  );
@@ -4,9 +4,9 @@ import PropTypes from 'prop-types';
4
4
 
5
5
  const ListItem = props => {
6
6
  const draggableBtn = (
7
- <div className="pf-c-dual-list-selector__draggable">
7
+ <div className="pf-v5-c-dual-list-selector__draggable">
8
8
  <button
9
- className="pf-c-button pf-m-plain"
9
+ className="pf-v5-c-button pf-m-plain"
10
10
  type="button"
11
11
  aria-pressed="false"
12
12
  aria-label="Reorder"
@@ -24,27 +24,27 @@ const ListItem = props => {
24
24
  );
25
25
 
26
26
  return (
27
- <li className="pf-c-dual-list-selector__list-item">
27
+ <li className="pf-v5-c-dual-list-selector__list-item">
28
28
  <div
29
- className={classNames('pf-c-dual-list-selector__list-item-row ', {
29
+ className={classNames('pf-v5-c-dual-list-selector__list-item-row ', {
30
30
  'pf-m-selected': props.selected,
31
31
  'pf-m-ghost-row': props.dragging,
32
32
  })}
33
33
  >
34
34
  {props.draggable && draggableBtn}
35
35
  <button
36
- className="pf-c-dual-list-selector__item"
36
+ className="pf-v5-c-dual-list-selector__item"
37
37
  type="button"
38
38
  onClick={props.onClick}
39
39
  >
40
- <span className="pf-c-dual-list-selector__item-main">
41
- <span className="pf-c-dual-list-selector__item-text">
40
+ <span className="pf-v5-c-dual-list-selector__item-main">
41
+ <span className="pf-v5-c-dual-list-selector__item-text">
42
42
  {props.draggable && orderBtn}
43
43
  <span>{props.name}</span>
44
44
  </span>
45
45
  </span>
46
- <span className="pf-c-dual-list-selector__item-count">
47
- <span className="pf-c-badge pf-m-read" />
46
+ <span className="pf-v5-c-dual-list-selector__item-count">
47
+ <span className="pf-v5-c-badge pf-m-read" />
48
48
  </span>
49
49
  </button>
50
50
  </div>
@@ -58,16 +58,16 @@ const ListPane = ({
58
58
 
59
59
  return (
60
60
  <div
61
- className={`pf-c-dual-list-selector__pane pf-m-available ${paneClass}`}
61
+ className={`pf-v5-c-dual-list-selector__pane pf-m-available ${paneClass}`}
62
62
  >
63
63
  <ListHeader title={title} />
64
64
  <SelectedStatus
65
65
  selectedCount={selected.length}
66
66
  totalCount={items.length}
67
67
  />
68
- <div className="pf-c-dual-list-selector__menu">
68
+ <div className="pf-v5-c-dual-list-selector__menu">
69
69
  <DndProvider backend={HTML5Backend}>
70
- <ul className="pf-c-dual-list-selector__list">
70
+ <ul className="pf-v5-c-dual-list-selector__list">
71
71
  {items.map(renderItem)}
72
72
  </ul>
73
73
  </DndProvider>
@@ -3,8 +3,8 @@ import PropTypes from 'prop-types';
3
3
  import { translate as __, sprintf } from 'foremanReact/common/I18n';
4
4
 
5
5
  const SelectedStatus = ({ selectedCount, totalCount }) => (
6
- <div className="pf-c-dual-list-selector__status">
7
- <span className="pf-c-dual-list-selector__status-text">
6
+ <div className="pf-v5-c-dual-list-selector__status">
7
+ <span className="pf-v5-c-dual-list-selector__status-text">
8
8
  {sprintf(__('%(selectedCount)s of %(totalCount)s items selected'), {
9
9
  selectedCount,
10
10
  totalCount,
@@ -61,7 +61,7 @@ const DualList = props => {
61
61
  props.onListChange(props.availableOptions, items);
62
62
 
63
63
  return (
64
- <div className="pf-c-dual-list-selector">
64
+ <div className="pf-v5-c-dual-list-selector">
65
65
  <ListPane
66
66
  title={__('Available Ansible roles')}
67
67
  items={props.availableOptions}
@@ -6,19 +6,12 @@ import {
6
6
  FormSelectOption,
7
7
  DatePicker,
8
8
  TimePicker,
9
+ FormHelperText,
10
+ HelperText,
11
+ HelperTextItem,
9
12
  } from '@patternfly/react-core';
10
13
  import { ExclamationCircleIcon } from '@patternfly/react-icons';
11
14
 
12
- const wrapFieldProps = fieldProps => {
13
- const { onChange } = fieldProps;
14
- // modify onChange args to correctly wire formik with pf4 input handlers
15
- const wrappedOnChange = (value, event) => {
16
- onChange(event);
17
- };
18
-
19
- return { ...fieldProps, onChange: wrappedOnChange };
20
- };
21
-
22
15
  const wrapPickerProps = fieldProps => {
23
16
  const { onChange } = fieldProps;
24
17
  // because pf4 does not provide consistent handlers for its inputs
@@ -45,18 +38,12 @@ export const SelectField = ({
45
38
  isRequired,
46
39
  blankLabel,
47
40
  }) => {
48
- const fieldProps = wrapFieldProps(field);
41
+ const fieldProps = field;
49
42
 
50
43
  const valid = shouldValidate(form, field.name);
51
44
 
52
45
  return (
53
- <FormGroup
54
- label={label}
55
- isRequired={isRequired}
56
- helperTextInvalid={form.errors[field.name]}
57
- helperTextInvalidIcon={<ExclamationCircleIcon />}
58
- validated={valid}
59
- >
46
+ <FormGroup label={label} isRequired={isRequired}>
60
47
  <FormSelect
61
48
  ouiaId={`select-${fieldProps.name}`}
62
49
  {...fieldProps}
@@ -70,6 +57,15 @@ export const SelectField = ({
70
57
  <FormSelectOption key={idx + 1} value={item.id} label={item.name} />
71
58
  ))}
72
59
  </FormSelect>
60
+ {valid === 'error' && (
61
+ <FormHelperText>
62
+ <HelperText>
63
+ <HelperTextItem variant="icon" icon={<ExclamationCircleIcon />}>
64
+ {form.errors[field.name]}
65
+ </HelperTextItem>
66
+ </HelperText>
67
+ </FormHelperText>
68
+ )}
73
69
  </FormGroup>
74
70
  );
75
71
  };
@@ -96,25 +92,26 @@ const pickerWithHandlers = ComponentType => {
96
92
 
97
93
  const Component = ComponentType === 'date' ? DatePicker : TimePicker;
98
94
  return (
99
- <FormGroup
100
- label={label}
101
- isRequired={isRequired}
102
- helperTextInvalid={form.errors[field.name]}
103
- helperTextInvalidIcon={<ExclamationCircleIcon />}
104
- validated={valid}
105
- >
95
+ <FormGroup label={label} isRequired={isRequired}>
106
96
  <Component
107
97
  aria-label={field.name}
108
- onChange={(a, b) => {
109
- // datepicker: onChange (event: React.FormEvent<HTMLInputElement>, value: string, date?: Date) => void
110
- // timepicker: onChange (time: string, hour?: number, minute?: number, seconds?: number, isValid?: boolean ) => void
111
- ComponentType === 'date' ? onChange(b, a) : onChange(a);
98
+ onChange={(e, value) => {
99
+ onChange(value);
112
100
  }}
113
101
  onBlur={onBlur}
114
102
  {...rest}
115
103
  validated={valid}
116
104
  isDisabled={form.isSubmitting}
117
105
  />
106
+ {valid === 'error' && (
107
+ <FormHelperText>
108
+ <HelperText>
109
+ <HelperTextItem variant="icon" icon={<ExclamationCircleIcon />}>
110
+ {form.errors[field.name]}
111
+ </HelperTextItem>
112
+ </HelperText>
113
+ </FormHelperText>
114
+ )}
118
115
  </FormGroup>
119
116
  );
120
117
  };
@@ -75,6 +75,7 @@ describe('HostgroupJobs', () => {
75
75
  />
76
76
  );
77
77
  await waitFor(tick);
78
+ await waitFor(tick);
78
79
  userEvent.click(
79
80
  screen.getByRole('button', { name: 'schedule recurring job' })
80
81
  );
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_ansible
3
3
  version: !ruby/object:Gem::Version
4
- version: 15.0.7
4
+ version: 16.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Lobato Garcia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-03-31 00:00:00.000000000 Z
11
+ date: 2025-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: acts_as_list
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.0.3
19
+ version: '1.2'
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
- version: 1.0.3
26
+ version: '1.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: deface
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -47,7 +47,7 @@ dependencies:
47
47
  version: '14.0'
48
48
  - - "<"
49
49
  - !ruby/object:Gem::Version
50
- version: '16'
50
+ version: '17'
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
@@ -57,7 +57,7 @@ dependencies:
57
57
  version: '14.0'
58
58
  - - "<"
59
59
  - !ruby/object:Gem::Version
60
- version: '16'
60
+ version: '17'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: foreman-tasks
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -67,7 +67,7 @@ dependencies:
67
67
  version: '10.0'
68
68
  - - "<"
69
69
  - !ruby/object:Gem::Version
70
- version: '11'
70
+ version: '12'
71
71
  type: :runtime
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
@@ -77,7 +77,7 @@ dependencies:
77
77
  version: '10.0'
78
78
  - - "<"
79
79
  - !ruby/object:Gem::Version
80
- version: '11'
80
+ version: '12'
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: theforeman-rubocop
83
83
  requirement: !ruby/object:Gem::Requirement
@@ -105,8 +105,6 @@ files:
105
105
  - app/assets/javascripts/foreman_ansible/locale/ca/foreman_ansible.js
106
106
  - app/assets/javascripts/foreman_ansible/locale/cs_CZ/foreman_ansible.js
107
107
  - app/assets/javascripts/foreman_ansible/locale/de/foreman_ansible.js
108
- - app/assets/javascripts/foreman_ansible/locale/en/foreman_ansible.js
109
- - app/assets/javascripts/foreman_ansible/locale/en_GB/foreman_ansible.js
110
108
  - app/assets/javascripts/foreman_ansible/locale/es/foreman_ansible.js
111
109
  - app/assets/javascripts/foreman_ansible/locale/fr/foreman_ansible.js
112
110
  - app/assets/javascripts/foreman_ansible/locale/gl/foreman_ansible.js
@@ -245,6 +243,7 @@ files:
245
243
  - app/views/foreman_ansible/job_templates/service_action_-_ansible_default.erb
246
244
  - app/views/foreman_ansible/job_templates/service_action_-_enable_web_console.erb
247
245
  - app/views/foreman_ansible/job_templates/smart_proxy_upgrade_-_ansible_default.erb
246
+ - app/views/foreman_ansible/job_templates/snippet/check_bootc_status.erb
248
247
  - app/views/job_templates/_job_template_callback_tab_content.html.erb
249
248
  - app/views/job_templates/_job_template_callback_tab_headers.html.erb
250
249
  - app/views/ui_ansible_roles/index.json.rabl
@@ -269,6 +268,7 @@ files:
269
268
  - db/migrate/20221003153000_add_ansible_callback_enabled_to_templates.rb
270
269
  - db/migrate/20221031114720_rename_capsule_upgrade_playbook.rb
271
270
  - db/migrate/20230416170000_enable_ansible_callback_for_rex_feature.rb
271
+ - db/migrate/20241022000000_add_ansible_check_mode_to_templates.rb
272
272
  - db/seeds.d/100_common_parameters.rb
273
273
  - db/seeds.d/62_ansible_proxy_feature.rb
274
274
  - db/seeds.d/75_job_templates.rb
@@ -285,8 +285,6 @@ files:
285
285
  - locale/cs_CZ/foreman_ansible.po
286
286
  - locale/de/LC_MESSAGES/foreman_ansible.mo
287
287
  - locale/de/foreman_ansible.po
288
- - locale/en/foreman_ansible.po
289
- - locale/en_GB/foreman_ansible.po
290
288
  - locale/es/LC_MESSAGES/foreman_ansible.mo
291
289
  - locale/es/foreman_ansible.po
292
290
  - locale/foreman_ansible.pot