Missing rootwrap filter rule for radvd kill script

Bug #1873240 reported by Slawek Kaplonski
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
neutron
Fix Released
Medium
Slawek Kaplonski

Bug Description

In commit https://opendev.org/openstack/neutron/commit/93015527f02cb54b0b2bc07c8c9c239c63878264 we added support for custom kill scripts and we added rootwrap filter rules for scripts to kill dnsmasq, haproxy, keepalived but we missed same rule for radvd.
Now if such radvd-kill script is used, it fails in Neutron-L3-agent with error like:

2020-04-13 11:07:43.064 31530 ERROR neutron.agent.linux.utils [-] Rootwrap error running command: ['radvd-kill', '9', '43476']: multiprocessing.managers.RemoteError:
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent [-] Error while deleting router f5735a8c-ede9-47a4-b2c8-2c93fc50ac07: multiprocessing.managers.RemoteError:
---------------------------------------------------------------------------
Unserializable message: Traceback (most recent call last):
  File "/usr/lib64/python3.6/multiprocessing/managers.py", line 283, in serve_client
    send(msg)
  File "/usr/lib/python3.6/site-packages/oslo_rootwrap/jsonrpc.py", line 128, in send
    s = self.dumps(obj)
  File "/usr/lib/python3.6/site-packages/oslo_rootwrap/jsonrpc.py", line 170, in dumps
    return json.dumps(obj, cls=RpcJSONEncoder).encode('utf-8')
  File "/usr/lib64/python3.6/json/__init__.py", line 238, in dumps
    **kw).encode(obj)
  File "/usr/lib64/python3.6/json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib64/python3.6/json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib/python3.6/site-packages/oslo_rootwrap/jsonrpc.py", line 43, in default
    return super(RpcJSONEncoder, self).default(o)
  File "/usr/lib64/python3.6/json/encoder.py", line 180, in default
    o.__class__.__name__)
TypeError: Object of type 'ValueError' is not JSON serializable

---------------------------------------------------------------------------
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent Traceback (most recent call last):
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/neutron/agent/l3/agent.py", line 506, in _safe_router_removed
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent self._router_removed(ri, router_id)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/neutron/agent/l3/agent.py", line 542, in _router_removed
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent self.router_info[router_id] = ri
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/oslo_utils/excutils.py", line 220, in __exit__
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent self.force_reraise()
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent six.reraise(self.type_, self.value, self.tb)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/six.py", line 693, in reraise
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent raise value
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/neutron/agent/l3/agent.py", line 539, in _router_removed
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent ri.delete()
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/neutron/agent/l3/router_info.py", line 470, in delete
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent self.disable_radvd()
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/neutron/agent/l3/router_info.py", line 587, in disable_radvd
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent self.radvd.disable()
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/neutron/agent/linux/ra.py", line 195, in disable
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent pm.disable()
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/neutron/agent/linux/external_process.py", line 113, in disable
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent utils.execute(cmd, run_as_root=self.run_as_root)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/neutron/agent/linux/utils.py", line 122, in execute
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent execute_rootwrap_daemon(cmd, process_input, addl_env))
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/neutron/agent/linux/utils.py", line 109, in execute_rootwrap_daemon
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent LOG.error("Rootwrap error running command: %s", cmd)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/oslo_utils/excutils.py", line 220, in __exit__
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent self.force_reraise()
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent six.reraise(self.type_, self.value, self.tb)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/six.py", line 693, in reraise
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent raise value
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/neutron/agent/linux/utils.py", line 106, in execute_rootwrap_daemon
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent return client.execute(cmd, process_input)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/oslo_rootwrap/client.py", line 154, in execute
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent res = self._run_one_command(proxy, cmd, stdin)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/oslo_rootwrap/client.py", line 139, in _run_one_command
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent res = proxy.run_one_command(cmd, stdin)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "<string>", line 2, in run_one_command
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib64/python3.6/multiprocessing/managers.py", line 772, in _callmethod
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent raise convert_to_error(kind, result)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent multiprocessing.managers.RemoteError:
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent ---------------------------------------------------------------------------
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent Unserializable message: Traceback (most recent call last):
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib64/python3.6/multiprocessing/managers.py", line 283, in serve_client
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent send(msg)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/oslo_rootwrap/jsonrpc.py", line 128, in send
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent s = self.dumps(obj)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/oslo_rootwrap/jsonrpc.py", line 170, in dumps
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent return json.dumps(obj, cls=RpcJSONEncoder).encode('utf-8')
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib64/python3.6/json/__init__.py", line 238, in dumps
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent **kw).encode(obj)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib64/python3.6/json/encoder.py", line 199, in encode
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent chunks = self.iterencode(o, _one_shot=True)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib64/python3.6/json/encoder.py", line 257, in iterencode
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent return _iterencode(o, 0)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib/python3.6/site-packages/oslo_rootwrap/jsonrpc.py", line 43, in default
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent return super(RpcJSONEncoder, self).default(o)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent File "/usr/lib64/python3.6/json/encoder.py", line 180, in default
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent o.__class__.__name__)
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent TypeError: Object of type 'ValueError' is not JSON serializable
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent
2020-04-13 11:07:43.065 31530 ERROR neutron.agent.l3.agent ---------------------------------------------------------------------------

Changed in neutron:
status: Confirmed → In Progress
Revision history for this message
Slawek Kaplonski (slaweq) wrote :
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (stable/train)

Fix proposed to branch: stable/train
Review: https://review.opendev.org/720447

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (stable/stein)

Fix proposed to branch: stable/stein
Review: https://review.opendev.org/720449

Revision history for this message
Bogdan Dobrelya (bogdando) wrote :

The impact of this issue doesn't look like low. Mind raising it?

Revision history for this message
Slawek Kaplonski (slaweq) wrote :

@Bogdan - I changed to Medium for now. It don't hurts anyone on vanila Neutron. It only cause problem when user is using kill-script for radvd, like e.g. TripleO is doing. So I don't think we need higher importance of this bug.

Changed in neutron:
importance: Low → Medium
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (master)

Reviewed: https://review.opendev.org/720431
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=2273499155a8cd83150aa4b4f8ba08ecbbdc9306
Submitter: Zuul
Branch: master

commit 2273499155a8cd83150aa4b4f8ba08ecbbdc9306
Author: Slawek Kaplonski <email address hidden>
Date: Thu Apr 16 12:25:54 2020 +0200

    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

Changed in neutron:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (stable/train)

Reviewed: https://review.opendev.org/720447
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=026790adf95973ffeb3a2bfbdbb10cdf5a4916ea
Submitter: Zuul
Branch: stable/train

commit 026790adf95973ffeb3a2bfbdbb10cdf5a4916ea
Author: Slawek Kaplonski <email address hidden>
Date: Thu Apr 16 12:25:54 2020 +0200

    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
    (cherry picked from commit 2273499155a8cd83150aa4b4f8ba08ecbbdc9306)

tags: added: in-stable-train
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (stable/stein)

Reviewed: https://review.opendev.org/720449
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=383d238548d1c56404383545d3c0cd3f802a013d
Submitter: Zuul
Branch: stable/stein

commit 383d238548d1c56404383545d3c0cd3f802a013d
Author: Slawek Kaplonski <email address hidden>
Date: Thu Apr 16 12:25:54 2020 +0200

    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
    (cherry picked from commit 2273499155a8cd83150aa4b4f8ba08ecbbdc9306)

tags: added: in-stable-stein
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.