def update_vip(self, context, old_vip, vip): new_pool = old_port_id = removed_ip = None new_pool_utif = new_pool_ip_allocation = None old_pool = {} members = monitors = [] if old_vip['pool_id'] != vip['pool_id']: new_pool = self.plugin.get_pool( context, vip['pool_id']) members = self.plugin.get_members( context, filters={'id': new_pool['members']}) monitors = self.plugin.get_members( context, filters={'id': new_pool['health_monitors']}) new_pool_port = edb.get_pool_port(context, new_pool["id"]) if new_pool_port: db_port = self.plugin._core_plugin._get_port( context, new_pool_port["port_id"]) new_pool_utif = self._retrieve_utif_info(context, db_port) new_pool_ip_allocation = utils.retrieve_ip_allocation_info( context, db_port) old_pool = self.plugin.get_pool( context, old_vip['pool_id']) old_pool_port = edb.get_pool_port(context, old_pool["id"]) if old_pool_port: old_port = self.plugin._core_plugin._get_port( context, old_pool_port['port_id']) # remove that subnet ip removed_ip = old_port['fixed_ips'][0]['ip_address'] old_port_id = old_port['id'] self._dispatcher.dispatch_lb( embrane_ctx.DispatcherContext(econ.Events.UPDATE_VIP, vip, context, None), old_pool.get('id'), old_port_id, removed_ip, new_pool_utif, new_pool_ip_allocation, new_pool, members, monitors)
def test_pool_port(self): with self.port(no_delete=True) as port: with self.pool() as pool: h_db.add_pool_port(context.get_admin_context(), pool['pool']['id'], port['port']['id']) pool_port = h_db.get_pool_port(context.get_admin_context(), pool['pool']['id']) self.assertIsNotNone(pool_port) pool_port = h_db.get_pool_port(context.get_admin_context(), pool['pool']['id']) self.assertIsNone(pool_port)
def test_pool_port(self): with self.port(do_delete=False) as port: with self.pool() as pool: h_db.add_pool_port(context.get_admin_context(), pool['pool']['id'], port['port']['id']) pool_port = h_db.get_pool_port(context.get_admin_context(), pool['pool']['id']) self.assertIsNotNone(pool_port) pool_port = h_db.get_pool_port(context.get_admin_context(), pool['pool']['id']) self.assertIsNone(pool_port)
def create_vip(self, context, vip): self._validate_vip(vip) db_vip = self.plugin.populate_vip_graph(context, vip) vip_port = self.plugin._core_plugin._get_port(context, db_vip['port_id']) vip_utif_info = self._retrieve_utif_info(context, vip_port) vip_ip_allocation_info = utils.retrieve_ip_allocation_info( context, vip_port) vip_ip_allocation_info.is_gw = True db_pool = pool_utif_info = pool_ip_allocation_info = None members = monitors = [] if db_vip['pool_id']: db_pool = self.plugin.get_pool( context, db_vip['pool_id']) pool_port = edb.get_pool_port(context, db_pool["id"]) if pool_port: db_port = self.plugin._core_plugin._get_port( context, pool_port["port_id"]) pool_utif_info = self._retrieve_utif_info(context, db_port) pool_ip_allocation_info = utils.retrieve_ip_allocation_info( context, db_port) members = self.plugin.get_members( context, filters={'id': db_pool['members']}) monitors = self.plugin.get_members( context, filters={'id': db_pool['health_monitors']}) self._dispatcher.dispatch_lb( embrane_ctx.DispatcherContext(econ.Events.CREATE_VIP, db_vip, context, None), self._flavor, vip_utif_info, vip_ip_allocation_info, pool_utif_info, pool_ip_allocation_info, db_pool, members, monitors)