| # Copyright 2018 The ChromiumOS Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # This file is heavily based off of LUCI codes.py. |
| |
| """Definition of possible RPC response status codes.""" |
| |
| import collections |
| |
| |
| StatusCodeBase = collections.namedtuple("StatusCodeBase", ["value", "name"]) |
| |
| |
| class StatusCode(StatusCodeBase): |
| """Mirrors grpc.StatusCode in the gRPC Core. |
| |
| See https://grpc.io/grpc/python/grpc.html?highlight=status#grpc.StatusCode |
| """ |
| |
| OK = StatusCodeBase(0, "ok") |
| CANCELLED = StatusCodeBase(1, "cancelled") |
| UNKNOWN = StatusCodeBase(2, "unknown") |
| INVALID_ARGUMENT = StatusCodeBase(3, "invalid argument") |
| DEADLINE_EXCEEDED = StatusCodeBase(4, "deadline exceeded") |
| NOT_FOUND = StatusCodeBase(5, "not found") |
| ALREADY_EXISTS = StatusCodeBase(6, "already exists") |
| PERMISSION_DENIED = StatusCodeBase(7, "permission denied") |
| RESOURCE_EXHAUSTED = StatusCodeBase(8, "resource exhausted") |
| FAILED_PRECONDITION = StatusCodeBase(9, "failed precondition") |
| ABORTED = StatusCodeBase(10, "aborted") |
| OUT_OF_RANGE = StatusCodeBase(11, "out of range") |
| UNIMPLEMENTED = StatusCodeBase(12, "unimplemented") |
| INTERNAL = StatusCodeBase(13, "internal error") |
| UNAVAILABLE = StatusCodeBase(14, "unavailable") |
| DATA_LOSS = StatusCodeBase(15, "data loss") |
| UNAUTHENTICATED = StatusCodeBase(16, "unauthenticated") |
| |
| |
| # Used in ServicerContext.set_code to assert that the code is known. |
| ALL_CODES = frozenset( |
| getattr(StatusCode, k) |
| for k in dir(StatusCode) |
| if isinstance(getattr(StatusCode, k), StatusCodeBase) |
| ) |
| |
| INT_TO_CODE = {c[0]: c for c in ALL_CODES} |