Fix for external network gateway

Change-Id: I7565f6133fa5c22471a7047a4f6e029e00be10de
Closes-Bug: #1264107
This commit is contained in:
Nikolay Markov 2013-12-25 18:16:06 +04:00 committed by Dmitry Pyzhov
parent c47ef6b87d
commit 2169e2beed
2 changed files with 30 additions and 4 deletions

View File

@ -607,10 +607,16 @@ class NeutronNetworkDeploymentSerializer(NetworkDeploymentSerializer):
for net, net_conf in attrs['predefined_networks'].iteritems():
cidr = net_conf["L3"].pop("cidr")
net_conf["L3"]["subnet"] = pub.cidr if net == "net04_ext" else cidr
net_conf["L3"]["gateway"] = str(
IPNetwork(net_conf["L3"]["subnet"])[1]
)
if net == "net04_ext":
net_conf["L3"]["subnet"] = pub.cidr
if pub.gateway:
net_conf["L3"]["gateway"] = pub.gateway
else:
net_conf["L3"]["gateway"] = str(IPNetwork(pub.cidr)[1])
else:
net_conf["L3"]["subnet"] = cidr
if not net_conf["L3"]["gateway"]:
net_conf["L3"]["gateway"] = str(IPNetwork(cidr)[1])
net_conf["L3"]["floating"] = join_range(
net_conf["L3"]["floating"]
)

View File

@ -470,6 +470,26 @@ class TestNeutronOrchestratorSerializer(OrchestratorSerializerTestBase):
self.assertEquals(attrs['storage_address'],
node['storage_address'])
def test_neutron_l3_gateway(self):
cluster = self.create_env('multinode', 'gre')
test_gateway = "192.168.111.255"
public_ng = self.db.query(NetworkGroup).filter(
NetworkGroup.name == 'public'
).filter(
NetworkGroup.cluster_id == cluster.id
).first()
public_ng.gateway = test_gateway
self.db.add(public_ng)
self.db.commit()
facts = self.serializer.serialize(cluster, cluster.nodes)
pd_nets = facts[0]["quantum_settings"]["predefined_networks"]
self.assertEquals(
pd_nets["net04_ext"]["L3"]["gateway"],
test_gateway
)
def test_gre_segmentation(self):
cluster = self.create_env('multinode', 'gre')
facts = self.serializer.serialize(cluster, cluster.nodes)