foreman_remote_execution 12.0.5 → 13.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc +4 -1
  3. data/.github/workflows/js_ci.yml +1 -1
  4. data/.github/workflows/release.yml +4 -2
  5. data/.github/workflows/ruby_ci.yml +16 -81
  6. data/.packit.yaml +8 -3
  7. data/app/assets/javascripts/foreman_remote_execution/locale/de/foreman_remote_execution.js +23 -14
  8. data/app/assets/javascripts/foreman_remote_execution/locale/en/foreman_remote_execution.js +22 -4
  9. data/app/assets/javascripts/foreman_remote_execution/locale/en_GB/foreman_remote_execution.js +23 -14
  10. data/app/assets/javascripts/foreman_remote_execution/locale/es/foreman_remote_execution.js +23 -14
  11. data/app/assets/javascripts/foreman_remote_execution/locale/fr/foreman_remote_execution.js +23 -14
  12. data/app/assets/javascripts/foreman_remote_execution/locale/ja/foreman_remote_execution.js +23 -14
  13. data/app/assets/javascripts/foreman_remote_execution/locale/ka/foreman_remote_execution.js +23 -14
  14. data/app/assets/javascripts/foreman_remote_execution/locale/ko/foreman_remote_execution.js +23 -14
  15. data/app/assets/javascripts/foreman_remote_execution/locale/pt_BR/foreman_remote_execution.js +23 -14
  16. data/app/assets/javascripts/foreman_remote_execution/locale/ru/foreman_remote_execution.js +23 -14
  17. data/app/assets/javascripts/foreman_remote_execution/locale/zh_CN/foreman_remote_execution.js +23 -14
  18. data/app/assets/javascripts/foreman_remote_execution/locale/zh_TW/foreman_remote_execution.js +23 -14
  19. data/app/controllers/ui_job_wizard_controller.rb +1 -1
  20. data/app/helpers/job_invocations_helper.rb +1 -1
  21. data/app/helpers/remote_execution_helper.rb +2 -2
  22. data/app/lib/actions/remote_execution/proxy_action.rb +1 -1
  23. data/app/lib/actions/remote_execution/run_host_job.rb +9 -17
  24. data/app/models/concerns/foreman_remote_execution/host_extensions.rb +8 -0
  25. data/app/models/host_status/execution_status.rb +2 -2
  26. data/app/models/job_invocation_composer.rb +4 -3
  27. data/app/views/api/v2/job_invocations/base.json.rabl +5 -3
  28. data/app/views/job_invocations/_preview_hosts_list.html.erb +1 -1
  29. data/app/views/job_invocations/show.html.erb +12 -5
  30. data/app/views/job_invocations/show.js.erb +8 -1
  31. data/app/views/job_invocations/welcome.html.erb +1 -1
  32. data/app/views/template_invocations/_refresh.js.erb +10 -4
  33. data/app/views/template_invocations/show.html.erb +2 -2
  34. data/app/views/templates/script/convert2rhel_analyze.erb +1 -12
  35. data/app/views/templates/script/package_action.erb +11 -1
  36. data/app/views/templates/script/puppet_run_once.erb +3 -3
  37. data/lib/foreman_remote_execution/engine.rb +1 -1
  38. data/lib/foreman_remote_execution/version.rb +1 -1
  39. data/locale/de/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  40. data/locale/de/foreman_remote_execution.po +24 -6
  41. data/locale/en/foreman_remote_execution.po +24 -6
  42. data/locale/en_GB/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  43. data/locale/en_GB/foreman_remote_execution.po +24 -6
  44. data/locale/es/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  45. data/locale/es/foreman_remote_execution.po +24 -6
  46. data/locale/foreman_remote_execution.pot +170 -142
  47. data/locale/fr/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  48. data/locale/fr/foreman_remote_execution.po +24 -6
  49. data/locale/ja/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  50. data/locale/ja/foreman_remote_execution.po +24 -6
  51. data/locale/ka/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  52. data/locale/ka/foreman_remote_execution.po +24 -6
  53. data/locale/ko/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  54. data/locale/ko/foreman_remote_execution.po +24 -6
  55. data/locale/pt_BR/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  56. data/locale/pt_BR/foreman_remote_execution.po +24 -6
  57. data/locale/ru/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  58. data/locale/ru/foreman_remote_execution.po +24 -6
  59. data/locale/zh_CN/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  60. data/locale/zh_CN/foreman_remote_execution.po +24 -6
  61. data/locale/zh_TW/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  62. data/locale/zh_TW/foreman_remote_execution.po +24 -6
  63. data/package.json +7 -11
  64. data/test/functional/api/v2/job_invocations_controller_test.rb +7 -7
  65. data/test/functional/api/v2/template_invocations_controller_test.rb +3 -3
  66. data/test/helpers/remote_execution_helper_test.rb +8 -7
  67. data/test/unit/actions/run_host_job_test.rb +1 -1
  68. data/test/unit/actions/run_hosts_job_test.rb +11 -11
  69. data/test/unit/concerns/foreman_tasks_cleaner_extensions_test.rb +5 -5
  70. data/test/unit/concerns/host_extensions_test.rb +34 -34
  71. data/test/unit/concerns/nic_extensions_test.rb +1 -1
  72. data/test/unit/execution_task_status_mapper_test.rb +10 -10
  73. data/test/unit/input_template_renderer_test.rb +53 -49
  74. data/test/unit/job_invocation_composer_test.rb +109 -81
  75. data/test/unit/job_invocation_test.rb +25 -25
  76. data/test/unit/job_template_effective_user_test.rb +3 -3
  77. data/test/unit/job_template_test.rb +28 -28
  78. data/test/unit/remote_execution_feature_test.rb +14 -14
  79. data/test/unit/remote_execution_provider_test.rb +39 -39
  80. data/test/unit/renderer_scope_input_test.rb +6 -6
  81. data/test/unit/targeting_test.rb +32 -32
  82. data/webpack/JobInvocationDetail/JobInvocationConstants.js +10 -0
  83. data/webpack/JobInvocationDetail/JobInvocationDetail.scss +38 -0
  84. data/webpack/JobInvocationDetail/JobInvocationOverview.js +13 -25
  85. data/webpack/JobInvocationDetail/JobInvocationSystemStatusChart.js +153 -0
  86. data/webpack/JobInvocationDetail/index.js +48 -10
  87. data/webpack/JobWizard/Footer.js +5 -1
  88. data/webpack/JobWizard/JobWizardConstants.js +4 -0
  89. data/webpack/JobWizard/JobWizardPageRerun.js +3 -0
  90. data/webpack/JobWizard/JobWizardSelectors.js +31 -3
  91. data/webpack/JobWizard/PermissionDenied.js +64 -0
  92. data/webpack/JobWizard/StartsBeforeErrorAlert.js +1 -0
  93. data/webpack/JobWizard/__tests__/fixtures.js +3 -3
  94. data/webpack/JobWizard/autofill.js +8 -4
  95. data/webpack/JobWizard/index.js +41 -1
  96. data/webpack/JobWizard/steps/AdvancedFields/DescriptionField.js +8 -1
  97. data/webpack/JobWizard/steps/AdvancedFields/Fields.js +7 -0
  98. data/webpack/JobWizard/steps/CategoryAndTemplate/CategoryAndTemplate.js +41 -7
  99. data/webpack/JobWizard/steps/HostsAndInputs/HostPreviewModal.js +7 -3
  100. data/webpack/JobWizard/steps/HostsAndInputs/SelectGQL.js +1 -0
  101. data/webpack/JobWizard/steps/HostsAndInputs/SelectedChips.js +21 -7
  102. data/webpack/JobWizard/steps/HostsAndInputs/hosts.gql +1 -0
  103. data/webpack/JobWizard/steps/HostsAndInputs/index.js +27 -2
  104. data/webpack/JobWizard/steps/ReviewDetails/index.js +7 -2
  105. data/webpack/JobWizard/steps/Schedule/PurposeField.js +1 -0
  106. data/webpack/JobWizard/steps/Schedule/QueryType.js +2 -0
  107. data/webpack/JobWizard/steps/Schedule/RepeatCron.js +1 -0
  108. data/webpack/JobWizard/steps/Schedule/RepeatHour.js +2 -0
  109. data/webpack/JobWizard/steps/Schedule/RepeatMonth.js +1 -0
  110. data/webpack/JobWizard/steps/Schedule/RepeatWeek.js +1 -0
  111. data/webpack/JobWizard/steps/Schedule/ScheduleFuture.js +2 -0
  112. data/webpack/JobWizard/steps/Schedule/ScheduleRecurring.js +6 -0
  113. data/webpack/JobWizard/steps/Schedule/ScheduleType.js +3 -0
  114. data/webpack/JobWizard/steps/form/FormHelpers.js +1 -0
  115. data/webpack/JobWizard/steps/form/GroupedSelectField.js +1 -0
  116. data/webpack/JobWizard/steps/form/NumberInput.js +1 -0
  117. data/webpack/JobWizard/steps/form/ResourceSelect.js +1 -0
  118. data/webpack/JobWizard/steps/form/SearchSelect.js +4 -1
  119. data/webpack/JobWizard/steps/form/SelectField.js +1 -0
  120. data/webpack/JobWizard/steps/form/WizardTitle.js +6 -1
  121. data/webpack/JobWizard/steps/form/__tests__/SelectSearch.test.js +2 -0
  122. data/webpack/__mocks__/foremanReact/routes/Hosts/constants.js +1 -0
  123. data/webpack/react_app/components/FeaturesDropdown/index.js +1 -0
  124. data/webpack/react_app/components/RecentJobsCard/RecentJobsCard.js +3 -0
  125. data/webpack/react_app/components/RecentJobsCard/RecentJobsTable.js +2 -1
  126. data/webpack/react_app/components/RegistrationExtension/RexInterface.js +1 -0
  127. data/webpack/react_app/components/RegistrationExtension/RexPull.js +1 -0
  128. data/webpack/react_app/components/RegistrationExtension/__tests__/__snapshots__/RexInterface.test.js.snap +1 -0
  129. metadata +10 -6
@@ -34,6 +34,7 @@ export const RepeatHour = ({ repeatData, setRepeatData }) => {
34
34
  isRequired
35
35
  >
36
36
  <Select
37
+ ouiaId="repeat-on-hourly"
37
38
  id="repeat-on-hourly"
38
39
  variant={SelectVariant.typeahead}
39
40
  typeAheadAriaLabel="repeat-at-minute-typeahead"
@@ -75,6 +76,7 @@ export const RepeatHour = ({ repeatData, setRepeatData }) => {
75
76
  </Select>
76
77
  {isAlertOpen && (
77
78
  <Alert
79
+ ouiaId="repeat-on-hourly-alert"
78
80
  variant="danger"
79
81
  isInline
80
82
  title={__('Minute can only be a number between 0-59')}
@@ -19,6 +19,7 @@ export const RepeatMonth = ({ repeatData, setRepeatData, setValid }) => {
19
19
  <>
20
20
  <FormGroup label={__('Days')} isRequired>
21
21
  <TextInput
22
+ ouiaId="repeat-on-monthly-days"
22
23
  isRequired
23
24
  validated={days ? ValidatedOptions.noval : ValidatedOptions.error}
24
25
  aria-label="days"
@@ -44,6 +44,7 @@ export const RepeatWeek = ({ repeatData, setRepeatData, setValid }) => {
44
44
  <div id="repeat-on-weekly">
45
45
  {days.map((day, index) => (
46
46
  <Checkbox
47
+ ouiaId={`repeat-on-day-${index}`}
47
48
  aria-label={`${day} checkbox`}
48
49
  key={index}
49
50
  isChecked={daysOfWeek?.[index]}
@@ -61,6 +61,7 @@ export const ScheduleFuture = ({
61
61
  }
62
62
  />
63
63
  <Button
64
+ ouiaId="clear-datetime-start-button"
64
65
  variant="link"
65
66
  isInline
66
67
  className="clear-datetime-button"
@@ -101,6 +102,7 @@ export const ScheduleFuture = ({
101
102
  variant="link"
102
103
  isInline
103
104
  className="clear-datetime-button"
105
+ ouiaId="clear-datetime-end-button"
104
106
  onClick={() =>
105
107
  setScheduleValue(current => ({
106
108
  ...current,
@@ -89,6 +89,7 @@ export const ScheduleRecurring = ({
89
89
  <div className="pf-c-form">
90
90
  <FormGroup fieldId="schedule-starts-now">
91
91
  <Radio
92
+ ouiaId="schedule-start-now"
92
93
  isChecked={!isFuture}
93
94
  onChange={() =>
94
95
  setScheduleValue(current => ({
@@ -105,6 +106,7 @@ export const ScheduleRecurring = ({
105
106
  </FormGroup>
106
107
  <FormGroup fieldId="start-at-date">
107
108
  <Radio
109
+ ouiaId="schedule-start-at-date"
108
110
  isChecked={isFuture}
109
111
  onChange={() =>
110
112
  setScheduleValue(current => ({
@@ -161,6 +163,7 @@ export const ScheduleRecurring = ({
161
163
  <div className="pf-c-form">
162
164
  <FormGroup fieldId="schedule-ends-never">
163
165
  <Radio
166
+ ouiaId="schedule-never-ends"
164
167
  isChecked={isNeverEnds}
165
168
  onChange={() =>
166
169
  setScheduleValue(current => ({
@@ -184,6 +187,7 @@ export const ScheduleRecurring = ({
184
187
  helperTextInvalidIcon={<ExclamationCircleIcon />}
185
188
  >
186
189
  <Radio
190
+ ouiaId="schedule-ends-on-date"
187
191
  isChecked={!!ends}
188
192
  onChange={() =>
189
193
  setScheduleValue(current => ({
@@ -216,6 +220,7 @@ export const ScheduleRecurring = ({
216
220
  </FormGroup>
217
221
  <FormGroup fieldId="ends-after">
218
222
  <Radio
223
+ ouiaId="schedule-ends-after"
219
224
  isChecked={repeatAmount === 0 || !!repeatAmount}
220
225
  onChange={() =>
221
226
  setScheduleValue(current => ({
@@ -239,6 +244,7 @@ export const ScheduleRecurring = ({
239
244
  className="schedule-radio-repeat-text"
240
245
  >
241
246
  <TextInput
247
+ ouiaId="repeat-amount"
242
248
  id="repeat-amount"
243
249
  value={repeatAmount || ''}
244
250
  type="number"
@@ -24,6 +24,7 @@ export const ScheduleType = ({
24
24
  label={__('Select the type of execution')}
25
25
  >
26
26
  <Radio
27
+ ouiaId="schedule-type-now"
27
28
  isChecked={scheduleType === SCHEDULE_TYPES.NOW}
28
29
  name="schedule-type-now"
29
30
  id="schedule-type-now"
@@ -43,6 +44,7 @@ export const ScheduleType = ({
43
44
  </FormGroup>
44
45
  <FormGroup fieldId="schedule-type-future">
45
46
  <Radio
47
+ ouiaId="schedule-type-future"
46
48
  isChecked={scheduleType === SCHEDULE_TYPES.FUTURE}
47
49
  onChange={() => {
48
50
  setScheduleValue(current => ({
@@ -61,6 +63,7 @@ export const ScheduleType = ({
61
63
  </FormGroup>
62
64
  <FormGroup fieldId="schedule-type-recurring">
63
65
  <Radio
66
+ ouiaId="schedule-type-recurring"
64
67
  isChecked={scheduleType === SCHEDULE_TYPES.RECURRING}
65
68
  onChange={() => {
66
69
  setScheduleValue(current => ({
@@ -27,6 +27,7 @@ export const isValidDate = d => d instanceof Date && !Number.isNaN(d);
27
27
  export const ResetDefault = ({ setValue, defaultValue }) =>
28
28
  defaultValue && (
29
29
  <Button
30
+ ouiaId="reset-default"
30
31
  className="reset-default"
31
32
  component="a"
32
33
  variant="link"
@@ -59,6 +59,7 @@ export const GroupedSelectField = ({
59
59
  return (
60
60
  <FormGroup label={label} fieldId={fieldId}>
61
61
  <Select
62
+ ouiaId={fieldId}
62
63
  isGrouped
63
64
  variant={SelectVariant.typeahead}
64
65
  onToggle={setIsOpen}
@@ -14,6 +14,7 @@ export const NumberInput = ({ formProps, inputProps }) => {
14
14
  validated={validated}
15
15
  >
16
16
  <TextInput
17
+ ouiaId={name}
17
18
  aria-label={name}
18
19
  type="text"
19
20
  {...inputProps}
@@ -78,6 +78,7 @@ export const ResourceSelect = ({
78
78
  };
79
79
  return (
80
80
  <Select
81
+ ouiaId={name}
81
82
  toggleAriaLabel={`${name} toggle`}
82
83
  chipGroupComponent={<></>}
83
84
  variant={SelectVariant.typeahead}
@@ -16,6 +16,7 @@ export const SearchSelect = ({
16
16
  apiKey,
17
17
  url,
18
18
  variant,
19
+ setLabel,
19
20
  }) => {
20
21
  const [onSearch, response, isLoading] = useNameSearch(apiKey, url);
21
22
  const [isOpen, setIsOpen] = useState(false);
@@ -48,7 +49,7 @@ export const SearchSelect = ({
48
49
  ...selectOptions,
49
50
  ...Immutable.asMutable(response?.results || [])?.map((result, index) => (
50
51
  <SelectOption key={index + 1} value={result.id}>
51
- {result.name}
52
+ {setLabel(result)}
52
53
  </SelectOption>
53
54
  )),
54
55
  ];
@@ -75,6 +76,7 @@ export const SearchSelect = ({
75
76
  };
76
77
  return (
77
78
  <Select
79
+ ouiaId={name}
78
80
  toggleAriaLabel={`${name} toggle`}
79
81
  chipGroupComponent={<></>}
80
82
  variant={variant}
@@ -104,6 +106,7 @@ SearchSelect.propTypes = {
104
106
  name: PropTypes.string,
105
107
  selected: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
106
108
  setSelected: PropTypes.func.isRequired,
109
+ setLabel: PropTypes.func.isRequired,
107
110
  placeholderText: PropTypes.string,
108
111
  apiKey: PropTypes.string.isRequired,
109
112
  url: PropTypes.string,
@@ -37,6 +37,7 @@ export const SelectField = ({
37
37
  isRequired={isRequired}
38
38
  >
39
39
  <Select
40
+ ouiaId={fieldId}
40
41
  selections={value}
41
42
  onSelect={onSelect}
42
43
  onToggle={setIsOpen}
@@ -3,7 +3,12 @@ import PropTypes from 'prop-types';
3
3
  import { Title } from '@patternfly/react-core';
4
4
 
5
5
  export const WizardTitle = ({ title, ...props }) => (
6
- <Title headingLevel="h2" className="wizard-title" {...props}>
6
+ <Title
7
+ ouiaId="wizard-title"
8
+ headingLevel="h2"
9
+ className="wizard-title"
10
+ {...props}
11
+ >
7
12
  {title}
8
13
  </Title>
9
14
  );
@@ -7,6 +7,7 @@ const apiKey = 'HOSTS_KEY';
7
7
  describe('SearchSelect', () => {
8
8
  it('too many', () => {
9
9
  const onSearch = jest.fn();
10
+ const setLabel = jest.fn();
10
11
  render(
11
12
  <SearchSelect
12
13
  selected={['hosts1,host2']}
@@ -19,6 +20,7 @@ describe('SearchSelect', () => {
19
20
  { results: ['host1', 'host2', 'host3'], subtotal: 101 },
20
21
  false,
21
22
  ]}
23
+ setLabel={setLabel}
22
24
  />
23
25
  );
24
26
  const openSelectbutton = screen.getByRole('button', {
@@ -0,0 +1 @@
1
+ export const HOSTS_PATH = '/new/hosts';
@@ -53,6 +53,7 @@ const FeaturesDropdown = ({
53
53
  ?.filter(feature => feature.host_action_button)
54
54
  ?.map(({ name, label, id, description }) => (
55
55
  <DropdownItem
56
+ ouiaId={`schedule-a-job-dropdown-item-${id}`}
56
57
  onClick={() => dispatch(runFeature(hostId, label, name, hostSearch))}
57
58
  key={id}
58
59
  description={description}
@@ -64,18 +64,21 @@ const RecentJobsCard = ({ hostDetails: { name, id } }) => {
64
64
  onSelect={handleTabClick}
65
65
  >
66
66
  <Tab
67
+ ouiaId="finished-tab"
67
68
  eventKey={FINISHED_TAB}
68
69
  title={<TabTitleText>{__('Finished')}</TabTitleText>}
69
70
  >
70
71
  <RecentJobsTable hostId={id} status="failed+or+status%3D+succeeded" />
71
72
  </Tab>
72
73
  <Tab
74
+ ouiaId="running-tab"
73
75
  eventKey={RUNNING_TAB}
74
76
  title={<TabTitleText>{__('Running')}</TabTitleText>}
75
77
  >
76
78
  <RecentJobsTable hostId={id} status="running" />
77
79
  </Tab>
78
80
  <Tab
81
+ ouiaId="scheduled-tab"
79
82
  eventKey={SCHEDULED_TAB}
80
83
  title={<TabTitleText>{__('Scheduled')}</TabTitleText>}
81
84
  >
@@ -42,6 +42,7 @@ const RecentJobsTable = ({ status, hostId }) => {
42
42
  >
43
43
  {!!jobs?.length && (
44
44
  <TableComposable
45
+ ouiaId="recent-jobs-table"
45
46
  aria-label="recent-jobs-table"
46
47
  variant="compact"
47
48
  borders="compactBorderless"
@@ -55,7 +56,7 @@ const RecentJobsTable = ({ status, hostId }) => {
55
56
  start_at: startAt,
56
57
  description,
57
58
  }) => (
58
- <Tr key={id}>
59
+ <Tr ouiaId="recent-jobs-table-row" key={id}>
59
60
  <Td modifier="truncate" key={`name-${id}`}>
60
61
  <a href={foremanUrl(`/job_invocations/${id}`)}>
61
62
  {description}
@@ -29,6 +29,7 @@ const RexInterface = ({ isLoading, onChange }) => (
29
29
  }
30
30
  >
31
31
  <TextInput
32
+ ouiaId="reg_rex_interface_input"
32
33
  type="text"
33
34
  onBlur={e => onChange({ remoteExecutionInterface: e.target.value })}
34
35
  id="reg_rex_interface_input"
@@ -36,6 +36,7 @@ const RexPull = ({ isLoading, onChange, pluginValues, configParams }) => (
36
36
  fieldId="registration_setup_remote_execution_pull"
37
37
  >
38
38
  <FormSelect
39
+ ouiaId="registration_setup_remote_execution_pull"
39
40
  value={pluginValues.setupRemoteExecutionPull}
40
41
  onChange={setupRemoteExecutionPull =>
41
42
  onChange({ setupRemoteExecutionPull })
@@ -29,6 +29,7 @@ exports[`RexInterface renders 1`] = `
29
29
  id="reg_rex_interface_input"
30
30
  isDisabled={false}
31
31
  onBlur={[Function]}
32
+ ouiaId="reg_rex_interface_input"
32
33
  type="text"
33
34
  />
34
35
  </FormGroup>
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: 12.0.5
4
+ version: 13.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Foreman Remote Execution team
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-23 00:00:00.000000000 Z
11
+ date: 2024-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deface
@@ -436,8 +436,10 @@ files:
436
436
  - test/unit/template_invocation_input_value_test.rb
437
437
  - webpack/JobInvocationDetail/JobInvocationActions.js
438
438
  - webpack/JobInvocationDetail/JobInvocationConstants.js
439
+ - webpack/JobInvocationDetail/JobInvocationDetail.scss
439
440
  - webpack/JobInvocationDetail/JobInvocationOverview.js
440
441
  - webpack/JobInvocationDetail/JobInvocationSelectors.js
442
+ - webpack/JobInvocationDetail/JobInvocationSystemStatusChart.js
441
443
  - webpack/JobInvocationDetail/index.js
442
444
  - webpack/JobWizard/Footer.js
443
445
  - webpack/JobWizard/JobWizard.js
@@ -446,6 +448,7 @@ files:
446
448
  - webpack/JobWizard/JobWizardHelpers.js
447
449
  - webpack/JobWizard/JobWizardPageRerun.js
448
450
  - webpack/JobWizard/JobWizardSelectors.js
451
+ - webpack/JobWizard/PermissionDenied.js
449
452
  - webpack/JobWizard/StartsBeforeErrorAlert.js
450
453
  - webpack/JobWizard/__tests__/JobWizardPageRerun.test.js
451
454
  - webpack/JobWizard/__tests__/__snapshots__/integration.test.js.snap
@@ -517,6 +520,7 @@ files:
517
520
  - webpack/__mocks__/foremanReact/redux/API/APISelectors.js
518
521
  - webpack/__mocks__/foremanReact/redux/API/index.js
519
522
  - webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware/IntervalSelectors.js
523
+ - webpack/__mocks__/foremanReact/routes/Hosts/constants.js
520
524
  - webpack/__mocks__/foremanReact/routes/RouterSelector.js
521
525
  - webpack/__mocks__/foremanReact/routes/common/PageLayout/PageLayout.js
522
526
  - webpack/global_index.js
@@ -575,7 +579,7 @@ homepage: https://github.com/theforeman/foreman_remote_execution
575
579
  licenses:
576
580
  - GPL-3.0
577
581
  metadata: {}
578
- post_install_message:
582
+ post_install_message:
579
583
  rdoc_options: []
580
584
  require_paths:
581
585
  - lib
@@ -593,8 +597,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
593
597
  - !ruby/object:Gem::Version
594
598
  version: '0'
595
599
  requirements: []
596
- rubygems_version: 3.3.26
597
- signing_key:
600
+ rubygems_version: 3.3.27
601
+ signing_key:
598
602
  specification_version: 4
599
603
  summary: A plugin bringing remote execution to the Foreman, completing the config
600
604
  management functionality with remote management functionality.