diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/source/source.controller.js b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/source/source.controller.js index d7a460b2f6..a789b001e4 100644 --- a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/source/source.controller.js +++ b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/source/source.controller.js @@ -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]); diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/source/source.controller.spec.js b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/source/source.controller.spec.js index 79585b0501..3963c233ec 100644 --- a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/source/source.controller.spec.js +++ b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/source/source.controller.spec.js @@ -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() {