diff options
| author | vladimir.p <vladimir@zadarastorage.com> | 2011-07-22 17:12:14 -0700 |
|---|---|---|
| committer | vladimir.p <vladimir@zadarastorage.com> | 2011-07-22 17:12:14 -0700 |
| commit | a4f1ac011cdb086bf77ba3d2e14b9a34001cc8a7 (patch) | |
| tree | 18d0a058d6fb5fe6df08320a463dfa08c4abc821 | |
| parent | 2b9181632786bdbb92911b4a6e7180cb06c8f9d8 (diff) | |
| parent | c3a0c914b17d3ad677208808162065b1688ec9ac (diff) | |
| download | nova-a4f1ac011cdb086bf77ba3d2e14b9a34001cc8a7.tar.gz nova-a4f1ac011cdb086bf77ba3d2e14b9a34001cc8a7.tar.xz nova-a4f1ac011cdb086bf77ba3d2e14b9a34001cc8a7.zip | |
Merged with 1306 + fix for dns change
| -rwxr-xr-x | bin/nova-manage | 22 | ||||
| -rw-r--r-- | nova/db/sqlalchemy/migrate_repo/versions/035_secondary_dns.py | 38 | ||||
| -rw-r--r-- | nova/db/sqlalchemy/migrate_repo/versions/036_add_vsa_data.py (renamed from nova/db/sqlalchemy/migrate_repo/versions/035_add_vsa_data.py) | 0 | ||||
| -rw-r--r-- | nova/db/sqlalchemy/models.py | 3 | ||||
| -rw-r--r-- | nova/network/manager.py | 16 | ||||
| -rw-r--r-- | nova/tests/__init__.py | 3 | ||||
| -rw-r--r-- | nova/tests/api/openstack/test_versions.py | 4 | ||||
| -rw-r--r-- | nova/tests/test_network.py | 6 | ||||
| -rw-r--r-- | nova/virt/libvirt/netutils.py | 8 |
9 files changed, 82 insertions, 18 deletions
diff --git a/bin/nova-manage b/bin/nova-manage index 9b9ea9823..0a2825c15 100755 --- a/bin/nova-manage +++ b/bin/nova-manage @@ -571,12 +571,14 @@ class NetworkCommands(object): def create(self, label=None, fixed_range=None, num_networks=None, network_size=None, multi_host=None, vlan_start=None, vpn_start=None, fixed_range_v6=None, gateway_v6=None, - flat_network_bridge=None, bridge_interface=None): + flat_network_bridge=None, bridge_interface=None, + dns1=None, dns2=None): """Creates fixed ips for host by range arguments: label, fixed_range, [num_networks=FLAG], [network_size=FLAG], [multi_host=FLAG], [vlan_start=FLAG], [vpn_start=FLAG], [fixed_range_v6=FLAG], [gateway_v6=FLAG], [flat_network_bridge=FLAG], [bridge_interface=FLAG] + [dns1=FLAG], [dns2] If you wish to use a later argument fill in the gaps with ""s Ex: network create private 10.0.0.0/8 1 16 T "" "" "" "" xenbr1 eth1 network create private 10.0.0.0/8 1 16 @@ -610,6 +612,8 @@ class NetworkCommands(object): bridge_interface = FLAGS.flat_interface or FLAGS.vlan_interface if not gateway_v6: gateway_v6 = FLAGS.gateway_v6 + if not dns1 and FLAGS.flat_network_dns: + dns1 = FLAGS.flat_network_dns net_manager = utils.import_object(FLAGS.network_manager) try: @@ -624,24 +628,30 @@ class NetworkCommands(object): cidr_v6=fixed_range_v6, gateway_v6=gateway_v6, bridge=flat_network_bridge, - bridge_interface=bridge_interface) + bridge_interface=bridge_interface, + dns1=dns1, + dns2=dns2) except ValueError, e: print e raise e def list(self): """List all created networks""" - print "%-18s\t%-15s\t%-15s\t%-15s\t%-15s\t%-15s" % (_('network'), + print "%-18s\t%-15s\t%-15s\t%-15s\t%-15s\t%-15s\t%-15s" % ( + _('network'), _('netmask'), _('start address'), - _('DNS'), + _('DNS1'), + _('DNS2'), _('VlanID'), 'project') for network in db.network_get_all(context.get_admin_context()): - print "%-18s\t%-15s\t%-15s\t%-15s\t%-15s\t%-15s" % (network.cidr, + print "%-18s\t%-15s\t%-15s\t%-15s\t%-15s\t%-15s\t%-15s" % ( + network.cidr, network.netmask, network.dhcp_start, - network.dns, + network.dns1, + network.dns2, network.vlan, network.project_id) diff --git a/nova/db/sqlalchemy/migrate_repo/versions/035_secondary_dns.py b/nova/db/sqlalchemy/migrate_repo/versions/035_secondary_dns.py new file mode 100644 index 000000000..c938eb716 --- /dev/null +++ b/nova/db/sqlalchemy/migrate_repo/versions/035_secondary_dns.py @@ -0,0 +1,38 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright (c) 2011 OpenStack, LLC. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from sqlalchemy import Column, Table, MetaData, Boolean, String + +meta = MetaData() + +dns2 = Column('dns2', String(255)) + + +def upgrade(migrate_engine): + meta.bind = migrate_engine + + networks = Table('networks', meta, autoload=True) + networks.c.dns.alter(Column('dns1', String(255))) + networks.create_column(dns2) + + +def downgrade(migrate_engine): + meta.bind = migrate_engine + + networks = Table('networks', meta, autoload=True) + networks.c.dns1.alter(Column('dns', String(255))) + networks.drop_column(dns2) diff --git a/nova/db/sqlalchemy/migrate_repo/versions/035_add_vsa_data.py b/nova/db/sqlalchemy/migrate_repo/versions/036_add_vsa_data.py index 7fc8f955c..7fc8f955c 100644 --- a/nova/db/sqlalchemy/migrate_repo/versions/035_add_vsa_data.py +++ b/nova/db/sqlalchemy/migrate_repo/versions/036_add_vsa_data.py diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py index 10acdbb2e..fbc8e9e19 100644 --- a/nova/db/sqlalchemy/models.py +++ b/nova/db/sqlalchemy/models.py @@ -650,7 +650,8 @@ class Network(BASE, NovaBase): bridge_interface = Column(String(255)) gateway = Column(String(255)) broadcast = Column(String(255)) - dns = Column(String(255)) + dns1 = Column(String(255)) + dns2 = Column(String(255)) vlan = Column(Integer) vpn_public_address = Column(String(255)) diff --git a/nova/network/manager.py b/nova/network/manager.py index 8ac66cdc3..7301df64b 100644 --- a/nova/network/manager.py +++ b/nova/network/manager.py @@ -472,13 +472,18 @@ class NetworkManager(manager.SchedulerDependentManager): 'broadcast': network['broadcast'], 'mac': vif['address'], 'rxtx_cap': flavor['rxtx_cap'], - 'dns': [network['dns']], + 'dns': [], 'ips': [ip_dict(ip) for ip in network_IPs]} if network['cidr_v6']: info['ip6s'] = [ip6_dict()] # TODO(tr3buchet): handle ip6 routes here as well if network['gateway_v6']: info['gateway6'] = network['gateway_v6'] + if network['dns1']: + info['dns'].append(network['dns1']) + if network['dns2']: + info['dns'].append(network['dns2']) + network_info.append((network_dict, info)) return network_info @@ -589,7 +594,7 @@ class NetworkManager(manager.SchedulerDependentManager): def create_networks(self, context, label, cidr, multi_host, num_networks, network_size, cidr_v6, gateway_v6, bridge, - bridge_interface, **kwargs): + bridge_interface, dns1=None, dns2=None, **kwargs): """Create networks based on parameters.""" fixed_net = netaddr.IPNetwork(cidr) fixed_net_v6 = netaddr.IPNetwork(cidr_v6) @@ -604,7 +609,8 @@ class NetworkManager(manager.SchedulerDependentManager): net = {} net['bridge'] = bridge net['bridge_interface'] = bridge_interface - net['dns'] = FLAGS.flat_network_dns + net['dns1'] = dns1 + net['dns2'] = dns2 net['cidr'] = cidr net['multi_host'] = multi_host net['netmask'] = str(project_net.netmask) @@ -633,7 +639,8 @@ class NetworkManager(manager.SchedulerDependentManager): if kwargs.get('vpn', False): # this bit here is for vlan-manager - del net['dns'] + del net['dns1'] + del net['dns2'] vlan = kwargs['vlan_start'] + index net['vpn_private_address'] = str(project_net[2]) net['dhcp_start'] = str(project_net[3]) @@ -753,7 +760,6 @@ class FlatManager(NetworkManager): """Setup Network on this host.""" net = {} net['injected'] = FLAGS.flat_injected - net['dns'] = FLAGS.flat_network_dns self.db.network_update(context, network_ref['id'], net) diff --git a/nova/tests/__init__.py b/nova/tests/__init__.py index 7df6c06eb..720d5b0e6 100644 --- a/nova/tests/__init__.py +++ b/nova/tests/__init__.py @@ -67,7 +67,8 @@ def setup(): bridge=FLAGS.flat_network_bridge, bridge_interface=bridge_interface, vpn_start=FLAGS.vpn_start, - vlan_start=FLAGS.vlan_start) + vlan_start=FLAGS.vlan_start, + dns1=FLAGS.flat_network_dns) for net in db.network_get_all(ctxt): network.set_network_host(ctxt, net) diff --git a/nova/tests/api/openstack/test_versions.py b/nova/tests/api/openstack/test_versions.py index 0eae18a62..da964ee1f 100644 --- a/nova/tests/api/openstack/test_versions.py +++ b/nova/tests/api/openstack/test_versions.py @@ -174,7 +174,7 @@ class VersionsTest(test.TestCase): { "rel": "self", "href": "http://test/2.7.1", - } + }, ], }, ] @@ -204,7 +204,7 @@ class VersionsTest(test.TestCase): { "rel": "self", "href": "http://test/2.9.8", - } + }, ], }, ] diff --git a/nova/tests/test_network.py b/nova/tests/test_network.py index d30c5e9e5..fbe7d769e 100644 --- a/nova/tests/test_network.py +++ b/nova/tests/test_network.py @@ -55,7 +55,8 @@ networks = [{'id': 0, 'bridge_interface': 'fake_fa0', 'gateway': '192.168.0.1', 'broadcast': '192.168.0.255', - 'dns': '192.168.0.1', + 'dns1': '192.168.0.1', + 'dns2': '192.168.0.2', 'vlan': None, 'host': None, 'project_id': 'fake_project', @@ -73,7 +74,8 @@ networks = [{'id': 0, 'bridge_interface': 'fake_fa1', 'gateway': '192.168.1.1', 'broadcast': '192.168.1.255', - 'dns': '192.168.0.1', + 'dns1': '192.168.0.1', + 'dns2': '192.168.0.2', 'vlan': None, 'host': None, 'project_id': 'fake_project', diff --git a/nova/virt/libvirt/netutils.py b/nova/virt/libvirt/netutils.py index 8d36c0a05..c0d808cd3 100644 --- a/nova/virt/libvirt/netutils.py +++ b/nova/virt/libvirt/netutils.py @@ -91,9 +91,15 @@ def get_network_info(instance): 'broadcast': network['broadcast'], 'mac': vif['address'], 'rxtx_cap': flavor['rxtx_cap'], - 'dns': [network['dns']], + 'dns': [], 'ips': [ip_dict(ip) for ip in network_ips]} + if network['dns1']: + mapping['dns'].append(network['dns1']) + if network['dns2']: + mapping['dns'].append(network['dns2']) + + if FLAGS.use_ipv6: mapping['ip6s'] = [ip6_dict()] mapping['gateway6'] = network['gateway_v6'] |
