Commit Graph

421 Commits

Author SHA1 Message Date
Rodolfo Alonso Hernandez 3d575f8bd0 Add an env variable "PROCESS_TAG" in ``ProcessManager``
Added a new environment variable "PROCESS_TAG" in ``ProcessManager``.
This environment variable could be read by the process executed and
is unique per process. This environment variable can be used to tag
the running process; for example, a container manager can use this
tag to mark the a container.

This feature will be used by TripleO to identify the running containers
with a unique tag. This will make the "kill" process easier; it will
be needed just to find the container running with this tag.

Closes-Bug: #1991000
Change-Id: I234c661720a8b1ceadb5333181890806f79dc21a
2022-12-24 10:30:16 +01:00
Rodolfo Alonso Hernandez be6ee6f397 Remove not needed rootwrap filters
This patch moves all remaining filters to a single file. Since [1],
the number of processes executed using rootwrap have been reduced to
a small set.

[1]https://storyboard.openstack.org/#!/story/2007686

Story: #2007686
Task: #41284

Change-Id: Ic7eb717b9ee18068d7a6d7acb11302dd1fde60c6
2021-04-02 10:49:07 +00:00
Rodolfo Alonso Hernandez ee00bddce7 Remove rootwrap execution (6)
Replace rootwrap execution with privsep context execution.
This series of patches will progressively replace any
rootwrap call.

This patch migrates the "kill_process" method to privsep and
removes the unneeded rootwrap filters.

Change-Id: I48461be8b08cbc21c8af371f551b944343ba37bf
Story: #2007686
Task: #41558
2021-03-05 10:03:22 +00:00
Rodolfo Alonso Hernandez 5a419cbc84 Remove rootwrap execution (5)
Replace rootwrap execution with privsep context execution.
This series of patches will progressively replace any
rootwrap call.

This patch migrates some missing execution methods present in
the code and removes unneeded rootwrap filters.

Story: #2007686
Task: #41558

Change-Id: I1542dc4cf98658fc9a40018192498c7a5cd1c3fe
2021-02-19 08:47:17 +00:00
Rodolfo Alonso Hernandez 6c75316ca0 Remove rootwrap execution (4)
Replace rootwrap execution with privsep context execution.
This series of patches will progressively replace any
rootwrap call.

This patch migrates any "iptables" and "ipset" command related
to privsep.

Change-Id: I4a1e137b2b414067504ad7c799d68f482bf3d36c
Story: #2007686
Task: #41558
2021-02-08 10:05:51 +00:00
Rodolfo Alonso Hernandez a7bedd7428 Remove rootwrap execution (3)
Replace rootwrap execution with privsep context execution.
This series of patches will progressively replace any
rootwrap call.

This patch migrates the execution of "ebtables" command to
privsep.

Story: #2007686
Task: #41558

Change-Id: I05deec2f021e1b146fa3f6f7f9b37084df06d59d
2021-02-06 16:26:20 +00:00
Zuul 0ff17b1605 Merge "Remove "find" rule from rootwrap filters" 2020-12-06 14:37:14 +00:00
Rodolfo Alonso Hernandez 55f5c78053 Remove "ovs-vsctl" support from rootwrap
This command is executed from scripts and in sanity checks, but not
from any Neutron service.

Change-Id: If82e89bf7b233559513ab44eadebb445648f0684
Story: #2007686
Task: #41282
2020-11-23 16:23:36 +00:00
Slawek Kaplonski af1ade69e7 Remove "find" rule from rootwrap filters
It isn't used anymore by Neutron.

Change-Id: I6f28077e1df8ab65cca834044e47383f38bbb443
2020-11-19 20:59:40 +00:00
Zuul 8441737127 Merge "Migrate "ethtool" to oslo.privsep" 2020-08-14 22:58:44 +00:00
Zuul bffd23658e Merge "Migrate "dhcp_release" to oslo.privsep" 2020-07-08 16:01:21 +00:00
Rodolfo Alonso Hernandez b52e2e6f16 Migrate "ethtool" to oslo.privsep
Story: #2007686
Task: #40290

Change-Id: I78cc06c635e806b50ca2cc631732d55e430dd2f1
2020-07-07 17:45:54 +00:00
Zuul 4c2e78b0e2 Merge "Migrate "netstat" to oslo.privsep" 2020-07-02 13:39:34 +00:00
Zuul b1dba996b5 Merge "Remove "find" rootwrap filter" 2020-06-22 02:52:16 +00:00
Zuul 0580d03a2b Merge "Workaround for TCP checksum issue with ovs-dpdk and veth pair" 2020-06-20 18:58:11 +00:00
Rodolfo Alonso Hernandez 0c1818fbb0 Migrate "netstat" to oslo.privsep
Change-Id: If9e4c1513553c4bd10fd3b91c28c4d3f806ed816
Story: #2007686
Task: #40047
2020-06-19 14:59:11 +00:00
Rodolfo Alonso Hernandez 7143f2be1f Remove "find" rootwrap filter
This command is not used anymore.

Trivial-Fix

Change-Id: I684c58996154d14c79f5a065470ce9e34ce08670
2020-06-11 16:13:24 +00:00
Rodolfo Alonso Hernandez e332054d63 Migrate "dhcp_release" to oslo.privsep
Story: #2007686
Task: #39976
Change-Id: I3414d06b9c6dfe549e79aab5fbe52c8f3ffd63f7
2020-06-09 09:11:31 +00:00
Alexander Vlasov 11838a2bc5 Workaround for TCP checksum issue with ovs-dpdk and veth pair
The need for this change stems from following issues:
1) When ovs_use_veth = False with ovs-dpdk issue with ovs
was observed - after vswitch restart interface is not comming up.
Meaning ovs-dpdk uses ovs internal ports and it is not able to bring
them up on restart.
2) When ovs_use_veth = True and ovs-dpkd is used, packets sent with
incorrect checksum due to the fact that ovs-dpdk does not do checksum
calculations for veth interface.

This commit allows to use second option and resolve checksum issue by
disabling checksum offload.

Closes-Bug: #1832021
Related-Bug: #1831935

Change-Id: Iecce8d2c6c2c46718cc1020c6e8f914cd4560e4b
2020-05-08 10:19:07 -05:00
Brian Haley 4fb505891e Updates for python3.8
With the move to the Victoria job template in
https://review.opendev.org/#/c/722681/, the py37 jobs no
longer get run, so the check and gate job entries can
be removed.

Added a keepalived py38 KillFilter line to match the py36
and py37 ones.

Also updated TESTING.rst to use py38 in all examples.

Change-Id: Ief793b54d53c3239cfb24278e88e4f4189bbc2c2
2020-04-28 14:03:21 -04:00
Slawek Kaplonski 2273499155 Add rootwrap filter rule for radvd-kill script
In patch [1] support for custom kill scripts was added.
We also added rootwrap filter rules for such scripts to
kill dnsmasq, haproxy, dibbler and keepalived processes.
But we missed to add rule for radvd-kill so this patch
adds it (better late than never ;))

[1] https://review.opendev.org/#/c/661760/

Closes-Bug: #1873240

Change-Id: I8fa7176d1d9667c6b5cc95af0e31210d0f1c3662
2020-04-16 20:10:28 +00:00
Lucian Petrut caa34c2797 Drop invalid rootwrap filters
A recent change introduced a couple of rootwrap filters that are
supposed to allow running ping within a network namespace.

Those filters will actually replace the "ip" command with "ping",
which leads to an invalid command.

Since those two filters are now superfluous, we're going to drop
them.

Change-Id: I57869c68e858503ed8d6b86506c79c289f2820e1
Closes-Bug: #1864186
2020-02-21 13:21:20 +02:00
Zuul 1f02c4cf5f Merge ""ping"/"ping6" command support in rootwrap filters" 2020-02-20 02:31:17 +00:00
Rodolfo Alonso Hernandez 22ce84ab4d Revert "Add "ncat" rootwrap filter for debug"
This reverts commit 0ef4233d89.

This patch is introducing a redundant filter already present in
"testing.filters". The problem described in the related bug should
be solved in https://review.opendev.org/#/c/707697/.

Related-Bug: #1862927
Related-Bug: #1863213

Change-Id: I4de37364a6fb0184230a9742daced40e4edbfb30
2020-02-14 10:11:27 +00:00
Rodolfo Alonso Hernandez cc3b9df426 "ping"/"ping6" command support in rootwrap filters
To have correct support in rootwrap, "ping"/"ping6" command should
have the correct filters in rootwrap.

Because "ping" command is harmless, "CommandFilter" is used to allow
any binary call, regardless of the parameters used and the order.

Nevertheless, this patch also proposes to use "ping"/"ping6" with
the same parameters and a specific order, to help in the debug
process:
- ping[6] -W <timeout> <address>
- ping[6] -W <timeout> -c <count> <address>
- ping[6] -W <timeout> -c <count> -i <interval> <address>

Those commands could be called from inside a namespace. The needed
filter is also added in this patch.

Change-Id: Ie5cbc0dcc76672b26cd2605f08cfd17a30b4c905
Closes-Bug: #1863006
2020-02-13 11:58:01 +00:00
Rodolfo Alonso Hernandez 0ef4233d89 Add "ncat" rootwrap filter for debug
In [1], new tests to check "ncat" tool were added. The missing piece
of this patch was to add a new rootwrap filter to allow to execute
"ncat" binary as root and inside a namespace.

Closes-Bug: #1862927

[1]https://review.opendev.org/#/q/If8cf47a01dc353734ad07ca6cd4db7bec6c90fb6

Change-Id: I8e8e5cd8c4027cce58c7073002120d14f251463d
2020-02-12 11:43:27 +00:00
Slawek Kaplonski 2f46aee345 Remove python 3.5 from L3 rootwrap filters
In L3 agent's rootwrap filters there are KillFilters
to allow killing of python processes (used to kill
neutron-keepalived-state-change-monitor script). There
was also filter for python3.5 but now Neutron supports
python3.6 and newer so python3.5 isn't needed there
anymore and this patch removes it from there.

Change-Id: I57fcc6b1c506dce9113b56ffee7d29a96fa7f251
2020-01-20 21:19:05 +01:00
Slawek Kaplonski d6fccd247f Allow to kill keepalived state change monitor process
Usually Neutron stops neutron-keepalived-state-change-monitor process
gracefully with SIGTERM.
But in case if this will not stop process for some time, Neutron will
try to kill this process with SIGKILL (-9).
That was causing problem with rootwrap as kill filters for this process
allowed to send only "-15" to it.
Now it is possible to kill this process with "-9" too.

Change-Id: Id019fa7649bd1158f9d56e63f8dad108d0ca8c1f
Closes-bug: #1860326
2020-01-20 11:48:27 +01:00
Brian Haley 6842465260 Stop testing python 2
Since it's no longer supported past Train, lets stop
running the tests.

Updated docs and made some pep8 code tweaks as well.

Change-Id: I1c171ab906a3b4c66558163ad26947ebf710a276
2019-10-25 18:50:08 +00:00
Zuul 86e4f14115 Merge "Log the IPTables rules if "debug_iptables_rules"" 2019-10-19 01:56:23 +00:00
Rodolfo Alonso Hernandez 2bb241b7a2 Log the IPTables rules if "debug_iptables_rules"
If the configuration flag "debug_iptables_rules" is enabled, the
IPTables rules applied will be logged.

Similar to [1], when the IPTables firewall is enabled, it checks the
status of the following sysctl knobs:

* net.bridge.bridge-nf-call-arptables
* net.bridge.bridge-nf-call-ip6tables
* net.bridge.bridge-nf-call-iptables

In this case, the firewall is not enabling them but just checking the
status and logging it, to make easier the debugging process.

[1] https://review.opendev.org/#/c/371523/

Change-Id: I2ec953228d1d45e1d4c493c0b261901e6dbec0f7
Related-Bug: #1843259
2019-09-23 09:58:36 +00:00
Rodolfo Alonso Hernandez be7bb4d0f5 Kill all processes running in a namespace before deletion
In "NamespaceFixture", before deleting the namespace, this patch
introduces a check to first kill all processes running on it.

Closes-Bug: #1838793

Change-Id: I27f3db33f2e7ab685523fd2d6922177d7c9cb71b
2019-08-21 09:03:54 +00:00
Adrian Chiris f9a750fcaf Prevent providing privsep-helper paths outside /etc
This commit aligns privsep filters with other projects
e.g nova[1], cinder[2] to prevent a malicious user from
invoking privsep-helper with an arbitrary configuration file
in case it took control over an unprivileged neutron process.

[1]4f261f98e1/etc/nova/rootwrap.d/compute.filters (L23)
[2]f5feb87ab8/etc/cinder/rootwrap.d/volume.filters (L41)

Change-Id: I0b4e8cdee0cbbc46547599e176efb4420ee1b318
2019-09-23 14:59:41 +03:00
Zuul f17d0e19ae Merge "Remove rootwrap filters for TC commands in Linux Bridge" 2019-07-09 13:43:00 +00:00
Rodolfo Alonso Hernandez fb7185bf35 Use Pyroute2 "add_tc_qdisc" function in l3_tc_lib
Change-Id: I67ddf9d9a6bb2d9d2e8ff0b6345a0118ec37d837
Related-Bug: #1492714
2019-07-05 08:13:07 +00:00
Rodolfo Alonso Hernandez b6cbc95dcb Use Pyroute2 "list_tc_qdiscs" function in l3_tc_lib
Change-Id: Ifdccd02411e3c3bae441fc28ab8ed09ff746993c
Related-Bug: #1492714
2019-07-05 08:11:00 +00:00
Rodolfo Alonso Hernandez 7d62308eaa Remove rootwrap filters for TC commands in Linux Bridge
All neutron.agent.linux.tc_lib TC commands, used in Linux Bridge
agent, have been implemented using Pyroute2.

Change-Id: Idcac297b204900037b22ab25a516a161f4e78224
Related-Bug: #1560963
2019-07-04 21:17:46 +00:00
Slawek Kaplonski 93015527f0 Add kill hooks for external processes
This patch adds possibility to configure kill hooks used to kill
external processes, like dnsmasq or keepalived.

Change-Id: I29dfbedfb7167982323dcff1c4554ee780cc48db
Closes-Bug: #1825943
2019-06-03 14:39:51 +02:00
Slawek Kaplonski 4597dfc136 Add RHEL8 platform-python to the L3 rootwrap filters
In L3 rootwrap filters we have filter to kill
neutron-keepalived-state-change process.
As this process is run under python, in commit [1] we added
KillFilter rules to allow kill various Python processes.

In RHEL8 there are "system" and "user" python versions provided.
It is called "platform-python" and is placed in /usr/libexec dir.
Details about it are in [2].

So this patch adds to neutron-keepalived-state-change Kill filters also
/usr/libexec/platform-python and /usr/libexec/platform-python3.6 to
allow killing this process on RHEL8 based OS.

[1] https://review.opendev.org/#/c/636710/
[2] https://developers.redhat.com/blog/2018/11/14/python-in-rhel-8/

Change-Id: Iafdaf2c1a6e5c1f5de856ff99e04c72c911c5123
2019-05-17 10:15:45 +02:00
Miguel Lavalle 25c432a05a Add rootwrap filters to kill state change monitor
When deleting HA routers, the keepalived state change monitor has to be
deleted. This patch adds rootwrap filters to allow deleting the state
change monitor.

Change-Id: Icfb208d9b51eaa41cf01af81f1ede7420a19cc93
Partial-Bug: #1795870
Partial-Bug: #1789434
2019-03-13 07:40:15 -07:00
Slawek Kaplonski f046031456 Remove _migrate_python_ns_metadata_proxy_if_needed method
It was added as temporary helper during migration process
and was marked to delete in Queens cycle.
Now we are in Rocky so I think we are fine to remove it
finally.

Change-Id: Iacf592841559d392b59864d507dc89ef028cbf05
2018-08-04 09:53:00 +02:00
LIU Yulong 5ddb2a4762 Make L3 IP tc filter rate limit more accurate
Currently the L3 agent qos extension does not set the mtu for
tc filter rules, the default value is 2kb. Tc filter rules use
such mtu will result in an inaccurate bandwidth.

So in order to improve the precision, we set the mtu to 64kb.
For the test results, you can read the bug description.

For more information you can read the linux tc man page:
[1] https://linux.die.net/man/8/tc-tbf
[2] http://man7.org/linux/man-pages/man8/tc-police.8.html

Closes-Bug: #1777598
Change-Id: I7a167ec6139ccc55988b34f82080a182116d02a3
2018-06-20 02:21:28 +00:00
Brian Haley 3ad91f61f2 Remove deprecated IVS interface driver
This was marked deprecated in Queens for removal in Rocky,
https://review.openstack.org/#/c/505401/

Change-Id: I77fa59ae1819e87ab8ccc1fa5f0db86de3b90e2e
2018-04-26 20:15:46 +00:00
LIU Yulong f40128b437 [L3][QoS] Adding L3 rate limit TC lib
This is the TC lib utils for L3 IP QoS implementation.
For more detail please see [1]: L3 agent side TC rules.

[1] https://review.openstack.org/#/c/374506/

Partially-Implements blueprint: floating-ip-rate-limit
Related-Bug: #1596611
Change-Id: Icfec83ca6dc31d7283d9c6c6ef0997d5e60daae6
2017-11-15 09:44:05 +00:00
Edan David 04b31bb72a Fix typo "extention" -> "extension"
Change-Id: Ib3d8edfc8319cbb9c15610b1d81b8ff400ce5e71
2017-11-09 07:05:56 -05:00
Edan David c6d8ccb640 Enable bridge command for openvswitch agent
Allow ovs agent to run bridge command.
This is necessary because FDB extension uses bridge to update the FDB table.

Closes-Bug: #1730407

Change-Id: I0897f1efcf36fc7f6f06e80c3b29c0e1fa14b141
2017-11-08 02:03:44 -05:00
Stefan Nica f1b43395e7 linuxbridge-agent: add missing sysctl rootwrap entry
Sysctl was missing from the linuxbridge plugin rootwrap
configuration file. This was causing failures in the
linuxbridge agent when networks are created:

Rootwrap error running command: ['sysctl', '-w', 'net.ipv6.conf.eth0/557.disable_ipv6=1']:

NOTE: this bug was hidden by the fact that sysctl was
covered by the iptables-firewall.filters until recently,
when it was removed (see https://review.openstack.org/#/c/436315/).

Change-Id: Id20175df30d4d6039fb42e722d03f39521f6a499
Closes-Bug: #1715194
2017-09-05 18:59:30 +02:00
Huan Xie 3d58ce44d4 Deal with port commonly when hypervisor is XenServer
When neutron is deployed with hypervisor is XenServer, current
implementation will grab port's iface-id via xapi, but this isn't
the proper way:
Port's iface-id is already set when creating VM or hot plugging
VIFs in nova project, so there is no need to grab it via xapi

Change-Id: Ie07527cc89ac81ff1e3519db66925cee482f77a4
Closes-Bug: #1649747
2017-03-30 22:33:14 -07:00
Jenkins 6dba921f2d Merge "Add PD support in HA router" 2017-03-15 07:25:35 +00:00
Robert Li bb3c0e8285 Add PD support in HA router
The following enhancements are added:
  -- PD keeps track of status of neutron routers: active or
     standalone (master), or standby (not master),
  -- PD DHCP clients are only spawned in the active router. In the
     standby router, PD keeps track of the assigned prefixes, but
     doesn't spawn DHCP clients.
  -- When switchover occurs, on the router becoming standby, PD
     clients are "killed" so that they don't send prefix withdrawals
     to the DHCP server. On the router becoming active, PD spawns DHCP
     clients with the assigned prefixes configured as hints in the
     DHCP client's configuration

Closes-Bug: #1651465
Change-Id: I17df98128c7a88e72e31251687f30f569df6b860
2017-03-15 04:31:09 +00:00