Exemple #1
0
    def create_floatingip(self, context, floatingip):
        result = self._l3super.create_floatingip(
            self, context, floatingip)

        if result["port_id"]:
            neutron_router = self._get_router(context, result["router_id"])
            db_fixed_port = self._get_port(context, result["port_id"])
            fixed_prefix = self._retrieve_prefix_from_port(context,
                                                           db_fixed_port)
            db_floating_port = neutron_router["gw_port"]
            floating_prefix = self._retrieve_prefix_from_port(
                context, db_floating_port)
            nat_info = utils.retrieve_nat_info(context, result,
                                               fixed_prefix,
                                               floating_prefix,
                                               neutron_router)
            state_change = operation.Operation(
                self._set_db_router_state,
                args=(context, neutron_router, p_con.Status.UPDATING))

            self._dispatcher.dispatch_l3(
                d_context=embrane_ctx.DispatcherContext(
                    p_con.Events.SET_NAT_RULE, neutron_router, context,
                    state_change),
                args=(nat_info,))
        return result
Exemple #2
0
    def create_floatingip(self, context, floatingip):
        result = self._l3super.create_floatingip(
            self, context, floatingip)

        if result["port_id"]:
            neutron_router = self._get_router(context, result["router_id"])
            db_fixed_port = self._get_port(context, result["port_id"])
            fixed_prefix = self._retrieve_prefix_from_port(context,
                                                           db_fixed_port)
            db_floating_port = neutron_router["gw_port"]
            floating_prefix = self._retrieve_prefix_from_port(
                context, db_floating_port)
            nat_info = utils.retrieve_nat_info(context, result,
                                               fixed_prefix,
                                               floating_prefix,
                                               neutron_router)
            state_change = operation.Operation(
                self._set_db_router_state,
                args=(context, neutron_router, p_con.Status.UPDATING))

            self._dispatcher.dispatch_l3(
                d_context=embrane_ctx.DispatcherContext(
                    p_con.Events.SET_NAT_RULE, neutron_router, context,
                    state_change),
                args=(nat_info,))
        return result
Exemple #3
0
    def update_floatingip(self, context, id, floatingip):
        with context.session.begin(subtransactions=True):
            db_fip = self._l3super.get_floatingip(self, context, id)
            result = self._l3super.update_floatingip(self, context, id,
                                                     floatingip)

            if db_fip["port_id"]:
                neutron_router = self._get_router(context, db_fip["router_id"])
                fip_id = db_fip["id"]
                state_change = operation.Operation(
                    self._set_db_router_state,
                    args=(context, neutron_router, p_con.Status.UPDATING))

                self._dispatcher.dispatch_l3(
                    d_context=embrane_ctx.DispatcherContext(
                        p_con.Events.RESET_NAT_RULE, neutron_router, context,
                        state_change),
                    args=(fip_id, ))
            if floatingip["floatingip"]["port_id"]:
                neutron_router = self._get_router(context, result["router_id"])
                db_fixed_port = self._get_port(context, result["port_id"])
                fixed_prefix = self._retrieve_prefix_from_port(
                    context, db_fixed_port)
                db_floating_port = neutron_router["gw_port"]
                floating_prefix = self._retrieve_prefix_from_port(
                    context, db_floating_port)
                nat_info = utils.retrieve_nat_info(context, result,
                                                   fixed_prefix,
                                                   floating_prefix,
                                                   neutron_router)
                state_change = operation.Operation(
                    self._set_db_router_state,
                    args=(context, neutron_router, p_con.Status.UPDATING))

                self._dispatcher.dispatch_l3(
                    d_context=embrane_ctx.DispatcherContext(
                        p_con.Events.SET_NAT_RULE, neutron_router, context,
                        state_change),
                    args=(nat_info, ))
        return result
Exemple #4
0
    def update_floatingip(self, context, id, floatingip):
        with context.session.begin(subtransactions=True):
            db_fip = self._l3super.get_floatingip(self, context, id)
            result = self._l3super.update_floatingip(self, context, id,
                                                     floatingip)

            if db_fip["port_id"]:
                neutron_router = self._get_router(context, db_fip["router_id"])
                fip_id = db_fip["id"]
                state_change = operation.Operation(
                    self._set_db_router_state,
                    args=(context, neutron_router, p_con.Status.UPDATING))

                self._dispatcher.dispatch_l3(
                    d_context=embrane_ctx.DispatcherContext(
                        p_con.Events.RESET_NAT_RULE, neutron_router, context,
                        state_change),
                    args=(fip_id,))
            if floatingip["floatingip"]["port_id"]:
                neutron_router = self._get_router(context, result["router_id"])
                db_fixed_port = self._get_port(context, result["port_id"])
                fixed_prefix = self._retrieve_prefix_from_port(context,
                                                               db_fixed_port)
                db_floating_port = neutron_router["gw_port"]
                floating_prefix = self._retrieve_prefix_from_port(
                    context, db_floating_port)
                nat_info = utils.retrieve_nat_info(context, result,
                                                   fixed_prefix,
                                                   floating_prefix,
                                                   neutron_router)
                state_change = operation.Operation(
                    self._set_db_router_state,
                    args=(context, neutron_router, p_con.Status.UPDATING))

                self._dispatcher.dispatch_l3(
                    d_context=embrane_ctx.DispatcherContext(
                        p_con.Events.SET_NAT_RULE, neutron_router, context,
                        state_change),
                    args=(nat_info,))
        return result