From 723e547e848f580bf5f16899cd2bffa23c77c763 Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Wed, 25 May 2016 21:18:47 +0100 Subject: [PATCH] Fix Launch Instance without Cinder A previous patch altered the defaults in the angular Launch Instance, but didn't account for those running without Cinder. This patch fixes those assumptions. Co-Authored-By: Rob Cresswell Change-Id: I8dc54fa40fa7eb8ae95a13741405f2a80337b33d Closes-Bug: 1585761 --- .../launch-instance-model.service.js | 2 +- .../launch-instance-model.service.spec.js | 2 +- .../launch-instance/source/source.controller.js | 6 +++++- .../source/source.controller.spec.js | 14 ++++++++++++-- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.js b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.js index 50f81acf93..0dc96d0190 100644 --- a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.js +++ b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.js @@ -182,7 +182,7 @@ source_type: null, source: [], // REQUIRED for JS logic - vol_create: true, + vol_create: false, // May be null vol_device_name: 'vda', vol_delete_on_instance_delete: false, diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.spec.js b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.spec.js index 9e8f6c3c33..70d686d752 100644 --- a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.spec.js +++ b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.spec.js @@ -814,7 +814,7 @@ }); it('sets volume options appropriately', function() { - expect(model.newInstanceSpec.vol_create).toBe(true); + expect(model.newInstanceSpec.vol_create).toBe(false); expect(model.newInstanceSpec.vol_device_name).toBe('vda'); expect(model.newInstanceSpec.vol_delete_on_instance_delete).toBe(false); expect(model.newInstanceSpec.vol_size).toBe(1); 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 6e2835214e..6a18e24505 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 @@ -401,7 +401,11 @@ function updateBootSourceSelection(selectedSource) { ctrl.currentBootSource = selectedSource; - $scope.model.newInstanceSpec.vol_create = true; + if ((selectedSource === bootSourceTypes.IMAGE) && $scope.model.volumeBootable) { + $scope.model.newInstanceSpec.vol_create = true; + } else { + $scope.model.newInstanceSpec.vol_create = false; + } $scope.model.newInstanceSpec.vol_delete_on_instance_delete = false; changeBootSource(selectedSource); validateBootSourceType(); 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 cbef3b0a9a..70f6b578fe 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 @@ -229,12 +229,12 @@ var tableKeys = ['available', 'allocated', 'displayedAvailable', 'displayedAllocated']; - it('updates the scope appropriately', function() { + it('updates the scope appropriately, without Cinder available', function() { var selSource = 'image'; ctrl.updateBootSourceSelection(selSource); expect(ctrl.currentBootSource).toEqual('image'); - expect(scope.model.newInstanceSpec.vol_create).toBe(true); + expect(scope.model.newInstanceSpec.vol_create).toBe(false); expect(scope.model.newInstanceSpec.vol_delete_on_instance_delete).toBe(false); // check table data @@ -244,6 +244,16 @@ expect(ctrl.tableBodyCells.length).toBeGreaterThan(0); }); + it('updates the scope appropriately, with Cinder available', function() { + scope.model.volumeBootable = true; + var selSource = 'image'; + ctrl.updateBootSourceSelection(selSource); + + expect(ctrl.currentBootSource).toEqual('image'); + expect(scope.model.newInstanceSpec.vol_create).toBe(true); + expect(scope.model.newInstanceSpec.vol_delete_on_instance_delete).toBe(false); + }); + it('should broadcast event when boot source changes', function() { spyOn(scope, '$broadcast'); scope.$apply();