Repository: aurora Updated Branches: refs/heads/master 8c331b8b5 -> 5a26c8b4b
Support updates with no desiredState on Job and Update pages When updates only delete instances, desiredState is null. Reviewed at https://reviews.apache.org/r/63344/ Project: http://git-wip-us.apache.org/repos/asf/aurora/repo Commit: http://git-wip-us.apache.org/repos/asf/aurora/commit/5a26c8b4 Tree: http://git-wip-us.apache.org/repos/asf/aurora/tree/5a26c8b4 Diff: http://git-wip-us.apache.org/repos/asf/aurora/diff/5a26c8b4 Branch: refs/heads/master Commit: 5a26c8b4bf6ad0ce04296aee7576cfb73d68de20 Parents: 8c331b8 Author: David McLaughlin <[email protected]> Authored: Thu Oct 26 15:27:05 2017 -0700 Committer: David McLaughlin <[email protected]> Committed: Thu Oct 26 15:27:05 2017 -0700 ---------------------------------------------------------------------- ui/src/main/js/components/UpdateConfig.js | 6 +++++- ui/src/main/js/utils/Update.js | 12 +++++++----- ui/src/main/js/utils/__tests__/Update-test.js | 17 +++++++++++++++++ 3 files changed, 29 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/aurora/blob/5a26c8b4/ui/src/main/js/components/UpdateConfig.js ---------------------------------------------------------------------- diff --git a/ui/src/main/js/components/UpdateConfig.js b/ui/src/main/js/components/UpdateConfig.js index 89dea25..955b2c7 100644 --- a/ui/src/main/js/components/UpdateConfig.js +++ b/ui/src/main/js/components/UpdateConfig.js @@ -4,8 +4,12 @@ import PanelGroup, { Container, StandardPanelTitle } from 'components/Layout'; import TaskConfig from 'components/TaskConfig'; import UpdateDiff from 'components/UpdateDiff'; +import { isNully } from 'utils/Common'; + export default function UpdateConfig({ update }) { - if (update.update.instructions.initialState.length > 0) { + if (isNully(update.update.instructions.desiredState)) { + return null; + } else if (update.update.instructions.initialState.length > 0) { return <UpdateDiff update={update} />; } http://git-wip-us.apache.org/repos/asf/aurora/blob/5a26c8b4/ui/src/main/js/utils/Update.js ---------------------------------------------------------------------- diff --git a/ui/src/main/js/utils/Update.js b/ui/src/main/js/utils/Update.js index dee2393..d10131d 100644 --- a/ui/src/main/js/utils/Update.js +++ b/ui/src/main/js/utils/Update.js @@ -1,4 +1,4 @@ -import { sort } from 'utils/Common'; +import { isNully, sort } from 'utils/Common'; import Thrift, { UPDATE_ACTION } from 'utils/Thrift'; export function isSuccessfulUpdate(update) { @@ -22,10 +22,12 @@ function getAllInstanceIds(update) { const newIds = {}; const oldIds = {}; - processInstanceIdsFromRanges(update.instructions.desiredState.instances, (id) => { - newIds[id] = true; - allIds[id] = true; - }); + if (!isNully(update.instructions.desiredState)) { + processInstanceIdsFromRanges(update.instructions.desiredState.instances, (id) => { + newIds[id] = true; + allIds[id] = true; + }); + } update.instructions.initialState.forEach((task) => { processInstanceIdsFromRanges(task.instances, (id) => { http://git-wip-us.apache.org/repos/asf/aurora/blob/5a26c8b4/ui/src/main/js/utils/__tests__/Update-test.js ---------------------------------------------------------------------- diff --git a/ui/src/main/js/utils/__tests__/Update-test.js b/ui/src/main/js/utils/__tests__/Update-test.js index 88fa5f7..881ba3a 100644 --- a/ui/src/main/js/utils/__tests__/Update-test.js +++ b/ui/src/main/js/utils/__tests__/Update-test.js @@ -268,6 +268,23 @@ describe('updateStats', () => { expect(stats).toEqual({totalInstancesToBeUpdated: 10, instancesUpdated: 2, progress: 20}); }); + it('Should respect when there are exclusively deleted instances', () => { + const instructions = UpdateInstructionsBuilder + .initialState([InstanceTaskConfigBuilder.instances([{first: 0, last: 1}]).build()]) + .desiredState(null) + .build(); + + const update = UpdateDetailsBuilder + .update(UpdateBuilder.instructions(instructions).build()) + .instanceEvents([ + instanceUpdated.instanceId(0).build(), + instanceUpdated.instanceId(1).build() + ]) + .build(); + const stats = updateStats(update); + expect(stats).toEqual({totalInstancesToBeUpdated: 2, instancesUpdated: 2, progress: 100}); + }); + it('Any instances updated should show up in stats, even if rolled back', () => { const instructions = UpdateInstructionsBuilder .initialState([InstanceTaskConfigBuilder.instances([{first: 0, last: 9}]).build()])
