blob: 5a3b781aeb514f2bdbb679e5320fe67c0ce99c6c [file] [log] [blame] [edit]
# 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}