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
This commit is contained in:
parent
ff9cfff507
commit
48862eb9b7
|
@ -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