Ceph : Issueshttps://tracker.ceph.com/https://tracker.ceph.com/favicon.ico2021-11-11T00:20:53ZCeph
Redmine Orchestrator - Bug #53223 (New): Fun with subinterpreters: Exceptions showing traceback when Spec...https://tracker.ceph.com/issues/532232021-11-11T00:20:53ZPaul Cuzner
<p>The service specs are using SpecValidationErrors to indicate issues, but the normal try/catch provided by the cli_write_command decorator is not catching these exceptions correctly.</p>
<p>e.g.<br /><pre>
[ceph: root@cs8-snmp1 ~]# ceph orch apply snmp-gateway --snmp-version=V3 --destination=192.168.122.1 -i ./snmpv3_creds.yml
Error EINVAL: Traceback (most recent call last):
File "/usr/share/ceph/mgr/mgr_module.py", line 1618, in _handle_command
return self.handle_command(inbuf, cmd)
File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 168, in handle_command
return dispatch[cmd['prefix']].call(self, cmd, inbuf)
File "/usr/share/ceph/mgr/mgr_module.py", line 416, in call
return self.func(mgr, **kwargs)
File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 107, in <lambda>
wrapper_copy = lambda *l_args, **l_kwargs: wrapper(*l_args, **l_kwargs) # noqa: E731
File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 96, in wrapper
return func(*args, **kwargs)
File "/usr/share/ceph/mgr/orchestrator/module.py", line 1230, in _apply_snmp_gateway
return self._apply_misc([spec], dry_run, format, no_overwrite)
File "/usr/share/ceph/mgr/orchestrator/module.py", line 1068, in _apply_misc
raise_if_exception(completion)
File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 225, in raise_if_exception
raise e
Exception: must provide an engine_id for SNMP v3 notifications
</pre></p>
<p>You can see that the exception is generic above and yet the code uses the following call</p>
<pre><code class="python syntaxhl"><span class="CodeRay"> <span class="keyword">if</span> <span class="predefined-constant">self</span>.snmp_version == <span class="string"><span class="delimiter">'</span><span class="content">V3</span><span class="delimiter">'</span></span>:
<span class="keyword">raise</span> SpecValidationError(
<span class="string"><span class="delimiter">"</span><span class="content">must provide an engine_id for SNMP v3 notifications</span><span class="delimiter">"</span></span>
)
</span></code></pre>