From be6bcef45289ce1a934db478e5c9c7705890af18 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Mon, 29 Aug 2016 09:54:56 -0600 Subject: [PATCH] Let Nova to pick availability zone if more than 1 In the Angular Launch Instance, if there is more than one availability zone, default to the option for the Nova scheduler to pick. This is a regression from the legacy Launch Instance feature. If you want to simulate testing the logic with multiple avaiability zones, go to: .../launch-instance/launch-instance-model.service.js line 785 and add: model.availabilityZones.push({label: 'another one', value: 'another one'}); Change-Id: Ib81447382bc9d43e33ce97f78c085d2a94ff2018 Closes-Bug: 1613900 --- .../workflow/launch-instance/details/details.html | 2 +- .../launch-instance-model.service.js | 15 ++++++++++++--- .../launch-instance-model.service.spec.js | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/details/details.html b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/details/details.html index c4a728726b..6740b67f6b 100644 --- a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/details/details.html +++ b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/details/details.html @@ -27,7 +27,7 @@ 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..314981b26e 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 @@ -317,13 +317,22 @@ return zone.zoneState && zone.zoneState.available; }) .map(function (zone) { - return zone.zoneName; + return {label: zone.zoneName, value: zone.zoneName}; }) ); - if (model.availabilityZones.length > 0) { - model.newInstanceSpec.availability_zone = model.availabilityZones[0]; + if (model.availabilityZones.length === 1) { + model.newInstanceSpec.availability_zone = model.availabilityZones[0].value; + } else if (model.availabilityZones.length > 1) { + // There are 2 or more; allow ability for nova scheduler to pick, + // and make that the default. + model.availabilityZones.unshift({ + label: gettext("Any Availability Zone"), + value: "" + }); + model.newInstanceSpec.availability_zone = model.availabilityZones[0].value; } + } // Flavors 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..4a88e5e435 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 @@ -408,7 +408,7 @@ expect(model.images.length).toBe(2); expect(model.imageSnapshots.length).toBe(2); - expect(model.availabilityZones.length).toBe(2); + expect(model.availabilityZones.length).toBe(3); // 2 + 1 for 'nova pick' expect(model.flavors.length).toBe(2); expect(model.keypairs.length).toBe(2); expect(model.securityGroups.length).toBe(2);