do not flush selection on "old" boot source
This fixes an issue introduced by watchers:
when page initialized images watchers called before
select boot source watcher.it leads to sutiation when
we specify selection from user input and flush it on
updateBootSource. as a result page come to
inconsistent state described in the bug.
Perhaps, this requires big refactoring but in the
current patch we do not flush selection if boot type
was not changed. it allows to use image, snapshot,
volume from context as ctrl.selection.
Change-Id: I4b23071a2a9e2c02cc1f46713165e5cb5155894f
Closes-Bug: #1710890
(cherry picked from commit 48862eb9b7
)
This commit is contained in:
parent
e29f6dde77
commit
2fe66f444a
|
@ -428,7 +428,10 @@
|
|||
////////////////////
|
||||
|
||||
function updateBootSourceSelection(selectedSource) {
|
||||
ctrl.currentBootSource = selectedSource;
|
||||
if (ctrl.currentBootSource !== selectedSource) {
|
||||
ctrl.selection.length = 0;
|
||||
ctrl.currentBootSource = selectedSource;
|
||||
}
|
||||
if ((selectedSource === bootSourceTypes.IMAGE ||
|
||||
selectedSource === bootSourceTypes.INSTANCE_SNAPSHOT) && $scope.model.volumeBootable) {
|
||||
$scope.model.newInstanceSpec.vol_create =
|
||||
|
@ -451,8 +454,8 @@
|
|||
}
|
||||
|
||||
function updateDataSource(key, preSelection) {
|
||||
selection.length = 0;
|
||||
if (preSelection) {
|
||||
ctrl.selection.length = 0;
|
||||
push.apply(selection, preSelection);
|
||||
}
|
||||
angular.extend(ctrl.tableData, bootSources[key]);
|
||||
|
|
|
@ -290,6 +290,20 @@
|
|||
scope.$apply();
|
||||
expect(scope.$broadcast).toHaveBeenCalled();
|
||||
});
|
||||
it('should not flush selection if boot source still the same', function() {
|
||||
ctrl.currentBootSource = 'image';
|
||||
ctrl.selection = ['test_selection'];
|
||||
ctrl.updateBootSourceSelection('image');
|
||||
scope.$apply();
|
||||
expect(ctrl.selection).toEqual(['test_selection']);
|
||||
});
|
||||
it('should flush selection on new boot source', function() {
|
||||
ctrl.currentBootSource = 'image';
|
||||
ctrl.selection = ['test_selection'];
|
||||
ctrl.updateBootSourceSelection('volume');
|
||||
scope.$apply();
|
||||
expect(ctrl.selection).toEqual([]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('source allocation', function() {
|
||||
|
|
Loading…
Reference in New Issue