summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Kölker <jason@koelker.net>2012-02-08 11:50:26 -0600
committerJason Kölker <jason@koelker.net>2012-02-08 11:56:18 -0600
commitd7b032b0d5f99c865e320e2e0d75f36d689d49fe (patch)
treeb6b6c918b54b5dad0f74c212bb50782d7803167c
parent27ac9d5f0ca4279753ee2984769094f2b4191619 (diff)
Set port security for all allocated ips
Fixes LP929018 Change-Id: Iab56cb815381eb4832358053bde8ddc70f9c4ef6
-rw-r--r--nova/network/quantum/manager.py4
-rw-r--r--nova/network/quantum/melange_ipam_lib.py12
-rw-r--r--nova/network/quantum/nova_ipam_lib.py6
3 files changed, 11 insertions, 11 deletions
diff --git a/nova/network/quantum/manager.py b/nova/network/quantum/manager.py
index 8f2aa0a4a..341c3b5e3 100644
--- a/nova/network/quantum/manager.py
+++ b/nova/network/quantum/manager.py
@@ -341,13 +341,13 @@ class QuantumManager(manager.FloatingIP, manager.FlatManager):
rxtx_factor = instance_type['rxtx_factor']
nova_id = self._get_nova_id(instance)
# Tell the ipam library to allocate an IP
- ip = self.ipam.allocate_fixed_ip(context, project_id,
+ ips = self.ipam.allocate_fixed_ips(context, project_id,
quantum_net_id, net_tenant_id, vif_rec)
pairs = []
# Set up port security if enabled
if FLAGS.quantum_use_port_security:
pairs = [{'mac_address': vif_rec['address'],
- 'ip_address': ip}]
+ 'ip_address': ip} for ip in ips]
self.q_conn.create_and_attach_port(net_tenant_id, quantum_net_id,
vif_rec['uuid'],
vm_id=instance['uuid'],
diff --git a/nova/network/quantum/melange_ipam_lib.py b/nova/network/quantum/melange_ipam_lib.py
index 735107d98..dff7f0893 100644
--- a/nova/network/quantum/melange_ipam_lib.py
+++ b/nova/network/quantum/melange_ipam_lib.py
@@ -79,13 +79,13 @@ class QuantumMelangeIPAMLib(object):
admin_context = context.elevated()
network = db.network_create_safe(admin_context, net)
- def allocate_fixed_ip(self, context, project_id, quantum_net_id,
- network_tenant_id, vif_ref):
+ def allocate_fixed_ips(self, context, project_id, quantum_net_id,
+ network_tenant_id, vif_ref):
"""Pass call to allocate fixed IP on to Melange"""
- ip = self.m_conn.allocate_ip(quantum_net_id, network_tenant_id,
- vif_ref['uuid'], project_id,
- vif_ref['address'])
- return ip[0]['address']
+ ips = self.m_conn.allocate_ip(quantum_net_id, network_tenant_id,
+ vif_ref['uuid'], project_id,
+ vif_ref['address'])
+ return [ip['address'] for ip in ips]
def get_network_id_by_cidr(self, context, cidr, project_id):
"""Find the Quantum UUID associated with a IPv4 CIDR
diff --git a/nova/network/quantum/nova_ipam_lib.py b/nova/network/quantum/nova_ipam_lib.py
index 2049b6aaa..e56872c4b 100644
--- a/nova/network/quantum/nova_ipam_lib.py
+++ b/nova/network/quantum/nova_ipam_lib.py
@@ -129,8 +129,8 @@ class QuantumNovaIPAMLib(object):
id_priority_map[net_id] = n['priority']
return sorted(net_list, key=lambda x: id_priority_map[x[0]])
- def allocate_fixed_ip(self, context, tenant_id, quantum_net_id,
- network_tenant_id, vif_rec):
+ def allocate_fixed_ips(self, context, tenant_id, quantum_net_id,
+ network_tenant_id, vif_rec):
"""Allocates a single fixed IPv4 address for a virtual interface."""
admin_context = context.elevated()
network = db.network_get_by_uuid(admin_context, quantum_net_id)
@@ -142,7 +142,7 @@ class QuantumNovaIPAMLib(object):
values = {'allocated': True,
'virtual_interface_id': vif_rec['id']}
db.fixed_ip_update(admin_context, address, values)
- return address
+ return [address]
def get_tenant_id_by_net_id(self, context, net_id, vif_id, project_id):
"""Returns tenant_id for this network. This is only necessary