diff --git a/lib/rpc.py b/lib/rpc.py index 61895d56304be0ef954784648bee61c3260bd5a5..8701945ab9b958bd875aa1b5d6a6e76683b0c3a1 100644 --- a/lib/rpc.py +++ b/lib/rpc.py @@ -97,6 +97,7 @@ class RpcResult(object): self.offline = offline self.call = call self.node = node + if offline: self.fail_msg = "Node is marked offline" self.data = self.payload = None @@ -108,16 +109,26 @@ class RpcResult(object): if not isinstance(self.data, (tuple, list)): self.fail_msg = ("RPC layer error: invalid result type (%s)" % type(self.data)) + self.payload = None elif len(data) != 2: self.fail_msg = ("RPC layer error: invalid result length (%d), " "expected 2" % len(self.data)) + self.payload = None elif not self.data[0]: self.fail_msg = self._EnsureErr(self.data[1]) + self.payload = None else: # finally success self.fail_msg = None self.payload = data[1] + assert hasattr(self, "call") + assert hasattr(self, "data") + assert hasattr(self, "fail_msg") + assert hasattr(self, "node") + assert hasattr(self, "offline") + assert hasattr(self, "payload") + @staticmethod def _EnsureErr(val): """Helper to ensure we return a 'True' value for error."""