forked from theforeman/foreman_remote_execution
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJobInvocationConstants.js
More file actions
149 lines (137 loc) · 4.7 KB
/
Copy pathJobInvocationConstants.js
File metadata and controls
149 lines (137 loc) · 4.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/* eslint-disable camelcase */
import React from 'react';
import { translate as __ } from 'foremanReact/common/I18n';
import { foremanUrl } from 'foremanReact/common/helpers';
import { useForemanHostDetailsPageUrl } from 'foremanReact/Root/Context/ForemanContext';
import JobStatusIcon from '../react_app/components/RecentJobsCard/JobStatusIcon';
export const JOB_INVOCATION_KEY = 'JOB_INVOCATION_KEY';
export const UPDATE_JOB = 'UPDATE_JOB';
export const CANCEL_JOB = 'CANCEL_JOB';
export const GET_TASK = 'GET_TASK';
export const GET_TEMPLATE_INVOCATIONS = 'GET_TEMPLATE_INVOCATIONS';
export const CHANGE_ENABLED_RECURRING_LOGIC = 'CHANGE_ENABLED_RECURRING_LOGIC';
export const CANCEL_RECURRING_LOGIC = 'CANCEL_RECURRING_LOGIC';
export const GET_REPORT_TEMPLATES = 'GET_REPORT_TEMPLATES';
export const GET_REPORT_TEMPLATE_INPUTS = 'GET_REPORT_TEMPLATE_INPUTS';
export const JOB_INVOCATION_HOSTS = 'JOB_INVOCATION_HOSTS';
export const GET_TEMPLATE_INVOCATION = 'GET_TEMPLATE_INVOCATION';
export const DIRECT_OPEN_HOST_LIMIT = 3;
export const ALL_JOB_HOSTS = 'ALL_JOB_HOSTS';
export const AWAITING_STATUS_FILTER = '(job_invocation.result = N/A)';
export const showTemplateInvocationUrl = (hostID, jobID) =>
`/show_template_invocation_by_host/${hostID}/job_invocation/${jobID}`;
export const LIST_TEMPLATE_INVOCATIONS = 'LIST_TEMPLATE_INVOCATIONS';
export const templateInvocationPageUrl = (hostID, jobID) =>
`/job_invocations_detail/${jobID}/host_invocation/${hostID}`;
export const jobInvocationDetailsUrl = id => `/job_invocations/${id}`;
export const jobInvocationsIndexPath = '/job_invocations';
export const jobInvocationsNewPath = '/job_invocations/new';
export const jobInvocationsIndexUrl = foremanUrl(jobInvocationsIndexPath);
export const jobInvocationsNewUrl = foremanUrl(jobInvocationsNewPath);
export const STATUS = {
PENDING: 'pending',
SUCCEEDED: 'succeeded',
FAILED: 'failed',
CANCELLED: 'cancelled',
RUNNING: 'running',
};
export const STATUS_UPPERCASE = {
RESOLVED: 'RESOLVED',
ERROR: 'ERROR',
PENDING: 'PENDING',
};
export const STATUS_TITLES = {
ALL_STATUSES: { id: 'all_statuses', title: __('All statuses') },
SUCCESS: { id: 'success', title: __('Succeeded') },
FAILED: { id: 'failed', title: __('Failed') },
PENDING: { id: 'pending', title: __('In Progress') },
CANCELLED: { id: 'cancelled', title: __('Cancelled') },
NOT_STARTED: { id: 'N/A', title: __('Scheduled') },
};
export const DATE_OPTIONS = {
day: 'numeric',
month: 'short',
year: 'numeric',
hour: '2-digit',
minute: '2-digit',
hour12: false,
timeZoneName: 'short',
};
const Columns = () => {
const getColumnsStatus = ({ hostJobStatus }) => {
switch (hostJobStatus) {
case 'success':
return { title: __('Succeeded'), status: 0 };
case 'error':
return { title: __('Failed'), status: 1 };
case 'planned':
return { title: __('Scheduled'), status: 2 };
case 'running' || 'pending':
return { title: __('Pending'), status: 3 };
case 'cancelled':
return { title: __('Cancelled'), status: 4 };
case 'N/A':
return { title: __('Awaiting start'), status: 5 };
default:
return { title: hostJobStatus, status: 6 };
}
};
const hostDetailsPageUrl = useForemanHostDetailsPageUrl();
return {
name: {
title: __('Name'),
wrapper: ({ name }) => (
<a href={`${hostDetailsPageUrl}${name}`}>{name}</a>
),
isSorted: true,
weight: 1,
},
hostgroup: {
title: __('Host group'),
wrapper: ({ hostgroup_id, hostgroup_name }) => (
<a href={`/hostgroups/${hostgroup_id}/edit`}>{hostgroup_name}</a>
),
isSorted: true,
weight: 2,
},
os: {
title: __('OS'),
wrapper: ({ operatingsystem_id, operatingsystem_name }) => (
<a href={`/operatingsystems/${operatingsystem_id}/edit`}>
{operatingsystem_name}
</a>
),
isSorted: true,
weight: 3,
},
smart_proxy: {
title: __('Smart proxy'),
wrapper: ({ smart_proxy_name, smart_proxy_id }) => (
<a href={`/smart_proxies/${smart_proxy_id}`}>{smart_proxy_name}</a>
),
isSorted: true,
weight: 4,
},
status: {
title: __('Status'),
wrapper: ({ job_status }) => {
const { title, status } = getColumnsStatus({
hostJobStatus: job_status,
});
return (
<JobStatusIcon status={status}>
{title || __('Unknown')}
</JobStatusIcon>
);
},
weight: 5,
},
};
};
export default Columns;
const STATIC_TYPE = 'static_query';
const DYNAMIC_TYPE = 'dynamic_query';
export const TARGETING_TYPES = {
[STATIC_TYPE]: __('Static Query'),
[DYNAMIC_TYPE]: __('Dynamic Query'),
};