author | chaithan.prakash@oracle.com <chaithan.prakash@oracle.com> |
Wed, 08 Jun 2016 12:20:02 -0700 | |
changeset 6153 | e1758cabe679 |
parent 6130 | 9a454a2f1c35 |
child 6848 | 8e252a37ed0d |
permissions | -rw-r--r-- |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
1 |
# vim: tabstop=4 shiftwidth=4 softtabstop=4 |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
2 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
3 |
# Copyright 2012 OpenStack Foundation |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
4 |
# All Rights Reserved. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
5 |
# |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
5405
diff
changeset
|
6 |
# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved. |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
7 |
# |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
8 |
# Licensed under the Apache License, Version 2.0 (the "License"); you may |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
9 |
# not use this file except in compliance with the License. You may obtain |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
10 |
# a copy of the License at |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
11 |
# |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
12 |
# http://www.apache.org/licenses/LICENSE-2.0 |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
13 |
# |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
14 |
# Unless required by applicable law or agreed to in writing, software |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
15 |
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
16 |
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
17 |
# License for the specific language governing permissions and limitations |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
18 |
# under the License. |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
19 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
20 |
import abc |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
21 |
import netaddr |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
22 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
23 |
from oslo.config import cfg |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
24 |
from oslo_log import log as logging |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
25 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
26 |
from neutron.agent.linux import utils |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
27 |
from neutron.agent.linux import dhcp |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
28 |
from neutron.agent.solaris import net_lib |
3524
ad6a9e0880b9
20089330 Horizon reports "Error: Unable to contact Neutron" on large data set
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1987
diff
changeset
|
29 |
from neutron.common import constants |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
30 |
from neutron.common import exceptions |
4975
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
3998
diff
changeset
|
31 |
from neutron.common import ipv6_utils |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
32 |
|
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
33 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
34 |
LOG = logging.getLogger(__name__) |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
35 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
36 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
37 |
class Dnsmasq(dhcp.Dnsmasq): |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
38 |
""" Wrapper around Linux implementation of Dnsmasq.""" |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
39 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
40 |
def __init__(self, conf, network, process_monitor, version=None, |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
41 |
plugin=None): |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
42 |
super(Dnsmasq, self).__init__(conf, network, process_monitor, |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
43 |
version, plugin) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
44 |
self.device_manager = DeviceManager(self.conf, plugin) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
45 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
46 |
def _build_cmdline_callback(self, pid_file): |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
47 |
cmd = [ |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
48 |
'/usr/lib/inet/dnsmasq', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
49 |
'--no-hosts', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
50 |
'--no-resolv', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
51 |
'--strict-order', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
52 |
'--bind-interfaces', |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
53 |
'--interface=%s' % self.interface_name, |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
54 |
'--except-interface=lo0', |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
55 |
'--pid-file=%s' % pid_file, |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
56 |
'--dhcp-hostsfile=%s' % self.get_conf_file_name('host'), |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
57 |
'--addn-hosts=%s' % self.get_conf_file_name('addn_hosts'), |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
58 |
'--dhcp-optsfile=%s' % self.get_conf_file_name('opts'), |
6130
9a454a2f1c35
23506589 Need to modify args passed to dnsmasq in solaris/dhcp.py
Vardhnee Ramanujam Ravi <vardhnee.ramanujam.ravi@oracle.com>
parents:
6123
diff
changeset
|
59 |
'--dhcp-leasefile=%s' % self.get_conf_file_name('leases') |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
60 |
] |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
61 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
62 |
possible_leases = 0 |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
63 |
for i, subnet in enumerate(self.network.subnets): |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
64 |
mode = None |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
65 |
# if a subnet is specified to have dhcp disabled |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
66 |
if not subnet.enable_dhcp: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
67 |
continue |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
68 |
if subnet.ip_version == 4: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
69 |
mode = 'static' |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
70 |
else: |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
71 |
# We need to also set the DUID for the DHCPv6 server to use |
1872
0b81e3d9f3ae
18698425 DHCP and L3 agent are unable to plumb VNICs with IPv6 address
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1760
diff
changeset
|
72 |
macaddr_cmd = ['/usr/sbin/dladm', 'show-linkprop', |
0b81e3d9f3ae
18698425 DHCP and L3 agent are unable to plumb VNICs with IPv6 address
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1760
diff
changeset
|
73 |
'-co', 'value', '-p', 'mac-address', |
0b81e3d9f3ae
18698425 DHCP and L3 agent are unable to plumb VNICs with IPv6 address
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1760
diff
changeset
|
74 |
self.interface_name] |
0b81e3d9f3ae
18698425 DHCP and L3 agent are unable to plumb VNICs with IPv6 address
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1760
diff
changeset
|
75 |
stdout = utils.execute(macaddr_cmd) |
0b81e3d9f3ae
18698425 DHCP and L3 agent are unable to plumb VNICs with IPv6 address
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1760
diff
changeset
|
76 |
uid = stdout.splitlines()[0].strip() |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
77 |
# format the MAC address |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
78 |
uid = ':'.join(['%.2x' % w for w in netaddr.EUI(uid).words]) |
1872
0b81e3d9f3ae
18698425 DHCP and L3 agent are unable to plumb VNICs with IPv6 address
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1760
diff
changeset
|
79 |
# IANA assigned ID for Oracle |
0b81e3d9f3ae
18698425 DHCP and L3 agent are unable to plumb VNICs with IPv6 address
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1760
diff
changeset
|
80 |
enterprise_id = '111' |
0b81e3d9f3ae
18698425 DHCP and L3 agent are unable to plumb VNICs with IPv6 address
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1760
diff
changeset
|
81 |
cmd.append('--dhcp-duid=%s,%s' % (enterprise_id, uid)) |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
82 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
83 |
# Note(scollins) If the IPv6 attributes are not set, set it as |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
84 |
# static to preserve previous behavior |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
85 |
addr_mode = getattr(subnet, 'ipv6_address_mode', None) |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
86 |
ra_mode = getattr(subnet, 'ipv6_ra_mode', None) |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
87 |
if (addr_mode in [constants.DHCPV6_STATEFUL, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
88 |
constants.DHCPV6_STATELESS] or |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
89 |
not addr_mode and not ra_mode): |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
90 |
mode = 'static' |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
91 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
92 |
cidr = netaddr.IPNetwork(subnet.cidr) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
93 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
94 |
if self.conf.dhcp_lease_duration == -1: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
95 |
lease = 'infinite' |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
96 |
else: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
97 |
lease = '%ss' % self.conf.dhcp_lease_duration |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
98 |
|
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
99 |
# mode is optional and is not set - skip it |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
100 |
if mode: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
101 |
if subnet.ip_version == 4: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
102 |
cmd.append('--dhcp-range=%s%s,%s,%s,%s' % |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
103 |
('set:', self._TAG_PREFIX % i, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
104 |
cidr.network, mode, lease)) |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
105 |
else: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
106 |
cmd.append('--dhcp-range=%s%s,%s,%s,%d,%s' % |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
107 |
('set:', self._TAG_PREFIX % i, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
108 |
cidr.network, mode, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
109 |
cidr.prefixlen, lease)) |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
110 |
possible_leases += cidr.size |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
111 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
112 |
if cfg.CONF.advertise_mtu: |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
113 |
mtu = self.network.mtu |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
114 |
# Do not advertise unknown mtu |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
115 |
if mtu > 0: |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
116 |
cmd.append('--dhcp-option-force=option:mtu,%d' % mtu) |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
117 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
118 |
# Cap the limit because creating lots of subnets can inflate |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
119 |
# this possible lease cap. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
120 |
cmd.append('--dhcp-lease-max=%d' % |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
121 |
min(possible_leases, self.conf.dnsmasq_lease_max)) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
122 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
123 |
cmd.append('--conf-file=%s' % self.conf.dnsmasq_config_file) |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
124 |
if self.conf.dnsmasq_dns_servers: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
125 |
cmd.extend( |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
126 |
'--server=%s' % server |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
127 |
for server in self.conf.dnsmasq_dns_servers) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
128 |
|
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
129 |
if self.conf.dhcp_domain: |
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
130 |
cmd.append('--domain=%s' % self.conf.dhcp_domain) |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
131 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
132 |
if self.conf.dhcp_broadcast_reply: |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
133 |
cmd.append('--dhcp-broadcast') |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
134 |
|
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
135 |
return cmd |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
136 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
137 |
def _release_lease(self, mac_address, ip): |
1987
6fa18b7a0af6
19158668 associating a new floating ip removes existing ipnat rules and re-adds them
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1944
diff
changeset
|
138 |
"""Release a DHCP lease.""" |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
139 |
cmd = ['/usr/lib/inet/dhcp_release', self.interface_name, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
140 |
ip, mac_address] |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
141 |
utils.execute(cmd) |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
142 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
143 |
def _make_subnet_interface_ip_map(self): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
144 |
# TODO(gmoodalb): need to complete this when we support metadata |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
145 |
# in neutron-dhcp-agent as-well for isolated subnets |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
146 |
pass |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
147 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
148 |
@classmethod |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
149 |
def should_enable_metadata(cls, conf, network): |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
150 |
# TODO(gmoodalb): need to complete this when we support metadata |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
151 |
# in neutron-dhcp-agent as-well for isolated subnets |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
152 |
return False |
1760
353323c7bdc1
PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
153 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
154 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
155 |
class DeviceManager(dhcp.DeviceManager): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
156 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
157 |
def __init__(self, conf, plugin): |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
158 |
super(DeviceManager, self).__init__(conf, plugin) |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
159 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
160 |
def setup_dhcp_port(self, network): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
161 |
"""Create/update DHCP port for the host if needed and return port.""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
162 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
163 |
device_id = self.get_device_id(network) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
164 |
subnets = {} |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
165 |
dhcp_enabled_subnet_ids = [] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
166 |
for subnet in network.subnets: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
167 |
if subnet.enable_dhcp: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
168 |
dhcp_enabled_subnet_ids.append(subnet.id) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
169 |
subnets[subnet.id] = subnet |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
170 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
171 |
dhcp_port = None |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
172 |
for port in network.ports: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
173 |
port_device_id = getattr(port, 'device_id', None) |
3524
ad6a9e0880b9
20089330 Horizon reports "Error: Unable to contact Neutron" on large data set
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1987
diff
changeset
|
174 |
port_device_owner = getattr(port, 'device_owner', None) |
ad6a9e0880b9
20089330 Horizon reports "Error: Unable to contact Neutron" on large data set
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1987
diff
changeset
|
175 |
|
ad6a9e0880b9
20089330 Horizon reports "Error: Unable to contact Neutron" on large data set
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1987
diff
changeset
|
176 |
# if the agent is started on a different node, then the |
ad6a9e0880b9
20089330 Horizon reports "Error: Unable to contact Neutron" on large data set
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1987
diff
changeset
|
177 |
# device_ids will be different since they are based off |
ad6a9e0880b9
20089330 Horizon reports "Error: Unable to contact Neutron" on large data set
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1987
diff
changeset
|
178 |
# hostname. |
ad6a9e0880b9
20089330 Horizon reports "Error: Unable to contact Neutron" on large data set
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1987
diff
changeset
|
179 |
if (port_device_id == device_id or |
ad6a9e0880b9
20089330 Horizon reports "Error: Unable to contact Neutron" on large data set
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1987
diff
changeset
|
180 |
(port_device_owner == constants.DEVICE_OWNER_DHCP and |
ad6a9e0880b9
20089330 Horizon reports "Error: Unable to contact Neutron" on large data set
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
1987
diff
changeset
|
181 |
port_device_id.startswith('dhcp'))): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
182 |
port_fixed_ips = [] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
183 |
for fixed_ip in port.fixed_ips: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
184 |
port_fixed_ips.append({'subnet_id': fixed_ip.subnet_id, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
185 |
'ip_address': fixed_ip.ip_address}) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
186 |
if fixed_ip.subnet_id in dhcp_enabled_subnet_ids: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
187 |
dhcp_enabled_subnet_ids.remove(fixed_ip.subnet_id) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
188 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
189 |
# If there are dhcp_enabled_subnet_ids here that means that |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
190 |
# we need to add those to the port and call update. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
191 |
if dhcp_enabled_subnet_ids: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
192 |
port_fixed_ips.extend( |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
193 |
[dict(subnet_id=s) for s in dhcp_enabled_subnet_ids]) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
194 |
dhcp_port = self.plugin.update_dhcp_port( |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
195 |
port.id, {'port': {'network_id': network.id, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
196 |
'fixed_ips': port_fixed_ips}}) |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
197 |
if not dhcp_port: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
198 |
raise exceptions.Conflict() |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
199 |
else: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
200 |
dhcp_port = port |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
201 |
# break since we found port that matches device_id |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
202 |
break |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
203 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
204 |
# check for a reserved DHCP port |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
205 |
if dhcp_port is None: |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
206 |
LOG.debug('DHCP port %(device_id)s on network %(network_id)s' |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
207 |
' does not yet exist. Checking for a reserved port.', |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
208 |
{'device_id': device_id, 'network_id': network.id}) |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
209 |
for port in network.ports: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
210 |
port_device_id = getattr(port, 'device_id', None) |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
211 |
if port_device_id == constants.DEVICE_ID_RESERVED_DHCP_PORT: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
212 |
dhcp_port = self.plugin.update_dhcp_port( |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
213 |
port.id, {'port': {'network_id': network.id, |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
214 |
'device_id': device_id}}) |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
215 |
if dhcp_port: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
216 |
break |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
217 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
218 |
# DHCP port has not yet been created. |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
219 |
if dhcp_port is None: |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
220 |
LOG.debug('DHCP port %(device_id)s on network %(network_id)s' |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
221 |
' does not yet exist.', {'device_id': device_id, |
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
222 |
'network_id': network.id}) |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
223 |
port_dict = dict( |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
224 |
name='', |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
225 |
admin_state_up=True, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
226 |
device_id=device_id, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
227 |
network_id=network.id, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
228 |
tenant_id=network.tenant_id, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
229 |
fixed_ips=[dict(subnet_id=s) for s in dhcp_enabled_subnet_ids]) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
230 |
dhcp_port = self.plugin.create_dhcp_port({'port': port_dict}) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
231 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
232 |
if not dhcp_port: |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
233 |
raise exceptions.Conflict() |
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
234 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
235 |
# Convert subnet_id to subnet dict |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
236 |
fixed_ips = [dict(subnet_id=fixed_ip.subnet_id, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
237 |
ip_address=fixed_ip.ip_address, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
238 |
subnet=subnets[fixed_ip.subnet_id]) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
239 |
for fixed_ip in dhcp_port.fixed_ips] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
240 |
|
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
241 |
ips = [dhcp.DictModel(item) if isinstance(item, dict) else item |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
242 |
for item in fixed_ips] |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
243 |
dhcp_port.fixed_ips = ips |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
244 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
245 |
return dhcp_port |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
246 |
|
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
247 |
def setup(self, network): |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
248 |
"""Create and initialize a device for network's DHCP on this host.""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
249 |
port = self.setup_dhcp_port(network) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
250 |
interface_name = self.get_interface_name(network, port) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
251 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
252 |
if net_lib.Datalink.datalink_exists(interface_name): |
5405
66fd59fecd68
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
4975
diff
changeset
|
253 |
LOG.debug('Reusing existing device: %s.', interface_name) |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
254 |
else: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
255 |
self.driver.plug(network.tenant_id, network.id, |
6031
1aaf20a19738
PSARC/2016/251 OpenStack Neutron ML2 framework and OVS mechanism driver
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
5405
diff
changeset
|
256 |
port.id, interface_name, port.mac_address, |
6123
806b9ac912fa
23480374 network_info is incorrectly checked against None when it can be [] as well
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6031
diff
changeset
|
257 |
network=network, |
6153
e1758cabe679
23549840 Unable to create dhcp and l3 vnics with EVS interface driver
chaithan.prakash@oracle.com <chaithan.prakash@oracle.com>
parents:
6130
diff
changeset
|
258 |
vif_type=getattr(port, 'binding:vif_type', None)) |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
259 |
ip_cidrs = [] |
4975
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
3998
diff
changeset
|
260 |
addrconf = False |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
261 |
for fixed_ip in port.fixed_ips: |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
262 |
subnet = fixed_ip.subnet |
4975
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
3998
diff
changeset
|
263 |
if not ipv6_utils.is_auto_address_subnet(subnet): |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
3998
diff
changeset
|
264 |
net = netaddr.IPNetwork(subnet.cidr) |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
3998
diff
changeset
|
265 |
ip_cidr = '%s/%s' % (fixed_ip.ip_address, net.prefixlen) |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
3998
diff
changeset
|
266 |
ip_cidrs.append(ip_cidr) |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
3998
diff
changeset
|
267 |
else: |
6445e44cfccd
21978756 addrconf addresses must be created for stateless and slaac Neutron subnets
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents:
3998
diff
changeset
|
268 |
addrconf = True |
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
269 |
|
6130
9a454a2f1c35
23506589 Need to modify args passed to dnsmasq in solaris/dhcp.py
Vardhnee Ramanujam Ravi <vardhnee.ramanujam.ravi@oracle.com>
parents:
6123
diff
changeset
|
270 |
self.driver.init_l3(interface_name, ip_cidrs, addrconf=addrconf) |
3998
5bd484384122
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
3524
diff
changeset
|
271 |
|
1944
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
272 |
return interface_name |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
273 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
274 |
def destroy(self, network, device_name): |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
275 |
"""Destroy the device used for the network's DHCP on this host.""" |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
276 |
|
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
277 |
self.driver.fini_l3(device_name) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
278 |
self.driver.unplug(device_name) |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
279 |
self.plugin.release_dhcp_port(network.id, |
56ac2df1785b
PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents:
1872
diff
changeset
|
280 |
self.get_device_id(network)) |