Updates simple scheduler to allow strict availability_zone scheduling

This update adds strict availability_zone scheduling of new instances when
an availabity_zone option is not present in the creation call.  This patch
does not change the expected default behavior.

Previous behavior was to default the zone to None and only update the zone
in the scheduler if an availability_zone was supplied.  This incorrectly
allowed the scheduler to place new instances created without an
availability_zone onto compute nodes where the availability_zone had been
changed to something other than the default of 'nova'.

Setting default_schedule_zone to 'nova' will prevent new instance scheduling
into availability_zones other than the default 'nova' zone.  This change
defaults the zone to None but allows the user to override this with the
default_schedule_flag.

In practice, if you have 2 availability_zones (nova, megazone) you can
configure default_schedule_zone on the API node to 'nova' and any instances
created will be created into the 'nova' availability_zone if one was not
supplied.  Instances created with an availability_zone will be created as
normal into the availability_zone supplied.

Change-Id: Id23bac8448ea7ce6a1e1227d046c921328dbfe33
This commit is contained in:
Joseph W. Breu 2011-11-30 13:54:21 -06:00
parent fcef1e944d
commit 3b29258ed3
2 changed files with 5 additions and 1 deletions

View File

@ -68,6 +68,7 @@ John Tran <jtran@attinteractive.com>
Jonathan Bryce <jbryce@jbryce.com>
Jordan Rinke <jordan@openstack.org>
Joseph Suh <jsuh@isi.edu>
Joseph W. Breu <breu@breu.org>
Josh Durgin <joshd@hq.newdream.net>
Josh Kearney <josh@jk0.org>
Josh Kleinpeter <josh@kleinpeter.org>
@ -133,6 +134,7 @@ Vasiliy Shlykov <vash@vasiliyshlykov.org>
Vishvananda Ishaya <vishvananda@gmail.com>
Vivek Y S <vivek.ys@gmail.com>
Vladimir Popovski <vladimir@zadarastorage.com>
William Kelly <william.kelly@rackspace.com>
William Wolf <throughnothing@gmail.com>
Yoshiaki Tamura <yoshi@midokura.jp>
Youcef Laribi <Youcef.Laribi@eu.citrix.com>

View File

@ -34,6 +34,8 @@ flags.DEFINE_integer("max_gigabytes", 10000,
"maximum number of volume gigabytes to allow per host")
flags.DEFINE_integer("max_networks", 1000,
"maximum number of networks to allow per host")
flags.DEFINE_string('default_schedule_zone', None,
'zone to use when user doesnt specify one')
class SimpleScheduler(chance.ChanceScheduler):
@ -45,7 +47,7 @@ class SimpleScheduler(chance.ChanceScheduler):
availability_zone = instance_opts.get('availability_zone')
zone, host = None, None
zone, host = FLAGS.default_schedule_zone, None
if availability_zone:
zone, _x, host = availability_zone.partition(':')