Beispiel #1
0
    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)
Beispiel #2
0
 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)
Beispiel #4
0
 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)