Hello Lajos,
I just double-checked on a fresh devstack installation (single node stand).
I'm running devstack on CentOS-Stream-GenericCloud-9, but looks like it's not so important.
My devstack local.conf:
[root@devstack0 ~]# source ~cloud-user/devstack/openrc admin
[root@devstack0 ~]# openstack network create public --provider-network-type flat --provider-physical-network public --external
[root@devstack0 ~]# openstack subnet create public --network public --subnet-range 10.136.16.0/20 --no-dhcp
[root@devstack0 ~]# r_id=$(openstack router create r1 --distributed --ha -c id -f value);
[root@devstack0 ~]# count_fip_requests() { journalctl -u <email address hidden> | grep 'FloatingIP agent gateway port received' | wc -l; }
[root@devstack0 ~]# fip_requests=$(count_fip_requests); openstack router set $r_id --external-gateway public; while :; do [[ $fip_requests == $(count_fip_requests) ]] && { echo "waiting before deletion..."; sleep 1; } || break; done; openstack router delete $r_id
waiting before deletion...
waiting before deletion...
[root@devstack0 ~]#
[root@devstack0 ~]# ip netns
fip-aea344ef-1a3b-4256-8b74-c04cc9603b9d (id: 1)
[root@devstack0 ~]# openstack port list --network public
[root@devstack0 ~]# openstack router create r1 --ha --distributed --external-gateway public
[root@devstack0 ~]# neutron l3-agent-list-hosting-router r1
neutron CLI is deprecated and will be removed in the Z cycle. Use openstack CLI instead.
The python binding code in neutronclient will be deprecated in favor of OpenstackSDK, please use that!
+--------------------------------------+-----------+----------------+-------+----------+
| id | host | admin_state_up | alive | ha_state |
+--------------------------------------+-----------+----------------+-------+----------+
| bd3d28aa-0bbb-438a-be05-b7e97ac5f03a | devstack0 | True | :-) | standby |
+--------------------------------------+-----------+----------------+-------+----------+
[root@devstack0 ~]#
Hello Lajos, Stream- GenericCloud- 9, but looks like it's not so important.
I just double-checked on a fresh devstack installation (single node stand).
I'm running devstack on CentOS-
My devstack local.conf:
[root@devstack0 ~]# cat ~cloud- user/devstack/ local.conf <hidden> PASSWORD= ${ADMIN_ PASSWORD} PASSWORD= ${ADMIN_ PASSWORD} PASSWORD= ${ADMIN_ PASSWORD}
[[local|localrc]]
ADMIN_PASSWORD=
DATABASE_
RABBIT_
SERVICE_
ENABLED_ SERVICES= key SERVICES+ =,n-api, n-cond, n-sch,n- api-meta, n-cpu SERVICES+ =,placement- api,placement- client SERVICES+ =,q-svc, q-agt,q- l3,q-meta, q-dhcp SERVICES+ =,c-sch, c-api,c- vol SERVICES+ =,g-api SERVICES+ =,rabbit, mysql
ENABLED_
ENABLED_
ENABLED_
ENABLED_
ENABLED_
ENABLED_
Q_DVR_MODE=dvr_snat NETWORK_ TYPE=vxlan MECHANISM_ DRIVERS= openvswitch INTERFACE= eth1 CREATE_ INITIAL_ NETWORKS= False
Q_ML2_TENANT_
Q_ML2_PLUGIN_
Q_AGENT=openvswitch
PUBLIC_
NEUTRON_
LOGFILE= ${DEST} /logs/stack. sh.log
[root@devstack0 ~]#
Then, to avoid guessing at what point to remove the router, I made a delay at this point:
[root@devstack0 ~]# cd /opt/stack/neutron; git log --oneline | head -1; git diff; cd - state-change script logs" agent/l3/ dvr_local_ router. py b/neutron/ agent/l3/ dvr_local_ router. py .822d9d6a86 100644 agent/l3/ dvr_local_ router. py agent/l3/ dvr_local_ router. py dvr_router_ base.DvrRouterB ase):
self. agent.context, ex_gw_port[ 'network_ id'])
LOG. debug(" FloatingIP agent gateway port received from the "
"plugin: %s", fip_agent_port)
self. fip_ns. create_ or_update_ gateway_ port(fip_ agent_port)
e6eeb700c8 Merge "Honor debug mode in keepalived-
diff --git a/neutron/
index e12cc1a0ab.
--- a/neutron/
+++ b/neutron/
@@ -836,6 +836,8 @@ class DvrLocalRouter(
+ import time
+ time.sleep(5)
def update_ routing_ table(self, operation, route):
/root
[root@devstack0 ~]# systemctl restart <email address hidden>
[root@devstack0 ~]#
and repeated the commands from the description:
[root@devstack0 ~]# source ~cloud- user/devstack/ openrc admin network- type flat --provider- physical- network public --external requests( ) { journalctl -u <email address hidden> | grep 'FloatingIP agent gateway port received' | wc -l; } $(count_ fip_requests) ; openstack router set $r_id --external-gateway public; while :; do [[ $fip_requests == $(count_ fip_requests) ]] && { echo "waiting before deletion..."; sleep 1; } || break; done; openstack router delete $r_id 1a3b-4256- 8b74-c04cc9603b 9d (id: 1)
[root@devstack0 ~]# openstack network create public --provider-
[root@devstack0 ~]# openstack subnet create public --network public --subnet-range 10.136.16.0/20 --no-dhcp
[root@devstack0 ~]# r_id=$(openstack router create r1 --distributed --ha -c id -f value);
[root@devstack0 ~]# count_fip_
[root@devstack0 ~]# fip_requests=
waiting before deletion...
waiting before deletion...
[root@devstack0 ~]#
[root@devstack0 ~]# ip netns
fip-aea344ef-
[root@devstack0 ~]# openstack port list --network public
[root@devstack0 ~]# openstack router create r1 --ha --distributed --external-gateway public list-hosting- router r1 ------- ------- ------- ------- ----+-- ------- --+---- ------- -----+- ------+ ------- ---+ ------- ------- ------- ------- ----+-- ------- --+---- ------- -----+- ------+ ------- ---+ 0bbb-438a- be05-b7e97ac5f0 3a | devstack0 | True | :-) | standby | ------- ------- ------- ------- ----+-- ------- --+---- ------- -----+- ------+ ------- ---+
[root@devstack0 ~]# neutron l3-agent-
neutron CLI is deprecated and will be removed in the Z cycle. Use openstack CLI instead.
The python binding code in neutronclient will be deprecated in favor of OpenstackSDK, please use that!
+------
| id | host | admin_state_up | alive | ha_state |
+------
| bd3d28aa-
+------
[root@devstack0 ~]#
mem/cpu info on my stand:
[root@devstack0 ~]# cat /proc/cpuinfo | grep -i process
total used free shared buff/cache available
processor : 0
processor : 1
processor : 2
processor : 3
[root@devstack0 ~]# free -m
Mem: 23779 5043 15225 76 4011 18736
Swap: 0 0 0
[root@devstack0 ~]#
The most important thing is to get a stuck fip namespace when the floatingip_ agent_gateway port already removed.