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
This commit is contained in:
Matt Borland 2016-08-29 09:54:56 -06:00
parent 1d3617c7d9
commit be6bcef452
3 changed files with 14 additions and 5 deletions

View File

@ -27,7 +27,7 @@
<select ng-if="model.availabilityZones.length !== 0"
class="form-control"
id="availability-zone"
ng-options="zone for zone in model.availabilityZones"
ng-options="zone.value as zone.label for zone in model.availabilityZones"
ng-model="model.newInstanceSpec.availability_zone">
</select>
</div>

View File

@ -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

View File

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