diff --git a/awx/ui_next/src/components/Schedule/Schedule.jsx b/awx/ui_next/src/components/Schedule/Schedule.jsx index a725215029..4c1a631769 100644 --- a/awx/ui_next/src/components/Schedule/Schedule.jsx +++ b/awx/ui_next/src/components/Schedule/Schedule.jsx @@ -25,6 +25,7 @@ function Schedule({ resource, launchConfig, surveyConfig, + hasDaysToKeepField, }) { const { scheduleId } = useParams(); @@ -96,13 +97,6 @@ function Schedule({ showCardHeader = false; } - // For some management jobs that delete data, we want to provide an additional - // field on the scheduler for configuring the number of days to retain. - const hasDaysToKeepField = [ - 'cleanup_activitystream', - 'cleanup_jobs', - ].includes(schedule?.summary_fields?.unified_job_template?.job_type); - return ( <> {showCardHeader && } diff --git a/awx/ui_next/src/components/Schedule/ScheduleAdd/ScheduleAdd.jsx b/awx/ui_next/src/components/Schedule/ScheduleAdd/ScheduleAdd.jsx index 81f42f5b72..2c8836f00e 100644 --- a/awx/ui_next/src/components/Schedule/ScheduleAdd/ScheduleAdd.jsx +++ b/awx/ui_next/src/components/Schedule/ScheduleAdd/ScheduleAdd.jsx @@ -15,7 +15,14 @@ import mergeExtraVars from '../../../util/prompt/mergeExtraVars'; import getSurveyValues from '../../../util/prompt/getSurveyValues'; import { getAddedAndRemoved } from '../../../util/lists'; -function ScheduleAdd({ i18n, resource, apiModel, launchConfig, surveyConfig }) { +function ScheduleAdd({ + i18n, + resource, + apiModel, + launchConfig, + surveyConfig, + hasDaysToKeepField, +}) { const [formSubmitError, setFormSubmitError] = useState(null); const history = useHistory(); const location = useLocation(); @@ -70,13 +77,22 @@ function ScheduleAdd({ i18n, resource, apiModel, launchConfig, surveyConfig }) { try { const rule = new RRule(buildRuleObj(values, i18n)); + const requestData = { + ...submitValues, + rrule: rule.toString().replace(/\n/g, ' '), + }; + + if (Object.keys(values).includes('daysToKeep')) { + if (requestData.extra_data) { + requestData.extra_data.days = values.daysToKeep; + } else { + requestData.extra_data = JSON.stringify({ days: values.daysToKeep }); + } + } const { data: { id: scheduleId }, - } = await apiModel.createSchedule(resource.id, { - ...submitValues, - rrule: rule.toString().replace(/\n/g, ' '), - }); + } = await apiModel.createSchedule(resource.id, requestData); if (credentials?.length > 0) { await Promise.all( added.map(({ id: credentialId }) => @@ -94,6 +110,7 @@ function ScheduleAdd({ i18n, resource, apiModel, launchConfig, surveyConfig }) { history.push(`${pathRoot}schedules`)} handleSubmit={handleSubmit} submitError={formSubmitError} diff --git a/awx/ui_next/src/components/Schedule/Schedules.jsx b/awx/ui_next/src/components/Schedule/Schedules.jsx index 22f429dd29..f6785d8fa8 100644 --- a/awx/ui_next/src/components/Schedule/Schedules.jsx +++ b/awx/ui_next/src/components/Schedule/Schedules.jsx @@ -16,10 +16,18 @@ function Schedules({ }) { const match = useRouteMatch(); + // For some management jobs that delete data, we want to provide an additional + // field on the scheduler for configuring the number of days to retain. + const hasDaysToKeepField = [ + 'cleanup_activitystream', + 'cleanup_jobs', + ].includes(resource?.job_type); + return (