From f9c9d9212a3f5c6f7aa4554656ff392d9bf42122 Mon Sep 17 00:00:00 2001 From: Keith Grant Date: Wed, 20 Dec 2023 13:51:35 -0800 Subject: [PATCH 1/4] persist schedule prompt on launch fields when editing --- awx/ui/src/components/Schedule/shared/ScheduleForm.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/awx/ui/src/components/Schedule/shared/ScheduleForm.js b/awx/ui/src/components/Schedule/shared/ScheduleForm.js index 43407d2737c2..542741d73f77 100644 --- a/awx/ui/src/components/Schedule/shared/ScheduleForm.js +++ b/awx/ui/src/components/Schedule/shared/ScheduleForm.js @@ -350,6 +350,10 @@ function ScheduleForm({ startDate: currentDate, startTime: time, timezone: schedule.timezone || now.zoneName, + credentials: + credentials.length > 0 ? credentials : resourceDefaultCredentials, + labels: originalLabels.current, + instance_groups: originalInstanceGroups.current, }; if (hasDaysToKeepField) { From 291e027d133cdb9b6e0a5946c9b5681493992667 Mon Sep 17 00:00:00 2001 From: Michael Abashian Date: Thu, 21 Dec 2023 12:33:31 -0500 Subject: [PATCH 2/4] Merge job template default credentials with schedule overrides in schedule prompt --- .../components/Schedule/shared/ScheduleForm.js | 7 +++++-- .../shared/mergeArraysByCredentialType.js | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js diff --git a/awx/ui/src/components/Schedule/shared/ScheduleForm.js b/awx/ui/src/components/Schedule/shared/ScheduleForm.js index 542741d73f77..8fbf83791cf2 100644 --- a/awx/ui/src/components/Schedule/shared/ScheduleForm.js +++ b/awx/ui/src/components/Schedule/shared/ScheduleForm.js @@ -20,6 +20,7 @@ import UnsupportedScheduleForm from './UnsupportedScheduleForm'; import parseRuleObj, { UnsupportedRRuleError } from './parseRuleObj'; import buildRuleObj from './buildRuleObj'; import buildRuleSet from './buildRuleSet'; +import mergeArraysByCredentialType from './mergeArraysByCredentialType'; const NUM_DAYS_PER_FREQUENCY = { week: 7, @@ -350,8 +351,10 @@ function ScheduleForm({ startDate: currentDate, startTime: time, timezone: schedule.timezone || now.zoneName, - credentials: - credentials.length > 0 ? credentials : resourceDefaultCredentials, + credentials: mergeArraysByCredentialType( + resourceDefaultCredentials, + credentials + ), labels: originalLabels.current, instance_groups: originalInstanceGroups.current, }; diff --git a/awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js b/awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js new file mode 100644 index 000000000000..7b71540ba1a8 --- /dev/null +++ b/awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js @@ -0,0 +1,15 @@ +export default function mergeArraysByCredentialType(array1, array2) { + const mergedArray = [...array1]; + + array2.forEach((obj2) => { + const index = mergedArray.findIndex( + (obj1) => obj1.credential_type === obj2.credential_type + ); + if (index !== -1) { + mergedArray.splice(index, 1); + } + mergedArray.push(obj2); + }); + + return mergedArray; +} From 08e8aad94fabaf80329d831606d296481fe4f23e Mon Sep 17 00:00:00 2001 From: Keith Grant Date: Thu, 21 Dec 2023 09:56:30 -0800 Subject: [PATCH 3/4] rename vars for clarity --- .../Schedule/shared/mergeArraysByCredentialType.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js b/awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js index 7b71540ba1a8..30169991f52b 100644 --- a/awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js +++ b/awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js @@ -1,14 +1,17 @@ -export default function mergeArraysByCredentialType(array1, array2) { - const mergedArray = [...array1]; +export default function mergeArraysByCredentialType( + defaultCredentials, + overrides +) { + const mergedArray = [...defaultCredentials]; - array2.forEach((obj2) => { + overrides.forEach((override) => { const index = mergedArray.findIndex( - (obj1) => obj1.credential_type === obj2.credential_type + (defaultCred) => defaultCred.credential_type === override.credential_type ); if (index !== -1) { mergedArray.splice(index, 1); } - mergedArray.push(obj2); + mergedArray.push(override); }); return mergedArray; From 382d2e09f683ea1b63ca90c49b34da048e4c5fa3 Mon Sep 17 00:00:00 2001 From: Keith Grant Date: Thu, 21 Dec 2023 11:23:33 -0800 Subject: [PATCH 4/4] handle undefined defaultCredentials --- .../components/Schedule/shared/mergeArraysByCredentialType.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js b/awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js index 30169991f52b..13935f930e51 100644 --- a/awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js +++ b/awx/ui/src/components/Schedule/shared/mergeArraysByCredentialType.js @@ -1,6 +1,6 @@ export default function mergeArraysByCredentialType( - defaultCredentials, - overrides + defaultCredentials = [], + overrides = [] ) { const mergedArray = [...defaultCredentials];