Adopt the scheduler during creating instance

Change-Id: Ibee51e777bc94e7c8bc4f767a323fb29216b3b2c
This commit is contained in:
Zhenguo Niu
2016-09-18 23:44:26 +08:00
parent 78e2f82672
commit 527eca809e
3 changed files with 20 additions and 4 deletions

View File

@@ -36,7 +36,7 @@ class BaseEngineManager(periodic_task.PeriodicTasks):
self.node_cache = {}
self.node_cache_time = 0
scheduler_driver = CONF.scheduler.scheduler_driver
self.scheduler_driver = importutils.import_object(scheduler_driver)
self.scheduler = importutils.import_object(scheduler_driver)
self.notifier = rpc.get_notifier()
self._started = False

View File

@@ -110,8 +110,24 @@ class EngineManager(base_manager.BaseEngineManager):
LOG.debug("Strating instance...")
instance.status = 'building'
# Scheduling...
# instance.node_uuid = '8d22309b-b47a-41a7-80e3-e758fae9dedd'
# Populate request spec
instance_type_id = instance.instance_type_id
instance_type = instance.instance_type
request_spec = {
'instance_id': instance.id,
'instance_properties': {
'availability_zone': instance.availability_zone,
'instance_type_id': instance_type_id,
},
'instance_type': dict(instance_type),
}
# TODO(zhenguo): Add retry
top_node = self.scheduler.schedule(context,
request_spec,
self.node_cache)
instance.node_uuid = top_node.to_dict()['node']
instance.save()
self._build_networks(context, instance)

View File

@@ -24,7 +24,7 @@ class AvailabilityZoneFilter(filters.BaseNodeFilter):
def node_passes(self, node_state, filter_properties):
spec = filter_properties.get('request_spec', {})
props = spec.get('resource_properties', {})
props = spec.get('instance_properties', {})
availability_zone = props.get('availability_zone')
if availability_zone: