foreman_remote_execution 14.0.2 → 14.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.
- checksums.yaml +4 -4
- data/app/controllers/api/v2/job_invocations_controller.rb +34 -17
- data/app/helpers/remote_execution_helper.rb +2 -2
- data/app/lib/actions/remote_execution/proxy_action.rb +10 -5
- data/app/lib/actions/remote_execution/run_host_job.rb +1 -1
- data/app/lib/actions/remote_execution/template_invocation_progress_logging.rb +2 -3
- data/app/views/api/v2/job_invocations/hosts.json.rabl +15 -0
- data/config/routes.rb +1 -0
- data/db/migrate/20240312133027_extend_template_invocation_events.rb +19 -0
- data/lib/foreman_remote_execution/version.rb +1 -1
- data/webpack/JobInvocationDetail/JobInvocationActions.js +1 -1
- data/webpack/JobInvocationDetail/JobInvocationConstants.js +84 -0
- data/webpack/JobInvocationDetail/JobInvocationDetail.scss +0 -1
- data/webpack/JobInvocationDetail/JobInvocationHostTable.js +210 -0
- data/webpack/JobInvocationDetail/JobInvocationSelectors.js +2 -2
- data/webpack/JobInvocationDetail/__tests__/MainInformation.test.js +5 -1
- data/webpack/JobInvocationDetail/__tests__/fixtures.js +9 -0
- data/webpack/JobInvocationDetail/index.js +56 -34
- data/webpack/__mocks__/foremanReact/components/HostDetails/DetailsCard/DefaultLoaderEmptyState.js +1 -2
- data/webpack/react_app/components/RecentJobsCard/JobStatusIcon.js +38 -7
- data/webpack/react_app/components/RecentJobsCard/constants.js +4 -0
- data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/HostStatus.test.js.snap +1 -1
- data/webpack/react_app/components/TargetingHosts/components/HostStatus.js +6 -6
- metadata +6 -94
- data/.babelrc.js +0 -3
- data/.eslintignore +0 -3
- data/.eslintrc +0 -13
- data/.github/workflows/js_ci.yml +0 -32
- data/.github/workflows/release.yml +0 -16
- data/.github/workflows/ruby_ci.yml +0 -19
- data/.gitignore +0 -19
- data/.packit.yaml +0 -45
- data/.prettierrc +0 -4
- data/.rubocop.yml +0 -105
- data/.rubocop_todo.yml +0 -516
- data/.tx/config +0 -10
- data/Gemfile +0 -5
- data/app/mailers/.gitkeep +0 -0
- data/app/views/dashboard/.gitkeep +0 -0
- data/foreman_remote_execution.gemspec +0 -33
- data/jsconfig.json +0 -8
- data/test/benchmark/run_hosts_job_benchmark.rb +0 -70
- data/test/benchmark/targeting_benchmark.rb +0 -31
- data/test/factories/foreman_remote_execution_factories.rb +0 -147
- data/test/functional/api/v2/foreign_input_sets_controller_test.rb +0 -58
- data/test/functional/api/v2/job_invocations_controller_test.rb +0 -446
- data/test/functional/api/v2/job_templates_controller_test.rb +0 -110
- data/test/functional/api/v2/registration_controller_test.rb +0 -73
- data/test/functional/api/v2/remote_execution_features_controller_test.rb +0 -34
- data/test/functional/api/v2/template_invocations_controller_test.rb +0 -33
- data/test/functional/cockpit_controller_test.rb +0 -16
- data/test/functional/job_invocations_controller_test.rb +0 -132
- data/test/functional/job_templates_controller_test.rb +0 -31
- data/test/functional/ui_job_wizard_controller_test.rb +0 -16
- data/test/graphql/mutations/job_invocations/create_test.rb +0 -58
- data/test/graphql/queries/job_invocation_query_test.rb +0 -31
- data/test/graphql/queries/job_invocations_query_test.rb +0 -35
- data/test/helpers/remote_execution_helper_test.rb +0 -46
- data/test/support/remote_execution_helper.rb +0 -5
- data/test/test_plugin_helper.rb +0 -9
- data/test/unit/actions/run_host_job_test.rb +0 -115
- data/test/unit/actions/run_hosts_job_test.rb +0 -214
- data/test/unit/api_params_test.rb +0 -25
- data/test/unit/concerns/foreman_tasks_cleaner_extensions_test.rb +0 -29
- data/test/unit/concerns/host_extensions_test.rb +0 -219
- data/test/unit/concerns/nic_extensions_test.rb +0 -9
- data/test/unit/execution_task_status_mapper_test.rb +0 -92
- data/test/unit/input_template_renderer_test.rb +0 -503
- data/test/unit/job_invocation_composer_test.rb +0 -974
- data/test/unit/job_invocation_report_template_test.rb +0 -60
- data/test/unit/job_invocation_test.rb +0 -232
- data/test/unit/job_template_effective_user_test.rb +0 -37
- data/test/unit/job_template_test.rb +0 -316
- data/test/unit/remote_execution_feature_test.rb +0 -86
- data/test/unit/remote_execution_provider_test.rb +0 -298
- data/test/unit/renderer_scope_input_test.rb +0 -49
- data/test/unit/targeting_test.rb +0 -206
- data/test/unit/template_invocation_input_value_test.rb +0 -38
| @@ -1,12 +1,17 @@ | |
| 1 1 | 
             
            import PropTypes from 'prop-types';
         | 
| 2 2 | 
             
            import React, { useEffect } from 'react';
         | 
| 3 3 | 
             
            import { useDispatch, useSelector } from 'react-redux';
         | 
| 4 | 
            -
            import { | 
| 4 | 
            +
            import {
         | 
| 5 | 
            +
              Divider,
         | 
| 6 | 
            +
              Flex,
         | 
| 7 | 
            +
              PageSection,
         | 
| 8 | 
            +
              PageSectionVariants,
         | 
| 9 | 
            +
            } from '@patternfly/react-core';
         | 
| 5 10 | 
             
            import { translate as __, documentLocale } from 'foremanReact/common/I18n';
         | 
| 6 11 | 
             
            import PageLayout from 'foremanReact/routes/common/PageLayout/PageLayout';
         | 
| 7 12 | 
             
            import { useAPI } from 'foremanReact/common/hooks/API/APIHooks';
         | 
| 8 13 | 
             
            import { stopInterval } from 'foremanReact/redux/middlewares/IntervalMiddleware';
         | 
| 9 | 
            -
            import {  | 
| 14 | 
            +
            import { getJobInvocation, getTask } from './JobInvocationActions';
         | 
| 10 15 | 
             
            import {
         | 
| 11 16 | 
             
              CURRENT_PERMISSIONS,
         | 
| 12 17 | 
             
              DATE_OPTIONS,
         | 
| @@ -19,6 +24,7 @@ import JobInvocationOverview from './JobInvocationOverview'; | |
| 19 24 | 
             
            import { selectItems } from './JobInvocationSelectors';
         | 
| 20 25 | 
             
            import JobInvocationSystemStatusChart from './JobInvocationSystemStatusChart';
         | 
| 21 26 | 
             
            import JobInvocationToolbarButtons from './JobInvocationToolbarButtons';
         | 
| 27 | 
            +
            import JobInvocationHostTable from './JobInvocationHostTable';
         | 
| 22 28 |  | 
| 23 29 | 
             
            const JobInvocationDetailPage = ({
         | 
| 24 30 | 
             
              match: {
         | 
| @@ -32,6 +38,7 @@ const JobInvocationDetailPage = ({ | |
| 32 38 | 
             
                status_label: statusLabel,
         | 
| 33 39 | 
             
                task,
         | 
| 34 40 | 
             
                start_at: startAt,
         | 
| 41 | 
            +
                targeting,
         | 
| 35 42 | 
             
              } = items;
         | 
| 36 43 | 
             
              const finished =
         | 
| 37 44 | 
             
                statusLabel === STATUS.FAILED ||
         | 
| @@ -57,7 +64,7 @@ const JobInvocationDetailPage = ({ | |
| 57 64 | 
             
              }
         | 
| 58 65 |  | 
| 59 66 | 
             
              useEffect(() => {
         | 
| 60 | 
            -
                dispatch( | 
| 67 | 
            +
                dispatch(getJobInvocation(`/api/job_invocations/${id}?host_status=true`));
         | 
| 61 68 | 
             
                if (finished && !autoRefresh) {
         | 
| 62 69 | 
             
                  dispatch(stopInterval(JOB_INVOCATION_KEY));
         | 
| 63 70 | 
             
                }
         | 
| @@ -82,45 +89,60 @@ const JobInvocationDetailPage = ({ | |
| 82 89 | 
             
              };
         | 
| 83 90 |  | 
| 84 91 | 
             
              return (
         | 
| 85 | 
            -
                 | 
| 86 | 
            -
                   | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 89 | 
            -
                     | 
| 90 | 
            -
                       | 
| 91 | 
            -
             | 
| 92 | 
            -
             | 
| 93 | 
            -
             | 
| 94 | 
            -
             | 
| 95 | 
            -
             | 
| 96 | 
            -
             | 
| 97 | 
            -
             | 
| 98 | 
            -
                  <Flex
         | 
| 99 | 
            -
                    className="job-invocation-detail-flex"
         | 
| 100 | 
            -
                    alignItems={{ default: 'alignItemsFlexStart' }}
         | 
| 92 | 
            +
                <>
         | 
| 93 | 
            +
                  <PageLayout
         | 
| 94 | 
            +
                    header={description}
         | 
| 95 | 
            +
                    breadcrumbOptions={breadcrumbOptions}
         | 
| 96 | 
            +
                    toolbarButtons={
         | 
| 97 | 
            +
                      <JobInvocationToolbarButtons
         | 
| 98 | 
            +
                        jobId={id}
         | 
| 99 | 
            +
                        data={items}
         | 
| 100 | 
            +
                        currentPermissions={response.results}
         | 
| 101 | 
            +
                        permissionsStatus={status}
         | 
| 102 | 
            +
                      />
         | 
| 103 | 
            +
                    }
         | 
| 104 | 
            +
                    searchable={false}
         | 
| 101 105 | 
             
                  >
         | 
| 102 | 
            -
                    <JobInvocationSystemStatusChart
         | 
| 103 | 
            -
                      data={items}
         | 
| 104 | 
            -
                      isAlreadyStarted={isAlreadyStarted}
         | 
| 105 | 
            -
                      formattedStartDate={formattedStartDate}
         | 
| 106 | 
            -
                    />
         | 
| 107 | 
            -
                    <Divider
         | 
| 108 | 
            -
                      orientation={{
         | 
| 109 | 
            -
                        default: 'vertical',
         | 
| 110 | 
            -
                      }}
         | 
| 111 | 
            -
                    />
         | 
| 112 106 | 
             
                    <Flex
         | 
| 113 | 
            -
                      className="job- | 
| 114 | 
            -
                      alignItems={{ default: ' | 
| 107 | 
            +
                      className="job-invocation-detail-flex"
         | 
| 108 | 
            +
                      alignItems={{ default: 'alignItemsFlexStart' }}
         | 
| 115 109 | 
             
                    >
         | 
| 116 | 
            -
                      < | 
| 110 | 
            +
                      <JobInvocationSystemStatusChart
         | 
| 117 111 | 
             
                        data={items}
         | 
| 118 112 | 
             
                        isAlreadyStarted={isAlreadyStarted}
         | 
| 119 113 | 
             
                        formattedStartDate={formattedStartDate}
         | 
| 120 114 | 
             
                      />
         | 
| 115 | 
            +
                      <Divider
         | 
| 116 | 
            +
                        orientation={{
         | 
| 117 | 
            +
                          default: 'vertical',
         | 
| 118 | 
            +
                        }}
         | 
| 119 | 
            +
                      />
         | 
| 120 | 
            +
                      <Flex
         | 
| 121 | 
            +
                        className="job-overview"
         | 
| 122 | 
            +
                        alignItems={{ default: 'alignItemsCenter' }}
         | 
| 123 | 
            +
                      >
         | 
| 124 | 
            +
                        <JobInvocationOverview
         | 
| 125 | 
            +
                          data={items}
         | 
| 126 | 
            +
                          isAlreadyStarted={isAlreadyStarted}
         | 
| 127 | 
            +
                          formattedStartDate={formattedStartDate}
         | 
| 128 | 
            +
                        />
         | 
| 129 | 
            +
                      </Flex>
         | 
| 121 130 | 
             
                    </Flex>
         | 
| 122 | 
            -
                  </ | 
| 123 | 
            -
             | 
| 131 | 
            +
                  </PageLayout>
         | 
| 132 | 
            +
                  <PageSection
         | 
| 133 | 
            +
                    variant={PageSectionVariants.light}
         | 
| 134 | 
            +
                    className="table-section"
         | 
| 135 | 
            +
                  >
         | 
| 136 | 
            +
                    {items.id !== undefined && (
         | 
| 137 | 
            +
                      <JobInvocationHostTable
         | 
| 138 | 
            +
                        id={id}
         | 
| 139 | 
            +
                        targeting={targeting}
         | 
| 140 | 
            +
                        finished={finished}
         | 
| 141 | 
            +
                        autoRefresh={autoRefresh}
         | 
| 142 | 
            +
                      />
         | 
| 143 | 
            +
                    )}
         | 
| 144 | 
            +
                  </PageSection>
         | 
| 145 | 
            +
                </>
         | 
| 124 146 | 
             
              );
         | 
| 125 147 | 
             
            };
         | 
| 126 148 |  | 
    
        data/webpack/__mocks__/foremanReact/components/HostDetails/DetailsCard/DefaultLoaderEmptyState.js
    CHANGED
    
    | @@ -1,8 +1,7 @@ | |
| 1 1 | 
             
            import React from 'react';
         | 
| 2 | 
            -
            import { translate as __ } from '../../../common/I18n';
         | 
| 3 2 |  | 
| 4 3 | 
             
            const DefaultLoaderEmptyState = () => (
         | 
| 5 | 
            -
              <span className="disabled-text"> | 
| 4 | 
            +
              <span className="disabled-text">Not available</span>
         | 
| 6 5 | 
             
            );
         | 
| 7 6 |  | 
| 8 7 | 
             
            export default DefaultLoaderEmptyState;
         | 
| @@ -3,29 +3,60 @@ import PropTypes from 'prop-types'; | |
| 3 3 | 
             
            import {
         | 
| 4 4 | 
             
              CheckCircleIcon,
         | 
| 5 5 | 
             
              ExclamationCircleIcon,
         | 
| 6 | 
            +
              BuildIcon,
         | 
| 7 | 
            +
              RunningIcon,
         | 
| 8 | 
            +
              ExclamationTriangleIcon,
         | 
| 6 9 | 
             
              QuestionCircleIcon,
         | 
| 7 10 | 
             
            } from '@patternfly/react-icons';
         | 
| 8 | 
            -
            import { | 
| 11 | 
            +
            import {
         | 
| 12 | 
            +
              JOB_SUCCESS_STATUS,
         | 
| 13 | 
            +
              JOB_ERROR_STATUS,
         | 
| 14 | 
            +
              JOB_PLANNED_STATUS,
         | 
| 15 | 
            +
              JOB_RUNNING_STATUS,
         | 
| 16 | 
            +
              JOB_CANCELLED_STATUS,
         | 
| 17 | 
            +
              JOB_AWAITING_STATUS,
         | 
| 18 | 
            +
            } from './constants';
         | 
| 9 19 | 
             
            import './styles.scss';
         | 
| 10 20 |  | 
| 11 21 | 
             
            const JobStatusIcon = ({ status, children, ...props }) => {
         | 
| 12 22 | 
             
              switch (status) {
         | 
| 13 23 | 
             
                case JOB_SUCCESS_STATUS:
         | 
| 14 24 | 
             
                  return (
         | 
| 15 | 
            -
                    <span | 
| 16 | 
            -
                      <CheckCircleIcon {...props} /> {children}
         | 
| 25 | 
            +
                    <span>
         | 
| 26 | 
            +
                      <CheckCircleIcon className="job-success" {...props} /> {children}
         | 
| 17 27 | 
             
                    </span>
         | 
| 18 28 | 
             
                  );
         | 
| 19 29 | 
             
                case JOB_ERROR_STATUS:
         | 
| 20 30 | 
             
                  return (
         | 
| 21 | 
            -
                    <span | 
| 22 | 
            -
                      <ExclamationCircleIcon {...props} /> {children}
         | 
| 31 | 
            +
                    <span>
         | 
| 32 | 
            +
                      <ExclamationCircleIcon className="job-error" {...props} /> {children}
         | 
| 33 | 
            +
                    </span>
         | 
| 34 | 
            +
                  );
         | 
| 35 | 
            +
                case JOB_PLANNED_STATUS:
         | 
| 36 | 
            +
                  return (
         | 
| 37 | 
            +
                    <span>
         | 
| 38 | 
            +
                      <BuildIcon className="job-planned" {...props} /> {children}
         | 
| 39 | 
            +
                    </span>
         | 
| 40 | 
            +
                  );
         | 
| 41 | 
            +
                case JOB_RUNNING_STATUS:
         | 
| 42 | 
            +
                  return (
         | 
| 43 | 
            +
                    <span>
         | 
| 44 | 
            +
                      <RunningIcon className="job-running" {...props} /> {children}
         | 
| 45 | 
            +
                    </span>
         | 
| 46 | 
            +
                  );
         | 
| 47 | 
            +
                case JOB_CANCELLED_STATUS:
         | 
| 48 | 
            +
                  return (
         | 
| 49 | 
            +
                    <span>
         | 
| 50 | 
            +
                      <ExclamationTriangleIcon className="job-cancelled" {...props} />{' '}
         | 
| 51 | 
            +
                      {children}
         | 
| 23 52 | 
             
                    </span>
         | 
| 24 53 | 
             
                  );
         | 
| 54 | 
            +
                case JOB_AWAITING_STATUS:
         | 
| 55 | 
            +
                  return <span className="job-awaiting_start">{children}</span>;
         | 
| 25 56 | 
             
                default:
         | 
| 26 57 | 
             
                  return (
         | 
| 27 | 
            -
                    <span | 
| 28 | 
            -
                      <QuestionCircleIcon {...props} /> {children}
         | 
| 58 | 
            +
                    <span>
         | 
| 59 | 
            +
                      <QuestionCircleIcon className="job-unknown" {...props} /> {children}
         | 
| 29 60 | 
             
                    </span>
         | 
| 30 61 | 
             
                  );
         | 
| 31 62 | 
             
              }
         | 
| @@ -5,6 +5,10 @@ export const SCHEDULED_TAB = 2; | |
| 5 5 |  | 
| 6 6 | 
             
            export const JOB_SUCCESS_STATUS = 0;
         | 
| 7 7 | 
             
            export const JOB_ERROR_STATUS = 1;
         | 
| 8 | 
            +
            export const JOB_PLANNED_STATUS = 2;
         | 
| 9 | 
            +
            export const JOB_RUNNING_STATUS = 3;
         | 
| 10 | 
            +
            export const JOB_CANCELLED_STATUS = 4;
         | 
| 11 | 
            +
            export const JOB_AWAITING_STATUS = 5;
         | 
| 8 12 |  | 
| 9 13 | 
             
            export const JOB_BASE_URL = '/job_invocations?search=targeted_host_id+%3D+';
         | 
| 10 14 | 
             
            export const JOB_API_URL =
         | 
| @@ -8,38 +8,38 @@ const HostStatus = ({ status }) => { | |
| 8 8 | 
             
                case 'cancelled':
         | 
| 9 9 | 
             
                  return (
         | 
| 10 10 | 
             
                    <div>
         | 
| 11 | 
            -
                      <Icon type="pf" name="warning-triangle-o" /> { | 
| 11 | 
            +
                      <Icon type="pf" name="warning-triangle-o" /> {__('Cancelled')}
         | 
| 12 12 | 
             
                    </div>
         | 
| 13 13 | 
             
                  );
         | 
| 14 14 | 
             
                case 'N/A':
         | 
| 15 15 | 
             
                  return (
         | 
| 16 16 | 
             
                    <div>
         | 
| 17 | 
            -
                      <Icon type="fa" name="question" /> { | 
| 17 | 
            +
                      <Icon type="fa" name="question" /> {__('Awaiting start')}
         | 
| 18 18 | 
             
                    </div>
         | 
| 19 19 | 
             
                  );
         | 
| 20 20 | 
             
                case 'running':
         | 
| 21 21 | 
             
                  return (
         | 
| 22 22 | 
             
                    <div>
         | 
| 23 | 
            -
                      <Icon type="pf" name="running" /> { | 
| 23 | 
            +
                      <Icon type="pf" name="running" /> {__('Pending')}
         | 
| 24 24 | 
             
                    </div>
         | 
| 25 25 | 
             
                  );
         | 
| 26 26 | 
             
                case 'planned':
         | 
| 27 27 | 
             
                  return (
         | 
| 28 28 | 
             
                    <div>
         | 
| 29 | 
            -
                      <Icon type="pf" name="build" /> { | 
| 29 | 
            +
                      <Icon type="pf" name="build" /> {__('Scheduled')}
         | 
| 30 30 | 
             
                    </div>
         | 
| 31 31 | 
             
                  );
         | 
| 32 32 | 
             
                case 'warning':
         | 
| 33 33 | 
             
                case 'error':
         | 
| 34 34 | 
             
                  return (
         | 
| 35 35 | 
             
                    <div>
         | 
| 36 | 
            -
                      <Icon type="pf" name="error-circle-o" /> {__(' | 
| 36 | 
            +
                      <Icon type="pf" name="error-circle-o" /> {__('Failed')}
         | 
| 37 37 | 
             
                    </div>
         | 
| 38 38 | 
             
                  );
         | 
| 39 39 | 
             
                case 'success':
         | 
| 40 40 | 
             
                  return (
         | 
| 41 41 | 
             
                    <div>
         | 
| 42 | 
            -
                      <Icon type="pf" name="ok" /> { | 
| 42 | 
            +
                      <Icon type="pf" name="ok" /> {__('Succeeded')}
         | 
| 43 43 | 
             
                    </div>
         | 
| 44 44 | 
             
                  );
         | 
| 45 45 | 
             
                default:
         | 
    
        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: 14.0 | 
| 4 | 
            +
              version: 14.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: 2024- | 
| 11 | 
            +
            date: 2024-11-06 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: deface
         | 
| @@ -96,19 +96,6 @@ extra_rdoc_files: | |
| 96 96 | 
             
            - README.md
         | 
| 97 97 | 
             
            - LICENSE
         | 
| 98 98 | 
             
            files:
         | 
| 99 | 
            -
            - ".babelrc.js"
         | 
| 100 | 
            -
            - ".eslintignore"
         | 
| 101 | 
            -
            - ".eslintrc"
         | 
| 102 | 
            -
            - ".github/workflows/js_ci.yml"
         | 
| 103 | 
            -
            - ".github/workflows/release.yml"
         | 
| 104 | 
            -
            - ".github/workflows/ruby_ci.yml"
         | 
| 105 | 
            -
            - ".gitignore"
         | 
| 106 | 
            -
            - ".packit.yaml"
         | 
| 107 | 
            -
            - ".prettierrc"
         | 
| 108 | 
            -
            - ".rubocop.yml"
         | 
| 109 | 
            -
            - ".rubocop_todo.yml"
         | 
| 110 | 
            -
            - ".tx/config"
         | 
| 111 | 
            -
            - Gemfile
         | 
| 112 99 | 
             
            - LICENSE
         | 
| 113 100 | 
             
            - README.md
         | 
| 114 101 | 
             
            - Rakefile
         | 
| @@ -172,7 +159,6 @@ files: | |
| 172 159 | 
             
            - app/lib/foreman_remote_execution/renderer/scope/input.rb
         | 
| 173 160 | 
             
            - app/lib/foreman_remote_execution/renderer_methods.rb
         | 
| 174 161 | 
             
            - app/lib/proxy_api/remote_execution_ssh.rb
         | 
| 175 | 
            -
            - app/mailers/.gitkeep
         | 
| 176 162 | 
             
            - app/mailers/rex_job_mailer.rb
         | 
| 177 163 | 
             
            - app/models/concerns/api/v2/hosts_controller_extensions.rb
         | 
| 178 164 | 
             
            - app/models/concerns/api/v2/interfaces_controller_extensions.rb
         | 
| @@ -224,6 +210,7 @@ files: | |
| 224 210 | 
             
            - app/views/api/v2/interfaces/execution_flag.json.rabl
         | 
| 225 211 | 
             
            - app/views/api/v2/job_invocations/base.json.rabl
         | 
| 226 212 | 
             
            - app/views/api/v2/job_invocations/create.json.rabl
         | 
| 213 | 
            +
            - app/views/api/v2/job_invocations/hosts.json.rabl
         | 
| 227 214 | 
             
            - app/views/api/v2/job_invocations/index.json.rabl
         | 
| 228 215 | 
             
            - app/views/api/v2/job_invocations/main.json.rabl
         | 
| 229 216 | 
             
            - app/views/api/v2/job_invocations/show.json.rabl
         | 
| @@ -242,7 +229,6 @@ files: | |
| 242 229 | 
             
            - app/views/api/v2/subnets/remote_execution_proxies.json.rabl
         | 
| 243 230 | 
             
            - app/views/api/v2/template_invocations/base.json.rabl
         | 
| 244 231 | 
             
            - app/views/api/v2/template_invocations/template_invocations.json.rabl
         | 
| 245 | 
            -
            - app/views/dashboard/.gitkeep
         | 
| 246 232 | 
             
            - app/views/dashboard/_latest-jobs.html.erb
         | 
| 247 233 | 
             
            - app/views/job_invocation_task_groups/_job_invocation_task_groups.html.erb
         | 
| 248 234 | 
             
            - app/views/job_invocations/_card_results.html.erb
         | 
| @@ -352,6 +338,7 @@ files: | |
| 352 338 | 
             
            - db/migrate/20220822155946_add_time_to_pickup_to_job_invocation.rb
         | 
| 353 339 | 
             
            - db/migrate/20221129170145_redefine_template_invocation_events_index.rb
         | 
| 354 340 | 
             
            - db/migrate/20230816154510_drop_time_span_from_job_invocations.rb
         | 
| 341 | 
            +
            - db/migrate/20240312133027_extend_template_invocation_events.rb
         | 
| 355 342 | 
             
            - db/migrate/20240522093412_add_smart_proxy_id_to_template_invocation.rb
         | 
| 356 343 | 
             
            - db/migrate/20240522093413_migrate_smart_proxy_ids_to_template_invocations.rb
         | 
| 357 344 | 
             
            - db/seeds.d/100-assign_features_with_templates.rb
         | 
| @@ -365,8 +352,6 @@ files: | |
| 365 352 | 
             
            - extra/cockpit/foreman-cockpit-session
         | 
| 366 353 | 
             
            - extra/cockpit/foreman-cockpit.service
         | 
| 367 354 | 
             
            - extra/cockpit/settings.yml.example
         | 
| 368 | 
            -
            - foreman_remote_execution.gemspec
         | 
| 369 | 
            -
            - jsconfig.json
         | 
| 370 355 | 
             
            - lib/foreman_remote_execution.rb
         | 
| 371 356 | 
             
            - lib/foreman_remote_execution/engine.rb
         | 
| 372 357 | 
             
            - lib/foreman_remote_execution/tasks/explain_proxy_selection.rake
         | 
| @@ -400,46 +385,10 @@ files: | |
| 400 385 | 
             
            - locale/zh_TW/LC_MESSAGES/foreman_remote_execution.mo
         | 
| 401 386 | 
             
            - locale/zh_TW/foreman_remote_execution.po
         | 
| 402 387 | 
             
            - package.json
         | 
| 403 | 
            -
            - test/benchmark/run_hosts_job_benchmark.rb
         | 
| 404 | 
            -
            - test/benchmark/targeting_benchmark.rb
         | 
| 405 | 
            -
            - test/factories/foreman_remote_execution_factories.rb
         | 
| 406 | 
            -
            - test/functional/api/v2/foreign_input_sets_controller_test.rb
         | 
| 407 | 
            -
            - test/functional/api/v2/job_invocations_controller_test.rb
         | 
| 408 | 
            -
            - test/functional/api/v2/job_templates_controller_test.rb
         | 
| 409 | 
            -
            - test/functional/api/v2/registration_controller_test.rb
         | 
| 410 | 
            -
            - test/functional/api/v2/remote_execution_features_controller_test.rb
         | 
| 411 | 
            -
            - test/functional/api/v2/template_invocations_controller_test.rb
         | 
| 412 | 
            -
            - test/functional/cockpit_controller_test.rb
         | 
| 413 | 
            -
            - test/functional/job_invocations_controller_test.rb
         | 
| 414 | 
            -
            - test/functional/job_templates_controller_test.rb
         | 
| 415 | 
            -
            - test/functional/ui_job_wizard_controller_test.rb
         | 
| 416 | 
            -
            - test/graphql/mutations/job_invocations/create_test.rb
         | 
| 417 | 
            -
            - test/graphql/queries/job_invocation_query_test.rb
         | 
| 418 | 
            -
            - test/graphql/queries/job_invocations_query_test.rb
         | 
| 419 | 
            -
            - test/helpers/remote_execution_helper_test.rb
         | 
| 420 | 
            -
            - test/support/remote_execution_helper.rb
         | 
| 421 | 
            -
            - test/test_plugin_helper.rb
         | 
| 422 | 
            -
            - test/unit/actions/run_host_job_test.rb
         | 
| 423 | 
            -
            - test/unit/actions/run_hosts_job_test.rb
         | 
| 424 | 
            -
            - test/unit/api_params_test.rb
         | 
| 425 | 
            -
            - test/unit/concerns/foreman_tasks_cleaner_extensions_test.rb
         | 
| 426 | 
            -
            - test/unit/concerns/host_extensions_test.rb
         | 
| 427 | 
            -
            - test/unit/concerns/nic_extensions_test.rb
         | 
| 428 | 
            -
            - test/unit/execution_task_status_mapper_test.rb
         | 
| 429 | 
            -
            - test/unit/input_template_renderer_test.rb
         | 
| 430 | 
            -
            - test/unit/job_invocation_composer_test.rb
         | 
| 431 | 
            -
            - test/unit/job_invocation_report_template_test.rb
         | 
| 432 | 
            -
            - test/unit/job_invocation_test.rb
         | 
| 433 | 
            -
            - test/unit/job_template_effective_user_test.rb
         | 
| 434 | 
            -
            - test/unit/job_template_test.rb
         | 
| 435 | 
            -
            - test/unit/remote_execution_feature_test.rb
         | 
| 436 | 
            -
            - test/unit/remote_execution_provider_test.rb
         | 
| 437 | 
            -
            - test/unit/renderer_scope_input_test.rb
         | 
| 438 | 
            -
            - test/unit/targeting_test.rb
         | 
| 439 | 
            -
            - test/unit/template_invocation_input_value_test.rb
         | 
| 440 388 | 
             
            - webpack/JobInvocationDetail/JobInvocationActions.js
         | 
| 441 389 | 
             
            - webpack/JobInvocationDetail/JobInvocationConstants.js
         | 
| 442 390 | 
             
            - webpack/JobInvocationDetail/JobInvocationDetail.scss
         | 
| 391 | 
            +
            - webpack/JobInvocationDetail/JobInvocationHostTable.js
         | 
| 443 392 | 
             
            - webpack/JobInvocationDetail/JobInvocationOverview.js
         | 
| 444 393 | 
             
            - webpack/JobInvocationDetail/JobInvocationSelectors.js
         | 
| 445 394 | 
             
            - webpack/JobInvocationDetail/JobInvocationSystemStatusChart.js
         | 
| @@ -615,41 +564,4 @@ signing_key: | |
| 615 564 | 
             
            specification_version: 4
         | 
| 616 565 | 
             
            summary: A plugin bringing remote execution to the Foreman, completing the config
         | 
| 617 566 | 
             
              management functionality with remote management functionality.
         | 
| 618 | 
            -
            test_files:
         | 
| 619 | 
            -
            - test/benchmark/run_hosts_job_benchmark.rb
         | 
| 620 | 
            -
            - test/benchmark/targeting_benchmark.rb
         | 
| 621 | 
            -
            - test/factories/foreman_remote_execution_factories.rb
         | 
| 622 | 
            -
            - test/functional/api/v2/foreign_input_sets_controller_test.rb
         | 
| 623 | 
            -
            - test/functional/api/v2/job_invocations_controller_test.rb
         | 
| 624 | 
            -
            - test/functional/api/v2/job_templates_controller_test.rb
         | 
| 625 | 
            -
            - test/functional/api/v2/registration_controller_test.rb
         | 
| 626 | 
            -
            - test/functional/api/v2/remote_execution_features_controller_test.rb
         | 
| 627 | 
            -
            - test/functional/api/v2/template_invocations_controller_test.rb
         | 
| 628 | 
            -
            - test/functional/cockpit_controller_test.rb
         | 
| 629 | 
            -
            - test/functional/job_invocations_controller_test.rb
         | 
| 630 | 
            -
            - test/functional/job_templates_controller_test.rb
         | 
| 631 | 
            -
            - test/functional/ui_job_wizard_controller_test.rb
         | 
| 632 | 
            -
            - test/graphql/mutations/job_invocations/create_test.rb
         | 
| 633 | 
            -
            - test/graphql/queries/job_invocation_query_test.rb
         | 
| 634 | 
            -
            - test/graphql/queries/job_invocations_query_test.rb
         | 
| 635 | 
            -
            - test/helpers/remote_execution_helper_test.rb
         | 
| 636 | 
            -
            - test/support/remote_execution_helper.rb
         | 
| 637 | 
            -
            - test/test_plugin_helper.rb
         | 
| 638 | 
            -
            - test/unit/actions/run_host_job_test.rb
         | 
| 639 | 
            -
            - test/unit/actions/run_hosts_job_test.rb
         | 
| 640 | 
            -
            - test/unit/api_params_test.rb
         | 
| 641 | 
            -
            - test/unit/concerns/foreman_tasks_cleaner_extensions_test.rb
         | 
| 642 | 
            -
            - test/unit/concerns/host_extensions_test.rb
         | 
| 643 | 
            -
            - test/unit/concerns/nic_extensions_test.rb
         | 
| 644 | 
            -
            - test/unit/execution_task_status_mapper_test.rb
         | 
| 645 | 
            -
            - test/unit/input_template_renderer_test.rb
         | 
| 646 | 
            -
            - test/unit/job_invocation_composer_test.rb
         | 
| 647 | 
            -
            - test/unit/job_invocation_report_template_test.rb
         | 
| 648 | 
            -
            - test/unit/job_invocation_test.rb
         | 
| 649 | 
            -
            - test/unit/job_template_effective_user_test.rb
         | 
| 650 | 
            -
            - test/unit/job_template_test.rb
         | 
| 651 | 
            -
            - test/unit/remote_execution_feature_test.rb
         | 
| 652 | 
            -
            - test/unit/remote_execution_provider_test.rb
         | 
| 653 | 
            -
            - test/unit/renderer_scope_input_test.rb
         | 
| 654 | 
            -
            - test/unit/targeting_test.rb
         | 
| 655 | 
            -
            - test/unit/template_invocation_input_value_test.rb
         | 
| 567 | 
            +
            test_files: []
         | 
    
        data/.babelrc.js
    DELETED
    
    
    
        data/.eslintignore
    DELETED
    
    
    
        data/.eslintrc
    DELETED
    
    
    
        data/.github/workflows/js_ci.yml
    DELETED
    
    | @@ -1,32 +0,0 @@ | |
| 1 | 
            -
            name: JS
         | 
| 2 | 
            -
            on:
         | 
| 3 | 
            -
              pull_request:
         | 
| 4 | 
            -
                paths:
         | 
| 5 | 
            -
                  - 'webpack/**'
         | 
| 6 | 
            -
                  - 'package.json'
         | 
| 7 | 
            -
                  - '.github/workflows/js_ci.yml'
         | 
| 8 | 
            -
            jobs:
         | 
| 9 | 
            -
              test_js:
         | 
| 10 | 
            -
                runs-on: ubuntu-latest
         | 
| 11 | 
            -
                strategy:
         | 
| 12 | 
            -
                  fail-fast: false
         | 
| 13 | 
            -
                  matrix:
         | 
| 14 | 
            -
                    node-version: [14]
         | 
| 15 | 
            -
                steps:
         | 
| 16 | 
            -
                  - uses: actions/checkout@v2
         | 
| 17 | 
            -
                  - name: Setup Node
         | 
| 18 | 
            -
                    uses: actions/setup-node@v1
         | 
| 19 | 
            -
                    with:
         | 
| 20 | 
            -
                      node-version:  ${{ matrix.node-version }}
         | 
| 21 | 
            -
                  - name: Npm install
         | 
| 22 | 
            -
                    run: |
         | 
| 23 | 
            -
                      npm install
         | 
| 24 | 
            -
                  - name: Run plugin linter
         | 
| 25 | 
            -
                    run: |
         | 
| 26 | 
            -
                      npm run lint
         | 
| 27 | 
            -
                  - name: Run custom plugin linter
         | 
| 28 | 
            -
                    run: |
         | 
| 29 | 
            -
                      npm run lint:custom
         | 
| 30 | 
            -
                  - name: Run plugin tests
         | 
| 31 | 
            -
                    run: |
         | 
| 32 | 
            -
                      npm run test
         | 
| @@ -1,16 +0,0 @@ | |
| 1 | 
            -
            name: Release
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            on:
         | 
| 4 | 
            -
              push:
         | 
| 5 | 
            -
                # Pattern matched against refs/tags
         | 
| 6 | 
            -
                tags:
         | 
| 7 | 
            -
                  - '**'
         | 
| 8 | 
            -
             | 
| 9 | 
            -
            jobs:
         | 
| 10 | 
            -
              release:
         | 
| 11 | 
            -
                name: Release gem
         | 
| 12 | 
            -
                uses: theforeman/actions/.github/workflows/release-gem.yml@v0
         | 
| 13 | 
            -
                with:
         | 
| 14 | 
            -
                  allowed_owner: theforeman
         | 
| 15 | 
            -
                secrets:
         | 
| 16 | 
            -
                  api_key: ${{ secrets.RUBYGEM_API_KEY }}
         | 
| @@ -1,19 +0,0 @@ | |
| 1 | 
            -
            name: CI
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            on: pull_request
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            concurrency:
         | 
| 6 | 
            -
              group: ${{ github.ref_name }}-${{ github.workflow }}
         | 
| 7 | 
            -
              cancel-in-progress: true
         | 
| 8 | 
            -
             | 
| 9 | 
            -
            jobs:
         | 
| 10 | 
            -
              rubocop:
         | 
| 11 | 
            -
                name: Rubocop
         | 
| 12 | 
            -
                uses: theforeman/actions/.github/workflows/rubocop.yml@v0
         | 
| 13 | 
            -
             | 
| 14 | 
            -
              test:
         | 
| 15 | 
            -
                name: Ruby
         | 
| 16 | 
            -
                needs: rubocop
         | 
| 17 | 
            -
                uses: theforeman/actions/.github/workflows/foreman_plugin.yml@v0
         | 
| 18 | 
            -
                with:
         | 
| 19 | 
            -
                  plugin: foreman_remote_execution
         | 
    
        data/.gitignore
    DELETED
    
    | @@ -1,19 +0,0 @@ | |
| 1 | 
            -
            *.sw?
         | 
| 2 | 
            -
            .idea
         | 
| 3 | 
            -
            .bundle/
         | 
| 4 | 
            -
            log/*.log
         | 
| 5 | 
            -
            pkg/
         | 
| 6 | 
            -
            test/dummy/db/*.sqlite3
         | 
| 7 | 
            -
            test/dummy/log/*.log
         | 
| 8 | 
            -
            test/dummy/tmp/
         | 
| 9 | 
            -
            test/dummy/.sass-cache
         | 
| 10 | 
            -
            locale/*.mo
         | 
| 11 | 
            -
            locale/*/*.pox
         | 
| 12 | 
            -
            locale/*/*.edit.po
         | 
| 13 | 
            -
            locale/*/*.po.time_stamp
         | 
| 14 | 
            -
            Gemfile.lock
         | 
| 15 | 
            -
            node_modules/
         | 
| 16 | 
            -
            package-lock.json
         | 
| 17 | 
            -
            coverage/
         | 
| 18 | 
            -
            public/
         | 
| 19 | 
            -
            locale/action_names.rb
         | 
    
        data/.packit.yaml
    DELETED
    
    | @@ -1,45 +0,0 @@ | |
| 1 | 
            -
            # See the documentation for more information:
         | 
| 2 | 
            -
            # https://packit.dev/docs/configuration/
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            specfile_path: rubygem-foreman_remote_execution.spec
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            # add or remove files that should be synced
         | 
| 7 | 
            -
            files_to_sync:
         | 
| 8 | 
            -
                - rubygem-foreman_remote_execution.spec
         | 
| 9 | 
            -
                - .packit.yaml
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            # name in upstream package repository or registry (e.g. in PyPI)
         | 
| 12 | 
            -
            upstream_package_name: foreman_remote_execution
         | 
| 13 | 
            -
            # downstream (Fedora) RPM package name
         | 
| 14 | 
            -
            downstream_package_name: rubygem-foreman_remote_execution
         | 
| 15 | 
            -
             | 
| 16 | 
            -
            upstream_tag_template: v{version}
         | 
| 17 | 
            -
             | 
| 18 | 
            -
            actions:
         | 
| 19 | 
            -
              post-upstream-clone:
         | 
| 20 | 
            -
                - "wget https://raw.githubusercontent.com/theforeman/foreman-packaging/rpm/develop/packages/plugins/rubygem-foreman_remote_execution/rubygem-foreman_remote_execution.spec -O rubygem-foreman_remote_execution.spec"
         | 
| 21 | 
            -
              get-current-version:
         | 
| 22 | 
            -
                - ruby -rrubygems -e 'puts Gem::Specification::load(Dir.glob("*.gemspec").first).version'
         | 
| 23 | 
            -
              create-archive:
         | 
| 24 | 
            -
                - gem build foreman_remote_execution.gemspec
         | 
| 25 | 
            -
                - bash -c "ls -1t ./foreman_remote_execution-*.gem | head -n 1"
         | 
| 26 | 
            -
             | 
| 27 | 
            -
            jobs:
         | 
| 28 | 
            -
              - job: copr_build
         | 
| 29 | 
            -
                trigger: pull_request
         | 
| 30 | 
            -
                targets:
         | 
| 31 | 
            -
                  rhel-8:
         | 
| 32 | 
            -
                    additional_modules: "foreman-devel:el8"
         | 
| 33 | 
            -
                    additional_repos:
         | 
| 34 | 
            -
                      - https://yum.theforeman.org/releases/nightly/el8/x86_64/
         | 
| 35 | 
            -
                      - https://yum.theforeman.org/plugins/nightly/el8/x86_64/
         | 
| 36 | 
            -
                  rhel-9:
         | 
| 37 | 
            -
                    additional_modules: "foreman-devel:el9"
         | 
| 38 | 
            -
                    additional_repos:
         | 
| 39 | 
            -
                      - https://yum.theforeman.org/releases/nightly/el9/x86_64/
         | 
| 40 | 
            -
                      - https://yum.theforeman.org/plugins/nightly/el9/x86_64/
         | 
| 41 | 
            -
                module_hotfixes: true
         | 
| 42 | 
            -
             | 
| 43 | 
            -
            srpm_build_deps:
         | 
| 44 | 
            -
              - wget
         | 
| 45 | 
            -
              - rubygems
         | 
    
        data/.prettierrc
    DELETED