From f867a61735630f3a72e1802e06e4e18a3e27353b Mon Sep 17 00:00:00 2001 From: Rudra Rugge Date: Wed, 27 Jan 2016 11:18:55 -0800 Subject: [PATCH] LBAASv2: FIP disassociate and associate FIP disassociate and associate to vip port doesnt add fip refs to the SI right VMI interfaces. This is because the code refered only to the virtual_ip link from v1. We need to add link to loadbalancer for v2. Change-Id: I8062ba3402541d2b7e92ad7f43167298dc0a9514 Closes-Bug: #1538396 --- src/config/svc-monitor/svc_monitor/config_db.py | 3 +++ src/config/svc-monitor/svc_monitor/instance_manager.py | 7 +++++-- src/config/svc-monitor/svc_monitor/svc_monitor.py | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/config/svc-monitor/svc_monitor/config_db.py b/src/config/svc-monitor/svc_monitor/config_db.py index 8ce29253d60..dc4461e8318 100644 --- a/src/config/svc-monitor/svc_monitor/config_db.py +++ b/src/config/svc-monitor/svc_monitor/config_db.py @@ -363,6 +363,7 @@ def __init__(self, uuid, obj_dict=None): self.params = None self.if_type = None self.virtual_ip = None + self.loadbalancer = None self.virtual_network = None self.virtual_machine = None self.loadbalancer_pool = None @@ -393,6 +394,7 @@ def update(self, obj=None): if self.aaps: self.aaps = self.aaps.get('allowed_address_pair', None) self.update_single_ref('virtual_ip', obj) + self.update_single_ref('loadbalancer', obj) self.update_single_ref('loadbalancer_pool', obj) self.update_multiple_refs('instance_ip', obj) self.update_multiple_refs('floating_ip', obj) @@ -417,6 +419,7 @@ def delete(cls, uuid): return obj = cls._dict[uuid] obj.update_single_ref('virtual_ip', {}) + obj.update_single_ref('loadbalancer', {}) obj.update_single_ref('loadbalancer_pool', {}) obj.update_multiple_refs('instance_ip', {}) obj.update_multiple_refs('floating_ip', {}) diff --git a/src/config/svc-monitor/svc_monitor/instance_manager.py b/src/config/svc-monitor/svc_monitor/instance_manager.py index 23c9d24a500..55ed5f24e3c 100644 --- a/src/config/svc-monitor/svc_monitor/instance_manager.py +++ b/src/config/svc-monitor/svc_monitor/instance_manager.py @@ -153,9 +153,12 @@ def _link_and_update_iip(self, si, vmi_obj, iip_obj, iipv6_obj): def _link_fip_to_vmi(self, vmi_obj, fip_id): fip = FloatingIpSM.get(fip_id) - if fip: + if not fip: + return + + if vmi_obj.uuid not in fip.virtual_machine_interfaces: self._vnc_lib.ref_update('floating-ip', fip_id, - 'virtual-machine-interface', vmi_obj.uuid, None, 'ADD') + 'virtual-machine-interface', vmi_obj.uuid, None, 'ADD') def _set_static_routes(self, nic, si): static_routes = nic['static-routes'] diff --git a/src/config/svc-monitor/svc_monitor/svc_monitor.py b/src/config/svc-monitor/svc_monitor/svc_monitor.py index 1b5f1f35391..7530c9acde7 100644 --- a/src/config/svc-monitor/svc_monitor/svc_monitor.py +++ b/src/config/svc-monitor/svc_monitor/svc_monitor.py @@ -326,6 +326,8 @@ def _vnc_subscribe_actions(self, oper_info): vmi = VirtualMachineInterfaceSM.get(vmi_id) if vmi and vmi.virtual_ip: self.netns_manager.add_fip_to_vip_vmi(vmi, fip) + elif vmi and vmi.loadbalancer: + self.netns_manager.add_fip_to_vip_vmi(vmi, fip) for lr_id in dependency_tracker.resources.get('logical_router', []): lr = LogicalRouterSM.get(lr_id)