summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvladimir.p <vladimir@zadarastorage.com>2011-07-22 17:12:14 -0700
committervladimir.p <vladimir@zadarastorage.com>2011-07-22 17:12:14 -0700
commita4f1ac011cdb086bf77ba3d2e14b9a34001cc8a7 (patch)
tree18d0a058d6fb5fe6df08320a463dfa08c4abc821
parent2b9181632786bdbb92911b4a6e7180cb06c8f9d8 (diff)
parentc3a0c914b17d3ad677208808162065b1688ec9ac (diff)
downloadnova-a4f1ac011cdb086bf77ba3d2e14b9a34001cc8a7.tar.gz
nova-a4f1ac011cdb086bf77ba3d2e14b9a34001cc8a7.tar.xz
nova-a4f1ac011cdb086bf77ba3d2e14b9a34001cc8a7.zip
Merged with 1306 + fix for dns change
-rwxr-xr-xbin/nova-manage22
-rw-r--r--nova/db/sqlalchemy/migrate_repo/versions/035_secondary_dns.py38
-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.py3
-rw-r--r--nova/network/manager.py16
-rw-r--r--nova/tests/__init__.py3
-rw-r--r--nova/tests/api/openstack/test_versions.py4
-rw-r--r--nova/tests/test_network.py6
-rw-r--r--nova/virt/libvirt/netutils.py8
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']