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);