to clarify, senlin never peeks into nova (or any other services' db table). We don't care how data are organized and stored by the corresponding service. We do, however, trust a service's public APIs.
In this context, a GET to nova servers/<server_id> will return 404 if the server is deleted. The response will be captured by openstacksdk and the latter raises a NotFound exception. Senlin does an exception type translation to make code better managed.
There is no such thing as a nova server is gone but Senlin is misunderstanding it.
The problem you described could be a bug how senlin treats a ResourceNotFound exception when it does a node check. If the node is not found, we should still treat it as a node failure and continue to do a recover.
With that said, the patch proposed is an incorrect solution.
to clarify, senlin never peeks into nova (or any other services' db table). We don't care how data are organized and stored by the corresponding service. We do, however, trust a service's public APIs.
In this context, a GET to nova servers/<server_id> will return 404 if the server is deleted. The response will be captured by openstacksdk and the latter raises a NotFound exception. Senlin does an exception type translation to make code better managed.
There is no such thing as a nova server is gone but Senlin is misunderstanding it.
The problem you described could be a bug how senlin treats a ResourceNotFound exception when it does a node check. If the node is not found, we should still treat it as a node failure and continue to do a recover.
With that said, the patch proposed is an incorrect solution.