92
92
return mapping['vif_devname']
93
93
return ("nic" + mapping['vif_uuid'])[:network_model.NIC_NAME_LEN]
95
def get_config(self, instance, network, mapping, image_meta):
95
def get_config(self, instance, network, mapping, image_meta, inst_type):
96
96
conf = vconfig.LibvirtConfigGuestInterface()
97
97
# Default to letting libvirt / the hypervisor choose the model
162
def get_config_bridge(self, instance, network, mapping, image_meta):
162
def get_config_bridge(self, instance, network, mapping, image_meta,
163
164
"""Get VIF configurations for bridge type."""
164
165
conf = super(LibvirtGenericVIFDriver,
165
166
self).get_config(instance,
169
image_meta, inst_type)
170
171
designer.set_vif_host_backend_bridge_config(
171
172
conf, self.get_bridge_name(network),
175
176
name = "nova-instance-" + instance['name'] + "-" + mac_id
176
177
if self.get_firewall_required():
177
178
conf.filtername = name
178
designer.set_vif_bandwidth_config(conf, instance)
179
designer.set_vif_bandwidth_config(conf, inst_type)
182
def get_config_ovs_ethernet(self, instance, network, mapping, image_meta):
183
def get_config_ovs_ethernet(self, instance, network, mapping,
184
image_meta, inst_type):
183
185
conf = super(LibvirtGenericVIFDriver,
184
186
self).get_config(instance,
189
image_meta, inst_type)
189
191
dev = self.get_vif_devname(mapping)
190
192
designer.set_vif_host_backend_ethernet_config(conf, dev)
194
def get_config_ovs_bridge(self, instance, network, mapping, image_meta):
196
def get_config_ovs_bridge(self, instance, network, mapping, image_meta,
195
198
conf = super(LibvirtGenericVIFDriver,
196
199
self).get_config(instance,
202
image_meta, inst_type)
201
204
designer.set_vif_host_backend_ovs_config(
202
205
conf, self.get_bridge_name(network),
208
def get_config_ovs_hybrid(self, instance, network, mapping, image_meta):
211
def get_config_ovs_hybrid(self, instance, network, mapping, image_meta,
209
213
newnet = copy.deepcopy(network)
210
214
newnet['bridge'] = self.get_br_name(mapping['vif_uuid'])
211
215
return self.get_config_bridge(instance,
218
image_meta, inst_type)
216
def get_config_ovs(self, instance, network, mapping, image_meta):
220
def get_config_ovs(self, instance, network, mapping, image_meta,
217
222
if self.get_firewall_required():
218
223
return self.get_config_ovs_hybrid(instance, network,
221
227
elif self.has_libvirt_version(LIBVIRT_OVS_VPORT_VERSION):
222
228
return self.get_config_ovs_bridge(instance, network,
226
233
return self.get_config_ovs_ethernet(instance, network,
230
def get_config_802qbg(self, instance, network, mapping, image_meta):
238
def get_config_802qbg(self, instance, network, mapping, image_meta,
231
240
conf = super(LibvirtGenericVIFDriver,
232
241
self).get_config(instance,
244
image_meta, inst_type)
237
246
params = mapping["qbg_params"]
238
247
designer.set_vif_host_backend_802qbg_config(
247
def get_config_802qbh(self, instance, network, mapping, image_meta):
256
def get_config_802qbh(self, instance, network, mapping, image_meta,
248
258
conf = super(LibvirtGenericVIFDriver,
249
259
self).get_config(instance,
262
image_meta, inst_type)
254
264
params = mapping["qbh_params"]
255
265
designer.set_vif_host_backend_802qbh_config(
261
def get_config(self, instance, network, mapping, image_meta):
271
def get_config(self, instance, network, mapping, image_meta, inst_type):
262
272
vif_type = mapping.get('vif_type')
264
274
LOG.debug(_("vif_type=%(vif_type)s instance=%(instance)s "
273
283
if vif_type == network_model.VIF_TYPE_BRIDGE:
274
284
return self.get_config_bridge(instance,
275
285
network, mapping,
277
288
elif vif_type == network_model.VIF_TYPE_OVS:
278
289
return self.get_config_ovs(instance,
279
290
network, mapping,
281
293
elif vif_type == network_model.VIF_TYPE_802_QBG:
282
294
return self.get_config_802qbg(instance,
283
295
network, mapping,
285
298
elif vif_type == network_model.VIF_TYPE_802_QBH:
286
299
return self.get_config_802qbh(instance,
287
300
network, mapping,
290
304
raise exception.NovaException(
291
305
_("Unexpected vif_type=%s") % vif_type)
496
510
drivers which do not yet report 'vif_type' port binding.
497
511
Will be deprecated in Havana, and removed in Ixxxx."""
499
def get_config(self, instance, network, mapping, image_meta):
500
return self.get_config_bridge(instance, network, mapping, image_meta)
513
def get_config(self, instance, network, mapping, image_meta, inst_type):
514
return self.get_config_bridge(instance, network, mapping, image_meta,
502
517
def plug(self, instance, vif):
503
518
self.plug_bridge(instance, vif)
517
532
def get_ovs_interfaceid(self, mapping):
518
533
return mapping.get('ovs_interfaceid') or mapping['vif_uuid']
520
def get_config(self, instance, network, mapping, image_meta):
535
def get_config(self, instance, network, mapping, image_meta, inst_type):
521
536
return self.get_config_ovs_ethernet(instance,
522
537
network, mapping,
538
image_meta, inst_type)
525
540
def plug(self, instance, vif):
526
541
self.plug_ovs_ethernet(instance, vif)
540
555
def get_ovs_interfaceid(self, mapping):
541
556
return mapping.get('ovs_interfaceid') or mapping['vif_uuid']
543
def get_config(self, instance, network, mapping, image_meta):
558
def get_config(self, instance, network, mapping, image_meta, inst_type):
544
559
return self.get_config_ovs_hybrid(instance,
545
560
network, mapping,
548
564
def plug(self, instance, vif):
549
565
return self.plug_ovs_hybrid(instance, vif)
563
579
def get_ovs_interfaceid(self, mapping):
564
580
return mapping.get('ovs_interfaceid') or mapping['vif_uuid']
566
def get_config(self, instance, network, mapping, image_meta):
582
def get_config(self, instance, network, mapping, image_meta, inst_type):
567
583
return self.get_config_ovs_bridge(instance,
568
584
network, mapping,
571
588
def plug(self, instance, vif):
572
589
return self.plug_ovs_bridge(instance, vif)
584
601
def_bridge = ("brq" + network['id'])[:network_model.NIC_NAME_LEN]
585
602
return network.get('bridge') or def_bridge
587
def get_config(self, instance, network, mapping, image_meta):
604
def get_config(self, instance, network, mapping, image_meta, inst_type):
588
605
# In order for libvirt to make use of the bridge name then it has
589
606
# to ensure that the bridge exists
590
607
if 'should_create_bridge' not in mapping:
591
608
mapping['should_create_bridge'] = True
592
return self.get_config_bridge(instance, network, mapping, image_meta)
609
return self.get_config_bridge(instance, network, mapping, image_meta,
594
612
def plug(self, instance, vif):
595
613
self.plug_bridge(instance, vif)