| # 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} |