29
29
FLAGS = flags.FLAGS
31
flags.DECLARE('injected_network_template', 'nova.virt.disk.api')
36
def _late_load_cheetah():
39
t = __import__('Cheetah.Template', globals(), locals(),
32
44
def get_net_and_mask(cidr):
33
45
net = netaddr.IPNetwork(cidr)
42
54
def get_ip_version(cidr):
43
55
net = netaddr.IPNetwork(cidr)
44
56
return int(net.version)
59
def get_injected_network_template(network_info, use_ipv6=FLAGS.use_ipv6,
60
template=FLAGS.injected_network_template):
62
return a rendered network template for the given network_info
65
:py:meth:`~nova.network.manager.NetworkManager.get_instance_nw_info`
67
Note: this code actually depends on the legacy network_info, but will
68
convert the type itself if necessary.
71
# the code below depends on the legacy 'network_info'
72
if hasattr(network_info, 'legacy'):
73
network_info = network_info.legacy()
77
have_injected_networks = False
79
for (network_ref, mapping) in network_info:
82
if not network_ref['injected']:
85
have_injected_networks = True
86
address = mapping['ips'][0]['ip']
87
netmask = mapping['ips'][0]['netmask']
92
address_v6 = mapping['ip6s'][0]['ip']
93
netmask_v6 = mapping['ip6s'][0]['netmask']
94
gateway_v6 = mapping['gateway_v6']
95
net_info = {'name': 'eth%d' % ifc_num,
98
'gateway': mapping['gateway'],
99
'broadcast': mapping['broadcast'],
100
'dns': ' '.join(mapping['dns']),
101
'address_v6': address_v6,
102
'gateway_v6': gateway_v6,
103
'netmask_v6': netmask_v6}
104
nets.append(net_info)
106
if have_injected_networks is False:
114
ifc_template = open(template).read()
115
return str(Template(ifc_template,
116
searchList=[{'interfaces': nets,
117
'use_ipv6': use_ipv6}]))