Merge "neutronv2: only create client once when adding/removing fixed IPs"

This commit is contained in:
Jenkins 2015-04-06 23:57:10 +00:00 committed by Gerrit Code Review
commit bf70df295b

View File

@ -802,8 +802,9 @@ class API(base_api.NetworkAPI):
@base_api.refresh_cache @base_api.refresh_cache
def add_fixed_ip_to_instance(self, context, instance, network_id): def add_fixed_ip_to_instance(self, context, instance, network_id):
"""Add a fixed ip to the instance from specified network.""" """Add a fixed ip to the instance from specified network."""
neutron = get_client(context)
search_opts = {'network_id': network_id} search_opts = {'network_id': network_id}
data = get_client(context).list_subnets(**search_opts) data = neutron.list_subnets(**search_opts)
ipam_subnets = data.get('subnets', []) ipam_subnets = data.get('subnets', [])
if not ipam_subnets: if not ipam_subnets:
raise exception.NetworkNotFoundForInstance( raise exception.NetworkNotFoundForInstance(
@ -813,7 +814,7 @@ class API(base_api.NetworkAPI):
search_opts = {'device_id': instance.uuid, search_opts = {'device_id': instance.uuid,
'device_owner': zone, 'device_owner': zone,
'network_id': network_id} 'network_id': network_id}
data = get_client(context).list_ports(**search_opts) data = neutron.list_ports(**search_opts)
ports = data['ports'] ports = data['ports']
for p in ports: for p in ports:
for subnet in ipam_subnets: for subnet in ipam_subnets:
@ -821,8 +822,7 @@ class API(base_api.NetworkAPI):
fixed_ips.append({'subnet_id': subnet['id']}) fixed_ips.append({'subnet_id': subnet['id']})
port_req_body = {'port': {'fixed_ips': fixed_ips}} port_req_body = {'port': {'fixed_ips': fixed_ips}}
try: try:
get_client(context).update_port(p['id'], neutron.update_port(p['id'], port_req_body)
port_req_body)
return self._get_instance_nw_info(context, instance) return self._get_instance_nw_info(context, instance)
except Exception as ex: except Exception as ex:
msg = ("Unable to update port %(portid)s on subnet " msg = ("Unable to update port %(portid)s on subnet "
@ -837,11 +837,12 @@ class API(base_api.NetworkAPI):
@base_api.refresh_cache @base_api.refresh_cache
def remove_fixed_ip_from_instance(self, context, instance, address): def remove_fixed_ip_from_instance(self, context, instance, address):
"""Remove a fixed ip from the instance.""" """Remove a fixed ip from the instance."""
neutron = get_client(context)
zone = 'compute:%s' % instance.availability_zone zone = 'compute:%s' % instance.availability_zone
search_opts = {'device_id': instance.uuid, search_opts = {'device_id': instance.uuid,
'device_owner': zone, 'device_owner': zone,
'fixed_ips': 'ip_address=%s' % address} 'fixed_ips': 'ip_address=%s' % address}
data = get_client(context).list_ports(**search_opts) data = neutron.list_ports(**search_opts)
ports = data['ports'] ports = data['ports']
for p in ports: for p in ports:
fixed_ips = p['fixed_ips'] fixed_ips = p['fixed_ips']
@ -851,8 +852,7 @@ class API(base_api.NetworkAPI):
new_fixed_ips.append(fixed_ip) new_fixed_ips.append(fixed_ip)
port_req_body = {'port': {'fixed_ips': new_fixed_ips}} port_req_body = {'port': {'fixed_ips': new_fixed_ips}}
try: try:
get_client(context).update_port(p['id'], neutron.update_port(p['id'], port_req_body)
port_req_body)
except Exception as ex: except Exception as ex:
msg = ("Unable to update port %(portid)s with" msg = ("Unable to update port %(portid)s with"
" failure: %(exception)s") " failure: %(exception)s")