95
95
db_driver = FLAGS.db_driver
96
96
self.db_driver = utils.import_object(db_driver)
97
97
self.network_manager = utils.import_object(FLAGS.network_manager)
98
self.compute_manager = utils.import_object(FLAGS.compute_manager)
98
99
super(Controller, self).__init__()
100
101
def index(self, req):
242
243
inst['memory_mb'] = flavor['memory_mb']
243
244
inst['vcpus'] = flavor['vcpus']
244
245
inst['local_gb'] = flavor['local_gb']
246
ref = self.db_driver.instance_create(ctxt, inst)
247
inst['id'] = ref.internal_id
249
246
inst['mac_address'] = utils.generate_mac()
251
#TODO(dietz) is this necessary?
252
247
inst['launch_index'] = 0
254
inst['hostname'] = str(ref.internal_id)
255
self.db_driver.instance_update(ctxt, inst['id'], inst)
257
network_manager = utils.import_object(FLAGS.network_manager)
258
address = network_manager.allocate_fixed_ip(ctxt,
249
ref = self.compute_manager.create_instance(ctxt, **inst)
250
inst['id'] = ref['internal_id']
252
inst['hostname'] = str(ref['internal_id'])
253
self.compute_manager.update_instance(ctxt, inst['id'], **inst)
255
address = self.network_manager.allocate_fixed_ip(ctxt,
261
258
# TODO(vish): This probably should be done in the scheduler
262
259
# network is setup when host is assigned
263
network_topic = self._get_network_topic(ctxt, network_manager)
260
network_topic = self._get_network_topic(ctxt)
266
263
{"method": "setup_fixed_ip",
267
264
"args": {"address": address}})
270
def _get_network_topic(self, context, network_manager):
267
def _get_network_topic(self, context):
271
268
"""Retrieves the network host for a project"""
272
network_ref = network_manager.get_network(context)
269
network_ref = self.network_manager.get_network(context)
273
270
host = network_ref['host']
275
272
host = rpc.call(context,