# Copyright (c) 2026 Arista Networks, Inc.
# Use of this source code is governed by the Apache License 2.0
# that can be found in the COPYING file.
# Generated by the protocol buffer compiler. DO NOT EDIT!
# sources: arista/configstatus.v1/configstatus.proto
# plugin: python-aristaproto
# This file has been @generated
__all__ = (
"ErrorCode",
"DiffOp",
"ConfigFilterCode",
"ConfigSyncCode",
"ConfigSourceType",
"ConfigType",
"ConfigError",
"ConfigErrors",
"DiffEntry",
"DiffEntries",
"ConfigSource",
"ConfigSources",
"ConfigSummary",
)
from dataclasses import dataclass
from datetime import datetime
from typing import (
List,
Optional,
)
import aristaproto
[docs]
class ErrorCode(aristaproto.Enum):
"""
ErrorCode indicates warnings and errors produced during computing config
"""
UNSPECIFIED = 0
"""ERROR_CODE_UNSPECIFIED uninitialized value"""
DEVICE_WARNING = 1
"""ERROR_CODE_DEVICE_WARNING indicates device warning"""
DEVICE_ERROR = 2
"""ERROR_CODE_DEVICE_ERROR indicates device error"""
UNREACHABLE_DEVICE = 3
"""ERROR_CODE_UNREACHABLE_DEVICE indicates the device cannot be reached"""
CONFIG_FILTER_ERROR = 4
"""
ERROR_CODE_CONFIG_FILTER_ERROR indicates error from partial config management filters
"""
INTERNAL = 5
"""ERROR_CODE_INTERNAL indicates internal errors"""
PROPOSED_CONFIG_CHECK = 6
"""
ERROR_CODE_PROPOSED_CONFIG_CHECK indicates an issue with the content of proposed configuration.
"""
[docs]
class DiffOp(aristaproto.Enum):
"""
DiffOp is the operation to a line from one side of diff to get to another
"""
UNSPECIFIED = 0
"""DIFF_OP_UNSPECIFIED uninitialized"""
NOP = 1
"""DIFF_OP_NOP indicates no change. A and B are identical at this line"""
IGNORE = 2
"""
DIFF_OP_IGNORE indicates a line that's ignored in either A or B.
One of a_line_num or b_line_num will be -1
"""
ADD = 3
"""DIFF_OP_ADD is an addition of a line from A"""
DELETE = 4
"""DIFF_OP_DELETE is deletion of a line from B"""
CHANGE = 5
"""DIFF_OP_CHANGE is a modification to a line in A"""
[docs]
class ConfigFilterCode(aristaproto.Enum):
"""ConfigFilterCode indicates if a config line matches PCM filter(s)"""
UNSPECIFIED = 0
"""CONFIG_FILTER_CODE_UNSPECIFIED uninitialized"""
MANAGED_LINE = 1
"""
CONFIG_FILTER_CODE_MANAGED_LINE indicates config line matches managed PCM filter hence is managed
"""
UNMANAGED_LINE = 2
"""
CONFIG_FILTER_CODE_UNMANAGED_LINE indicates config line matches unmanaged PCM filter hence is not managed
"""
[docs]
class ConfigSyncCode(aristaproto.Enum):
"""ConfigSyncCode indicates config synchronization status"""
UNSPECIFIED = 0
"""CONFIG_SYNC_CODE_UNSPECIFIED uninitialized"""
IN_SYNC = 1
"""
CONFIG_SYNC_CODE_IN_SYNC indicates designed config and running config are identical
"""
OUT_OF_SYNC = 2
"""
CONFIG_SYNC_CODE_OUT_OF_SYNC indicates designed config and running config are not identical
"""
[docs]
class ConfigSourceType(aristaproto.Enum):
"""
ConfigSourceType indicates the type of source for the proposed/designed configuration
for the device
"""
UNSPECIFIED = 0
"""CONFIG_SOURCE_TYPE_UNSPECIFIED uninitialized value"""
NETWORK_PROVISIONING_CONFIGLET = 1
"""
CONFIG_SOURCE_TYPE_NETWORK_PROVISIONING_CONFIGLET - configlet created from
the network provisioning workflow.
"""
STUDIO = 2
"""CONFIG_SOURCE_TYPE_STUDIO - config generated from a regular studio"""
STUDIO_STATIC = 3
"""
CONFIG_SOURCE_TYPE_STUDIO_STATIC - static config from studios framework
"""
HIERARCHY = 5
"""CONFIG_SOURCE_TYPE_HIERARCHY - config from the hierarchy frameork"""
[docs]
class ConfigType(aristaproto.Enum):
"""ConfigType - specifies type of config"""
UNSPECIFIED = 0
"""CONFIG_TYPE_UNSPECIFIED uninitialized value"""
RUNNING_CONFIG = 1
"""CONFIG_TYPE_RUNNING_CONFIG uninitialized value"""
DESIGNED_CONFIG = 2
"""CONFIG_TYPE_DESIGNED_CONFIG uninitialized value"""
[docs]
@dataclass(eq=False, repr=False)
class ConfigError(aristaproto.Message):
"""
ConfigError represents errors reported by CVP/EOS when handling device configuration
"""
error_code: "ErrorCode" = aristaproto.enum_field(1)
"""error_code - type of error."""
error_msg: Optional[str] = aristaproto.message_field(2, wraps=aristaproto.TYPE_STRING)
"""error_msg - details of error"""
line_num: Optional[int] = aristaproto.message_field(3, wraps=aristaproto.TYPE_INT32)
"""line_num represents line number, if any"""
configlet_name: Optional[str] = aristaproto.message_field(4, wraps=aristaproto.TYPE_STRING)
"""
configlet_name represents the originating configlet name. Configlet_name
and line_num point to the line where config warning or config error originate.
"""
[docs]
@dataclass(eq=False, repr=False)
class ConfigErrors(aristaproto.Message):
"""ConfigErrors list of errors"""
values: List["ConfigError"] = aristaproto.message_field(1)
"""values - list of errors"""
[docs]
@dataclass(eq=False, repr=False)
class DiffEntry(aristaproto.Message):
"""DiffEntry represents one entry in a Diff"""
op: "DiffOp" = aristaproto.enum_field(1)
"""op specifies type of diff operation"""
a_line_num: Optional[int] = aristaproto.message_field(2, wraps=aristaproto.TYPE_INT32)
"""a_line_num indicates the line number in A where the diff is applied"""
b_line_num: Optional[int] = aristaproto.message_field(3, wraps=aristaproto.TYPE_INT32)
"""b_line_num indicates the line number in B where this diff is applied"""
b_parent_line_num: Optional[int] = aristaproto.message_field(4, wraps=aristaproto.TYPE_INT32)
"""
b_parent_line_num represents the line number of the parent command in B
"""
a_line: Optional[str] = aristaproto.message_field(5, wraps=aristaproto.TYPE_STRING)
"""a_line is the content of config line in A"""
b_line: Optional[str] = aristaproto.message_field(6, wraps=aristaproto.TYPE_STRING)
"""b_line is the content of config line in B"""
a_filter_code: "ConfigFilterCode" = aristaproto.enum_field(7)
"""a_filter_code represents the config filter code for the line in A"""
b_filter_code: "ConfigFilterCode" = aristaproto.enum_field(8)
"""b_filter_code represents the config filter code for the line in B"""
a_parent_line_num: Optional[int] = aristaproto.message_field(9, wraps=aristaproto.TYPE_INT32)
"""
a_parent_line_num represents the line number of the parent command in A
"""
is_a_default_command: Optional[bool] = aristaproto.message_field(
10, wraps=aristaproto.TYPE_BOOL
)
"""
is_a_default_command indicates that config line in A is a default
command that is generated by EOS.
"""
[docs]
@dataclass(eq=False, repr=False)
class DiffEntries(aristaproto.Message):
"""DiffEntries indicates potential multiple lines of config diff"""
values: List["DiffEntry"] = aristaproto.message_field(1)
"""values - list of diff entries"""
[docs]
@dataclass(eq=False, repr=False)
class ConfigSource(aristaproto.Message):
"""
ConfigSource describes an individual source of the proposed/designed config
"""
source_type: "ConfigSourceType" = aristaproto.enum_field(1)
"""source_type - app type of the config snippet"""
source_id: Optional[str] = aristaproto.message_field(2, wraps=aristaproto.TYPE_STRING)
"""
source_id identifier to distinguish between multiple instances of the source type
source_id is :
configlet name for CONFIG_SOURCE_TYPE_NETWORK_PROVISIONING_CONFIGLET
studio id for CONFIG_SOURCE_TYPE_STUDIO
configlet id for CONFIG_SOURCE_TYPE_STUDIO_STATIC
FixtureInstance id for CONFIG_SOURCE_TYPE_HIERARCHY
"""
[docs]
@dataclass(eq=False, repr=False)
class ConfigSources(aristaproto.Message):
"""ConfigSources is the list of sources of the proposed/designed config"""
values: List["ConfigSource"] = aristaproto.message_field(1)
"""values - ordered list of all the config snippets present in DC"""
[docs]
@dataclass(eq=False, repr=False)
class ConfigSummary(aristaproto.Message):
"""ConfigSummary represents device configuration summary."""
sync: "ConfigSyncCode" = aristaproto.enum_field(1)
"""sync - state of DC vs RC"""
nop_lines: Optional[int] = aristaproto.message_field(2, wraps=aristaproto.TYPE_INT32)
"""nop_lines - Number of lines with code no-operation"""
ignored_lines: Optional[int] = aristaproto.message_field(3, wraps=aristaproto.TYPE_INT32)
"""ignored_lines - Number of lines with code IGNORE"""
added_lines: Optional[int] = aristaproto.message_field(4, wraps=aristaproto.TYPE_INT32)
"""added_lines - Number of lines with code ADD"""
deleted_lines: Optional[int] = aristaproto.message_field(5, wraps=aristaproto.TYPE_INT32)
"""deleted_lines - Number of lines with code DELETE"""
changed_lines: Optional[int] = aristaproto.message_field(6, wraps=aristaproto.TYPE_INT32)
"""changed_lines - Number of lines with code CHANGE"""
designed_config_errors: Optional[int] = aristaproto.message_field(
7, wraps=aristaproto.TYPE_INT32
)
"""designed_config_errors - Number of designed config errors"""
designed_config_warnings: Optional[int] = aristaproto.message_field(
8, wraps=aristaproto.TYPE_INT32
)
"""designed_config_warnings - Number of designed config warnings"""
running_config_update_time: datetime = aristaproto.message_field(9)
"""
running_config_update_time - Timestamp at which running config is updated
"""
designed_config_update_time: datetime = aristaproto.message_field(10)
"""
designed_config_update_time - Timestamp at which designed config is updated
"""
running_config_uri: Optional[str] = aristaproto.message_field(11, wraps=aristaproto.TYPE_STRING)
"""
running_config_uri - The HTTP URI client can use to GET running config and associated errors
"""
designed_config_uri: Optional[str] = aristaproto.message_field(
12, wraps=aristaproto.TYPE_STRING
)
"""
designed_config_uri - The HTTP URI client can use to GET designed config and associated errors
"""
diff_uri: Optional[str] = aristaproto.message_field(13, wraps=aristaproto.TYPE_STRING)
"""
diff_uri - The HTTP URI client can use to GET config diff and associated errors
"""
digest: Optional[str] = aristaproto.message_field(14, wraps=aristaproto.TYPE_STRING)
"""digest (SHA-256) of the config diff."""