Skip to content
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: gnmi.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import builder as _builder
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\ngnmi.proto\x12\x04gnmi\x1a\x19google/protobuf/any.proto\x1a google/protobuf/descriptor.proto\"\xa0\x01\n\tExtension\x12\x33\n\x0eregistered_ext\x18\x01 \x01(\x0b\x32\x19.gnmi.RegisteredExtensionH\x00\x12\x35\n\x12master_arbitration\x18\x02 \x01(\x0b\x32\x17.gnmi.MasterArbitrationH\x00\x12 \n\x07history\x18\x03 \x01(\x0b\x32\r.gnmi.HistoryH\x00\x42\x05\n\x03\x65xt\"A\n\x13RegisteredExtension\x12\x1d\n\x02id\x18\x01 \x01(\x0e\x32\x11.gnmi.ExtensionID\x12\x0b\n\x03msg\x18\x02 \x01(\x0c\"Q\n\x11MasterArbitration\x12\x18\n\x04role\x18\x01 \x01(\x0b\x32\n.gnmi.Role\x12\"\n\x0b\x65lection_id\x18\x02 \x01(\x0b\x32\r.gnmi.Uint128\"$\n\x07Uint128\x12\x0c\n\x04high\x18\x01 \x01(\x04\x12\x0b\n\x03low\x18\x02 \x01(\x04\"\x12\n\x04Role\x12\n\n\x02id\x18\x01 \x01(\t\"O\n\x07History\x12\x17\n\rsnapshot_time\x18\x01 \x01(\x03H\x00\x12 \n\x05range\x18\x02 \x01(\x0b\x32\x0f.gnmi.TimeRangeH\x00\x42\t\n\x07request\"\'\n\tTimeRange\x12\r\n\x05start\x18\x01 \x01(\x03\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x03\"\x94\x01\n\x0cNotification\x12\x11\n\ttimestamp\x18\x01 \x01(\x03\x12\x1a\n\x06prefix\x18\x02 \x01(\x0b\x32\n.gnmi.Path\x12\x1c\n\x06update\x18\x04 \x03(\x0b\x32\x0c.gnmi.Update\x12\x1a\n\x06\x64\x65lete\x18\x05 \x03(\x0b\x32\n.gnmi.Path\x12\x0e\n\x06\x61tomic\x18\x06 \x01(\x08J\x04\x08\x03\x10\x04R\x05\x61lias\"u\n\x06Update\x12\x18\n\x04path\x18\x01 \x01(\x0b\x32\n.gnmi.Path\x12\x1e\n\x05value\x18\x02 \x01(\x0b\x32\x0b.gnmi.ValueB\x02\x18\x01\x12\x1d\n\x03val\x18\x03 \x01(\x0b\x32\x10.gnmi.TypedValue\x12\x12\n\nduplicates\x18\x04 \x01(\r\"\x83\x03\n\nTypedValue\x12\x14\n\nstring_val\x18\x01 \x01(\tH\x00\x12\x11\n\x07int_val\x18\x02 \x01(\x03H\x00\x12\x12\n\x08uint_val\x18\x03 \x01(\x04H\x00\x12\x12\n\x08\x62ool_val\x18\x04 \x01(\x08H\x00\x12\x13\n\tbytes_val\x18\x05 \x01(\x0cH\x00\x12\x17\n\tfloat_val\x18\x06 \x01(\x02\x42\x02\x18\x01H\x00\x12\x14\n\ndouble_val\x18\x0e \x01(\x01H\x00\x12*\n\x0b\x64\x65\x63imal_val\x18\x07 \x01(\x0b\x32\x0f.gnmi.Decimal64B\x02\x18\x01H\x00\x12)\n\x0cleaflist_val\x18\x08 \x01(\x0b\x32\x11.gnmi.ScalarArrayH\x00\x12\'\n\x07\x61ny_val\x18\t \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x12\x12\n\x08json_val\x18\n \x01(\x0cH\x00\x12\x17\n\rjson_ietf_val\x18\x0b \x01(\x0cH\x00\x12\x13\n\tascii_val\x18\x0c \x01(\tH\x00\x12\x15\n\x0bproto_bytes\x18\r \x01(\x0cH\x00\x42\x07\n\x05value\"Y\n\x04Path\x12\x13\n\x07\x65lement\x18\x01 \x03(\tB\x02\x18\x01\x12\x0e\n\x06origin\x18\x02 \x01(\t\x12\x1c\n\x04\x65lem\x18\x03 \x03(\x0b\x32\x0e.gnmi.PathElem\x12\x0e\n\x06target\x18\x04 \x01(\t\"j\n\x08PathElem\x12\x0c\n\x04name\x18\x01 \x01(\t\x12$\n\x03key\x18\x02 \x03(\x0b\x32\x17.gnmi.PathElem.KeyEntry\x1a*\n\x08KeyEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"8\n\x05Value\x12\r\n\x05value\x18\x01 \x01(\x0c\x12\x1c\n\x04type\x18\x02 \x01(\x0e\x32\x0e.gnmi.Encoding:\x02\x18\x01\"N\n\x05\x45rror\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\"\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\x14.google.protobuf.Any:\x02\x18\x01\"2\n\tDecimal64\x12\x0e\n\x06\x64igits\x18\x01 \x01(\x03\x12\x11\n\tprecision\x18\x02 \x01(\r:\x02\x18\x01\"0\n\x0bScalarArray\x12!\n\x07\x65lement\x18\x01 \x03(\x0b\x32\x10.gnmi.TypedValue\"\x99\x01\n\x10SubscribeRequest\x12+\n\tsubscribe\x18\x01 \x01(\x0b\x32\x16.gnmi.SubscriptionListH\x00\x12\x1a\n\x04poll\x18\x03 \x01(\x0b\x32\n.gnmi.PollH\x00\x12\"\n\textension\x18\x05 \x03(\x0b\x32\x0f.gnmi.ExtensionB\t\n\x07requestJ\x04\x08\x04\x10\x05R\x07\x61liases\"\x06\n\x04Poll\"\xa4\x01\n\x11SubscribeResponse\x12$\n\x06update\x18\x01 \x01(\x0b\x32\x12.gnmi.NotificationH\x00\x12\x17\n\rsync_response\x18\x03 \x01(\x08H\x00\x12 \n\x05\x65rror\x18\x04 \x01(\x0b\x32\x0b.gnmi.ErrorB\x02\x18\x01H\x00\x12\"\n\textension\x18\x05 \x03(\x0b\x32\x0f.gnmi.ExtensionB\n\n\x08response\"\xd5\x02\n\x10SubscriptionList\x12\x1a\n\x06prefix\x18\x01 \x01(\x0b\x32\n.gnmi.Path\x12(\n\x0csubscription\x18\x02 \x03(\x0b\x32\x12.gnmi.Subscription\x12\x1d\n\x03qos\x18\x04 \x01(\x0b\x32\x10.gnmi.QOSMarking\x12)\n\x04mode\x18\x05 \x01(\x0e\x32\x1b.gnmi.SubscriptionList.Mode\x12\x19\n\x11\x61llow_aggregation\x18\x06 \x01(\x08\x12#\n\nuse_models\x18\x07 \x03(\x0b\x32\x0f.gnmi.ModelData\x12 \n\x08\x65ncoding\x18\x08 \x01(\x0e\x32\x0e.gnmi.Encoding\x12\x14\n\x0cupdates_only\x18\t \x01(\x08\"&\n\x04Mode\x12\n\n\x06STREAM\x10\x00\x12\x08\n\x04ONCE\x10\x01\x12\x08\n\x04POLL\x10\x02J\x04\x08\x03\x10\x04R\x0buse_aliases\"\x9f\x01\n\x0cSubscription\x12\x18\n\x04path\x18\x01 \x01(\x0b\x32\n.gnmi.Path\x12$\n\x04mode\x18\x02 \x01(\x0e\x32\x16.gnmi.SubscriptionMode\x12\x17\n\x0fsample_interval\x18\x03 \x01(\x04\x12\x1a\n\x12suppress_redundant\x18\x04 \x01(\x08\x12\x1a\n\x12heartbeat_interval\x18\x05 \x01(\x04\"\x1d\n\nQOSMarking\x12\x0f\n\x07marking\x18\x01 \x01(\r\"\xa5\x01\n\nSetRequest\x12\x1a\n\x06prefix\x18\x01 \x01(\x0b\x32\n.gnmi.Path\x12\x1a\n\x06\x64\x65lete\x18\x02 \x03(\x0b\x32\n.gnmi.Path\x12\x1d\n\x07replace\x18\x03 \x03(\x0b\x32\x0c.gnmi.Update\x12\x1c\n\x06update\x18\x04 \x03(\x0b\x32\x0c.gnmi.Update\x12\"\n\textension\x18\x05 \x03(\x0b\x32\x0f.gnmi.Extension\"\xa8\x01\n\x0bSetResponse\x12\x1a\n\x06prefix\x18\x01 \x01(\x0b\x32\n.gnmi.Path\x12$\n\x08response\x18\x02 \x03(\x0b\x32\x12.gnmi.UpdateResult\x12 \n\x07message\x18\x03 \x01(\x0b\x32\x0b.gnmi.ErrorB\x02\x18\x01\x12\x11\n\ttimestamp\x18\x04 \x01(\x03\x12\"\n\textension\x18\x05 \x03(\x0b\x32\x0f.gnmi.Extension\"\xca\x01\n\x0cUpdateResult\x12\x15\n\ttimestamp\x18\x01 \x01(\x03\x42\x02\x18\x01\x12\x18\n\x04path\x18\x02 \x01(\x0b\x32\n.gnmi.Path\x12 \n\x07message\x18\x03 \x01(\x0b\x32\x0b.gnmi.ErrorB\x02\x18\x01\x12(\n\x02op\x18\x04 \x01(\x0e\x32\x1c.gnmi.UpdateResult.Operation\"=\n\tOperation\x12\x0b\n\x07INVALID\x10\x00\x12\n\n\x06\x44\x45LETE\x10\x01\x12\x0b\n\x07REPLACE\x10\x02\x12\n\n\x06UPDATE\x10\x03\"\x93\x02\n\nGetRequest\x12\x1a\n\x06prefix\x18\x01 \x01(\x0b\x32\n.gnmi.Path\x12\x18\n\x04path\x18\x02 \x03(\x0b\x32\n.gnmi.Path\x12\'\n\x04type\x18\x03 \x01(\x0e\x32\x19.gnmi.GetRequest.DataType\x12 \n\x08\x65ncoding\x18\x05 \x01(\x0e\x32\x0e.gnmi.Encoding\x12#\n\nuse_models\x18\x06 \x03(\x0b\x32\x0f.gnmi.ModelData\x12\"\n\textension\x18\x07 \x03(\x0b\x32\x0f.gnmi.Extension\";\n\x08\x44\x61taType\x12\x07\n\x03\x41LL\x10\x00\x12\n\n\x06\x43ONFIG\x10\x01\x12\t\n\x05STATE\x10\x02\x12\x0f\n\x0bOPERATIONAL\x10\x03\"{\n\x0bGetResponse\x12(\n\x0cnotification\x18\x01 \x03(\x0b\x32\x12.gnmi.Notification\x12\x1e\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x0b.gnmi.ErrorB\x02\x18\x01\x12\"\n\textension\x18\x03 \x03(\x0b\x32\x0f.gnmi.Extension\"7\n\x11\x43\x61pabilityRequest\x12\"\n\textension\x18\x01 \x03(\x0b\x32\x0f.gnmi.Extension\"\xa6\x01\n\x12\x43\x61pabilityResponse\x12)\n\x10supported_models\x18\x01 \x03(\x0b\x32\x0f.gnmi.ModelData\x12+\n\x13supported_encodings\x18\x02 \x03(\x0e\x32\x0e.gnmi.Encoding\x12\x14\n\x0cgNMI_version\x18\x03 \x01(\t\x12\"\n\textension\x18\x04 \x03(\x0b\x32\x0f.gnmi.Extension\"@\n\tModelData\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0corganization\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t*3\n\x0b\x45xtensionID\x12\r\n\tEID_UNSET\x10\x00\x12\x15\n\x10\x45ID_EXPERIMENTAL\x10\xe7\x07*D\n\x08\x45ncoding\x12\x08\n\x04JSON\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\t\n\x05PROTO\x10\x02\x12\t\n\x05\x41SCII\x10\x03\x12\r\n\tJSON_IETF\x10\x04*A\n\x10SubscriptionMode\x12\x12\n\x0eTARGET_DEFINED\x10\x00\x12\r\n\tON_CHANGE\x10\x01\x12\n\n\x06SAMPLE\x10\x02\x32\xe3\x01\n\x04gNMI\x12\x41\n\x0c\x43\x61pabilities\x12\x17.gnmi.CapabilityRequest\x1a\x18.gnmi.CapabilityResponse\x12*\n\x03Get\x12\x10.gnmi.GetRequest\x1a\x11.gnmi.GetResponse\x12*\n\x03Set\x12\x10.gnmi.SetRequest\x1a\x11.gnmi.SetResponse\x12@\n\tSubscribe\x12\x16.gnmi.SubscribeRequest\x1a\x17.gnmi.SubscribeResponse(\x01\x30\x01:3\n\x0cgnmi_service\x12\x1c.google.protobuf.FileOptions\x18\xe9\x07 \x01(\tBS\n\x15\x63om.github.gnmi.protoB\tGnmiProtoP\x01Z%github.com/openconfig/gnmi/proto/gnmi\xca>\x05\x30.8.0b\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'gnmi_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:
google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(gnmi_service)
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\025com.github.gnmi.protoB\tGnmiProtoP\001Z%github.com/openconfig/gnmi/proto/gnmi\312>\0050.8.0'
_UPDATE.fields_by_name['value']._options = None
_UPDATE.fields_by_name['value']._serialized_options = b'\030\001'
_TYPEDVALUE.fields_by_name['float_val']._options = None
_TYPEDVALUE.fields_by_name['float_val']._serialized_options = b'\030\001'
_TYPEDVALUE.fields_by_name['decimal_val']._options = None
_TYPEDVALUE.fields_by_name['decimal_val']._serialized_options = b'\030\001'
_PATH.fields_by_name['element']._options = None
_PATH.fields_by_name['element']._serialized_options = b'\030\001'
_PATHELEM_KEYENTRY._options = None
_PATHELEM_KEYENTRY._serialized_options = b'8\001'
_VALUE._options = None
_VALUE._serialized_options = b'\030\001'
_ERROR._options = None
_ERROR._serialized_options = b'\030\001'
_DECIMAL64._options = None
_DECIMAL64._serialized_options = b'\030\001'
_SUBSCRIBERESPONSE.fields_by_name['error']._options = None
_SUBSCRIBERESPONSE.fields_by_name['error']._serialized_options = b'\030\001'
_SETRESPONSE.fields_by_name['message']._options = None
_SETRESPONSE.fields_by_name['message']._serialized_options = b'\030\001'
_UPDATERESULT.fields_by_name['timestamp']._options = None
_UPDATERESULT.fields_by_name['timestamp']._serialized_options = b'\030\001'
_UPDATERESULT.fields_by_name['message']._options = None
_UPDATERESULT.fields_by_name['message']._serialized_options = b'\030\001'
_GETRESPONSE.fields_by_name['error']._options = None
_GETRESPONSE.fields_by_name['error']._serialized_options = b'\030\001'
_EXTENSIONID._serialized_start=3780
_EXTENSIONID._serialized_end=3831
_ENCODING._serialized_start=3833
_ENCODING._serialized_end=3901
_SUBSCRIPTIONMODE._serialized_start=3903
_SUBSCRIPTIONMODE._serialized_end=3968
_EXTENSION._serialized_start=82
_EXTENSION._serialized_end=242
_REGISTEREDEXTENSION._serialized_start=244
_REGISTEREDEXTENSION._serialized_end=309
_MASTERARBITRATION._serialized_start=311
_MASTERARBITRATION._serialized_end=392
_UINT128._serialized_start=394
_UINT128._serialized_end=430
_ROLE._serialized_start=432
_ROLE._serialized_end=450
_HISTORY._serialized_start=452
_HISTORY._serialized_end=531
_TIMERANGE._serialized_start=533
_TIMERANGE._serialized_end=572
_NOTIFICATION._serialized_start=575
_NOTIFICATION._serialized_end=723
_UPDATE._serialized_start=725
_UPDATE._serialized_end=842
_TYPEDVALUE._serialized_start=845
_TYPEDVALUE._serialized_end=1232
_PATH._serialized_start=1234
_PATH._serialized_end=1323
_PATHELEM._serialized_start=1325
_PATHELEM._serialized_end=1431
_PATHELEM_KEYENTRY._serialized_start=1389
_PATHELEM_KEYENTRY._serialized_end=1431
_VALUE._serialized_start=1433
_VALUE._serialized_end=1489
_ERROR._serialized_start=1491
_ERROR._serialized_end=1569
_DECIMAL64._serialized_start=1571
_DECIMAL64._serialized_end=1621
_SCALARARRAY._serialized_start=1623
_SCALARARRAY._serialized_end=1671
_SUBSCRIBEREQUEST._serialized_start=1674
_SUBSCRIBEREQUEST._serialized_end=1827
_POLL._serialized_start=1829
_POLL._serialized_end=1835
_SUBSCRIBERESPONSE._serialized_start=1838
_SUBSCRIBERESPONSE._serialized_end=2002
_SUBSCRIPTIONLIST._serialized_start=2005
_SUBSCRIPTIONLIST._serialized_end=2346
_SUBSCRIPTIONLIST_MODE._serialized_start=2289
_SUBSCRIPTIONLIST_MODE._serialized_end=2327
_SUBSCRIPTION._serialized_start=2349
_SUBSCRIPTION._serialized_end=2508
_QOSMARKING._serialized_start=2510
_QOSMARKING._serialized_end=2539
_SETREQUEST._serialized_start=2542
_SETREQUEST._serialized_end=2707
_SETRESPONSE._serialized_start=2710
_SETRESPONSE._serialized_end=2878
_UPDATERESULT._serialized_start=2881
_UPDATERESULT._serialized_end=3083
_UPDATERESULT_OPERATION._serialized_start=3022
_UPDATERESULT_OPERATION._serialized_end=3083
_GETREQUEST._serialized_start=3086
_GETREQUEST._serialized_end=3361
_GETREQUEST_DATATYPE._serialized_start=3302
_GETREQUEST_DATATYPE._serialized_end=3361
_GETRESPONSE._serialized_start=3363
_GETRESPONSE._serialized_end=3486
_CAPABILITYREQUEST._serialized_start=3488
_CAPABILITYREQUEST._serialized_end=3543
_CAPABILITYRESPONSE._serialized_start=3546
_CAPABILITYRESPONSE._serialized_end=3712
_MODELDATA._serialized_start=3714
_MODELDATA._serialized_end=3778
_GNMI._serialized_start=3971
_GNMI._serialized_end=4198
# @@protoc_insertion_point(module_scope)
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: proto/gnmi/gnmi.proto
import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
from google.protobuf import descriptor_pb2
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
DESCRIPTOR = _descriptor.FileDescriptor(
name='proto/gnmi/gnmi.proto',
package='gnmi',
syntax='proto3',
serialized_pb=_b('\n\x15proto/gnmi/gnmi.proto\x12\x04gnmi\x1a\x19google/protobuf/any.proto\x1a google/protobuf/descriptor.proto\"\x86\x01\n\x0cNotification\x12\x11\n\ttimestamp\x18\x01 \x01(\x03\x12\x1a\n\x06prefix\x18\x02 \x01(\x0b\x32\n.gnmi.Path\x12\r\n\x05\x61lias\x18\x03 \x01(\t\x12\x1c\n\x06update\x18\x04 \x03(\x0b\x32\x0c.gnmi.Update\x12\x1a\n\x06\x64\x65lete\x18\x05 \x03(\x0b\x32\n.gnmi.Path\"u\n\x06Update\x12\x18\n\x04path\x18\x01 \x01(\x0b\x32\n.gnmi.Path\x12\x1e\n\x05value\x18\x02 \x01(\x0b\x32\x0b.gnmi.ValueB\x02\x18\x01\x12\x1d\n\x03val\x18\x03 \x01(\x0b\x32\x10.gnmi.TypedValue\x12\x12\n\nduplicates\x18\x04 \x01(\r\"\xce\x02\n\nTypedValue\x12\x14\n\nstring_val\x18\x01 \x01(\tH\x00\x12\x11\n\x07int_val\x18\x02 \x01(\x03H\x00\x12\x12\n\x08uint_val\x18\x03 \x01(\x04H\x00\x12\x12\n\x08\x62ool_val\x18\x04 \x01(\x08H\x00\x12\x13\n\tbytes_val\x18\x05 \x01(\x0cH\x00\x12\x13\n\tfloat_val\x18\x06 \x01(\x02H\x00\x12&\n\x0b\x64\x65\x63imal_val\x18\x07 \x01(\x0b\x32\x0f.gnmi.Decimal64H\x00\x12)\n\x0cleaflist_val\x18\x08 \x01(\x0b\x32\x11.gnmi.ScalarArrayH\x00\x12\'\n\x07\x61ny_val\x18\t \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x12\x12\n\x08json_val\x18\n \x01(\x0cH\x00\x12\x17\n\rjson_ietf_val\x18\x0b \x01(\x0cH\x00\x12\x13\n\tascii_val\x18\x0c \x01(\tH\x00\x42\x07\n\x05value\"Y\n\x04Path\x12\x13\n\x07\x65lement\x18\x01 \x03(\tB\x02\x18\x01\x12\x0e\n\x06origin\x18\x02 \x01(\t\x12\x1c\n\x04\x65lem\x18\x03 \x03(\x0b\x32\x0e.gnmi.PathElem\x12\x0e\n\x06target\x18\x04 \x01(\t\"j\n\x08PathElem\x12\x0c\n\x04name\x18\x01 \x01(\t\x12$\n\x03key\x18\x02 \x03(\x0b\x32\x17.gnmi.PathElem.KeyEntry\x1a*\n\x08KeyEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"8\n\x05Value\x12\r\n\x05value\x18\x01 \x01(\x0c\x12\x1c\n\x04type\x18\x02 \x01(\x0e\x32\x0e.gnmi.Encoding:\x02\x18\x01\"N\n\x05\x45rror\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\"\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\x14.google.protobuf.Any:\x02\x18\x01\".\n\tDecimal64\x12\x0e\n\x06\x64igits\x18\x01 \x01(\x04\x12\x11\n\tprecision\x18\x02 \x01(\r\"0\n\x0bScalarArray\x12!\n\x07\x65lement\x18\x01 \x03(\x0b\x32\x10.gnmi.TypedValue\"\x8a\x01\n\x10SubscribeRequest\x12+\n\tsubscribe\x18\x01 \x01(\x0b\x32\x16.gnmi.SubscriptionListH\x00\x12\x1a\n\x04poll\x18\x03 \x01(\x0b\x32\n.gnmi.PollH\x00\x12\"\n\x07\x61liases\x18\x04 \x01(\x0b\x32\x0f.gnmi.AliasListH\x00\x42\t\n\x07request\"\x06\n\x04Poll\"\x80\x01\n\x11SubscribeResponse\x12$\n\x06update\x18\x01 \x01(\x0b\x32\x12.gnmi.NotificationH\x00\x12\x17\n\rsync_response\x18\x03 \x01(\x08H\x00\x12 \n\x05\x65rror\x18\x04 \x01(\x0b\x32\x0b.gnmi.ErrorB\x02\x18\x01H\x00\x42\n\n\x08response\"\xd7\x02\n\x10SubscriptionList\x12\x1a\n\x06prefix\x18\x01 \x01(\x0b\x32\n.gnmi.Path\x12(\n\x0csubscription\x18\x02 \x03(\x0b\x32\x12.gnmi.Subscription\x12\x13\n\x0buse_aliases\x18\x03 \x01(\x08\x12\x1d\n\x03qos\x18\x04 \x01(\x0b\x32\x10.gnmi.QOSMarking\x12)\n\x04mode\x18\x05 \x01(\x0e\x32\x1b.gnmi.SubscriptionList.Mode\x12\x19\n\x11\x61llow_aggregation\x18\x06 \x01(\x08\x12#\n\nuse_models\x18\x07 \x03(\x0b\x32\x0f.gnmi.ModelData\x12 \n\x08\x65ncoding\x18\x08 \x01(\x0e\x32\x0e.gnmi.Encoding\x12\x14\n\x0cupdates_only\x18\t \x01(\x08\"&\n\x04Mode\x12\n\n\x06STREAM\x10\x00\x12\x08\n\x04ONCE\x10\x01\x12\x08\n\x04POLL\x10\x02\"\x9f\x01\n\x0cSubscription\x12\x18\n\x04path\x18\x01 \x01(\x0b\x32\n.gnmi.Path\x12$\n\x04mode\x18\x02 \x01(\x0e\x32\x16.gnmi.SubscriptionMode\x12\x17\n\x0fsample_interval\x18\x03 \x01(\x04\x12\x1a\n\x12suppress_redundant\x18\x04 \x01(\x08\x12\x1a\n\x12heartbeat_interval\x18\x05 \x01(\x04\"\x1d\n\nQOSMarking\x12\x0f\n\x07marking\x18\x01 \x01(\r\"0\n\x05\x41lias\x12\x18\n\x04path\x18\x01 \x01(\x0b\x32\n.gnmi.Path\x12\r\n\x05\x61lias\x18\x02 \x01(\t\"\'\n\tAliasList\x12\x1a\n\x05\x61lias\x18\x01 \x03(\x0b\x32\x0b.gnmi.Alias\"\x81\x01\n\nSetRequest\x12\x1a\n\x06prefix\x18\x01 \x01(\x0b\x32\n.gnmi.Path\x12\x1a\n\x06\x64\x65lete\x18\x02 \x03(\x0b\x32\n.gnmi.Path\x12\x1d\n\x07replace\x18\x03 \x03(\x0b\x32\x0c.gnmi.Update\x12\x1c\n\x06update\x18\x04 \x03(\x0b\x32\x0c.gnmi.Update\"\x84\x01\n\x0bSetResponse\x12\x1a\n\x06prefix\x18\x01 \x01(\x0b\x32\n.gnmi.Path\x12$\n\x08response\x18\x02 \x03(\x0b\x32\x12.gnmi.UpdateResult\x12 \n\x07message\x18\x03 \x01(\x0b\x32\x0b.gnmi.ErrorB\x02\x18\x01\x12\x11\n\ttimestamp\x18\x04 \x01(\x03\"\xca\x01\n\x0cUpdateResult\x12\x15\n\ttimestamp\x18\x01 \x01(\x03\x42\x02\x18\x01\x12\x18\n\x04path\x18\x02 \x01(\x0b\x32\n.gnmi.Path\x12 \n\x07message\x18\x03 \x01(\x0b\x32\x0b.gnmi.ErrorB\x02\x18\x01\x12(\n\x02op\x18\x04 \x01(\x0e\x32\x1c.gnmi.UpdateResult.Operation\"=\n\tOperation\x12\x0b\n\x07INVALID\x10\x00\x12\n\n\x06\x44\x45LETE\x10\x01\x12\x0b\n\x07REPLACE\x10\x02\x12\n\n\x06UPDATE\x10\x03\"\xef\x01\n\nGetRequest\x12\x1a\n\x06prefix\x18\x01 \x01(\x0b\x32\n.gnmi.Path\x12\x18\n\x04path\x18\x02 \x03(\x0b\x32\n.gnmi.Path\x12\'\n\x04type\x18\x03 \x01(\x0e\x32\x19.gnmi.GetRequest.DataType\x12 \n\x08\x65ncoding\x18\x05 \x01(\x0e\x32\x0e.gnmi.Encoding\x12#\n\nuse_models\x18\x06 \x03(\x0b\x32\x0f.gnmi.ModelData\";\n\x08\x44\x61taType\x12\x07\n\x03\x41LL\x10\x00\x12\n\n\x06\x43ONFIG\x10\x01\x12\t\n\x05STATE\x10\x02\x12\x0f\n\x0bOPERATIONAL\x10\x03\"W\n\x0bGetResponse\x12(\n\x0cnotification\x18\x01 \x03(\x0b\x32\x12.gnmi.Notification\x12\x1e\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x0b.gnmi.ErrorB\x02\x18\x01\"\x13\n\x11\x43\x61pabilityRequest\"\x82\x01\n\x12\x43\x61pabilityResponse\x12)\n\x10supported_models\x18\x01 \x03(\x0b\x32\x0f.gnmi.ModelData\x12+\n\x13supported_encodings\x18\x02 \x03(\x0e\x32\x0e.gnmi.Encoding\x12\x14\n\x0cgNMI_version\x18\x03 \x01(\t\"@\n\tModelData\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0corganization\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t*D\n\x08\x45ncoding\x12\x08\n\x04JSON\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\t\n\x05PROTO\x10\x02\x12\t\n\x05\x41SCII\x10\x03\x12\r\n\tJSON_IETF\x10\x04*A\n\x10SubscriptionMode\x12\x12\n\x0eTARGET_DEFINED\x10\x00\x12\r\n\tON_CHANGE\x10\x01\x12\n\n\x06SAMPLE\x10\x02\x32\xe3\x01\n\x04gNMI\x12\x41\n\x0c\x43\x61pabilities\x12\x17.gnmi.CapabilityRequest\x1a\x18.gnmi.CapabilityResponse\x12*\n\x03Get\x12\x10.gnmi.GetRequest\x1a\x11.gnmi.GetResponse\x12*\n\x03Set\x12\x10.gnmi.SetRequest\x1a\x11.gnmi.SetResponse\x12@\n\tSubscribe\x12\x16.gnmi.SubscribeRequest\x1a\x17.gnmi.SubscribeResponse(\x01\x30\x01:3\n\x0cgnmi_service\x12\x1c.google.protobuf.FileOptions\x18\xe9\x07 \x01(\tB\x08\xca>\x05\x30.5.0b\x06proto3')
,
dependencies=[google_dot_protobuf_dot_any__pb2.DESCRIPTOR,google_dot_protobuf_dot_descriptor__pb2.DESCRIPTOR,])
_ENCODING = _descriptor.EnumDescriptor(
name='Encoding',
full_name='gnmi.Encoding',
filename=None,
file=DESCRIPTOR,
values=[
_descriptor.EnumValueDescriptor(
name='JSON', index=0, number=0,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='BYTES', index=1, number=1,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='PROTO', index=2, number=2,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='ASCII', index=3, number=3,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='JSON_IETF', index=4, number=4,
options=None,
type=None),
],
containing_type=None,
options=None,
serialized_start=3053,
serialized_end=3121,
)
_sym_db.RegisterEnumDescriptor(_ENCODING)
Encoding = enum_type_wrapper.EnumTypeWrapper(_ENCODING)
_SUBSCRIPTIONMODE = _descriptor.EnumDescriptor(
name='SubscriptionMode',
full_name='gnmi.SubscriptionMode',
filename=None,
file=DESCRIPTOR,
values=[
_descriptor.EnumValueDescriptor(
name='TARGET_DEFINED', index=0, number=0,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='ON_CHANGE', index=1, number=1,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='SAMPLE', index=2, number=2,
options=None,
type=None),
],
containing_type=None,
options=None,
serialized_start=3123,
serialized_end=3188,
)
_sym_db.RegisterEnumDescriptor(_SUBSCRIPTIONMODE)
SubscriptionMode = enum_type_wrapper.EnumTypeWrapper(_SUBSCRIPTIONMODE)
JSON = 0
BYTES = 1
PROTO = 2
ASCII = 3
JSON_IETF = 4
TARGET_DEFINED = 0
ON_CHANGE = 1
SAMPLE = 2
GNMI_SERVICE_FIELD_NUMBER = 1001
gnmi_service = _descriptor.FieldDescriptor(
name='gnmi_service', full_name='gnmi.gnmi_service', index=0,
number=1001, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=True, extension_scope=None,
options=None)
_SUBSCRIPTIONLIST_MODE = _descriptor.EnumDescriptor(
name='Mode',
full_name='gnmi.SubscriptionList.Mode',
filename=None,
file=DESCRIPTOR,
values=[
_descriptor.EnumValueDescriptor(
name='STREAM', index=0, number=0,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='ONCE', index=1, number=1,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='POLL', index=2, number=2,
options=None,
type=None),
],
containing_type=None,
options=None,
serialized_start=1706,
serialized_end=1744,
)
_sym_db.RegisterEnumDescriptor(_SUBSCRIPTIONLIST_MODE)
_UPDATERESULT_OPERATION = _descriptor.EnumDescriptor(
name='Operation',
full_name='gnmi.UpdateResult.Operation',
filename=None,
file=DESCRIPTOR,
values=[
_descriptor.EnumValueDescriptor(
name='INVALID', index=0, number=0,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='DELETE', index=1, number=1,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='REPLACE', index=2, number=2,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='UPDATE', index=3, number=3,
options=None,
type=None),
],
containing_type=None,
options=None,
serialized_start=2439,
serialized_end=2500,
)
_sym_db.RegisterEnumDescriptor(_UPDATERESULT_OPERATION)
_GETREQUEST_DATATYPE = _descriptor.EnumDescriptor(
name='DataType',
full_name='gnmi.GetRequest.DataType',
filename=None,
file=DESCRIPTOR,
values=[
_descriptor.EnumValueDescriptor(
name='ALL', index=0, number=0,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='CONFIG', index=1, number=1,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='STATE', index=2, number=2,
options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='OPERATIONAL', index=3, number=3,
options=None,
type=None),
],
containing_type=None,
options=None,
serialized_start=2683,
serialized_end=2742,
)
_sym_db.RegisterEnumDescriptor(_GETREQUEST_DATATYPE)
_NOTIFICATION = _descriptor.Descriptor(
name='Notification',
full_name='gnmi.Notification',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='timestamp', full_name='gnmi.Notification.timestamp', index=0,
number=1, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='prefix', full_name='gnmi.Notification.prefix', index=1,
number=2, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='alias', full_name='gnmi.Notification.alias', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='update', full_name='gnmi.Notification.update', index=3,
number=4, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='delete', full_name='gnmi.Notification.delete', index=4,
number=5, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=93,
serialized_end=227,
)
_UPDATE = _descriptor.Descriptor(
name='Update',
full_name='gnmi.Update',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='path', full_name='gnmi.Update.path', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='value', full_name='gnmi.Update.value', index=1,
number=2, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
_descriptor.FieldDescriptor(
name='val', full_name='gnmi.Update.val', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='duplicates', full_name='gnmi.Update.duplicates', index=3,
number=4, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=229,
serialized_end=346,
)
_TYPEDVALUE = _descriptor.Descriptor(
name='TypedValue',
full_name='gnmi.TypedValue',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='string_val', full_name='gnmi.TypedValue.string_val', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='int_val', full_name='gnmi.TypedValue.int_val', index=1,
number=2, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='uint_val', full_name='gnmi.TypedValue.uint_val', index=2,
number=3, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='bool_val', full_name='gnmi.TypedValue.bool_val', index=3,
number=4, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='bytes_val', full_name='gnmi.TypedValue.bytes_val', index=4,
number=5, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='float_val', full_name='gnmi.TypedValue.float_val', index=5,
number=6, type=2, cpp_type=6, label=1,
has_default_value=False, default_value=float(0),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='decimal_val', full_name='gnmi.TypedValue.decimal_val', index=6,
number=7, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='leaflist_val', full_name='gnmi.TypedValue.leaflist_val', index=7,
number=8, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='any_val', full_name='gnmi.TypedValue.any_val', index=8,
number=9, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='json_val', full_name='gnmi.TypedValue.json_val', index=9,
number=10, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='json_ietf_val', full_name='gnmi.TypedValue.json_ietf_val', index=10,
number=11, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='ascii_val', full_name='gnmi.TypedValue.ascii_val', index=11,
number=12, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
_descriptor.OneofDescriptor(
name='value', full_name='gnmi.TypedValue.value',
index=0, containing_type=None, fields=[]),
],
serialized_start=349,
serialized_end=683,
)
_PATH = _descriptor.Descriptor(
name='Path',
full_name='gnmi.Path',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='element', full_name='gnmi.Path.element', index=0,
number=1, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
_descriptor.FieldDescriptor(
name='origin', full_name='gnmi.Path.origin', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='elem', full_name='gnmi.Path.elem', index=2,
number=3, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='target', full_name='gnmi.Path.target', index=3,
number=4, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=685,
serialized_end=774,
)
_PATHELEM_KEYENTRY = _descriptor.Descriptor(
name='KeyEntry',
full_name='gnmi.PathElem.KeyEntry',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='key', full_name='gnmi.PathElem.KeyEntry.key', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='value', full_name='gnmi.PathElem.KeyEntry.value', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')),
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=840,
serialized_end=882,
)
_PATHELEM = _descriptor.Descriptor(
name='PathElem',
full_name='gnmi.PathElem',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='name', full_name='gnmi.PathElem.name', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='key', full_name='gnmi.PathElem.key', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[_PATHELEM_KEYENTRY, ],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=776,
serialized_end=882,
)
_VALUE = _descriptor.Descriptor(
name='Value',
full_name='gnmi.Value',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='value', full_name='gnmi.Value.value', index=0,
number=1, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='type', full_name='gnmi.Value.type', index=1,
number=2, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\030\001')),
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=884,
serialized_end=940,
)
_ERROR = _descriptor.Descriptor(
name='Error',
full_name='gnmi.Error',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='code', full_name='gnmi.Error.code', index=0,
number=1, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='message', full_name='gnmi.Error.message', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='data', full_name='gnmi.Error.data', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\030\001')),
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=942,
serialized_end=1020,
)
_DECIMAL64 = _descriptor.Descriptor(
name='Decimal64',
full_name='gnmi.Decimal64',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='digits', full_name='gnmi.Decimal64.digits', index=0,
number=1, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='precision', full_name='gnmi.Decimal64.precision', index=1,
number=2, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=1022,
serialized_end=1068,
)
_SCALARARRAY = _descriptor.Descriptor(
name='ScalarArray',
full_name='gnmi.ScalarArray',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='element', full_name='gnmi.ScalarArray.element', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=1070,
serialized_end=1118,
)
_SUBSCRIBEREQUEST = _descriptor.Descriptor(
name='SubscribeRequest',
full_name='gnmi.SubscribeRequest',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='subscribe', full_name='gnmi.SubscribeRequest.subscribe', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='poll', full_name='gnmi.SubscribeRequest.poll', index=1,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='aliases', full_name='gnmi.SubscribeRequest.aliases', index=2,
number=4, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
_descriptor.OneofDescriptor(
name='request', full_name='gnmi.SubscribeRequest.request',
index=0, containing_type=None, fields=[]),
],
serialized_start=1121,
serialized_end=1259,
)
_POLL = _descriptor.Descriptor(
name='Poll',
full_name='gnmi.Poll',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=1261,
serialized_end=1267,
)
_SUBSCRIBERESPONSE = _descriptor.Descriptor(
name='SubscribeResponse',
full_name='gnmi.SubscribeResponse',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='update', full_name='gnmi.SubscribeResponse.update', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='sync_response', full_name='gnmi.SubscribeResponse.sync_response', index=1,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='error', full_name='gnmi.SubscribeResponse.error', index=2,
number=4, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
_descriptor.OneofDescriptor(
name='response', full_name='gnmi.SubscribeResponse.response',
index=0, containing_type=None, fields=[]),
],
serialized_start=1270,
serialized_end=1398,
)
_SUBSCRIPTIONLIST = _descriptor.Descriptor(
name='SubscriptionList',
full_name='gnmi.SubscriptionList',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='prefix', full_name='gnmi.SubscriptionList.prefix', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='subscription', full_name='gnmi.SubscriptionList.subscription', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='use_aliases', full_name='gnmi.SubscriptionList.use_aliases', index=2,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='qos', full_name='gnmi.SubscriptionList.qos', index=3,
number=4, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='mode', full_name='gnmi.SubscriptionList.mode', index=4,
number=5, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='allow_aggregation', full_name='gnmi.SubscriptionList.allow_aggregation', index=5,
number=6, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='use_models', full_name='gnmi.SubscriptionList.use_models', index=6,
number=7, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='encoding', full_name='gnmi.SubscriptionList.encoding', index=7,
number=8, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='updates_only', full_name='gnmi.SubscriptionList.updates_only', index=8,
number=9, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
_SUBSCRIPTIONLIST_MODE,
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=1401,
serialized_end=1744,
)
_SUBSCRIPTION = _descriptor.Descriptor(
name='Subscription',
full_name='gnmi.Subscription',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='path', full_name='gnmi.Subscription.path', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='mode', full_name='gnmi.Subscription.mode', index=1,
number=2, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='sample_interval', full_name='gnmi.Subscription.sample_interval', index=2,
number=3, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='suppress_redundant', full_name='gnmi.Subscription.suppress_redundant', index=3,
number=4, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='heartbeat_interval', full_name='gnmi.Subscription.heartbeat_interval', index=4,
number=5, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=1747,
serialized_end=1906,
)
_QOSMARKING = _descriptor.Descriptor(
name='QOSMarking',
full_name='gnmi.QOSMarking',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='marking', full_name='gnmi.QOSMarking.marking', index=0,
number=1, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=1908,
serialized_end=1937,
)
_ALIAS = _descriptor.Descriptor(
name='Alias',
full_name='gnmi.Alias',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='path', full_name='gnmi.Alias.path', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='alias', full_name='gnmi.Alias.alias', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=1939,
serialized_end=1987,
)
_ALIASLIST = _descriptor.Descriptor(
name='AliasList',
full_name='gnmi.AliasList',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='alias', full_name='gnmi.AliasList.alias', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=1989,
serialized_end=2028,
)
_SETREQUEST = _descriptor.Descriptor(
name='SetRequest',
full_name='gnmi.SetRequest',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='prefix', full_name='gnmi.SetRequest.prefix', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='delete', full_name='gnmi.SetRequest.delete', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='replace', full_name='gnmi.SetRequest.replace', index=2,
number=3, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='update', full_name='gnmi.SetRequest.update', index=3,
number=4, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=2031,
serialized_end=2160,
)
_SETRESPONSE = _descriptor.Descriptor(
name='SetResponse',
full_name='gnmi.SetResponse',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='prefix', full_name='gnmi.SetResponse.prefix', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='response', full_name='gnmi.SetResponse.response', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='message', full_name='gnmi.SetResponse.message', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
_descriptor.FieldDescriptor(
name='timestamp', full_name='gnmi.SetResponse.timestamp', index=3,
number=4, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=2163,
serialized_end=2295,
)
_UPDATERESULT = _descriptor.Descriptor(
name='UpdateResult',
full_name='gnmi.UpdateResult',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='timestamp', full_name='gnmi.UpdateResult.timestamp', index=0,
number=1, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
_descriptor.FieldDescriptor(
name='path', full_name='gnmi.UpdateResult.path', index=1,
number=2, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='message', full_name='gnmi.UpdateResult.message', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
_descriptor.FieldDescriptor(
name='op', full_name='gnmi.UpdateResult.op', index=3,
number=4, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
_UPDATERESULT_OPERATION,
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=2298,
serialized_end=2500,
)
_GETREQUEST = _descriptor.Descriptor(
name='GetRequest',
full_name='gnmi.GetRequest',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='prefix', full_name='gnmi.GetRequest.prefix', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='path', full_name='gnmi.GetRequest.path', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='type', full_name='gnmi.GetRequest.type', index=2,
number=3, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='encoding', full_name='gnmi.GetRequest.encoding', index=3,
number=5, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='use_models', full_name='gnmi.GetRequest.use_models', index=4,
number=6, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
_GETREQUEST_DATATYPE,
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=2503,
serialized_end=2742,
)
_GETRESPONSE = _descriptor.Descriptor(
name='GetResponse',
full_name='gnmi.GetResponse',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='notification', full_name='gnmi.GetResponse.notification', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='error', full_name='gnmi.GetResponse.error', index=1,
number=2, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=2744,
serialized_end=2831,
)
_CAPABILITYREQUEST = _descriptor.Descriptor(
name='CapabilityRequest',
full_name='gnmi.CapabilityRequest',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=2833,
serialized_end=2852,
)
_CAPABILITYRESPONSE = _descriptor.Descriptor(
name='CapabilityResponse',
full_name='gnmi.CapabilityResponse',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='supported_models', full_name='gnmi.CapabilityResponse.supported_models', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='supported_encodings', full_name='gnmi.CapabilityResponse.supported_encodings', index=1,
number=2, type=14, cpp_type=8, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='gNMI_version', full_name='gnmi.CapabilityResponse.gNMI_version', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=2855,
serialized_end=2985,
)
_MODELDATA = _descriptor.Descriptor(
name='ModelData',
full_name='gnmi.ModelData',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='name', full_name='gnmi.ModelData.name', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='organization', full_name='gnmi.ModelData.organization', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='version', full_name='gnmi.ModelData.version', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=2987,
serialized_end=3051,
)
_NOTIFICATION.fields_by_name['prefix'].message_type = _PATH
_NOTIFICATION.fields_by_name['update'].message_type = _UPDATE
_NOTIFICATION.fields_by_name['delete'].message_type = _PATH
_UPDATE.fields_by_name['path'].message_type = _PATH
_UPDATE.fields_by_name['value'].message_type = _VALUE
_UPDATE.fields_by_name['val'].message_type = _TYPEDVALUE
_TYPEDVALUE.fields_by_name['decimal_val'].message_type = _DECIMAL64
_TYPEDVALUE.fields_by_name['leaflist_val'].message_type = _SCALARARRAY
_TYPEDVALUE.fields_by_name['any_val'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_TYPEDVALUE.oneofs_by_name['value'].fields.append(
_TYPEDVALUE.fields_by_name['string_val'])
_TYPEDVALUE.fields_by_name['string_val'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
_TYPEDVALUE.oneofs_by_name['value'].fields.append(
_TYPEDVALUE.fields_by_name['int_val'])
_TYPEDVALUE.fields_by_name['int_val'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
_TYPEDVALUE.oneofs_by_name['value'].fields.append(
_TYPEDVALUE.fields_by_name['uint_val'])
_TYPEDVALUE.fields_by_name['uint_val'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
_TYPEDVALUE.oneofs_by_name['value'].fields.append(
_TYPEDVALUE.fields_by_name['bool_val'])
_TYPEDVALUE.fields_by_name['bool_val'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
_TYPEDVALUE.oneofs_by_name['value'].fields.append(
_TYPEDVALUE.fields_by_name['bytes_val'])
_TYPEDVALUE.fields_by_name['bytes_val'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
_TYPEDVALUE.oneofs_by_name['value'].fields.append(
_TYPEDVALUE.fields_by_name['float_val'])
_TYPEDVALUE.fields_by_name['float_val'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
_TYPEDVALUE.oneofs_by_name['value'].fields.append(
_TYPEDVALUE.fields_by_name['decimal_val'])
_TYPEDVALUE.fields_by_name['decimal_val'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
_TYPEDVALUE.oneofs_by_name['value'].fields.append(
_TYPEDVALUE.fields_by_name['leaflist_val'])
_TYPEDVALUE.fields_by_name['leaflist_val'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
_TYPEDVALUE.oneofs_by_name['value'].fields.append(
_TYPEDVALUE.fields_by_name['any_val'])
_TYPEDVALUE.fields_by_name['any_val'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
_TYPEDVALUE.oneofs_by_name['value'].fields.append(
_TYPEDVALUE.fields_by_name['json_val'])
_TYPEDVALUE.fields_by_name['json_val'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
_TYPEDVALUE.oneofs_by_name['value'].fields.append(
_TYPEDVALUE.fields_by_name['json_ietf_val'])
_TYPEDVALUE.fields_by_name['json_ietf_val'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
_TYPEDVALUE.oneofs_by_name['value'].fields.append(
_TYPEDVALUE.fields_by_name['ascii_val'])
_TYPEDVALUE.fields_by_name['ascii_val'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
_PATH.fields_by_name['elem'].message_type = _PATHELEM
_PATHELEM_KEYENTRY.containing_type = _PATHELEM
_PATHELEM.fields_by_name['key'].message_type = _PATHELEM_KEYENTRY
_VALUE.fields_by_name['type'].enum_type = _ENCODING
_ERROR.fields_by_name['data'].message_type = google_dot_protobuf_dot_any__pb2._ANY
_SCALARARRAY.fields_by_name['element'].message_type = _TYPEDVALUE
_SUBSCRIBEREQUEST.fields_by_name['subscribe'].message_type = _SUBSCRIPTIONLIST
_SUBSCRIBEREQUEST.fields_by_name['poll'].message_type = _POLL
_SUBSCRIBEREQUEST.fields_by_name['aliases'].message_type = _ALIASLIST
_SUBSCRIBEREQUEST.oneofs_by_name['request'].fields.append(
_SUBSCRIBEREQUEST.fields_by_name['subscribe'])
_SUBSCRIBEREQUEST.fields_by_name['subscribe'].containing_oneof = _SUBSCRIBEREQUEST.oneofs_by_name['request']
_SUBSCRIBEREQUEST.oneofs_by_name['request'].fields.append(
_SUBSCRIBEREQUEST.fields_by_name['poll'])
_SUBSCRIBEREQUEST.fields_by_name['poll'].containing_oneof = _SUBSCRIBEREQUEST.oneofs_by_name['request']
_SUBSCRIBEREQUEST.oneofs_by_name['request'].fields.append(
_SUBSCRIBEREQUEST.fields_by_name['aliases'])
_SUBSCRIBEREQUEST.fields_by_name['aliases'].containing_oneof = _SUBSCRIBEREQUEST.oneofs_by_name['request']
_SUBSCRIBERESPONSE.fields_by_name['update'].message_type = _NOTIFICATION
_SUBSCRIBERESPONSE.fields_by_name['error'].message_type = _ERROR
_SUBSCRIBERESPONSE.oneofs_by_name['response'].fields.append(
_SUBSCRIBERESPONSE.fields_by_name['update'])
_SUBSCRIBERESPONSE.fields_by_name['update'].containing_oneof = _SUBSCRIBERESPONSE.oneofs_by_name['response']
_SUBSCRIBERESPONSE.oneofs_by_name['response'].fields.append(
_SUBSCRIBERESPONSE.fields_by_name['sync_response'])
_SUBSCRIBERESPONSE.fields_by_name['sync_response'].containing_oneof = _SUBSCRIBERESPONSE.oneofs_by_name['response']
_SUBSCRIBERESPONSE.oneofs_by_name['response'].fields.append(
_SUBSCRIBERESPONSE.fields_by_name['error'])
_SUBSCRIBERESPONSE.fields_by_name['error'].containing_oneof = _SUBSCRIBERESPONSE.oneofs_by_name['response']
_SUBSCRIPTIONLIST.fields_by_name['prefix'].message_type = _PATH
_SUBSCRIPTIONLIST.fields_by_name['subscription'].message_type = _SUBSCRIPTION
_SUBSCRIPTIONLIST.fields_by_name['qos'].message_type = _QOSMARKING
_SUBSCRIPTIONLIST.fields_by_name['mode'].enum_type = _SUBSCRIPTIONLIST_MODE
_SUBSCRIPTIONLIST.fields_by_name['use_models'].message_type = _MODELDATA
_SUBSCRIPTIONLIST.fields_by_name['encoding'].enum_type = _ENCODING
_SUBSCRIPTIONLIST_MODE.containing_type = _SUBSCRIPTIONLIST
_SUBSCRIPTION.fields_by_name['path'].message_type = _PATH
_SUBSCRIPTION.fields_by_name['mode'].enum_type = _SUBSCRIPTIONMODE
_ALIAS.fields_by_name['path'].message_type = _PATH
_ALIASLIST.fields_by_name['alias'].message_type = _ALIAS
_SETREQUEST.fields_by_name['prefix'].message_type = _PATH
_SETREQUEST.fields_by_name['delete'].message_type = _PATH
_SETREQUEST.fields_by_name['replace'].message_type = _UPDATE
_SETREQUEST.fields_by_name['update'].message_type = _UPDATE
_SETRESPONSE.fields_by_name['prefix'].message_type = _PATH
_SETRESPONSE.fields_by_name['response'].message_type = _UPDATERESULT
_SETRESPONSE.fields_by_name['message'].message_type = _ERROR
_UPDATERESULT.fields_by_name['path'].message_type = _PATH
_UPDATERESULT.fields_by_name['message'].message_type = _ERROR
_UPDATERESULT.fields_by_name['op'].enum_type = _UPDATERESULT_OPERATION
_UPDATERESULT_OPERATION.containing_type = _UPDATERESULT
_GETREQUEST.fields_by_name['prefix'].message_type = _PATH
_GETREQUEST.fields_by_name['path'].message_type = _PATH
_GETREQUEST.fields_by_name['type'].enum_type = _GETREQUEST_DATATYPE
_GETREQUEST.fields_by_name['encoding'].enum_type = _ENCODING
_GETREQUEST.fields_by_name['use_models'].message_type = _MODELDATA
_GETREQUEST_DATATYPE.containing_type = _GETREQUEST
_GETRESPONSE.fields_by_name['notification'].message_type = _NOTIFICATION
_GETRESPONSE.fields_by_name['error'].message_type = _ERROR
_CAPABILITYRESPONSE.fields_by_name['supported_models'].message_type = _MODELDATA
_CAPABILITYRESPONSE.fields_by_name['supported_encodings'].enum_type = _ENCODING
DESCRIPTOR.message_types_by_name['Notification'] = _NOTIFICATION
DESCRIPTOR.message_types_by_name['Update'] = _UPDATE
DESCRIPTOR.message_types_by_name['TypedValue'] = _TYPEDVALUE
DESCRIPTOR.message_types_by_name['Path'] = _PATH
DESCRIPTOR.message_types_by_name['PathElem'] = _PATHELEM
DESCRIPTOR.message_types_by_name['Value'] = _VALUE
DESCRIPTOR.message_types_by_name['Error'] = _ERROR
DESCRIPTOR.message_types_by_name['Decimal64'] = _DECIMAL64
DESCRIPTOR.message_types_by_name['ScalarArray'] = _SCALARARRAY
DESCRIPTOR.message_types_by_name['SubscribeRequest'] = _SUBSCRIBEREQUEST
DESCRIPTOR.message_types_by_name['Poll'] = _POLL
DESCRIPTOR.message_types_by_name['SubscribeResponse'] = _SUBSCRIBERESPONSE
DESCRIPTOR.message_types_by_name['SubscriptionList'] = _SUBSCRIPTIONLIST
DESCRIPTOR.message_types_by_name['Subscription'] = _SUBSCRIPTION
DESCRIPTOR.message_types_by_name['QOSMarking'] = _QOSMARKING
DESCRIPTOR.message_types_by_name['Alias'] = _ALIAS
DESCRIPTOR.message_types_by_name['AliasList'] = _ALIASLIST
DESCRIPTOR.message_types_by_name['SetRequest'] = _SETREQUEST
DESCRIPTOR.message_types_by_name['SetResponse'] = _SETRESPONSE
DESCRIPTOR.message_types_by_name['UpdateResult'] = _UPDATERESULT
DESCRIPTOR.message_types_by_name['GetRequest'] = _GETREQUEST
DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
DESCRIPTOR.message_types_by_name['CapabilityRequest'] = _CAPABILITYREQUEST
DESCRIPTOR.message_types_by_name['CapabilityResponse'] = _CAPABILITYRESPONSE
DESCRIPTOR.message_types_by_name['ModelData'] = _MODELDATA
DESCRIPTOR.enum_types_by_name['Encoding'] = _ENCODING
DESCRIPTOR.enum_types_by_name['SubscriptionMode'] = _SUBSCRIPTIONMODE
DESCRIPTOR.extensions_by_name['gnmi_service'] = gnmi_service
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
Notification = _reflection.GeneratedProtocolMessageType('Notification', (_message.Message,), dict(
DESCRIPTOR = _NOTIFICATION,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.Notification)
))
_sym_db.RegisterMessage(Notification)
Update = _reflection.GeneratedProtocolMessageType('Update', (_message.Message,), dict(
DESCRIPTOR = _UPDATE,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.Update)
))
_sym_db.RegisterMessage(Update)
TypedValue = _reflection.GeneratedProtocolMessageType('TypedValue', (_message.Message,), dict(
DESCRIPTOR = _TYPEDVALUE,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.TypedValue)
))
_sym_db.RegisterMessage(TypedValue)
Path = _reflection.GeneratedProtocolMessageType('Path', (_message.Message,), dict(
DESCRIPTOR = _PATH,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.Path)
))
_sym_db.RegisterMessage(Path)
PathElem = _reflection.GeneratedProtocolMessageType('PathElem', (_message.Message,), dict(
KeyEntry = _reflection.GeneratedProtocolMessageType('KeyEntry', (_message.Message,), dict(
DESCRIPTOR = _PATHELEM_KEYENTRY,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.PathElem.KeyEntry)
))
,
DESCRIPTOR = _PATHELEM,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.PathElem)
))
_sym_db.RegisterMessage(PathElem)
_sym_db.RegisterMessage(PathElem.KeyEntry)
Value = _reflection.GeneratedProtocolMessageType('Value', (_message.Message,), dict(
DESCRIPTOR = _VALUE,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.Value)
))
_sym_db.RegisterMessage(Value)
Error = _reflection.GeneratedProtocolMessageType('Error', (_message.Message,), dict(
DESCRIPTOR = _ERROR,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.Error)
))
_sym_db.RegisterMessage(Error)
Decimal64 = _reflection.GeneratedProtocolMessageType('Decimal64', (_message.Message,), dict(
DESCRIPTOR = _DECIMAL64,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.Decimal64)
))
_sym_db.RegisterMessage(Decimal64)
ScalarArray = _reflection.GeneratedProtocolMessageType('ScalarArray', (_message.Message,), dict(
DESCRIPTOR = _SCALARARRAY,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.ScalarArray)
))
_sym_db.RegisterMessage(ScalarArray)
SubscribeRequest = _reflection.GeneratedProtocolMessageType('SubscribeRequest', (_message.Message,), dict(
DESCRIPTOR = _SUBSCRIBEREQUEST,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.SubscribeRequest)
))
_sym_db.RegisterMessage(SubscribeRequest)
Poll = _reflection.GeneratedProtocolMessageType('Poll', (_message.Message,), dict(
DESCRIPTOR = _POLL,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.Poll)
))
_sym_db.RegisterMessage(Poll)
SubscribeResponse = _reflection.GeneratedProtocolMessageType('SubscribeResponse', (_message.Message,), dict(
DESCRIPTOR = _SUBSCRIBERESPONSE,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.SubscribeResponse)
))
_sym_db.RegisterMessage(SubscribeResponse)
SubscriptionList = _reflection.GeneratedProtocolMessageType('SubscriptionList', (_message.Message,), dict(
DESCRIPTOR = _SUBSCRIPTIONLIST,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.SubscriptionList)
))
_sym_db.RegisterMessage(SubscriptionList)
Subscription = _reflection.GeneratedProtocolMessageType('Subscription', (_message.Message,), dict(
DESCRIPTOR = _SUBSCRIPTION,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.Subscription)
))
_sym_db.RegisterMessage(Subscription)
QOSMarking = _reflection.GeneratedProtocolMessageType('QOSMarking', (_message.Message,), dict(
DESCRIPTOR = _QOSMARKING,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.QOSMarking)
))
_sym_db.RegisterMessage(QOSMarking)
Alias = _reflection.GeneratedProtocolMessageType('Alias', (_message.Message,), dict(
DESCRIPTOR = _ALIAS,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.Alias)
))
_sym_db.RegisterMessage(Alias)
AliasList = _reflection.GeneratedProtocolMessageType('AliasList', (_message.Message,), dict(
DESCRIPTOR = _ALIASLIST,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.AliasList)
))
_sym_db.RegisterMessage(AliasList)
SetRequest = _reflection.GeneratedProtocolMessageType('SetRequest', (_message.Message,), dict(
DESCRIPTOR = _SETREQUEST,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.SetRequest)
))
_sym_db.RegisterMessage(SetRequest)
SetResponse = _reflection.GeneratedProtocolMessageType('SetResponse', (_message.Message,), dict(
DESCRIPTOR = _SETRESPONSE,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.SetResponse)
))
_sym_db.RegisterMessage(SetResponse)
UpdateResult = _reflection.GeneratedProtocolMessageType('UpdateResult', (_message.Message,), dict(
DESCRIPTOR = _UPDATERESULT,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.UpdateResult)
))
_sym_db.RegisterMessage(UpdateResult)
GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), dict(
DESCRIPTOR = _GETREQUEST,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.GetRequest)
))
_sym_db.RegisterMessage(GetRequest)
GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), dict(
DESCRIPTOR = _GETRESPONSE,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.GetResponse)
))
_sym_db.RegisterMessage(GetResponse)
CapabilityRequest = _reflection.GeneratedProtocolMessageType('CapabilityRequest', (_message.Message,), dict(
DESCRIPTOR = _CAPABILITYREQUEST,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.CapabilityRequest)
))
_sym_db.RegisterMessage(CapabilityRequest)
CapabilityResponse = _reflection.GeneratedProtocolMessageType('CapabilityResponse', (_message.Message,), dict(
DESCRIPTOR = _CAPABILITYRESPONSE,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.CapabilityResponse)
))
_sym_db.RegisterMessage(CapabilityResponse)
ModelData = _reflection.GeneratedProtocolMessageType('ModelData', (_message.Message,), dict(
DESCRIPTOR = _MODELDATA,
__module__ = 'proto.gnmi.gnmi_pb2'
# @@protoc_insertion_point(class_scope:gnmi.ModelData)
))
_sym_db.RegisterMessage(ModelData)
google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(gnmi_service)
DESCRIPTOR.has_options = True
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\312>\0050.5.0'))
_UPDATE.fields_by_name['value'].has_options = True
_UPDATE.fields_by_name['value']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))
_PATH.fields_by_name['element'].has_options = True
_PATH.fields_by_name['element']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))
_PATHELEM_KEYENTRY.has_options = True
_PATHELEM_KEYENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001'))
_VALUE.has_options = True
_VALUE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\030\001'))
_ERROR.has_options = True
_ERROR._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\030\001'))
_SUBSCRIBERESPONSE.fields_by_name['error'].has_options = True
_SUBSCRIBERESPONSE.fields_by_name['error']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))
_SETRESPONSE.fields_by_name['message'].has_options = True
_SETRESPONSE.fields_by_name['message']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))
_UPDATERESULT.fields_by_name['timestamp'].has_options = True
_UPDATERESULT.fields_by_name['timestamp']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))
_UPDATERESULT.fields_by_name['message'].has_options = True
_UPDATERESULT.fields_by_name['message']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))
_GETRESPONSE.fields_by_name['error'].has_options = True
_GETRESPONSE.fields_by_name['error']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))
try:
# THESE ELEMENTS WILL BE DEPRECATED.
# Please use the generated *_pb2_grpc.py files instead.
import grpc
from grpc.beta import implementations as beta_implementations
from grpc.beta import interfaces as beta_interfaces
from grpc.framework.common import cardinality
from grpc.framework.interfaces.face import utilities as face_utilities
class gNMIStub(object):
# missing associated documentation comment in .proto file
pass
def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.Capabilities = channel.unary_unary(
'/gnmi.gNMI/Capabilities',
request_serializer=CapabilityRequest.SerializeToString,
response_deserializer=CapabilityResponse.FromString,
)
self.Get = channel.unary_unary(
'/gnmi.gNMI/Get',
request_serializer=GetRequest.SerializeToString,
response_deserializer=GetResponse.FromString,
)
self.Set = channel.unary_unary(
'/gnmi.gNMI/Set',
request_serializer=SetRequest.SerializeToString,
response_deserializer=SetResponse.FromString,
)
self.Subscribe = channel.stream_stream(
'/gnmi.gNMI/Subscribe',
request_serializer=SubscribeRequest.SerializeToString,
response_deserializer=SubscribeResponse.FromString,
)
class gNMIServicer(object):
# missing associated documentation comment in .proto file
pass
def Capabilities(self, request, context):
"""Capabilities allows the client to retrieve the set of capabilities that
is supported by the target. This allows the target to validate the
service version that is implemented and retrieve the set of models that
the target supports. The models can then be specified in subsequent RPCs
to restrict the set of data that is utilized.
Reference: gNMI Specification Section 3.2
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Get(self, request, context):
"""Retrieve a snapshot of data from the target. A Get RPC requests that the
target snapshots a subset of the data tree as specified by the paths
included in the message and serializes this to be returned to the
client using the specified encoding.
Reference: gNMI Specification Section 3.3
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Set(self, request, context):
"""Set allows the client to modify the state of data on the target. The
paths to modified along with the new values that the client wishes
to set the value to.
Reference: gNMI Specification Section 3.4
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Subscribe(self, request_iterator, context):
"""Subscribe allows a client to request the target to send it values
of particular paths within the data tree. These values may be streamed
at a particular cadence (STREAM), sent one off on a long-lived channel
(POLL), or sent as a one-off retrieval (ONCE).
Reference: gNMI Specification Section 3.5
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def add_gNMIServicer_to_server(servicer, server):
rpc_method_handlers = {
'Capabilities': grpc.unary_unary_rpc_method_handler(
servicer.Capabilities,
request_deserializer=CapabilityRequest.FromString,
response_serializer=CapabilityResponse.SerializeToString,
),
'Get': grpc.unary_unary_rpc_method_handler(
servicer.Get,
request_deserializer=GetRequest.FromString,
response_serializer=GetResponse.SerializeToString,
),
'Set': grpc.unary_unary_rpc_method_handler(
servicer.Set,
request_deserializer=SetRequest.FromString,
response_serializer=SetResponse.SerializeToString,
),
'Subscribe': grpc.stream_stream_rpc_method_handler(
servicer.Subscribe,
request_deserializer=SubscribeRequest.FromString,
response_serializer=SubscribeResponse.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'gnmi.gNMI', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
class BetagNMIServicer(object):
"""The Beta API is deprecated for 0.15.0 and later.
It is recommended to use the GA API (classes and functions in this
file not marked beta) for all further purposes. This class was generated
only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0."""
# missing associated documentation comment in .proto file
pass
def Capabilities(self, request, context):
"""Capabilities allows the client to retrieve the set of capabilities that
is supported by the target. This allows the target to validate the
service version that is implemented and retrieve the set of models that
the target supports. The models can then be specified in subsequent RPCs
to restrict the set of data that is utilized.
Reference: gNMI Specification Section 3.2
"""
context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
def Get(self, request, context):
"""Retrieve a snapshot of data from the target. A Get RPC requests that the
target snapshots a subset of the data tree as specified by the paths
included in the message and serializes this to be returned to the
client using the specified encoding.
Reference: gNMI Specification Section 3.3
"""
context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
def Set(self, request, context):
"""Set allows the client to modify the state of data on the target. The
paths to modified along with the new values that the client wishes
to set the value to.
Reference: gNMI Specification Section 3.4
"""
context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
def Subscribe(self, request_iterator, context):
"""Subscribe allows a client to request the target to send it values
of particular paths within the data tree. These values may be streamed
at a particular cadence (STREAM), sent one off on a long-lived channel
(POLL), or sent as a one-off retrieval (ONCE).
Reference: gNMI Specification Section 3.5
"""
context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
class BetagNMIStub(object):
"""The Beta API is deprecated for 0.15.0 and later.
It is recommended to use the GA API (classes and functions in this
file not marked beta) for all further purposes. This class was generated
only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0."""
# missing associated documentation comment in .proto file
pass
def Capabilities(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
"""Capabilities allows the client to retrieve the set of capabilities that
is supported by the target. This allows the target to validate the
service version that is implemented and retrieve the set of models that
the target supports. The models can then be specified in subsequent RPCs
to restrict the set of data that is utilized.
Reference: gNMI Specification Section 3.2
"""
raise NotImplementedError()
Capabilities.future = None
def Get(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
"""Retrieve a snapshot of data from the target. A Get RPC requests that the
target snapshots a subset of the data tree as specified by the paths
included in the message and serializes this to be returned to the
client using the specified encoding.
Reference: gNMI Specification Section 3.3
"""
raise NotImplementedError()
Get.future = None
def Set(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
"""Set allows the client to modify the state of data on the target. The
paths to modified along with the new values that the client wishes
to set the value to.
Reference: gNMI Specification Section 3.4
"""
raise NotImplementedError()
Set.future = None
def Subscribe(self, request_iterator, timeout, metadata=None, with_call=False, protocol_options=None):
"""Subscribe allows a client to request the target to send it values
of particular paths within the data tree. These values may be streamed
at a particular cadence (STREAM), sent one off on a long-lived channel
(POLL), or sent as a one-off retrieval (ONCE).
Reference: gNMI Specification Section 3.5
"""
raise NotImplementedError()
def beta_create_gNMI_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
"""The Beta API is deprecated for 0.15.0 and later.
It is recommended to use the GA API (classes and functions in this
file not marked beta) for all further purposes. This function was
generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0"""
request_deserializers = {
('gnmi.gNMI', 'Capabilities'): CapabilityRequest.FromString,
('gnmi.gNMI', 'Get'): GetRequest.FromString,
('gnmi.gNMI', 'Set'): SetRequest.FromString,
('gnmi.gNMI', 'Subscribe'): SubscribeRequest.FromString,
}
response_serializers = {
('gnmi.gNMI', 'Capabilities'): CapabilityResponse.SerializeToString,
('gnmi.gNMI', 'Get'): GetResponse.SerializeToString,
('gnmi.gNMI', 'Set'): SetResponse.SerializeToString,
('gnmi.gNMI', 'Subscribe'): SubscribeResponse.SerializeToString,
}
method_implementations = {
('gnmi.gNMI', 'Capabilities'): face_utilities.unary_unary_inline(servicer.Capabilities),
('gnmi.gNMI', 'Get'): face_utilities.unary_unary_inline(servicer.Get),
('gnmi.gNMI', 'Set'): face_utilities.unary_unary_inline(servicer.Set),
('gnmi.gNMI', 'Subscribe'): face_utilities.stream_stream_inline(servicer.Subscribe),
}
server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
return beta_implementations.server(method_implementations, options=server_options)
def beta_create_gNMI_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
"""The Beta API is deprecated for 0.15.0 and later.
It is recommended to use the GA API (classes and functions in this
file not marked beta) for all further purposes. This function was
generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0"""
request_serializers = {
('gnmi.gNMI', 'Capabilities'): CapabilityRequest.SerializeToString,
('gnmi.gNMI', 'Get'): GetRequest.SerializeToString,
('gnmi.gNMI', 'Set'): SetRequest.SerializeToString,
('gnmi.gNMI', 'Subscribe'): SubscribeRequest.SerializeToString,
}
response_deserializers = {
('gnmi.gNMI', 'Capabilities'): CapabilityResponse.FromString,
('gnmi.gNMI', 'Get'): GetResponse.FromString,
('gnmi.gNMI', 'Set'): SetResponse.FromString,
('gnmi.gNMI', 'Subscribe'): SubscribeResponse.FromString,
}
cardinalities = {
'Capabilities': cardinality.Cardinality.UNARY_UNARY,
'Get': cardinality.Cardinality.UNARY_UNARY,
'Set': cardinality.Cardinality.UNARY_UNARY,
'Subscribe': cardinality.Cardinality.STREAM_STREAM,
}
stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
return beta_implementations.dynamic_stub(channel, 'gnmi.gNMI', cardinalities, options=stub_options)
except ImportError:
pass
# @@protoc_insertion_point(module_scope)
from google.protobuf import any_pb2 as _any_pb2
from google.protobuf import descriptor_pb2 as _descriptor_pb2
from google.protobuf.internal import containers as _containers
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
ASCII: Encoding
BYTES: Encoding
DESCRIPTOR: _descriptor.FileDescriptor
EID_EXPERIMENTAL: ExtensionID
EID_UNSET: ExtensionID
GNMI_SERVICE_FIELD_NUMBER: _ClassVar[int]
JSON: Encoding
JSON_IETF: Encoding
ON_CHANGE: SubscriptionMode
PROTO: Encoding
SAMPLE: SubscriptionMode
TARGET_DEFINED: SubscriptionMode
gnmi_service: _descriptor.FieldDescriptor
class CapabilityRequest(_message.Message):
__slots__ = ["extension"]
EXTENSION_FIELD_NUMBER: _ClassVar[int]
extension: _containers.RepeatedCompositeFieldContainer[Extension]
def __init__(self, extension: _Optional[_Iterable[_Union[Extension, _Mapping]]] = ...) -> None: ...
class CapabilityResponse(_message.Message):
__slots__ = ["extension", "gNMI_version", "supported_encodings", "supported_models"]
EXTENSION_FIELD_NUMBER: _ClassVar[int]
GNMI_VERSION_FIELD_NUMBER: _ClassVar[int]
SUPPORTED_ENCODINGS_FIELD_NUMBER: _ClassVar[int]
SUPPORTED_MODELS_FIELD_NUMBER: _ClassVar[int]
extension: _containers.RepeatedCompositeFieldContainer[Extension]
gNMI_version: str
supported_encodings: _containers.RepeatedScalarFieldContainer[Encoding]
supported_models: _containers.RepeatedCompositeFieldContainer[ModelData]
def __init__(self, supported_models: _Optional[_Iterable[_Union[ModelData, _Mapping]]] = ..., supported_encodings: _Optional[_Iterable[_Union[Encoding, str]]] = ..., gNMI_version: _Optional[str] = ..., extension: _Optional[_Iterable[_Union[Extension, _Mapping]]] = ...) -> None: ...
class Decimal64(_message.Message):
__slots__ = ["digits", "precision"]
DIGITS_FIELD_NUMBER: _ClassVar[int]
PRECISION_FIELD_NUMBER: _ClassVar[int]
digits: int
precision: int
def __init__(self, digits: _Optional[int] = ..., precision: _Optional[int] = ...) -> None: ...
class Error(_message.Message):
__slots__ = ["code", "data", "message"]
CODE_FIELD_NUMBER: _ClassVar[int]
DATA_FIELD_NUMBER: _ClassVar[int]
MESSAGE_FIELD_NUMBER: _ClassVar[int]
code: int
data: _any_pb2.Any
message: str
def __init__(self, code: _Optional[int] = ..., message: _Optional[str] = ..., data: _Optional[_Union[_any_pb2.Any, _Mapping]] = ...) -> None: ...
class Extension(_message.Message):
__slots__ = ["history", "master_arbitration", "registered_ext"]
HISTORY_FIELD_NUMBER: _ClassVar[int]
MASTER_ARBITRATION_FIELD_NUMBER: _ClassVar[int]
REGISTERED_EXT_FIELD_NUMBER: _ClassVar[int]
history: History
master_arbitration: MasterArbitration
registered_ext: RegisteredExtension
def __init__(self, registered_ext: _Optional[_Union[RegisteredExtension, _Mapping]] = ..., master_arbitration: _Optional[_Union[MasterArbitration, _Mapping]] = ..., history: _Optional[_Union[History, _Mapping]] = ...) -> None: ...
class GetRequest(_message.Message):
__slots__ = ["encoding", "extension", "path", "prefix", "type", "use_models"]
class DataType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
ALL: GetRequest.DataType
CONFIG: GetRequest.DataType
ENCODING_FIELD_NUMBER: _ClassVar[int]
EXTENSION_FIELD_NUMBER: _ClassVar[int]
OPERATIONAL: GetRequest.DataType
PATH_FIELD_NUMBER: _ClassVar[int]
PREFIX_FIELD_NUMBER: _ClassVar[int]
STATE: GetRequest.DataType
TYPE_FIELD_NUMBER: _ClassVar[int]
USE_MODELS_FIELD_NUMBER: _ClassVar[int]
encoding: Encoding
extension: _containers.RepeatedCompositeFieldContainer[Extension]
path: _containers.RepeatedCompositeFieldContainer[Path]
prefix: Path
type: GetRequest.DataType
use_models: _containers.RepeatedCompositeFieldContainer[ModelData]
def __init__(self, prefix: _Optional[_Union[Path, _Mapping]] = ..., path: _Optional[_Iterable[_Union[Path, _Mapping]]] = ..., type: _Optional[_Union[GetRequest.DataType, str]] = ..., encoding: _Optional[_Union[Encoding, str]] = ..., use_models: _Optional[_Iterable[_Union[ModelData, _Mapping]]] = ..., extension: _Optional[_Iterable[_Union[Extension, _Mapping]]] = ...) -> None: ...
class GetResponse(_message.Message):
__slots__ = ["error", "extension", "notification"]
ERROR_FIELD_NUMBER: _ClassVar[int]
EXTENSION_FIELD_NUMBER: _ClassVar[int]
NOTIFICATION_FIELD_NUMBER: _ClassVar[int]
error: Error
extension: _containers.RepeatedCompositeFieldContainer[Extension]
notification: _containers.RepeatedCompositeFieldContainer[Notification]
def __init__(self, notification: _Optional[_Iterable[_Union[Notification, _Mapping]]] = ..., error: _Optional[_Union[Error, _Mapping]] = ..., extension: _Optional[_Iterable[_Union[Extension, _Mapping]]] = ...) -> None: ...
class History(_message.Message):
__slots__ = ["range", "snapshot_time"]
RANGE_FIELD_NUMBER: _ClassVar[int]
SNAPSHOT_TIME_FIELD_NUMBER: _ClassVar[int]
range: TimeRange
snapshot_time: int
def __init__(self, snapshot_time: _Optional[int] = ..., range: _Optional[_Union[TimeRange, _Mapping]] = ...) -> None: ...
class MasterArbitration(_message.Message):
__slots__ = ["election_id", "role"]
ELECTION_ID_FIELD_NUMBER: _ClassVar[int]
ROLE_FIELD_NUMBER: _ClassVar[int]
election_id: Uint128
role: Role
def __init__(self, role: _Optional[_Union[Role, _Mapping]] = ..., election_id: _Optional[_Union[Uint128, _Mapping]] = ...) -> None: ...
class ModelData(_message.Message):
__slots__ = ["name", "organization", "version"]
NAME_FIELD_NUMBER: _ClassVar[int]
ORGANIZATION_FIELD_NUMBER: _ClassVar[int]
VERSION_FIELD_NUMBER: _ClassVar[int]
name: str
organization: str
version: str
def __init__(self, name: _Optional[str] = ..., organization: _Optional[str] = ..., version: _Optional[str] = ...) -> None: ...
class Notification(_message.Message):
__slots__ = ["atomic", "delete", "prefix", "timestamp", "update"]
ATOMIC_FIELD_NUMBER: _ClassVar[int]
DELETE_FIELD_NUMBER: _ClassVar[int]
PREFIX_FIELD_NUMBER: _ClassVar[int]
TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
UPDATE_FIELD_NUMBER: _ClassVar[int]
atomic: bool
delete: _containers.RepeatedCompositeFieldContainer[Path]
prefix: Path
timestamp: int
update: _containers.RepeatedCompositeFieldContainer[Update]
def __init__(self, timestamp: _Optional[int] = ..., prefix: _Optional[_Union[Path, _Mapping]] = ..., update: _Optional[_Iterable[_Union[Update, _Mapping]]] = ..., delete: _Optional[_Iterable[_Union[Path, _Mapping]]] = ..., atomic: bool = ...) -> None: ...
class Path(_message.Message):
__slots__ = ["elem", "element", "origin", "target"]
ELEMENT_FIELD_NUMBER: _ClassVar[int]
ELEM_FIELD_NUMBER: _ClassVar[int]
ORIGIN_FIELD_NUMBER: _ClassVar[int]
TARGET_FIELD_NUMBER: _ClassVar[int]
elem: _containers.RepeatedCompositeFieldContainer[PathElem]
element: _containers.RepeatedScalarFieldContainer[str]
origin: str
target: str
def __init__(self, element: _Optional[_Iterable[str]] = ..., origin: _Optional[str] = ..., elem: _Optional[_Iterable[_Union[PathElem, _Mapping]]] = ..., target: _Optional[str] = ...) -> None: ...
class PathElem(_message.Message):
__slots__ = ["key", "name"]
class KeyEntry(_message.Message):
__slots__ = ["key", "value"]
KEY_FIELD_NUMBER: _ClassVar[int]
VALUE_FIELD_NUMBER: _ClassVar[int]
key: str
value: str
def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
KEY_FIELD_NUMBER: _ClassVar[int]
NAME_FIELD_NUMBER: _ClassVar[int]
key: _containers.ScalarMap[str, str]
name: str
def __init__(self, name: _Optional[str] = ..., key: _Optional[_Mapping[str, str]] = ...) -> None: ...
class Poll(_message.Message):
__slots__ = []
def __init__(self) -> None: ...
class QOSMarking(_message.Message):
__slots__ = ["marking"]
MARKING_FIELD_NUMBER: _ClassVar[int]
marking: int
def __init__(self, marking: _Optional[int] = ...) -> None: ...
class RegisteredExtension(_message.Message):
__slots__ = ["id", "msg"]
ID_FIELD_NUMBER: _ClassVar[int]
MSG_FIELD_NUMBER: _ClassVar[int]
id: ExtensionID
msg: bytes
def __init__(self, id: _Optional[_Union[ExtensionID, str]] = ..., msg: _Optional[bytes] = ...) -> None: ...
class Role(_message.Message):
__slots__ = ["id"]
ID_FIELD_NUMBER: _ClassVar[int]
id: str
def __init__(self, id: _Optional[str] = ...) -> None: ...
class ScalarArray(_message.Message):
__slots__ = ["element"]
ELEMENT_FIELD_NUMBER: _ClassVar[int]
element: _containers.RepeatedCompositeFieldContainer[TypedValue]
def __init__(self, element: _Optional[_Iterable[_Union[TypedValue, _Mapping]]] = ...) -> None: ...
class SetRequest(_message.Message):
__slots__ = ["delete", "extension", "prefix", "replace", "update"]
DELETE_FIELD_NUMBER: _ClassVar[int]
EXTENSION_FIELD_NUMBER: _ClassVar[int]
PREFIX_FIELD_NUMBER: _ClassVar[int]
REPLACE_FIELD_NUMBER: _ClassVar[int]
UPDATE_FIELD_NUMBER: _ClassVar[int]
delete: _containers.RepeatedCompositeFieldContainer[Path]
extension: _containers.RepeatedCompositeFieldContainer[Extension]
prefix: Path
replace: _containers.RepeatedCompositeFieldContainer[Update]
update: _containers.RepeatedCompositeFieldContainer[Update]
def __init__(self, prefix: _Optional[_Union[Path, _Mapping]] = ..., delete: _Optional[_Iterable[_Union[Path, _Mapping]]] = ..., replace: _Optional[_Iterable[_Union[Update, _Mapping]]] = ..., update: _Optional[_Iterable[_Union[Update, _Mapping]]] = ..., extension: _Optional[_Iterable[_Union[Extension, _Mapping]]] = ...) -> None: ...
class SetResponse(_message.Message):
__slots__ = ["extension", "message", "prefix", "response", "timestamp"]
EXTENSION_FIELD_NUMBER: _ClassVar[int]
MESSAGE_FIELD_NUMBER: _ClassVar[int]
PREFIX_FIELD_NUMBER: _ClassVar[int]
RESPONSE_FIELD_NUMBER: _ClassVar[int]
TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
extension: _containers.RepeatedCompositeFieldContainer[Extension]
message: Error
prefix: Path
response: _containers.RepeatedCompositeFieldContainer[UpdateResult]
timestamp: int
def __init__(self, prefix: _Optional[_Union[Path, _Mapping]] = ..., response: _Optional[_Iterable[_Union[UpdateResult, _Mapping]]] = ..., message: _Optional[_Union[Error, _Mapping]] = ..., timestamp: _Optional[int] = ..., extension: _Optional[_Iterable[_Union[Extension, _Mapping]]] = ...) -> None: ...
class SubscribeRequest(_message.Message):
__slots__ = ["extension", "poll", "subscribe"]
EXTENSION_FIELD_NUMBER: _ClassVar[int]
POLL_FIELD_NUMBER: _ClassVar[int]
SUBSCRIBE_FIELD_NUMBER: _ClassVar[int]
extension: _containers.RepeatedCompositeFieldContainer[Extension]
poll: Poll
subscribe: SubscriptionList
def __init__(self, subscribe: _Optional[_Union[SubscriptionList, _Mapping]] = ..., poll: _Optional[_Union[Poll, _Mapping]] = ..., extension: _Optional[_Iterable[_Union[Extension, _Mapping]]] = ...) -> None: ...
class SubscribeResponse(_message.Message):
__slots__ = ["error", "extension", "sync_response", "update"]
ERROR_FIELD_NUMBER: _ClassVar[int]
EXTENSION_FIELD_NUMBER: _ClassVar[int]
SYNC_RESPONSE_FIELD_NUMBER: _ClassVar[int]
UPDATE_FIELD_NUMBER: _ClassVar[int]
error: Error
extension: _containers.RepeatedCompositeFieldContainer[Extension]
sync_response: bool
update: Notification
def __init__(self, update: _Optional[_Union[Notification, _Mapping]] = ..., sync_response: bool = ..., error: _Optional[_Union[Error, _Mapping]] = ..., extension: _Optional[_Iterable[_Union[Extension, _Mapping]]] = ...) -> None: ...
class Subscription(_message.Message):
__slots__ = ["heartbeat_interval", "mode", "path", "sample_interval", "suppress_redundant"]
HEARTBEAT_INTERVAL_FIELD_NUMBER: _ClassVar[int]
MODE_FIELD_NUMBER: _ClassVar[int]
PATH_FIELD_NUMBER: _ClassVar[int]
SAMPLE_INTERVAL_FIELD_NUMBER: _ClassVar[int]
SUPPRESS_REDUNDANT_FIELD_NUMBER: _ClassVar[int]
heartbeat_interval: int
mode: SubscriptionMode
path: Path
sample_interval: int
suppress_redundant: bool
def __init__(self, path: _Optional[_Union[Path, _Mapping]] = ..., mode: _Optional[_Union[SubscriptionMode, str]] = ..., sample_interval: _Optional[int] = ..., suppress_redundant: bool = ..., heartbeat_interval: _Optional[int] = ...) -> None: ...
class SubscriptionList(_message.Message):
__slots__ = ["allow_aggregation", "encoding", "mode", "prefix", "qos", "subscription", "updates_only", "use_models"]
class Mode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
ALLOW_AGGREGATION_FIELD_NUMBER: _ClassVar[int]
ENCODING_FIELD_NUMBER: _ClassVar[int]
MODE_FIELD_NUMBER: _ClassVar[int]
ONCE: SubscriptionList.Mode
POLL: SubscriptionList.Mode
PREFIX_FIELD_NUMBER: _ClassVar[int]
QOS_FIELD_NUMBER: _ClassVar[int]
STREAM: SubscriptionList.Mode
SUBSCRIPTION_FIELD_NUMBER: _ClassVar[int]
UPDATES_ONLY_FIELD_NUMBER: _ClassVar[int]
USE_MODELS_FIELD_NUMBER: _ClassVar[int]
allow_aggregation: bool
encoding: Encoding
mode: SubscriptionList.Mode
prefix: Path
qos: QOSMarking
subscription: _containers.RepeatedCompositeFieldContainer[Subscription]
updates_only: bool
use_models: _containers.RepeatedCompositeFieldContainer[ModelData]
def __init__(self, prefix: _Optional[_Union[Path, _Mapping]] = ..., subscription: _Optional[_Iterable[_Union[Subscription, _Mapping]]] = ..., qos: _Optional[_Union[QOSMarking, _Mapping]] = ..., mode: _Optional[_Union[SubscriptionList.Mode, str]] = ..., allow_aggregation: bool = ..., use_models: _Optional[_Iterable[_Union[ModelData, _Mapping]]] = ..., encoding: _Optional[_Union[Encoding, str]] = ..., updates_only: bool = ...) -> None: ...
class TimeRange(_message.Message):
__slots__ = ["end", "start"]
END_FIELD_NUMBER: _ClassVar[int]
START_FIELD_NUMBER: _ClassVar[int]
end: int
start: int
def __init__(self, start: _Optional[int] = ..., end: _Optional[int] = ...) -> None: ...
class TypedValue(_message.Message):
__slots__ = ["any_val", "ascii_val", "bool_val", "bytes_val", "decimal_val", "double_val", "float_val", "int_val", "json_ietf_val", "json_val", "leaflist_val", "proto_bytes", "string_val", "uint_val"]
ANY_VAL_FIELD_NUMBER: _ClassVar[int]
ASCII_VAL_FIELD_NUMBER: _ClassVar[int]
BOOL_VAL_FIELD_NUMBER: _ClassVar[int]
BYTES_VAL_FIELD_NUMBER: _ClassVar[int]
DECIMAL_VAL_FIELD_NUMBER: _ClassVar[int]
DOUBLE_VAL_FIELD_NUMBER: _ClassVar[int]
FLOAT_VAL_FIELD_NUMBER: _ClassVar[int]
INT_VAL_FIELD_NUMBER: _ClassVar[int]
JSON_IETF_VAL_FIELD_NUMBER: _ClassVar[int]
JSON_VAL_FIELD_NUMBER: _ClassVar[int]
LEAFLIST_VAL_FIELD_NUMBER: _ClassVar[int]
PROTO_BYTES_FIELD_NUMBER: _ClassVar[int]
STRING_VAL_FIELD_NUMBER: _ClassVar[int]
UINT_VAL_FIELD_NUMBER: _ClassVar[int]
any_val: _any_pb2.Any
ascii_val: str
bool_val: bool
bytes_val: bytes
decimal_val: Decimal64
double_val: float
float_val: float
int_val: int
json_ietf_val: bytes
json_val: bytes
leaflist_val: ScalarArray
proto_bytes: bytes
string_val: str
uint_val: int
def __init__(self, string_val: _Optional[str] = ..., int_val: _Optional[int] = ..., uint_val: _Optional[int] = ..., bool_val: bool = ..., bytes_val: _Optional[bytes] = ..., float_val: _Optional[float] = ..., double_val: _Optional[float] = ..., decimal_val: _Optional[_Union[Decimal64, _Mapping]] = ..., leaflist_val: _Optional[_Union[ScalarArray, _Mapping]] = ..., any_val: _Optional[_Union[_any_pb2.Any, _Mapping]] = ..., json_val: _Optional[bytes] = ..., json_ietf_val: _Optional[bytes] = ..., ascii_val: _Optional[str] = ..., proto_bytes: _Optional[bytes] = ...) -> None: ...
class Uint128(_message.Message):
__slots__ = ["high", "low"]
HIGH_FIELD_NUMBER: _ClassVar[int]
LOW_FIELD_NUMBER: _ClassVar[int]
high: int
low: int
def __init__(self, high: _Optional[int] = ..., low: _Optional[int] = ...) -> None: ...
class Update(_message.Message):
__slots__ = ["duplicates", "path", "val", "value"]
DUPLICATES_FIELD_NUMBER: _ClassVar[int]
PATH_FIELD_NUMBER: _ClassVar[int]
VALUE_FIELD_NUMBER: _ClassVar[int]
VAL_FIELD_NUMBER: _ClassVar[int]
duplicates: int
path: Path
val: TypedValue
value: Value
def __init__(self, path: _Optional[_Union[Path, _Mapping]] = ..., value: _Optional[_Union[Value, _Mapping]] = ..., val: _Optional[_Union[TypedValue, _Mapping]] = ..., duplicates: _Optional[int] = ...) -> None: ...
class UpdateResult(_message.Message):
__slots__ = ["message", "op", "path", "timestamp"]
class Operation(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
DELETE: UpdateResult.Operation
INVALID: UpdateResult.Operation
MESSAGE_FIELD_NUMBER: _ClassVar[int]
OP_FIELD_NUMBER: _ClassVar[int]
PATH_FIELD_NUMBER: _ClassVar[int]
REPLACE: UpdateResult.Operation
TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
UPDATE: UpdateResult.Operation
message: Error
op: UpdateResult.Operation
path: Path
timestamp: int
def __init__(self, timestamp: _Optional[int] = ..., path: _Optional[_Union[Path, _Mapping]] = ..., message: _Optional[_Union[Error, _Mapping]] = ..., op: _Optional[_Union[UpdateResult.Operation, str]] = ...) -> None: ...
class Value(_message.Message):
__slots__ = ["type", "value"]
TYPE_FIELD_NUMBER: _ClassVar[int]
VALUE_FIELD_NUMBER: _ClassVar[int]
type: Encoding
value: bytes
def __init__(self, value: _Optional[bytes] = ..., type: _Optional[_Union[Encoding, str]] = ...) -> None: ...
class ExtensionID(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
class Encoding(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
class SubscriptionMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
\ No newline at end of file
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
from . import gnmi_pb2 as gnmi__pb2
class gNMIStub(object):
"""Missing associated documentation comment in .proto file."""
def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.Capabilities = channel.unary_unary(
'/gnmi.gNMI/Capabilities',
request_serializer=gnmi__pb2.CapabilityRequest.SerializeToString,
response_deserializer=gnmi__pb2.CapabilityResponse.FromString,
)
self.Get = channel.unary_unary(
'/gnmi.gNMI/Get',
request_serializer=gnmi__pb2.GetRequest.SerializeToString,
response_deserializer=gnmi__pb2.GetResponse.FromString,
)
self.Set = channel.unary_unary(
'/gnmi.gNMI/Set',
request_serializer=gnmi__pb2.SetRequest.SerializeToString,
response_deserializer=gnmi__pb2.SetResponse.FromString,
)
self.Subscribe = channel.stream_stream(
'/gnmi.gNMI/Subscribe',
request_serializer=gnmi__pb2.SubscribeRequest.SerializeToString,
response_deserializer=gnmi__pb2.SubscribeResponse.FromString,
)
class gNMIServicer(object):
"""Missing associated documentation comment in .proto file."""
def Capabilities(self, request, context):
"""Capabilities allows the client to retrieve the set of capabilities that
is supported by the target. This allows the target to validate the
service version that is implemented and retrieve the set of models that
the target supports. The models can then be specified in subsequent RPCs
to restrict the set of data that is utilized.
Reference: gNMI Specification Section 3.2
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Get(self, request, context):
"""Retrieve a snapshot of data from the target. A Get RPC requests that the
target snapshots a subset of the data tree as specified by the paths
included in the message and serializes this to be returned to the
client using the specified encoding.
Reference: gNMI Specification Section 3.3
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Set(self, request, context):
"""Set allows the client to modify the state of data on the target. The
paths to modified along with the new values that the client wishes
to set the value to.
Reference: gNMI Specification Section 3.4
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Subscribe(self, request_iterator, context):
"""Subscribe allows a client to request the target to send it values
of particular paths within the data tree. These values may be streamed
at a particular cadence (STREAM), sent one off on a long-lived channel
(POLL), or sent as a one-off retrieval (ONCE).
Reference: gNMI Specification Section 3.5
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def add_gNMIServicer_to_server(servicer, server):
rpc_method_handlers = {
'Capabilities': grpc.unary_unary_rpc_method_handler(
servicer.Capabilities,
request_deserializer=gnmi__pb2.CapabilityRequest.FromString,
response_serializer=gnmi__pb2.CapabilityResponse.SerializeToString,
),
'Get': grpc.unary_unary_rpc_method_handler(
servicer.Get,
request_deserializer=gnmi__pb2.GetRequest.FromString,
response_serializer=gnmi__pb2.GetResponse.SerializeToString,
),
'Set': grpc.unary_unary_rpc_method_handler(
servicer.Set,
request_deserializer=gnmi__pb2.SetRequest.FromString,
response_serializer=gnmi__pb2.SetResponse.SerializeToString,
),
'Subscribe': grpc.stream_stream_rpc_method_handler(
servicer.Subscribe,
request_deserializer=gnmi__pb2.SubscribeRequest.FromString,
response_serializer=gnmi__pb2.SubscribeResponse.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'gnmi.gNMI', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
# This class is part of an EXPERIMENTAL API.
class gNMI(object):
"""Missing associated documentation comment in .proto file."""
@staticmethod
def Capabilities(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/gnmi.gNMI/Capabilities',
gnmi__pb2.CapabilityRequest.SerializeToString,
gnmi__pb2.CapabilityResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Get(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/gnmi.gNMI/Get',
gnmi__pb2.GetRequest.SerializeToString,
gnmi__pb2.GetResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Set(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/gnmi.gNMI/Set',
gnmi__pb2.SetRequest.SerializeToString,
gnmi__pb2.SetResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Subscribe(request_iterator,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.stream_stream(request_iterator, target, '/gnmi.gNMI/Subscribe',
gnmi__pb2.SubscribeRequest.SerializeToString,
gnmi__pb2.SubscribeResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json, logging
from typing import Any, Dict, List, Tuple
from common.proto.kpi_sample_types_pb2 import KpiSampleType
from ._Handler import _Handler
LOGGER = logging.getLogger(__name__)
LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.DEBUG)
#PATH_IF_CTR = "/interfaces/interface[name={:s}]/state/counters/{:s}"
class ComponentHandler(_Handler):
def get_resource_key(self) -> str: return '/endpoints/endpoint'
def get_path(self) -> str: return '/srl_nokia-interfaces:interface'
def parse(self, json_data : Dict) -> List[Tuple[str, Dict[str, Any]]]:
LOGGER.info('json_data = {:s}'.format(json.dumps(json_data)))
json_interface_list : List[Dict] = json_data.get('srl_nokia-interfaces:interface', [])
response = []
for json_component in json_interface_list:
#LOGGER.info('json_component = {:s}'.format(json.dumps(json_component)))
endpoint = {}
interface_name = json_component.get('name')
if interface_name is None:
# LOGGER.info('DISCARDED json_interface = {:s}'.format(json.dumps(json_interface)))
continue
endpoint['uuid'] = interface_name
endpoint['name'] = interface_name
#endpoint_type1 = json_component.get('srl_nokia-platform-healthz:healthz', {})
endpoint_type = json_component.get('ethernet', {})
port_speed = endpoint_type.get('port-speed')
if port_speed is not None: endpoint['type'] = port_speed
#endpoint['sample_types'] = {
# KpiSampleType.KPISAMPLETYPE_BYTES_RECEIVED : PATH_IF_CTR.format(interface_name, 'in-octets' ),
# KpiSampleType.KPISAMPLETYPE_BYTES_TRANSMITTED : PATH_IF_CTR.format(interface_name, 'out-octets'),
# KpiSampleType.KPISAMPLETYPE_PACKETS_RECEIVED : PATH_IF_CTR.format(interface_name, 'in-pkts' ),
# KpiSampleType.KPISAMPLETYPE_PACKETS_TRANSMITTED: PATH_IF_CTR.format(interface_name, 'out-pkts' ),
#}
if len(endpoint) == 0: continue
response.append(('/endpoints/endpoint[{:s}]'.format(endpoint['uuid']) , endpoint))
return response
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json, logging
from typing import Any, Dict, List, Tuple
from requests import get
from ._Handler import _Handler
from .Tools import dict_get_first
logging.basicConfig(level=logging.DEBUG)
LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.DEBUG)
class InterfaceHandler(_Handler):
def get_resource_key(self) -> str:
#LOGGER.debug('Getting resource key for InterfaceHandler')
return '/interface'
def get_path(self) -> str:
LOGGER.debug('Getting path for InterfaceHandler')
return '/srl_nokia-interfaces:interface'
def compose(self, resource_key: str, resource_value: Dict, delete: bool = False) -> Tuple[str, str]:
name = str(resource_value['name'])
index = int(resource_value.get('index'))
if delete:
PATH_TMPL = '/interface[name={:s}]/subinterface[index={:d}]'
str_path = PATH_TMPL.format(name, index)
str_data = json.dumps({})
return str_path, str_data
str_path = '/interface[name={:s}]'.format(name)
json_interface = {}
if 'name' in resource_value:
#if_name=str(resource_value['if_name'])
json_interface['name'] = name
if 'admin_state' in resource_value:
bool_admin_state = bool(resource_value['admin_state'])
str_admin_state = 'enable' if bool_admin_state else 'disable'
json_interface['admin-state'] = str_admin_state
if 'sub_index' in resource_value:
sub_index = int(resource_value['sub_index'])
else:
sub_index=0
sub_list = json_interface.setdefault('subinterface', list())
subif = {'index':sub_index}
sub_list.append(subif)
if 'sub_ipv4_admin_state' in resource_value:
bool_ipv4_admin_state = bool(resource_value['sub_ipv4_admin_state'])
str_ipv4_admin_state = 'enable' if bool_ipv4_admin_state else 'disable'
ipv4 = subif.setdefault('ipv4', dict())
ipv4['admin-state'] = str_ipv4_admin_state
if 'sub_ipv4_address' in resource_value and 'sub_ipv4_prefix' in resource_value:
sub_ipv4_address = str(resource_value['sub_ipv4_address'])
sub_ipv4_prefix = int(resource_value['sub_ipv4_prefix'])
ipv4 = subif.setdefault('ipv4', dict())
address_list = ipv4.setdefault('address', list())
address_list.append({
'ip-prefix': '{:s}/{:d}'.format(sub_ipv4_address, sub_ipv4_prefix)
})
if 'vlan_tagging' in resource_value:
bool_vlan_tagging = bool(resource_value['vlan_tagging'])
json_interface['vlan-tagging'] = bool_vlan_tagging
if 'sub_type' in resource_value:
sub_type = str(resource_value['sub_type'])
subif['type'] = sub_type
if 'sub_vlan_admin_state' in resource_value:
bool_vlan_admin_state = bool(resource_value['sub_vlan_admin_state'])
str_vlan_admin_state = 'enable' if bool_vlan_admin_state else 'disable'
subif['admin-state'] = str_vlan_admin_state
if 'sub_vlan_encap' in resource_value:
sub_vlan_encap = str(resource_value['sub_vlan_encap'])
vlan=subif.setdefault('vlan', dict())
encap=vlan.setdefault('encap', dict())
encap[sub_vlan_encap] = dict()
return str_path,json.dumps(json_interface)
############################PARSE##############################################################
def parse(self, json_data: Dict) -> List[Tuple[str, Dict[str, Any]]]:
#LOGGER.info('json_data = {:s}'.format(json.dumps(json_data)))
# LOGGER.info('Parsing json_data for InterfaceHandler')
# LOGGER.debug('json_data = {:s}'.format(json.dumps(json_data)))
json_interface_list : List[Dict] = json_data.get('srl_nokia-interfaces:interface', [])
response = []
for json_interface in json_interface_list:
#LOGGER.info('json_interface = {:s}'.format(json.dumps(json_interface)))
interface = {}
interface_name = json_interface.get('name')
if interface_name is None:
# LOGGER.info('DISCARDED json_interface = {:s}'.format(json.dumps(json_interface)))
continue
interface['name'] = interface_name
#LOGGER.info('json_interface = {:s}'.format(json.dumps(json_interface)))
admin_state = json_interface.get('admin-state')
if admin_state is None:
continue
interface['admin_state'] = str(admin_state)
##LOGGER.info('json_interface = {:s}'.format(json.dumps(json_interface)))
#vlan_tagging = json_interface.get('srl_nokia-interfaces-vlans:vlan-tagging')
#if vlan_tagging is not None:
# continue
#interface['vlan-tagging']=bool(vlan_tagging)
#LOGGER.info('interface = {:s}'.format(json.dumps(interface)))
json_subinterface_list: List[Dict] = json_interface.get('subinterface', [])
for json_subinterface in json_subinterface_list:
#LOGGER.info('json_subinterface = {:s}'.format(json.dumps(json_subinterface)))
subinterface = {}
subinterface_index = json_subinterface.get('index')
if subinterface_index is None:
continue
subinterface['index'] = int(subinterface_index)
subinterface_adminstate = json_subinterface.get('admin-state')
if subinterface_adminstate is None:
continue
subinterface['admin-state'] = str(subinterface_adminstate)
vlan_type = json_subinterface.get('type')
#if vlan_type is None:
# continue
subinterface['type'] = vlan_type
ipv4_admin_state = json_subinterface.get('ipv4', {}).get('admin-state')
subinterface['ipv4'] = {'admin-state': bool(ipv4_admin_state)}
ipv4_address_list = json_subinterface.get('ipv4', {}).get('address', [])
addresses = []
if ipv4_address_list:
for json_address in ipv4_address_list:
#LOGGER.info('json_address = {:s}'.format(json.dumps(json_address)))
address_ip_prefix = json_address.get('ip-prefix')
if address_ip_prefix is not None:
addresses.append({'ip-prefix': str(address_ip_prefix)})
subinterface['ipv4'] = {'address': addresses}
subinterface['vlan'] = {}
subinterface['vlan']['encap'] = {}
json_vlan_encap = json_interface.get('vlan', {}).get('encap', {})
if json_vlan_encap:
if 'vlan' not in subinterface:
subinterface['vlan'] = {}
if 'encap' not in subinterface['vlan']:
subinterface['vlan']['encap'] = {}
subinterface['vlan']['encap']['untagged'] = json_vlan_encap
if len(subinterface) == 0:
continue
resource_key = '/interface[{:s}]/subinterface[{:s}]'.format(interface['name'], str(subinterface['index']))
response.append((resource_key, subinterface))
if len(interface) == 0:
continue
response.append(('/interface[{:s}]'.format(interface['name']), interface))
# json_protocols = json_data.get('protocols', {})
# json_bgp_list: List[Dict] = json_protocols.get('bgp', [])
#
# for json_bgp in json_bgp_list:
# json_afi_safi_list: List[Dict] = json_bgp.get('afi-safi', [])
#
# for json_afi_safi in json_afi_safi_list:
# interface['afisafiname'] = json_afi_safi.get('afi-safi-name', '')
# response.append((self.compose('/interfaces/interface', interface)))
#
return response
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json, logging
from typing import Any, Dict, List, Tuple
from ._Handler import _Handler
from .Tools import dict_get_first
LOGGER = logging.getLogger(__name__)
class InterfaceCounterHandler(_Handler):
def get_resource_key(self) -> str: return '/interface/counters'
def get_path(self) -> str: return '/interfaces/interface/state/counters'
def parse(self, json_data : Dict) -> List[Tuple[str, Dict[str, Any]]]:
LOGGER.info('[parse] json_data = {:s}'.format(json.dumps(json_data)))
json_interface_list : List[Dict] = json_data.get('interface', [])
response = []
for json_interface in json_interface_list:
LOGGER.info('[parse] json_interface = {:s}'.format(json.dumps(json_interface)))
interface = {}
NAME_FIELDS = ('name', 'openconfig-interface:name', 'oci:name')
interface_name = dict_get_first(json_interface, NAME_FIELDS)
if interface_name is None: continue
interface['name'] = interface_name
STATE_FIELDS = ('state', 'openconfig-interface:state', 'oci:state')
json_state = dict_get_first(json_interface, STATE_FIELDS, default={})
COUNTERS_FIELDS = ('counters', 'openconfig-interface:counters', 'oci:counters')
json_counters = dict_get_first(json_state, COUNTERS_FIELDS, default={})
IN_PKTS_FIELDS = ('in-pkts', 'openconfig-interface:in-pkts', 'oci:in-pkts')
interface_in_pkts = dict_get_first(json_counters, IN_PKTS_FIELDS)
if interface_in_pkts is not None: interface['in-pkts'] = int(interface_in_pkts)
IN_OCTETS_FIELDS = ('in-octets', 'openconfig-interface:in-octets', 'oci:in-octets')
interface_in_octets = dict_get_first(json_counters, IN_OCTETS_FIELDS)
if interface_in_octets is not None: interface['in-octets'] = int(interface_in_octets)
IN_ERRORS_FIELDS = ('in-errors', 'openconfig-interface:in-errors', 'oci:in-errors')
interface_in_errors = dict_get_first(json_counters, IN_ERRORS_FIELDS)
if interface_in_errors is not None: interface['in-errors'] = int(interface_in_errors)
OUT_OCTETS_FIELDS = ('out-octets', 'openconfig-interface:out-octets', 'oci:out-octets')
interface_out_octets = dict_get_first(json_counters, OUT_OCTETS_FIELDS)
if interface_out_octets is not None: interface['out-octets'] = int(interface_out_octets)
OUT_PKTS_FIELDS = ('out-pkts', 'openconfig-interface:out-pkts', 'oci:out-pkts')
interface_out_pkts = dict_get_first(json_counters, OUT_PKTS_FIELDS)
if interface_out_pkts is not None: interface['out-pkts'] = int(interface_out_pkts)
OUT_ERRORS_FIELDS = ('out-errors', 'openconfig-interface:out-errors', 'oci:out-errors')
interface_out_errors = dict_get_first(json_counters, OUT_ERRORS_FIELDS)
if interface_out_errors is not None: interface['out-errors'] = int(interface_out_errors)
OUT_DISCARDS_FIELDS = ('out-discards', 'openconfig-interface:out-discards', 'oci:out-discards')
interface_out_discards = dict_get_first(json_counters, OUT_DISCARDS_FIELDS)
if interface_out_discards is not None: interface['out-discards'] = int(interface_out_discards)
#LOGGER.info('[parse] interface = {:s}'.format(str(interface)))
if len(interface) == 0: continue
response.append(('/interface[{:s}]'.format(interface['name']), interface))
return response
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json, logging
from typing import Any, Dict, List, Tuple
from ._Handler import _Handler
LOGGER = logging.getLogger(__name__)
class NetworkInstanceHandler(_Handler):
def get_resource_key(self) -> str : return '/network-instance'
def get_path(self) -> str: return '/srl_nokia-network-instance:network-instance'
def compose(self, resource_key : str, resource_value : Dict, delete : bool = False) -> Tuple[str, str]:
name = str(resource_value ['name'])
json_networkinstance = {}
if delete:
PATH_TMPL = '/network-instance[name={:s}]'
str_path = PATH_TMPL.format(name)
str_data = json.dumps({})
return str_path, str_data
str_path = '/network-instance[name={:s}]'.format(name)
if 'interface1' in resource_value:
interface1 = str(resource_value['interface1'])
subif_interface_default_list = json_networkinstance.setdefault('interface', list())
subif_interface1 = {'name': interface1}
subif_interface_default_list.append(subif_interface1)
if 'interface2' in resource_value:
interface2 = str(resource_value['interface2'])
subif_interface2 = {'name': interface2}
subif_interface_default_list.append(subif_interface2)
if 'name' in resource_value:
json_networkinstance['name'] = name
if 'admin_state_bgp' in resource_value:
bool_admin_state = bool(resource_value['admin_state_bgp'])
str_admin_state = 'enable' if bool_admin_state else 'disable'
subif_protocol = json_networkinstance.setdefault('protocols', dict())
subif_bgp = subif_protocol.setdefault('bgp', dict())
subif_afisafi = subif_bgp.setdefault('afi-safi', list())
subif_state = {'admin-state': str_admin_state}
if 'afi_safi_name_bgp' in resource_value:
afi_safi_name_bgp = str(resource_value['afi_safi_name_bgp'])
subif_state['afi-safi-name'] = afi_safi_name_bgp
subif_afisafi.append(subif_state)
if 'autonomous_system_bgp' in resource_value:
autonomous_system_bgp = int(resource_value['autonomous_system_bgp'])
subif_bgp['autonomous-system'] = autonomous_system_bgp
if 'export_policy' in resource_value:
export_policy = str(resource_value['export_policy'])
subif_group1 = {'export-policy': export_policy}
subif_group = subif_bgp.setdefault('group', list())
if 'group_name' in resource_value:
group_name = str(resource_value['group_name'])
subif_group1['group-name'] = group_name
if 'import_policy' in resource_value:
import_policy = str(resource_value['import_policy'])
subif_group1['import-policy'] = import_policy
if 'peer_as' in resource_value:
peer_as = int(resource_value['peer_as'])
subif_group1['peer-as'] = peer_as
subif_group.append(subif_group1)
if 'admin_state_group' in resource_value:
bool_admin_state = bool(resource_value['admin_state_group'])
str_admin_state = 'enable' if bool_admin_state else 'disable'
subif_as = {'admin-state': str_admin_state}
subif_dictonary = {}
subif_group.append(subif_dictonary)
afi_safi_list=subif_dictonary.setdefault('afi-safi', list())
if 'afi_safi_name_group' in resource_value:
afi_safi_name_group = str(resource_value['afi_safi_name_group'])
subif_as['afi-safi-name'] = afi_safi_name_group
afi_safi_list.append(subif_as)
if 'admin_state_group_2' in resource_value:
bool_admin_state = bool(resource_value['admin_state_group_2'])
str_admin_state_group2 = 'enable' if bool_admin_state else 'disable'
subif_dictonary2 = {}
afi_safi_list.append(subif_dictonary2)
subif_dictonary2['admin-state'] = str_admin_state_group2
if 'afi_safi_name_group_2' in resource_value:
afi_safi_name_group_2 = str(resource_value['afi_safi_name_group_2'])
subif_dictonary2['afi-safi-name'] = afi_safi_name_group_2
if 'export_policy_2' in resource_value:
export_policy_2 = str(resource_value['export_policy_2'])
subif_dictonary['export-policy'] = export_policy_2
if 'group_name_2' in resource_value:
group_name_2 = str(resource_value['group_name_2'])
subif_dictonary['group-name'] = group_name_2
if 'import_policy_2' in resource_value:
import_policy_2 = str(resource_value['import_policy_2'])
subif_dictonary['import-policy'] = import_policy_2
if 'as_number' in resource_value:
as_number = int(resource_value['as_number'])
subif_dictonary['local-as'] = {}
subif_dictonary['local-as']['as-number'] = as_number
if 'peer_as_2' in resource_value:
peer_as_2 = int(resource_value['peer_as_2'])
subif_dictonary['peer-as'] = peer_as_2
if 'minimum_advertisement_interval' in resource_value:
minimum_advertisement_interval = int(resource_value['minimum_advertisement_interval'])
subif_dictonary['timers'] = {}
subif_dictonary['timers']['minimum-advertisement-interval'] = minimum_advertisement_interval
if 'admin_state_neighbor' in resource_value:
bool_admin_state = bool(resource_value['admin_state_neighbor'])
str_admin_state_n = 'enable' if bool_admin_state else 'disable'
subif_neighbor = subif_bgp.setdefault('neighbor', list())
subif_state_n = {'admin-state': str_admin_state_n}
if 'peer_address_neighbor' in resource_value:
peer_address_neighbor = str(resource_value['peer_address_neighbor'])
subif_state_n['peer-address'] = peer_address_neighbor
#subif_protocol=json_networkinstance.setdefault('protocols',dict())
#subif_bgp=subif_protocol.setdefault('bgp',dict())
#subif_neighbor=subif_bgp.setdefault('neighbor',list())
if 'peer_group_neighbor' in resource_value:
peer_group_neighbor = str(resource_value['peer_group_neighbor'])
subif_state_n['peer-group'] = peer_group_neighbor
#subif_protocol=json_networkinstance.setdefault('protocols',dict())
#subif_bgp=subif_protocol.setdefault('bgp',dict())
#subif_neighbor=subif_bgp.setdefault('neighbor',list())
if 'local_address_neighbor' in resource_value:
local_address_neighbor = str(resource_value['local_address_neighbor'])
subif_state_n['transport'] = {}
subif_state_n['transport']['local-address'] = local_address_neighbor
#subif_protocol=json_networkinstance.setdefault('protocols',dict())
#subif_bgp=subif_protocol.setdefault('bgp',dict())
#subif_neighbor=subif_bgp.setdefault('neighbor',list())
#subif_transport={'transport':subif_lan}
subif_neighbor.append(subif_state_n)
if 'peer_address_neighbor_2' in resource_value:
peer_address_neighbor_2 = str(resource_value['peer_address_neighbor_2'])
#subif_pan2= {'peer-address':if_peer_address_neighbor_2}
#subif_protocol=json_networkinstance.setdefault('protocols',dict())
#subif_bgp=subif_protocol.setdefault('bgp',dict())
#subif_neighbor=subif_bgp.setdefault('neighbor',list())
subif_dicneighbor = {}
subif_dicneighbor['peer-address'] = peer_address_neighbor_2
if 'peer_group_neighbor_2' in resource_value:
peer_group_neighbor_2 = str(resource_value['peer_group_neighbor_2'])
#subifpgn2 = {'peer-group':if_peer_group_neighbor_2}
# subif_protocol=json_networkinstance.setdefault('protocols',dict())
#subif_bgp=subif_protocol.setdefault('bgp',dict())
#subif_neighbor=subif_bgp.setdefault('neighbor',list())
subif_dicneighbor['peer-group'] = peer_group_neighbor_2
subif_neighbor.append(subif_dicneighbor)
if 'router_id' in resource_value:
router_id = str(resource_value['router_id'])
#subif_protocol=json_networkinstance.setdefault('protocols',dict())
#subif_bgp=subif_protocol.setdefault('bgp',dict())
subif_bgp['router-id'] = router_id
###############VRF###############3
if 'name' in resource_value and 'type' in resource_value:
name = str(resource_value['name'])
type = str(resource_value['type'])
json_networkinstance = {}
json_networkinstance['name'] = name
json_networkinstance['type'] = type
#if 'if_type' in resource_value:
# if_type=str(resource_value['if_type'])
# json_networkinstance['type']=if_type
if 'admin_state_vrf' in resource_value:
bool_admin_state = bool(resource_value['admin_state_vrf'])
str_admin_state = 'enable' if bool_admin_state else 'disable'
json_networkinstance ['admin-state'] = str_admin_state
if 'interface1_name' in resource_value:
interface1_name= str(resource_value['interface1_name'])
if_interface1_list = json_networkinstance.setdefault('interface', list())
subif_interface_name = {'name': interface1_name}
if_interface1_list.append(subif_interface_name)
if 'vxlaninterface_name' in resource_value:
vxlaninterface_name = str(resource_value['vxlaninterface_name'])
vxlaninterface_name_list = json_networkinstance.setdefault('vxlan-interface', list())
subif_vxlaninterface_name = {'name': vxlaninterface_name}
vxlaninterface_name_list.append(subif_vxlaninterface_name)
if 'bgp_evpn_instance_id' in resource_value:
bgp_evpn_instance_id = int(resource_value['bgp_evpn_instance_id'])
subif_protocol = json_networkinstance.setdefault('protocols', dict())
subif_bgp_evpn = subif_protocol.setdefault('bgp-evpn', dict())
subif_bgpinstance = subif_bgp_evpn.setdefault('bgp-instance', list())
subif_dictonary3 = {}
subif_bgpinstance.append(subif_dictonary3)
subif_dictonary3['id'] = bgp_evpn_instance_id
if 'bgp_evpn_instance_admin_state' in resource_value:
bool_admin_state = bool(resource_value['bgp_evpn_instance_admin_state'])
str_admin_state = 'enable' if bool_admin_state else 'disable'
subif_dictonary3['admin-state'] = str_admin_state
if 'bgp_evpn_instance_vxlan_interface' in resource_value:
bgp_evpn_instance_vxlan_interface = str(resource_value['bgp_evpn_instance_vxlan_interface'])
subif_dictonary3['vxlan-interface'] = bgp_evpn_instance_vxlan_interface
if 'bgp_evpn_instance_evi' in resource_value:
bgp_evpn_instance_evi = int(resource_value['bgp_evpn_instance_evi'])
subif_dictonary3['evi'] = bgp_evpn_instance_evi
if 'bgp_vpn_instance_id' in resource_value:
bgp_vpn_instance_id = int(resource_value['bgp_vpn_instance_id'])
subif_bgp_vpn = subif_protocol.setdefault('bgp-vpn', dict())
subif_bgpinstance = subif_bgp_vpn.setdefault('bgp-instance', list())
subif_dictonary4 = {}
subif_dictonary4['id'] = bgp_vpn_instance_id
if 'bgp_vpn_instance_export_rt' in resource_value and 'bgp_vpn_instance_import_rt' in resource_value:
bgp_vpn_instance_export_rt = str(resource_value['bgp_vpn_instance_export_rt'])
bgp_vpn_instance_import_rt = str(resource_value['bgp_vpn_instance_import_rt'])
subif_dictonary4['route-target'] = {}
subif_dictonary4['route-target']['export-rt'] = bgp_vpn_instance_export_rt
subif_dictonary4['route-target']['import-rt'] = bgp_vpn_instance_import_rt
subif_bgpinstance.append(subif_dictonary4)
#if 'if_bgp_vpn_instance_import_rt' in resource_value:
# if_bgp_vpn_instance_import_rt = str(resource_value['if_bgp_vpn_instance_import_rt'])
# subif_dictonary4['route-target']['import-rt']=if_bgp_vpn_instance_import_rt
# subif_bgpinstance.append(subif_dictonary4)
######################################SPINE##########################
if 'interface1_spine' in resource_value:
interface1_spine = str(resource_value['interface1_spine'])
subif_interface_default_list = json_networkinstance.setdefault('interface', list())
subif_interface1_spine = {'name': interface1_spine}
subif_interface_default_list.append(subif_interface1_spine)
if 'interface2_spine' in resource_value:
interface2_spine = str(resource_value['interface2_spine'])
subif_interface_default_list = json_networkinstance.setdefault('interface', list())
subif_interface2_spine = {'name': interface2_spine}
subif_interface_default_list.append(subif_interface2_spine)
if 'interface3_spine' in resource_value:
interface3_spine = str(resource_value['interface3_spine'])
subif_interface_default_list = json_networkinstance.setdefault('interface', list())
subif_interface3_spine = {'name': interface3_spine}
subif_interface_default_list.append(subif_interface3_spine)
if 'name' in resource_value:
json_networkinstance['name'] = name
if 'admin_state_spine' in resource_value:
bool_admin_state = bool(resource_value['admin_state_spine'])
str_admin_state = 'enable' if bool_admin_state else 'disable'
subif_protocol = json_networkinstance.setdefault('protocols', dict())
subif_bgp = subif_protocol.setdefault('bgp', dict())
subif_afisafi = subif_bgp.setdefault('afi-safi', list())
subif_state = {'admin-state': str_admin_state}
if 'afi_safi_name_bgp_spine' in resource_value:
afi_safi_name_bgp_spine = str(resource_value['afi_safi_name_bgp_spine'])
subif_state['afi-safi-name'] = afi_safi_name_bgp_spine
subif_afisafi.append(subif_state)
if 'autonomous_system_bgp_spine' in resource_value:
autonomous_system_bgp_spine = int(resource_value['autonomous_system_bgp_spine'])
subif_bgp['autonomous-system'] = autonomous_system_bgp_spine
if 'export_policy_spine' in resource_value:
export_policy_spine = str(resource_value['export_policy_spine'])
subif_group_spine = {'export-policy': export_policy_spine}
subif_group_spine_list = subif_bgp.setdefault('group', list())
if 'group_name_spine' in resource_value:
group_name_spine = str(resource_value['group_name_spine'])
subif_group_spine['group-name'] = group_name_spine
if 'import_policy_spine' in resource_value:
import_policy_spine = str(resource_value['import_policy_spine'])
subif_group_spine['import-policy'] = import_policy_spine
subif_group_spine_list.append(subif_group_spine)
if 'peer_address_neighbor_spine' in resource_value:
peer_address_neighbor_spine = str(resource_value['peer_address_neighbor_spine'])
subif_neighbor_spine = subif_bgp.setdefault('neighbor', list())
subif_state_spine = {'peer-address': peer_address_neighbor_spine}
if 'peeras_group_neighbor_spine' in resource_value:
peeras_group_neighbor_spine = int(resource_value['peeras_group_neighbor_spine'])
subif_state_spine['peer-as'] = peeras_group_neighbor_spine
if 'peer_group_neighbor_spine' in resource_value:
peer_group_neighbor_spine = str(resource_value['peer_group_neighbor_spine'])
subif_state_spine['peer-group'] = peer_group_neighbor_spine
subif_neighbor_spine.append(subif_state_spine)
#######Neighbor2
if 'peer_address2_neighbor_spine' in resource_value:
peer_address2_neighbor_spine = str(resource_value['peer_address2_neighbor_spine'])
subif_neighbor2_spine = {}
subif_neighbor2_spine['peer-address'] = peer_address2_neighbor_spine
if 'peeras_group_neighbor2_spine' in resource_value:
peeras_group_neighbor2_spine = int(resource_value['peeras_group_neighbor2_spine'])
subif_neighbor2_spine['peer-as'] = peeras_group_neighbor2_spine
if 'peer_group_neighbor2_spine' in resource_value:
peer_group_neighbor2_spine = str(resource_value['peer_group_neighbor2_spine'])
subif_neighbor2_spine['peer-group'] = peer_group_neighbor2_spine
subif_neighbor_spine.append(subif_neighbor2_spine)
if 'router_id_spine' in resource_value:
router_id_spine = str(resource_value['if_router_id_spine'])
subif_bgp['router-id'] = router_id_spine
return str_path, json.dumps(json_networkinstance)
def parse(self, json_data: Dict) -> List[Tuple[str, Dict[str, Any]]]:
response = []
json_network_instance_list = json_data.get('srl_nokia-network-instance:network-instance', [])
for json_network_instance in json_network_instance_list:
#LOGGER.info('json_networkinstance = {:s}'.format(json.dumps(json_network_instance)))
network_instance = {}
json_interface_list = json_network_instance.get('interface', [])
json_vxlan_list = json_network_instance.get('vxlan-interface', [])
vxlaninterface_names = []
for json_vxlan in json_vxlan_list:
#LOGGER.info('json_interface = {:s}'.format(json.dumps(json_interface)))
# LOGGER.info('json_interface.keys = {:s}'.format(str(json_interface.keys())))
#interface = {}
vxlaninterface_name = json_vxlan.get('name')
if vxlaninterface_names is not None:
vxlaninterface_names.append(str(vxlaninterface_name))
else:
pass
interface_names = []
for json_interface in json_interface_list:
#LOGGER.info('json_interface = {:s}'.format(json.dumps(json_interface)))
# LOGGER.info('json_interface.keys = {:s}'.format(str(json_interface.keys())))
#interface = {}
interface_name = json_interface.get('name')
if interface_name is not None:
interface_names.append(str(interface_name))
network_instance_name = json_network_instance.get('name')
if network_instance is not None:
network_instance['name'] = str(network_instance_name)
network_instance_type = json_network_instance.get('type')
if network_instance_type is not None:
network_instance['type'] = str(network_instance_type)
network_instance_adminstate = json_network_instance.get('admin-state')
if network_instance_adminstate is not None:
network_instance['admin-state'] = str(network_instance_adminstate)
#LOGGER.info('json_network_instance.keys = {:s}'.format(str(json_network_instance.keys())))
json_protocols = json_network_instance.get('protocols', {})
json_bgp_evpn = json_protocols.get('bgp-evpn', {})
json_bgp_evpn_instance = json_bgp_evpn.get('srl_nokia-bgp-evpn:bgp-instance', [])
json_bgp_vpn_instance = json_protocols.get('srl_nokia-bgp-vpn:bgp-vpn', {})
json_bgp_vpn_2 = json_bgp_vpn_instance.get('bgp-instance', [])
#LOGGER.info('json_protocols.keys = {:s}'.format(str(json_protocols.keys())))
bgp_protocols = json_protocols.get('srl_nokia-bgp:bgp', {})
#LOGGER.info('bgp_protocols.keys = {:s}'.format(str(bgp_protocols.keys())))
afi_safi_list: List[Dict] = bgp_protocols.get('afi-safi', [])
#afi_safi_list = bgp_protocols.get('afi-safi', [])
lists = []
if afi_safi_list is not None:
for afi_safi_entry in afi_safi_list:
#LOGGER.info('afi_safi_entry = {:s}'.format(json.dumps(afi_safi_entry)))
#afi_safi = {}
admin_state_afi = afi_safi_entry.get('admin-state')
afi_safi_name = afi_safi_entry.get('afi-safi-name')
if admin_state_afi is not None and afi_safi_name is not None:
#afi_safi['admin-state'] = bool(admin_state_afi)
#afi_safi['afi-safi-name'] = bool(afi_safi_name)
lists.append({'admin-state': str(admin_state_afi), 'afi-safi-name': str(afi_safi_name)})
if afi_safi_entry is not None:
network_instance['protocols'] = {}
network_instance['bgp'] = {}
#network_instance['protocols']['bgp']={'afi-safi': lists}
network_instance['protocols'] = {'bgp': {'afi-safi': afi_safi_entry}}
autonomous_system = bgp_protocols.get('autonomous-system')
#LOGGER.info('bgp_protocols = {:s}'.format(json.dumps(bgp_protocols)))
bgp_protocols['autonomous-system'] = str(autonomous_system)
group_list = bgp_protocols.get('group', [])
group_list1 = []
afi_safi_list_group_2 = [] # Ensure initialization outside the loop
for group_1 in group_list:
# LOGGER.info('group = {:s}'.format(json.dumps(group_1)))
group = {}
export_policy = group_1.get('export-policy')
group_name = group_1.get('group-name')
import_policy = group_1.get('import-policy')
peer_as_number = group_1.get('peer-as')
localas = group_1.get('local-as').get('as-number')
timers = group_1.get('timers').get('minimum-advertisement-interval')
group['export-policy'] = str(export_policy)
group['group-name'] = str(group_name)
group['import-policy'] = str(import_policy)
group['peer-as'] = int(peer_as_number)
group['local-as'] = {}
group['local-as']['as-number'] = localas
group['timers'] = {}
group['timers']['minimum-advertisement-interval'] = timers
group_list1.append(group)
afi_safi_list_2 = group_1.get('afi-safi', [])
for afi_safi_group_entry in afi_safi_list_2:
group2 = {}
admin_state_group = afi_safi_group_entry.get('admin-state')
afi_safi_name_group = afi_safi_group_entry.get('afi-safi-name')
if afi_safi_list_group_2: # Check if list is not empty
group2['admin-state'] = str(admin_state_group)
group2['afi-safi-name'] = str(afi_safi_name_group)
afi_safi_list_group_2.append(group2)
neighbor_group_list = bgp_protocols.get('neighbor', [])
neighbor_list_inside = []
#LOGGER.info('json_neighbor = {:s}'.format(json.dumps(json_interface)))
for neighbor_group in neighbor_group_list:
neighbor1 = {}
admin_state_neighbor = neighbor_group.get('admin-state')
peeraddress_neighbor = neighbor_group.get('peer-address')
peergroup_neighbor = neighbor_group.get('peer-group')
local_address_neighbor = neighbor_group.get('transport', {}).get('local-address')
neighbor1['admin-state'] = str(admin_state_neighbor)
neighbor1['peer-address'] = str(peeraddress_neighbor)
neighbor1['peer-group'] = str(peergroup_neighbor)
neighbor1['transport'] = {'local-address': str(local_address_neighbor)}
neighbor2 = {}
peeraddress_neighbor_2 = neighbor_group.get('peer-address')
peergroup_neighbor_2 = neighbor_group.get('peer-group')
neighbor2['peer-address'] = str(peeraddress_neighbor_2)
neighbor2['peer-group'] = str(peergroup_neighbor_2)
neighbor_list_inside.append((neighbor1))
neighbor_list_inside.append(neighbor2)
router_id = bgp_protocols.get('router-id')
bgp_protocols ['router-id'] = str(router_id)
bgp_instance1_list = []
for json_bgp_instance in json_bgp_evpn_instance:
instance1 = {}
id_evpn_bgp_instance = json_bgp_instance.get('id')
admin_state_evpn_bgp_instance = json_bgp_instance.get('admin-state')
vxlan_interface_evpn_bgp_instance = json_bgp_instance.get('vxlan-interface')
evi_evpn_bgp_instance = json_bgp_instance.get('evi', {})
instance1['id'] = int(id_evpn_bgp_instance)
instance1['admin-state'] = str(admin_state_evpn_bgp_instance)
instance1['vxlan-interface'] = str(vxlan_interface_evpn_bgp_instance)
instance1['evi'] = int(evi_evpn_bgp_instance)
bgp_instance1_list.append(instance1)
bgp_instance2_list = []
for json_bgp_instance2 in json_bgp_vpn_2:
#LOGGER.info('json_bgp_instance2 = {:s}'.format(json.dumps(json_bgp_instance2)))
instance2 = {}
id_vpn_bgp_instance = json_bgp_instance2.get('id')
export_target_evpn_bgp_instance = json_bgp_instance2.get('route-target', {}).get('export-rt')
import_target_evpn_bgp_instance = json_bgp_instance2.get('route-target', {}).get('import-rt')
instance2['id'] = int(id_vpn_bgp_instance)
instance2['route-target'] = {}
instance2['route-target']['export-rt'] = str(export_target_evpn_bgp_instance)
instance2['route-target']['import-rt'] = str(import_target_evpn_bgp_instance)
bgp_instance2_list.append(instance2)
if len(network_instance) == 0:
continue
#resource_key = '/network-instance[{:s}]'.format(network_instance_name)
#response.append((resource_key,vxlaninterface_names,network_instance_type,network_instance_adminstate, interface_names,network_instance_name,lists,autonomous_system,group_list1,afi_safi_list_group_2,neighbor_list_inside,router_id,bgp_instance1_list,bgp_instance2_list))
resource_key = '/network-instance[{:s}]'.format(network_instance_name)
response.append((resource_key, network_instance))
return response
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json, logging
from typing import Any, Dict, List, Tuple
from ._Handler import _Handler
LOGGER = logging.getLogger(__name__)
class NetworkInstanceInterfaceHandler(_Handler):
def get_resource_key(self) -> str: return '/network-instance/interface'
def get_path(self) -> str: return '/network-instance/interface'
def compose(self, resource_key : str, resource_value : Dict, delete : bool = False) -> Tuple[str, str]:
ni_name = str(resource_value['name' ]) # default
name = str(resource_value['name' ]) # ethernet-1/49.0
if delete:
PATH_TMPL = '/network-instances/network-instance[name={:s}]/interface[if_name={:s}]'
str_path = PATH_TMPL.format(ni_name,name)
str_data = json.dumps({})
return str_path, str_data
str_path = 'network-instance[name={:s}]/interface'.format(ni_name, name)
str_data = json.dumps({})
def parse(self, json_data : Dict) -> List[Tuple[str, Dict[str, Any]]]:
response = []
return response
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json, logging
from typing import Any, Dict, List, Tuple
from ._Handler import _Handler
LOGGER = logging.getLogger(__name__)
class NetworkInstanceStaticRouteHandler(_Handler):
def get_resource_key(self) -> str: return '/network_instance/static_route'
def get_path(self) -> str: return '/network-instances/network-instance/static_route'
def compose(self, resource_key : str, resource_value : Dict, delete : bool = False) -> Tuple[str, str]:
ni_name = str(resource_value['name' ]) # test-svc
prefix = str(resource_value['prefix' ]) # '172.0.1.0/24'
identifier = 'STATIC'
name = 'static'
if delete:
PATH_TMPL = '/network-instances/network-instance[name={:s}]/protocols'
PATH_TMPL += '/protocol[identifier={:s}][name={:s}]/static-routes/static[prefix={:s}]'
str_path = PATH_TMPL.format(ni_name, identifier, name, prefix)
str_data = json.dumps({})
return str_path, str_data
next_hop = str(resource_value['next_hop' ]) # '172.0.0.1'
next_hop_index = int(resource_value.get('next_hop_index', 0)) # 0
PATH_TMPL = '/network-instances/network-instance[name={:s}]/protocols/protocol[identifier={:s}][name={:s}]'
str_path = PATH_TMPL.format(ni_name, identifier, name)
str_data = json.dumps({
'identifier': identifier, 'name': name,
'config': {'identifier': identifier, 'name': name, 'enabled': True},
'static_routes': {'static': [{
'prefix': prefix,
'config': {'prefix': prefix},
'next_hops': {
'next-hop': [{
'index': next_hop_index,
'config': {'index': next_hop_index, 'next_hop': next_hop}
}]
}
}]}
})
return str_path, str_data
def parse(self, json_data : Dict) -> List[Tuple[str, Dict[str, Any]]]:
response = []
return response
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json, logging
from typing import Any, Dict, List, Tuple
from ._Handler import _Handler
LOGGER = logging.getLogger(__name__)
class NetworkInstanceVxlanInterfacehandler(_Handler):
def get_resource_key(self) -> str: return '/network_instance/interface'
def get_path(self) -> str: return '/network-instance/interface'
def compose(self, resource_key : str, resource_value : Dict, delete : bool = False) -> Tuple[str, str]:
ni_name = str(resource_value['name' ]) # vrf-1
name = str(resource_value['name' ]) # vxlan1.1
if delete:
PATH_TMPL = '/network-instances/network-instance[name={:s}]/interface[if_name={:s}]'
str_path = PATH_TMPL.format(ni_name,name)
str_data = json.dumps({})
return str_path, str_data
str_path = 'network-instance[name={:s}]/vxlan-interface'.format(ni_name, name)
str_data = json.dumps({})
def parse(self, json_data : Dict) -> List[Tuple[str, Dict[str, Any]]]:
response = []
return response
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import re
from typing import Any, Dict, Iterable
RE_REMOVE_FILTERS = re.compile(r'\[[^\]]+\]')
RE_REMOVE_NAMESPACES = re.compile(r'\/[a-zA-Z0-9\_\-]+:')
def get_schema(resource_key : str):
resource_key = RE_REMOVE_FILTERS.sub('', resource_key)
resource_key = RE_REMOVE_NAMESPACES.sub('/', resource_key)
return resource_key
def dict_get_first(d : Dict, field_names : Iterable[str], default=None) -> Any:
for field_name in field_names:
if field_name not in d: continue
return d[field_name]
return default
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json, logging
from typing import Any, Dict, List, Tuple
from ._Handler import _Handler
LOGGER = logging.getLogger(__name__)
class TunnelInterfaceHandler(_Handler):
def get_resource_key(self) -> str:
return '/tunnel-interface'
def get_path(self) -> str:
return '/srl_nokia-tunnel-interfaces:tunnel-interface'
#return '/tunnel-interface'
def compose(self, resource_key: str, resource_value: Dict, delete: bool = False) -> Tuple[str, str]:
name = str(resource_value['name'])
if delete:
PATH_TMPL = '/tunnel-interface[name={:s}]'
str_path = PATH_TMPL.format(name)
str_data = json.dumps({})
return str_path, str_data
str_path = '/tunnel-interface[name={:s}]'.format(name)
if 'index' in resource_value:
index = str(resource_value['index'])
json_tunnel = {}
subif_vxlaninterface = json_tunnel.setdefault('vxlan-interface', list())
subif = {'index': index}
if 'type_tunnel' in resource_value:
type_tunnel = str(resource_value['type_tunnel'])
subif['type'] = type_tunnel
if 'vni_tunnel' in resource_value:
vni_tunnel = int(resource_value['vni_tunnel'])
subif['ingress'] = {}
subif['ingress']['vni'] = vni_tunnel
subif_vxlaninterface.append(subif)
return str_path, json.dumps(json_tunnel)
def parse(self, json_data: Dict) -> List[Tuple[str, Dict[str, Any]]]:
response = []
json_tunnel_list = json_data.get('srl_nokia-tunnel-interfaces:tunnel-interface', [])
for json_tunnel in json_tunnel_list:
tunnel_interface1 = {}
name = json_tunnel.get('name', {})
#tunnel_interface1['name']=str(name)
json_vxlan_list = json_tunnel.get('vxlan-interface', [])
lists = tunnel_interface1.setdefault('vxlan-interface', [])
for json_vxlan1 in json_vxlan_list:
tunnel_interface2 = {}
index = json_vxlan1.get('index', {})
type = json_vxlan1.get('type', {})
ingress = json_vxlan1.get('ingress', {}).get('vni')
tunnel_interface2['index'] = str(index)
tunnel_interface2['type'] = str(type)
tunnel_interface2['ingress'] = {}
tunnel_interface2['ingress']['vni'] = int(ingress)
lists.append(tunnel_interface2)
# if len(tunnel_interface1 ) == 0:
# continue
resource_key = '/tunnel-interface[{:s}]'.format(name)
response.append((resource_key, tunnel_interface1 ))
return response
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from typing import Any, Dict, List, Tuple
class _Handler:
def get_resource_key(self) -> str:
# Retrieve the TeraFlowSDN resource_key path schema used to point this handler
raise NotImplementedError()
def get_path(self) -> str:
# Retrieve the Nokia path schema used to interrogate the device
raise NotImplementedError()
def compose(self, resource_key : str, resource_value : Dict, delete : bool = False) -> Tuple[str, str]:
# Compose a Set/Delete message based on the resource_key/resource_value fields, and the delete flag
raise NotImplementedError()
def parse(self, json_data : Dict) -> List[Tuple[str, Dict[str, Any]]]:
# Parse a Reply from the device and return a list of resource_key/resource_value pairs
raise NotImplementedError()
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import logging
from typing import Dict, List, Optional, Tuple, Union
from grpc import RpcContext
from device.service.driver_api._Driver import RESOURCE_ENDPOINTS, RESOURCE_INTERFACES, RESOURCE_NETWORK_INSTANCES,RESOURCE_NETWORK_INSTANCE_VXLAN,RESOURCE_ROUTING_POLICY,RESOURCE_TUNNEL_INTERFACE
from ._Handler import _Handler
from .Component import ComponentHandler
from .Interface import InterfaceHandler
from .InterfaceCounter import InterfaceCounterHandler
from .NetworkInstance import NetworkInstanceHandler
from .NetworkInstanceInterface import NetworkInstanceInterfaceHandler
from .NetworkInstanceVxlanInterface import NetworkInstanceVxlanInterfacehandler
from .routingpolicy import routingpolicyhandler
from .TunnelInterface import TunnelInterfaceHandler
from .Tools import get_schema
logging.basicConfig(level=logging.DEBUG)
LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.DEBUG)
comph = ComponentHandler()
ifaceh = InterfaceHandler()
ifctrh = InterfaceCounterHandler()
nih = NetworkInstanceHandler()
niifh = NetworkInstanceInterfaceHandler()
nivi = NetworkInstanceVxlanInterfacehandler()
rp = routingpolicyhandler()
ti = TunnelInterfaceHandler()
ALL_RESOURCE_KEYS = [
RESOURCE_ENDPOINTS,
RESOURCE_INTERFACES,
RESOURCE_NETWORK_INSTANCES,
RESOURCE_NETWORK_INSTANCE_VXLAN,
RESOURCE_ROUTING_POLICY,
RESOURCE_TUNNEL_INTERFACE,
]
RESOURCE_KEY_MAPPER = {
RESOURCE_ENDPOINTS : comph.get_resource_key(),
RESOURCE_INTERFACES : ifaceh.get_resource_key(),
RESOURCE_NETWORK_INSTANCES : nih.get_resource_key(),
RESOURCE_NETWORK_INSTANCE_VXLAN : nivi.get_resource_key(),
RESOURCE_ROUTING_POLICY : rp.get_resource_key(),
RESOURCE_TUNNEL_INTERFACE : ti.get_resource_key(),
}
PATH_MAPPER = {
'/components' : comph.get_path(),
'/interface' : ifaceh.get_path(),
'/network-instance' : nih.get_path(),
'/network-instance/interface' : nivi.get_path(),
'/routing-policy' : rp.get_path(),
'/tunnel-interface' : ti.get_path(),
}
RESOURCE_KEY_TO_HANDLER = {
comph.get_resource_key() : comph,
ifaceh.get_resource_key() : ifaceh,
ifctrh.get_resource_key() : ifctrh,
nih.get_resource_key() : nih,
niifh.get_resource_key() : niifh,
nivi.get_resource_key() : nivi,
rp.get_resource_key() : rp,
ti.get_resource_key() :ti,
}
PATH_TO_HANDLER = {
comph.get_path() : comph,
ifaceh.get_path() : ifaceh,
ifctrh.get_path() : ifctrh,
nih.get_path() : nih,
niifh.get_path() : niifh,
nivi.get_path() : nivi,
rp.get_path() :rp,
ti.get_path() :ti,
}
def get_handler(
resource_key: Optional[str] = None, path: Optional[str] = None, raise_if_not_found=True
) -> Optional[_Handler]:
if (resource_key is None) == (path is None):
MSG = 'Exactly one of resource_key({:s}) or path({:s}) must be specified'
raise Exception(MSG.format(str(resource_key), str(path))) # pylint: disable=broad-exception-raised
if resource_key is not None:
resource_key_schema = get_schema(resource_key)
resource_key_schema = RESOURCE_KEY_MAPPER.get(resource_key_schema, resource_key_schema)
handler = RESOURCE_KEY_TO_HANDLER.get(resource_key_schema)
if handler is None and raise_if_not_found:
MSG = 'Handler not found: resource_key={:s} resource_key_schema={:s}'
raise Exception(MSG.format(str(resource_key), str(resource_key_schema)))
elif path is not None:
path_schema = get_schema(path)
path_schema = PATH_MAPPER.get(path_schema, path_schema)
#LOGGER.debug("Original path: %s, Schema path: %s", path, path_schema)
handler = PATH_TO_HANDLER.get(path_schema)
LOGGER.debug("Mapped path schema: %s", path_schema)
if handler is None and raise_if_not_found:
MSG = 'Handler not found: path={:s} path_schema={:s}'
LOGGER.error(MSG.format(str(path), str(path_schema)))
raise Exception(MSG.format(str(path), str(path_schema)))
LOGGER.debug("Handler found for path: %s", handler.get_path())
return handler
def get_path(resource_key: str) -> str:
handler = get_handler(resource_key=resource_key)
path = handler.get_path()
#LOGGER.debug("get_path: resource_key=%s, path=%s", resource_key, path)
return path
def parse(resource_key: str, str_path: str, value: Union[Dict, List]):
#if str_path == '/': str_path = '/{:s}'.format(list(value.keys())[0])
handler = get_handler(resource_key=resource_key)
#LOGGER.debug("parse: str_path=%s, value=%s", str_path, value)
return handler.parse(value)
def compose(resource_key: str, resource_value: Union[Dict, List], delete: bool = False) -> Tuple[str, str]:
handler = get_handler(resource_key=resource_key)
#LOGGER.debug("compose: resource_key=%s, resource_value=%s, delete=%s", resource_key, resource_value, delete)
return handler.compose(resource_key, resource_value, delete=delete)
#def get_path(resource_key : str) -> str:
# return get_handler(resource_key=resource_key).get_path()
#
#def parse(str_path : str, value : Union[Dict, List]):
# return get_handler(path=str_path).parse(value)
#
#def compose(resource_key : str, resource_value : Union[Dict, List], delete : bool = False) -> Tuple[str, str]:
# return get_handler(resource_key=resource_key).compose(resource_key, resource_value, delete=delete)
json_data = {
"features": [
"aaa-spiffe-id",
"admin-user-roles",
"anycast-gw",
"arp-nd-datapath-programming",
"bgp-add-paths",
"bgp-afi-safi-policy",
"bgp-app-warm-restart",
"bgp-auth-password",
"bgp-cfg-afi-safi-list",
"bgp-graceful-restart-gaps",
"bgp-ipv6-next-hop-tunnel-resolution",
"bgp-local-as-container-iso-list",
"bgp-max-ecmp-hash-buckets",
"bgp-mtu-discovery",
"bgp-prefix-limit",
"bgp-restart-max-wait",
"bgp-rib-afi-safi-list",
"bgp-rib-afi-safi-route",
"bgp-single-hop-connected-check",
"bgp-unnumbered-peers",
"bridged",
"bt-evpn-vlan-aware-bundle-interop",
"cam-cammgr-thread-programming",
"cam-multithread-programming",
"cli-plugin-authorization",
"dac-link-training",
"dhcp-relay-fqdn",
"dot1p-classifier-rewrite",
"dot1q-vlan-ranges",
"dynamic-mcid",
"dynamic-tcam",
"event-handler",
"evpn",
"evpn-advertise-arp-nd-only-with-mac-table-entry",
"evpn-ifl-unequal-ecmp",
"evpn-mac-ip-adv-arp-nd-ext-comm",
"evpn-mgr-warm-restart",
"evpn-mh-ip-aliasing",
"evpn-mh-manual-alg",
"evpn-mh-pref-alg",
"evpn-mh-single-active",
"evpn-mh-virtual-es",
"factory-reset",
"fixed",
"future-23-10",
"future-23-7",
"gnmi-services",
"gnmi-union-replace",
"gnoi-healthz",
"ingress-subif-policing",
"interface-references",
"ip-acl-dscp-set",
"ip-qos-multifield",
"ipv4-unnumbered",
"ipv6",
"irb-interface",
"isis-level-database",
"isis-lsdb",
"isis-mi",
"isis-mt",
"isis-nsf",
"l2-mac-learn-mgr-warm-restart",
"l2-mac-mgr-warm-restart",
"l2-proxy-arp",
"l2-proxy-arp-nd-control-flood-on-evpn",
"l2-proxy-arp-nd-warm-restart",
"l2-proxy-nd",
"l2-static-mac-mgr-warm-restart",
"l2cp-transparency",
"l3-proxy-arp",
"l3-proxy-nd",
"lacp-fallback",
"lag",
"license",
"load-persistent-passwords-at-startup",
"mcid-mgr-warm-restart",
"mgmt-server-app-warm-restart",
"mirroring",
"mirroring-intf-stats",
"named-queues-and-named-fcs",
"packet-tracer",
"platform-7220-d2",
"qos-high-threshold-system-limit",
"ra-guard",
"reload-delay",
"route-leaking",
"routing-policy-bgp-med",
"routing-policy-named-statements",
"scheduler-policies",
"segment-routing-adjacency-sid",
"segment-routing-shared-sid",
"snmp-mib-bgp",
"snmp-mib-chassis",
"snmp-mib-interface",
"storm-control",
"subif-acl-policer",
"subif-policer",
"tools-force-pwd-change",
"trident3",
"unequal-ecmp",
"unified-forwarding-tables",
"virtual-ip-discovery",
"vlan-id-any",
"vlan-tpid",
"vxlan",
"vxlan-mgr-warm-restart",
"vxlan-stats",
"warm-reboot"
],
"srl_nokia-configuration:configuration": {
"last-change": "2024-03-08T15:03:55.418Z",
"max-checkpoints": 10,
"max-candidates": 10,
"idle-timeout": 10080,
"auto-checkpoint": false,
"checkpoint": [
{
"id": 0,
"name": "clab-initial",
"comment": "set by containerlab",
"created": "2024-03-08T15:03:57.451Z",
"version": "v23.10.1",
"tag": "v23.10.1-218-ga3fc1bea5a",
"username": "srlinux",
"size": "78425"
}
],
"commit": [
{
"id": 1,
"type": "shared",
"name": "default",
"status": "complete",
"username": "__internal__",
"started": "2024-03-08T15:03:47.557Z",
"ended": "2024-03-08T15:03:50.063Z"
},
{
"id": 2,
"type": "shared",
"name": "default",
"status": "complete",
"username": "root",
"started": "2024-03-08T15:03:55.162Z",
"ended": "2024-03-08T15:03:55.418Z"
}
]
},
"srl_nokia-aaa:aaa": {
"authentication": {
"exit-on-reject": false,
"idle-timeout": 7200,
"authentication-method": [
"local"
],
"admin-user": {
"password": "$ar2$aOvsuj0ALlU=$r750fMa3ZEA/Di8dIfU2fQ==",
"last-successful-login": "2024-03-11T14:52:11.551Z"
},
"linuxadmin-user": {
"password": "$6$Ni233gqiuJ9zarHl$ZKtMh/vEvlY7XpHSYSJVrFNpUDeM/dsfaxK6csljO5X3.ImsDn8yiOcPASsTNpa1r6XrVlzrpnlJKqYIK0gvO1"
},
"session": [
{
"id": 91,
"username": "admin",
"service-name": "srlinux-gnmi",
"authentication-method": "local",
"tty-name": "",
"remote-host": "",
"login-time": "2024-03-11T14:51:04.510Z"
},
{
"id": 95,
"username": "admin",
"service-name": "srlinux-gnmi",
"authentication-method": "local",
"tty-name": "",
"remote-host": "",
"login-time": "2024-03-11T14:51:39.927Z"
},
{
"id": 97,
"username": "admin",
"service-name": "srlinux-gnmi",
"authentication-method": "local",
"tty-name": "",
"remote-host": "",
"login-time": "2024-03-11T14:52:11.551Z"
},
{
"id": 98,
"username": "admin",
"service-name": "srlinux-gnmi",
"authentication-method": "local",
"tty-name": "",
"remote-host": "",
"login-time": "2024-03-11T14:52:11.551Z"
}
],
"password": {
"hash-method": "ar2",
"aging": 0,
"change-on-first-login": false,
"history": 0,
"require-ntp-sync": true,
"complexity-rules": {
"minimum-length": 1,
"maximum-length": 1023,
"minimum-lowercase": 0,
"minimum-uppercase": 0,
"minimum-numeric": 0,
"minimum-special-character": 0,
"allow-username": true
},
"lockout-policy": {
"attempts": 0,
"time": 1,
"lockout": 15
}
}
},
"accounting": {
"accounting-method": [
"local"
]
},
"server-group": [
{
"name": "local",
"type": "srl_nokia-aaa-types:local",
"timeout": 10,
"priv-lvl-authorization": false
}
]
},
"srl_nokia-keychains:authentication": {},
"srl_nokia-system-protocols:protocols": {},
"srl_nokia-boot:boot": {
"autoboot": {
"oper-state": "inactive",
"timeout": 3600,
"attempts": 3,
"interface": "mgmt0",
"client-id": "serial"
}
},
"srl_nokia-interfaces-l2cp:l2cp-transparency": {
"l2cp-statistics": {
"total-in-packets": "8617",
"total-in-discarded-packets": "0",
"total-in-tunneled-packets": "0",
"total-in-trap-to-cpu-packets": "8617",
"lldp": {
"in-tunneled-packets": "0",
"in-trap-to-cpu-packets": "8617"
},
"lacp": {
"in-tunneled-packets": "0",
"in-trap-to-cpu-packets": "0"
},
"xstp": {
"in-tunneled-packets": "0",
"in-trap-to-cpu-packets": "0"
},
"dot1x": {
"in-tunneled-packets": "0",
"in-trap-to-cpu-packets": "0"
},
"ptp": {
"in-tunneled-packets": "0",
"in-trap-to-cpu-packets": "0"
}
}
},
"srl_nokia-lacp:lacp": {},
"srl_nokia-lldp:lldp": {
"admin-state": "enable",
"hello-timer": "30",
"hold-multiplier": 4,
"system-name": "leaf1",
"system-description": "SRLinux-v23.10.1-218-ga3fc1bea5a leaf1 5.15.0-97-generic #107-Ubuntu SMP Wed Feb 7 13:26:48 UTC 2024",
"chassis-id": "1A:A2:00:FF:00:00",
"chassis-id-type": "MAC_ADDRESS",
"statistics": {
"frame-in": "8617",
"frame-out": "25850",
"frame-error-in": "0",
"frame-discard": "0",
"tlv-discard": "0",
"tlv-unknown": "0",
"tlv-accepted": "60319",
"entries-aged-out": "0"
},
"interface": [
{
"name": "ethernet-1/1",
"admin-state": "enable",
"oper-state": "up",
"statistics": {
"frame-in": "0",
"frame-out": "8616",
"frame-error-in": "0",
"frame-discard": "0",
"tlv-discard": "0",
"tlv-unknown": "0",
"frame-error-out": "0"
}
},
{
"name": "ethernet-1/49",
"admin-state": "enable",
"oper-state": "up",
"statistics": {
"frame-in": "8617",
"frame-out": "8617",
"frame-error-in": "0",
"frame-discard": "0",
"tlv-discard": "0",
"tlv-unknown": "0",
"frame-error-out": "0"
},
"neighbor": [
{
"id": "1A:94:02:FF:00:00",
"first-message": "2024-03-08T15:03:55.946Z",
"last-update": "2024-03-11T14:51:42.350Z",
"system-name": "spine1",
"system-description": "SRLinux-v23.10.1-218-ga3fc1bea5a spine1 5.15.0-97-generic #107-Ubuntu SMP Wed Feb 7 13:26:48 UTC 2024",
"chassis-id": "1A:94:02:FF:00:00",
"chassis-id-type": "MAC_ADDRESS",
"port-id": "ethernet-1/1",
"port-id-type": "INTERFACE_NAME",
"port-description": "",
"capability": [
{
"name": "srl_nokia-lldp-types:ROUTER",
"enabled": true
}
]
}
]
},
{
"name": "mgmt0",
"admin-state": "enable",
"oper-state": "up",
"statistics": {
"frame-in": "0",
"frame-out": "8617",
"frame-error-in": "0",
"frame-discard": "0",
"tlv-discard": "0",
"tlv-unknown": "0",
"frame-error-out": "1"
}
}
]
},
"srl_nokia-mtu:mtu": {
"default-port-mtu": 9232,
"default-l2-mtu": 9232,
"default-ip-mtu": 1500,
"min-path-mtu": 552
},
"srl_nokia-system-name:name": {
"host-name": "leaf1"
},
"srl_nokia-gnmi-server:gnmi-server": {
"admin-state": "enable",
"timeout": 7200,
"rate-limit": 65000,
"session-limit": 20,
"commit-confirmed-timeout": 0,
"commit-save": false,
"include-defaults-in-config-only-responses": false,
"trace-options": [
"request",
"response",
"common"
],
"network-instance": [
{
"name": "mgmt",
"admin-state": "enable",
"oper-state": "up",
"use-authentication": true,
"tls-profile": "clab-profile",
"port": 57400,
"services": [
"srl_nokia-gnmi-server:gnmi"
],
"source-address": [
"::"
]
}
],
"unix-socket": {
"admin-state": "enable",
"oper-state": "up",
"use-authentication": true,
"socket-path": "/opt/srlinux/var/run/sr_gnmi_server",
"services": [
"srl_nokia-gnmi-server:gnmi",
"srl_nokia-gnmi-server:gnoi"
]
}
},
"srl_nokia-tls:tls": {
"server-profile": [
{
"name": "clab-profile",
"key": "$aes1$ATCyNz1VYoUafG8=$Y1bnicVFVnHy/KlyTF4QYRwTJ5SVyEmPcZvKsx04lWIE+f3Mz1wI5LlEspzDmbM+OpscmPVeMKXpOZwKI7UM770QwG06lhpy9dNolQqAJpVYVKeFSObRzOy0qWyyuIBwDNTr7SfYlHB07ljhCredaUsEpNejN7cCc3xv2eQRPyua+NQhuI6Ms2M6voZkUoj14m3GiB9IUUqLaAEQpw0xcpXJ1zXeQwpK7oSN2d0ehzop1dGWWCi9bFdjk83UOj/w/gg5VAAmeDEeyR6aNJqa4oO/nqskggxfzvoWLkAojE3+/61+ccxWCL7BbEWeVVtkBTuL4fWAc5dVIqeH9BVODgXhCLNkyVcS4xBX1ObdIPs4+7Tmng91LHkC92N4MkECeThCUigJ/1qnlXA+ht9dK6sRZe85f6ltqWUXck87hCbtoucBLAZfXkKCTiaTLY5rgHRvMqAwiWSwelfhn0IFycxD+0UcdxaAR+6cIP3XBYeWSQWTCjFFFfOlFDX447npLkgXGTgag1id2ysZSxCZYuoUIVF79RdcZaTIruFpIyAcPz8d6qUqNg6d/TB5+a2fmR8zE9OqEFl3pYXqt93Q8Rsf9Cm79WClCEH7hqKn2wQO1B0VjNcCaLJoakaXLmkrhXPoUNHNjK3P5YiuNEsmPHl7umVuhJTbcJLl4rt+djYnfbwRxmtpnzvAbE+9AMv68CRjRBgmz4xq6fLzQrEPLwHOx6V1KRmQNpvfvfe4zbPmZ4fWcFXgTDOzRZJn1VTALvmE7Q2ixJgWp7Sn7aMzlvhh3J9LsienjVT8jxIDjXqTTrN48NH6O1gPnW7FmhFt3DCFltzKDwujODbaOOLBJGII6XIZtFF2+CoVmVw7Q0GKi6sgqATLBoK87E/cfic2EnSHHEBvoPXfYh/iGKBx2BHqun/W1Yef8fHKwcwFUIZCqWS5oqZFnHlUQ7hkSktLDFVDJtTYmYoJHh4jO58bv/LdB1B2Y6cmU9ctTevkWRhwWeKdcMJkWm1U/2SViYJ1za1vvYFmycKt6LADyvPrvusIH2PF7JI9TcfaBMjwlnD4MyTMFappsv1j5IdJKarPGtA+TBZhT6VLUqiaYs6WAomkPKOqQJWnm7Yz/+JmMBzdM2Xf9oXihNxix6aYguDgxgJuJt0WUUcBeGf/DEsv859LI4Ai2cGjS5jtXrBffQ0/5/Tc6kDzMCrWN/Xrz8SdAfk+SPNRTuMx2diviV1Fg9qvbK9xoVpFnKS9If7StEsoidNhKNfZiTpx8UJaepkoZfSL0OsX75I0dunW0VBRIj6DelpXxi73A6xw7volu6gMHE1uPOgAs7mpAEk/j4pWPQsvdEyfbxqh78Ac8JS0tYVYKuXeuq4UeXTEaP8qwOkz2WautbkhRxtSABYW0EDjGdeMqeEgeMYaDUAR986tbASd0+QZNoNkS8TC8ewxzaupbVGddbndcKgsy/VLYcTS5AsqlHs5lAgZgWjo4/eP4gIh9zgU+7+dmJOz2N4Z77aY4UknNxzDx9u0t/ZgAE/EGdiQW4dpKtNlrU55JoccEnIb97Mdx/Tz7Ghl/jUrOa2GvtqV7LAFAVePwxHslBJgI+bY32SHxavPBCyImdef0qf55KDUBUyLLE6PZAIaR3mz+OgLyGXoAaOm4YtagAqAXBTX4zr6aZZVevSUtzgC3c2I8Ul66XALpEX0stbdhn2koYcxDsyIaseUEPbju5WUqxVfrmPCNqiC1rwJHdS4XS79w4is++Tr7SIc5bj09OOwZbtrqCjeedFhYi7vfcNymcoYIPVg2xH6e1ysP0yCuML2HjoFS5b7wIxASnEL5vbH0ev33TfprrMBTk8Nsunxiq4z4lvjwQAa5O/rcs5S4Pd4z8I+B1mAyeqdHUlwYu9rjRlDTn9uKoqewnPMezbTLJ7lxlrn0vT7NuByonS8Cu2zM/UqLRcUt01wq+roNeNVhW3+EyV1x55LwtgyUFSN3UBnK8bB3SFR2GnRxWAEZ/7eRxxbHaKDk/So5qoCv9X5Hqlao6HAXMGfZ7pfr1MRLrbjf+UtmfKqwZk29y1IJ2cLBe7YDXYSKEirAH2d0u/NO18D0PF970evq1yb4OO07mFIVt+CVtjb4MSFpNtwQCVxUGGeZ08k4UZROJ7OqguyskiRmwxh9UfLjOJ6zLSlcABGC0QU+4D0tgX65vwIQ5NwSliywTOjyeWixEms/xc0BfT20ij0CzCfmMDiXYJP",
"certificate": "-----BEGIN CERTIFICATE-----\nMIID1DCCArygAwIBAgICBnowDQYJKoZIhvcNAQELBQAwUjELMAkGA1UEBhMCVVMx\nCTAHBgNVBAcTADEVMBMGA1UEChMMY29udGFpbmVybGFiMQkwBwYDVQQLEwAxFjAU\nBgNVBAMTDWV2cG4wMSBsYWIgQ0EwHhcNMjQwMzA4MTUwMzM4WhcNMjUwMzA4MTUw\nMzM4WjBUMQswCQYDVQQGEwJVUzEJMAcGA1UEBxMAMRUwEwYDVQQKEwxjb250YWlu\nZXJsYWIxCTAHBgNVBAsTADEYMBYGA1UEAxMPbGVhZjEuZXZwbjAxLmlvMIIBIjAN\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+N+jjl88be/Dg1GJ76OFR2dr2kEB\nWaSAYbuYcBq8DgybocEgoq3qmb2sOM272xOfB11b00A5Z7HdFvSNO6pefVegXFux\nM3YWRBBSJOMsiBl1G1/NRhNrMqbnWKOiIn8pHauHwhuOWVdFEwrbYPqnyhh0uvFF\n7ZvDuCq/aqL7hLMNIfGr9348s2lVZD17t9B2UAm/tjGhOg5pSRYRwNphcJ8SNzre\nGkvJtMNuGe2mBYqJjI7v8J6T9BAXtiKE/tmnvBAluBAf+p+xRYKOOIJnJU4NowBv\nFEqixwKkrHBaXinJ2msj+6j1duhg0NS2R7+s4/L1YxfE18V06ArbXR6nmwIDAQAB\no4GxMIGuMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB\nBQUHAwEwDgYDVR0OBAcEBQECAwQGMB8GA1UdIwQYMBaAFPClEVv4DfVq7CaMZ7zj\nSro/N2/rMEwGA1UdEQRFMEOCBWxlYWYxghFjbGFiLWV2cG4wMS1sZWFmMYIPbGVh\nZjEuZXZwbjAxLmlvhwSsFBRmhxAgAQFyACAAIAAAAAAAAAACMA0GCSqGSIb3DQEB\nCwUAA4IBAQCOaBP6aAdWEx2aSrjfFIk46RxPulJOcwBgpBvLYRYYlbL6I5ky81Po\nUbP4NYyFjIvAqTH6mbkbIZ/qXbjdw0CylWHYdOlgKfGxUNZ9j/tCpWewjv5PkZtV\nIF9W/k2P9g+Gk77no0OR+wHGdEZfyPfQwTKNQU2YSGQJzj14gYJbYv9WsBnTTtwl\nZULNf89XTcEAXe15EYv90ItEzuCao6ky7ZzEElmtadxrDqSFVQJnfZYIxKftziRQ\nNpQ8eNAvN+ApAa+u6TYztULGzivX9hy/T7zDABnaPhdBsCUO14COOi7VY6ZeHMM1\nOCK0zX+xEhiPxqFW/IoU2DqPVekPU9s9\n-----END CERTIFICATE-----\n",
"authenticate-client": false,
"cipher-list": [
"srl_nokia-tls:ecdhe-ecdsa-aes256-gcm-sha384",
"srl_nokia-tls:ecdhe-ecdsa-aes128-gcm-sha256",
"srl_nokia-tls:ecdhe-rsa-aes256-gcm-sha384",
"srl_nokia-tls:ecdhe-rsa-aes128-gcm-sha256"
]
}
]
},
"srl_nokia-json-rpc:json-rpc-server": {
"admin-state": "enable",
"commit-confirmed-timeout": 0,
"network-instance": [
{
"name": "mgmt",
"http": {
"admin-state": "enable",
"oper-state": "up",
"use-authentication": true,
"session-limit": 10,
"port": 80,
"source-address": [
"::"
]
},
"https": {
"admin-state": "enable",
"oper-state": "up",
"use-authentication": true,
"session-limit": 10,
"port": 443,
"tls-profile": "clab-profile",
"source-address": [
"::"
]
}
}
],
"unix-socket": {
"admin-state": "disable",
"oper-state": "down",
"use-authentication": true,
"socket-path": ""
}
},
"srl_nokia-system-bridge-table:bridge-table": {
"mac-learning": {
"mac-relearn-only": false
},
"mac-limit": {
"maximum-entries": 156000,
"warning-threshold-pct": 95
},
"statistics": {
"active-entries": "0",
"total-entries": "0",
"failed-entries": "0",
"mac-type": [
{
"type": "static",
"active-entries": "0",
"total-entries": "0",
"failed-entries": "0"
},
{
"type": "duplicate",
"active-entries": "0",
"total-entries": "0",
"failed-entries": "0"
},
{
"type": "learnt",
"active-entries": "0",
"total-entries": "0",
"failed-entries": "0"
},
{
"type": "irb-interface",
"active-entries": "0",
"total-entries": "0",
"failed-entries": "0"
},
{
"type": "evpn",
"active-entries": "0",
"total-entries": "0",
"failed-entries": "0"
},
{
"type": "evpn-static",
"active-entries": "0",
"total-entries": "0",
"failed-entries": "0"
},
{
"type": "irb-interface-anycast",
"active-entries": "0",
"total-entries": "0",
"failed-entries": "0"
},
{
"type": "proxy-anti-spoof",
"active-entries": "0",
"total-entries": "0",
"failed-entries": "0"
},
{
"type": "reserved",
"active-entries": "0",
"total-entries": "0",
"failed-entries": "0"
},
{
"type": "eth-cfm",
"active-entries": "0",
"total-entries": "0",
"failed-entries": "0"
}
]
}
},
"srl_nokia-dns:dns": {
"oper-state": "up",
"network-instance": "mgmt",
"server-list": [
"84.88.62.194"
]
},
"srl_nokia-load-balancing:load-balancing": {
"hash-options": {
"hash-seed": 0,
"destination-address": true,
"destination-port": true,
"ipv6-flow-label": false,
"protocol": true,
"source-address": true,
"source-port": true,
"vlan": true,
"mpls-label-stack": false
}
},
"srl_nokia-ntp:clock": {
"timezone": "UTC"
},
"srl_nokia-snmp:snmp": {
"community": "$aes1$AWCxS35D1SWo6m8=$1ZTaOX6kE3OwF9Vuv+RQnQ==",
"network-instance": [
{
"name": "mgmt",
"admin-state": "enable",
"oper-state": "up"
}
]
},
"srl_nokia-ssh:ssh-server": {
"host-key": {
"preserve": true
},
"network-instance": [
{
"name": "mgmt",
"admin-state": "enable",
"timeout": 0,
"rate-limit": 20,
"oper-state": "up",
"protocol-version": 2
}
]
},
"srl_nokia-system-banner:banner": {
"login-banner": "................................................................\n: Welcome to Nokia SR Linux! :\n: Open Network OS for the NetOps era. :\n: :\n: This is a freely distributed official container image. :\n: Use it - Share it :\n: :\n: Get started: https://learn.srlinux.dev :\n: Container: https://go.srlinux.dev/container-image :\n: Docs: https://doc.srlinux.dev/23-10 :\n: Rel. notes: https://doc.srlinux.dev/rn23-10-1 :\n: YANG: https://yang.srlinux.dev/release/v23.10.1 :\n: Discord: https://go.srlinux.dev/discord :\n: Contact: https://go.srlinux.dev/contact-sales :\n................................................................\n"
},
"srl_nokia-system-info:information": {
"description": "SRLinux-v23.10.1-218-ga3fc1bea5a 7220 IXR-D2 Copyright (c) 2000-2020 Nokia. Kernel 5.15.0-97-generic #107-Ubuntu SMP Wed Feb 7 13:26:48 UTC 2024",
"current-datetime": "2024-03-11T14:52:11.490Z",
"last-booted": "2024-03-08T15:03:49.013Z",
"version": "v23.10.1-218-ga3fc1bea5a"
},
"srl_nokia-logging:logging": {
"subsystem-facility": "local6",
"use-fqdn": false,
"console": {
"format": "%TIMEGENERATED:::date-rfc3339% %HOSTNAME% %SYSLOGTAG%%MSG:::sp-if-no-1st-sp%%MSG:::drop-last-lf%\\n"
},
"buffer": [
{
"buffer-name": "messages",
"persist": 0,
"format": "%TIMEGENERATED:::date-rfc3339% %HOSTNAME% %SYSLOGTAG%%MSG:::sp-if-no-1st-sp%%MSG:::drop-last-lf%\\n",
"rotate": 3,
"size": "10000000",
"facility": [
{
"facility-name": "local6",
"priority": {
"match-above": "informational"
}
}
]
},
{
"buffer-name": "system",
"persist": 0,
"format": "%TIMEGENERATED:::date-rfc3339% %HOSTNAME% %SYSLOGTAG%%MSG:::sp-if-no-1st-sp%%MSG:::drop-last-lf%\\n",
"rotate": 4,
"size": "10M",
"facility": [
{
"facility-name": "auth",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "cron",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "daemon",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "ftp",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "kern",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "lpr",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "mail",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "news",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "syslog",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "user",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "uucp",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "local0",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "local1",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "local2",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "local3",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "local4",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "local5",
"priority": {
"match-above": "warning"
}
},
{
"facility-name": "local7",
"priority": {
"match-above": "warning"
}
}
]
}
],
"file": [
{
"file-name": "messages",
"directory": "/var/log/srlinux/file",
"format": "%TIMEGENERATED:::date-rfc3339% %HOSTNAME% %SYSLOGTAG%%MSG:::sp-if-no-1st-sp%%MSG:::drop-last-lf%\\n",
"rotate": 3,
"size": "10000000",
"facility": [
{
"facility-name": "local6",
"priority": {
"match-above": "warning"
}
}
]
}
]
},
"srl_nokia-system-multicast:multicast": {
"multicast-ids": {
"statistics": {
"maximum-ids": 16380,
"current-usage": "0",
"total-pending": "0",
"multicast-id-user-type": [
{
"user": "mac-vrf",
"current-usage": "0",
"total-pending": "0"
},
{
"user": "vxlan-interface",
"current-usage": "0",
"total-pending": "0"
},
{
"user": "l2-proxy-arp-nd",
"current-usage": "0",
"total-pending": "0"
},
{
"user": "mfib",
"current-usage": "0",
"total-pending": "0"
},
{
"user": "mac-vrf-bgp-evpn",
"current-usage": "0",
"total-pending": "0"
}
]
}
}
},
"srl_nokia-app-mgmt:app-management": {
"application": [
{
"name": "aaa_mgr",
"pid": 1492,
"state": "running",
"last-change": "2024-03-08T15:03:44.627Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_aaa_mgr",
"search-command": "./sr_aaa_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-aaa",
"srl_nokia-aaa-password",
"srl_nokia-aaa-types",
"srl_nokia-gnsi-authz"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "acl_mgr",
"pid": 1521,
"state": "running",
"last-change": "2024-03-08T15:03:44.627Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_acl_mgr",
"search-command": "./sr_acl_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-acl",
"srl_nokia-policy-forwarding",
"srl_nokia-packet-match-types",
"srl_nokia-acl-qos",
"srl_nokia-acl-policers"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "app_mgr",
"pid": 1385,
"state": "running",
"last-change": "2024-03-08T15:03:45.154Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_app_mgr",
"search-command": "./sr_app_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold"
],
"restricted-operations": [
"start",
"stop",
"restart",
"quit",
"kill"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-app-mgmt"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "arp_nd_mgr",
"pid": 1561,
"state": "running",
"last-change": "2024-03-08T15:03:44.627Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_arp_nd_mgr",
"search-command": "./sr_arp_nd_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-interfaces-nbr",
"srl_nokia-interfaces-nbr-virtual-ip-discovery",
"srl_nokia-interfaces-router-adv"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "bfd_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_bfd_mgr",
"search-command": "./sr_bfd_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-bfd",
"srl_nokia-micro-bfd"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "bgp_mgr",
"pid": 2595,
"state": "running",
"last-change": "2024-03-08T15:03:47.890Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_bgp_mgr",
"search-command": "./sr_bgp_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-bgp",
"srl_nokia-bgp-vpn",
"srl_nokia-rib-bgp",
"srl_nokia-system-network-instance-bgp-vpn",
"srl_nokia-system-protocols"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "chassis_mgr",
"pid": 1597,
"state": "running",
"last-change": "2024-03-08T15:03:44.627Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_chassis_mgr",
"search-command": "./sr_chassis_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"stop",
"quit",
"kill",
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-boot",
"srl_nokia-interfaces",
"srl_nokia-interfaces-bridge-table",
"srl_nokia-interfaces-ip-dhcp",
"srl_nokia-interfaces-l2cp",
"srl_nokia-interfaces-p4rt",
"srl_nokia-interfaces-vlans",
"srl_nokia-interfaces-vxdp",
"srl_nokia-if-ip",
"srl_nokia-if-mpls",
"srl_nokia-mtu",
"srl_nokia-packet-link-qual",
"srl_nokia-platform",
"srl_nokia-platform-acl",
"srl_nokia-platform-chassis",
"srl_nokia-platform-control",
"srl_nokia-platform-datapath-resources",
"srl_nokia-platform-fabric",
"srl_nokia-platform-fan",
"srl_nokia-platform-healthz",
"srl_nokia-platform-lc",
"srl_nokia-platform-linecard-fib",
"srl_nokia-platform-mtu",
"srl_nokia-platform-p4rt",
"srl_nokia-platform-pipeline-counters",
"srl_nokia-platform-psu",
"srl_nokia-platform-qos",
"srl_nokia-platform-resource-mgmt",
"srl_nokia-platform-resource-monitoring",
"srl_nokia-platform-redundancy",
"srl_nokia-platform-secure-boot",
"srl_nokia-platform-tcam",
"srl_nokia-platform-tpm",
"srl_nokia-platform-vxdp",
"srl_nokia-system-name"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "dev_mgr",
"pid": 1399,
"state": "running",
"last-change": "2024-03-08T15:03:42.344Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 1,
"failure-window": 800,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_device_mgr",
"search-command": "./sr_device_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold"
],
"restricted-operations": [
"kill",
"quit",
"reload",
"restart",
"start",
"stop"
],
"statistics": {
"restart-count": 0
},
"yang": {}
},
{
"name": "dhcp_client_mgr",
"pid": 1623,
"state": "running",
"last-change": "2024-03-08T15:03:44.627Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_dhcp_client_mgr",
"search-command": "./sr_dhcp_client_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"stop",
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {}
},
{
"name": "dhcp_relay_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_dhcp_relay_mgr",
"search-command": "./sr_dhcp_relay_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"stop",
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-interfaces-ip-dhcp-relay"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "dhcp_server_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_dhcp_server_mgr",
"search-command": "./sr_dhcp_server_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"stop",
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-dhcp-server",
"srl_nokia-interfaces-ip-dhcp-server"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "dnsmasq-mgmt",
"pid": 3936,
"state": "running",
"last-change": "2024-03-08T15:03:57.127Z",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/usr/sbin",
"launch-command": "LD_PRELOAD=\"\" ./dnsmasq --conf-file=/etc/dnsmasq.conf",
"search-command": "./dnsmasq --conf-file=/etc/dnsmasq.conf",
"version": "2.89",
"oom-score-adj": 0,
"statistics": {
"restart-count": 0
},
"yang": {}
},
{
"name": "ethcfm_mgr",
"state": "waiting-for-config",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_ethcfm_mgr",
"search-command": "./sr_ethcfm_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-ethcfm",
"srl_nokia-oam-pm-ethcfm"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "event_mgr",
"state": "waiting-for-config",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_event_mgr",
"search-command": "./sr_event_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-event-handler"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "evpn_mgr",
"pid": 1645,
"state": "running",
"last-change": "2024-03-08T15:03:44.627Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_evpn_mgr",
"search-command": "./sr_evpn_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-mpls-services-evpn-label-management",
"srl_nokia-interfaces-nbr-evpn",
"srl_nokia-interfaces-ethernet-segment-association",
"srl_nokia-system-network-instance-bgp-evpn-ethernet-segments",
"srl_nokia-bgp-evpn-bgp-instance-mpls-vpws-destinations"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "fhs_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_fhs_mgr",
"search-command": "./sr_fhs_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-ra_guard"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "fib_mgr",
"pid": 1696,
"state": "running",
"last-change": "2024-03-08T15:03:44.628Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_fib_mgr",
"search-command": "./sr_fib_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-ip-route-tables",
"srl_nokia-mpls-route-tables",
"srl_nokia-tunnel-tables"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "gnmi_server",
"pid": 2671,
"state": "running",
"last-change": "2024-03-08T15:03:48.042Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_gnmi_server",
"search-command": "./sr_gnmi_server",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-gnmi-server"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "gribi_server",
"state": "waiting-for-config",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_gribi_server",
"search-command": "./sr_gribi_server",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-gribi-server"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "idb_server",
"pid": 1453,
"state": "running",
"last-change": "2024-03-08T15:03:42.502Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_idb_server",
"search-command": "./sr_idb_server",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold"
],
"restricted-operations": [
"start",
"stop",
"restart",
"quit",
"kill",
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {}
},
{
"name": "isis_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_isis_mgr",
"search-command": "./sr_isis_mgr",
"version": "",
"oom-score-adj": 0,
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-isis",
"srl_nokia-isis-lsdb",
"srl_nokia-isis-lsdb-types"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "json_rpc",
"pid": 3812,
"state": "running",
"last-change": "2024-03-08T15:03:55.335Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_json_rpc",
"search-command": "./sr_json_rpc",
"version": "",
"oom-score-adj": 0,
"supported-restart-types": [
"cold"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-json-rpc"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "l2_mac_learn_mgr",
"pid": 1749,
"state": "running",
"last-change": "2024-03-08T15:03:44.628Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_l2_mac_learn_mgr",
"search-command": "./sr_l2_mac_learn_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-bridge-table-mac-learning-entries",
"srl_nokia-interfaces-bridge-table-mac-learning-entries"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "l2_mac_mgr",
"pid": 1800,
"state": "running",
"last-change": "2024-03-08T15:03:44.628Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_l2_mac_mgr",
"search-command": "./sr_l2_mac_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-bgp-evpn-bgp-instance-mpls-bridge-table-unicast-destinations",
"srl_nokia-bgp-evpn-bgp-instance-mpls-bridge-table-statistics",
"srl_nokia-bridge-table-mac-table",
"srl_nokia-bridge-table-mac-duplication-entries",
"srl_nokia-bridge-table-reserved-macs",
"srl_nokia-interfaces-bridge-table-mac-duplication-entries",
"srl_nokia-interfaces-bridge-table-mac-table",
"srl_nokia-interfaces-bridge-table-statistics",
"srl_nokia-system-bridge-table",
"srl_nokia-tunnel-interfaces-vxlan-interface-bridge-table",
"srl_nokia-tunnel-interfaces-vxlan-interface-bridge-table-unicast-destinations"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "l2_proxy_arp_nd_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_l2_proxy_arp_nd_mgr",
"search-command": "./sr_l2_proxy_arp_nd_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-bridge-table-proxy-arp-nd",
"srl_nokia-system-bridge-table-proxy-arp"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "l2_static_mac_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_l2_static_mac_mgr",
"search-command": "./sr_l2_static_mac_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-bridge-table-static-mac"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "label_mgr",
"state": "waiting-for-config",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_label_mgr",
"search-command": "./sr_label_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-mpls-label-management"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "lag_mgr",
"pid": 1866,
"state": "running",
"last-change": "2024-03-08T15:03:44.628Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_lag_mgr",
"search-command": "./sr_lag_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-interfaces-lag",
"srl_nokia-lacp"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "ldp_mgr",
"state": "waiting-for-config",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_ldp_mgr",
"search-command": "./sr_ldp_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-ldp"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "license_mgr",
"pid": 1905,
"state": "running",
"last-change": "2024-03-08T15:03:44.628Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_license_mgr",
"search-command": "./sr_license_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-license"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "linux_mgr",
"pid": 1943,
"state": "running",
"last-change": "2024-03-08T15:03:44.629Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_linux_mgr",
"search-command": "./sr_linux_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-dns",
"srl_nokia-ftp",
"srl_nokia-gnsi-certz",
"srl_nokia-keychains",
"srl_nokia-linux",
"srl_nokia-load-balancing",
"srl_nokia-network-instance-mtu",
"srl_nokia-ntp",
"srl_nokia-platform-cgroup",
"srl_nokia-platform-cpu",
"srl_nokia-platform-disk",
"srl_nokia-platform-memory",
"srl_nokia-sflow",
"srl_nokia-snmp",
"srl_nokia-ssh",
"srl_nokia-system-banner",
"srl_nokia-system-info",
"srl_nokia-tcp-udp",
"srl_nokia-timezone",
"srl_nokia-tls"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models",
"/opt/srlinux/models/openconfig"
]
}
},
{
"name": "lldp_mgr",
"pid": 3778,
"state": "running",
"last-change": "2024-03-08T15:03:55.306Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_lldp_mgr",
"search-command": "./sr_lldp_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-lldp",
"srl_nokia-lldp-types"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "log_mgr",
"pid": 1989,
"state": "running",
"last-change": "2024-03-08T15:03:44.629Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_log_mgr",
"search-command": "./sr_log_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-logging"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "macsec_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_macsec_mgr",
"search-command": "./sr_macsec_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-transport-security",
"srl_nokia-macsec"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models/transport-security"
]
}
},
{
"name": "mcid_mgr",
"pid": 2042,
"state": "running",
"last-change": "2024-03-08T15:03:44.637Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_mcid_mgr",
"search-command": "./sr_mcid_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-system-multicast",
"srl_nokia-bgp-evpn-bgp-instance-mpls-bridge-table-multicast-destinations",
"srl_nokia-tunnel-interfaces-vxlan-interface-bridge-table-multicast-destinations"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "mgmt_server",
"pid": 2085,
"state": "running",
"last-change": "2024-03-08T15:03:44.638Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_mgmt_server",
"search-command": "./sr_mgmt_server",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"start",
"stop",
"quit",
"kill",
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {}
},
{
"name": "mirror_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_mirror_mgr",
"search-command": "./sr_mirror_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-mirroring",
"srl_nokia-interfaces-local-mirror-destination"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "mpls_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_mpls_mgr",
"search-command": "./sr_mpls_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-mpls"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "mplsoam_mgr",
"pid": 2105,
"state": "running",
"last-change": "2024-03-08T15:03:44.638Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_mplsoam_mgr",
"search-command": "./sr_mplsoam_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold"
],
"restricted-operations": [
"stop",
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-lsp-ping-trace"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "net_inst_mgr",
"pid": 2152,
"state": "running",
"last-change": "2024-03-08T15:03:44.638Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_net_inst_mgr",
"search-command": "./sr_net_inst_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"stop",
"quit",
"kill",
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-bgp-evpn",
"srl_nokia-bgp-ipvpn",
"srl_nokia-bridge-table",
"srl_nokia-bridge-table-mac-duplication",
"srl_nokia-bridge-table-mac-learning",
"srl_nokia-bridge-table-mac-limit",
"srl_nokia-bridge-table-shg",
"srl_nokia-connection-point",
"srl_nokia-icmp",
"srl_nokia-mpls-services-network-instance-label-management",
"srl_nokia-network-instance",
"srl_nokia-system-network-instance"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "oam_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_oam_mgr",
"search-command": "./sr_oam_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-oam"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "oc_mgmt_server",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_oc_mgmt_server --yang-model-config /opt/srlinux/appmgr/oc_yang_config.conf",
"search-command": "./sr_oc_mgmt_server",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-openconfig"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "ospf_mgr",
"state": "waiting-for-config",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_ospf_mgr",
"search-command": "./sr_ospf_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-ospf"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "p4rt_server",
"state": "waiting-for-config",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_p4rt_server",
"search-command": "./sr_p4rt_server",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-p4rt-server"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "plcy_mgr",
"pid": 2645,
"state": "running",
"last-change": "2024-03-08T15:03:47.931Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_plcy_mgr",
"search-command": "./sr_plcy_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-routing-policy"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "qos_mgr",
"pid": 2677,
"state": "running",
"last-change": "2024-03-08T15:03:48.006Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_qos_mgr",
"search-command": "./sr_qos_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-qos",
"srl_nokia-qos-policers"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "radius_mgr",
"pid": 2192,
"state": "running",
"last-change": "2024-03-08T15:03:44.638Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_radius_mgr",
"search-command": "./sr_radius_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold"
],
"statistics": {
"restart-count": 0
},
"yang": {}
},
{
"name": "sdk_mgr",
"pid": 2222,
"state": "running",
"last-change": "2024-03-08T15:03:44.650Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_sdk_mgr",
"search-command": "./sr_sdk_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {}
},
{
"name": "segrt_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_segrt_mgr",
"search-command": "./sr_segrt_mgr",
"version": "",
"oom-score-adj": 0,
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-segment-routing"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "sflow_sample_mgr",
"pid": 2261,
"state": "running",
"last-change": "2024-03-08T15:03:44.650Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_sflow_sample_mgr",
"search-command": "./sr_sflow_sample_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {}
},
{
"name": "snmp_server-mgmt",
"pid": 3989,
"state": "running",
"last-change": "2024-03-08T15:03:57.132Z",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "LD_PRELOAD=\"\" ./sr_snmp_server -M -c mgmt udp:161,udp6:161",
"search-command": "./sr_snmp_server -M -c mgmt udp:161,udp6:161",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"statistics": {
"restart-count": 0
},
"yang": {}
},
{
"name": "sshd-mgmt",
"pid": 3161,
"state": "running",
"last-change": "2024-03-08T15:03:52.112Z",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/usr/sbin",
"launch-command": "unset TZ; LD_PRELOAD=\"\" /usr/sbin/sshd -f /etc/ssh/sshd_config_mgmt",
"search-command": "sshd: /usr/sbin/sshd -f /etc/ssh/sshd_config_mgmt",
"version": "OpenSSH_9.2p1 Debian-2+deb12u1, OpenSSL 3.0.11 19 Sep 2023",
"oom-score-adj": 0,
"restricted-operations": [
"stop",
"quit",
"kill"
],
"statistics": {
"restart-count": 1
},
"yang": {}
},
{
"name": "static_route_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_static_route_mgr",
"search-command": "./sr_static_route_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-static-routes",
"srl_nokia-aggregate-routes",
"srl_nokia-next-hop-groups"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "supportd",
"pid": 469,
"state": "running",
"last-change": "2024-03-08T15:03:41.996Z",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_supportd --server-mode",
"search-command": "./sr_supportd --server-mode",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {}
},
{
"name": "te_mgr",
"state": "waiting-for-config",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_te_mgr",
"search-command": "./sr_te_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-traffic-engineering"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "tepolicy_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_tepolicy_mgr",
"search-command": "./sr_tepolicy_mgr",
"version": "",
"oom-score-adj": 0,
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-te-policies",
"srl_nokia-maintenance-policies"
],
"source-directories": [
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models/common",
"/opt/srlinux/models/srl_nokia/models/interfaces",
"/opt/srlinux/models/srl_nokia/models/network-instance",
"/opt/srlinux/models/srl_nokia/models/system"
]
}
},
{
"name": "twamp_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "wait=60",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_twamp_mgr",
"search-command": "./sr_twamp_mgr",
"version": "",
"oom-score-adj": 0,
"restricted-operations": [
"stop",
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-ippm-source-udp-pool",
"srl_nokia-link-measurement",
"srl_nokia-oam-pm-ip",
"srl_nokia-twamp",
"srl_nokia-stamp"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "vrrp_mgr",
"state": "waiting-for-config",
"author": "",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_vrrp_mgr",
"search-command": "./sr_vrrp_mgr",
"version": "",
"oom-score-adj": 0,
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-interfaces-ip-vrrp"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "vxlan_mgr",
"pid": 2710,
"state": "running",
"last-change": "2024-03-08T15:03:48.017Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 3,
"failure-window": 300,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "./sr_vxlan_mgr",
"search-command": "./sr_vxlan_mgr",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold",
"warm"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {
"modules": [
"srl_nokia-tunnel",
"srl_nokia-tunnel-interfaces",
"srl_nokia-tunnel-interfaces-vxlan-interface-bridge-table-unicast-es-destination-vteps",
"srl_nokia-vxlan-tunnel-vtep"
],
"source-directories": [
"/opt/srlinux/models/iana",
"/opt/srlinux/models/ietf",
"/opt/srlinux/models/srl_nokia/models"
]
}
},
{
"name": "xdp_lc_1",
"pid": 2331,
"state": "running",
"last-change": "2024-03-08T15:03:45.346Z",
"last-start-type": "cold",
"author": "Nokia",
"failure-threshold": 2,
"failure-window": 600,
"failure-action": "reboot",
"path": "/opt/srlinux/bin",
"launch-command": "exec -a sr_xdp_lc_1 ./sr_xdp_lc --slot_num 1 --complex_num 2",
"search-command": "sr_xdp_lc_1 --slot_num 1 --complex_num 2",
"version": "v23.10.1-218-ga3fc1bea5a",
"oom-score-adj": 0,
"supported-restart-types": [
"cold"
],
"restricted-operations": [
"reload"
],
"statistics": {
"restart-count": 0
},
"yang": {}
}
]
}
}
\ No newline at end of file
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# WARNING: this handler is work in progress. Use with care!
import logging, json
from typing import Any, Dict, List, Tuple
LOGGER = logging.getLogger(__name__)
class NetworkInstanceHandler:
def get_resource_key(self) -> str: return '/network_instance'
def get_path(self) -> str: return '/network-instances/network-instance'
def compose_set(self, resource_key : str, resource_value : Dict) -> Tuple[str, str]:
ni_name = str(resource_value['name']) # test-svc
ni_type = str(resource_value['type']) # L3VRF /
if_name = str (resource_value['name' ]) # ethernet-1/1
if_enabled = bool(resource_value.get('enabled' , True)) # True/False
sif_index = int (resource_value.get('sub_if_index' , 0 )) # 0
sif_enabled = bool(resource_value.get('sub_if_enabled' , True)) # True/False
sif_ipv4_enabled = bool(resource_value.get('sub_if_ipv4_enabled', True)) # True/False
sif_ipv4_address = str (resource_value['sub_if_ipv4_address' ]) # 172.16.0.1
sif_ipv4_prefix = int (resource_value['sub_if_ipv4_prefix' ]) # 24
str_path = '/interfaces/interface[name={:s}]'.format(if_name)
str_data = json.dumps({
"name": if_name,
"config": {"name": if_name, "enabled": if_enabled},
"subinterfaces": {
"subinterface": {
"index": sif_index,
"config": {"index": sif_index, "enabled": sif_enabled},
"ipv4": {
"config": {"enabled": sif_ipv4_enabled},
"addresses": {
"address": {
"ip": sif_ipv4_address,
"config": {"ip": sif_ipv4_address, "prefix_length": sif_ipv4_prefix},
}
}
}
}
}
})
return str_path, str_data
#oc_ni = openconfig_network_instance()
#ni = oc_ni.network_instances.network_instance.add(name=ni_name)
#ni.config.name = ni_name
#ni_desc = resource_value.get('description')
#if ni_desc is not None: ni.config.description = ni_desc
#if ni_type == 'L3VRF':
# ni.config.type = 'L3VRF'
# #ni_router_id = resource_value.get('router_id')
# #if ni_router_id is not None: ni.config.router_id = ni_router_id
# proto_bgp = ni.protocols.protocol.add(identifier='BGP', name=ni_name)
# proto_bgp.config.identifier = 'BGP'
# proto_bgp.config.name = ni_name
# proto_bgp.config.enabled = True
# proto_bgp.bgp.global_.config.as_ = 65000
# proto_bgp.bgp.global_.config.router_id = '172.0.0.1'
# #ni.config.route_distinguisher = resource_value['route_distinguisher']
#elif ni_type == 'L3VRF':
# pass
#else:
# raise NotImplementedError()
#str_path = '/network-instances/network-instance[name={:s}]'.format(ni_name)
#str_data = pybindJSON.dumps(ni, mode='default')
#str_path = '/network-instances/network-instance[name={:s}]/protocols/protocol[identifier=BGP][name=BGP]'.format(ni_name)
#str_data = json.dumps({
# "identifier": "BGP",
# "name": "BGP",
# "config": {"identifier": "BGP", "name": "BGP", "enabled": True},
# "bgp": {"global": {"config": {"as": 65000, "router-id": "5.5.5.5"}}}
#})
str_path = '/network-instances/network-instance[name=test-svc]'
str_data = json.dumps({
"name": "test-svc",
"config": {
"name": "test-svc",
"type": "openconfig-network-instance-types:L3VRF"
},
"protocols": {
"protocol": [
{
"identifier": "DIRECTLY_CONNECTED",
"name": "DIRECTLY-CONNECTED",
"config": {"identifier": "DIRECTLY_CONNECTED", "name": "DIRECTLY-CONNECTED", "enabled": True},
},
{
"identifier": "STATIC",
"name": "static",
"config": {"identifier": "STATIC", "name": "static", "enabled": True},
"static_routes": {
"static": [
{
"prefix": "172.0.1.0/24",
"config": {"prefix": "172.0.1.0/24"},
"next_hops": {
"next-hop": [{"index": 0, "config": {"index": 0, "next_hop": "172.0.0.1"}}]
}
}
]
}
}
]
},
})
#str_path = '/network-instances/network-instance[name={:s}]/protocols/protocol[identifier=DIRECTLY_CONNECTED][name=DIR]'.format(ni_name)
#str_data = json.dumps({
# "identifier": "DIRECTLY_CONNECTED",
# "name": "DIR",
# "config": {"identifier": "DIRECTLY_CONNECTED", "name": "DIR", "enabled": True},
#})
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from ast import Name
from email.policy import default
import json, logging
from typing import Any, Dict, List, Tuple
from ._Handler import _Handler
from .Tools import dict_get_first
LOGGER = logging.getLogger(__name__)
class routingpolicyhandler(_Handler):
def get_resource_key(self) -> str:
return '/routing-policy'
def get_path(self) -> str:
return '/srl_nokia-routing-policy:routing-policy'
def compose(self, resource_key: str, resource_value: Dict, delete: bool = False) -> Tuple[str, str]:
if delete:
str_path = '/routing-policy'
str_data = json.dumps({})
return str_path, str_data
str_path = '/routing-policy'
if 'name' in resource_value:
name = str(resource_value['name'])
json_routing = {
'policy': {
'name': name,
'default-action': {
'policy-result': ''
}
}
}
if 'policy_result' in resource_value:
policy_result = str(resource_value['policy_result'])
if 'policy' not in json_routing:
json_routing['policy'] = {}
json_routing['policy']['default-action'] = {
'policy-result': policy_result
}
return str_path, json.dumps(json_routing)
def parse(self, json_data: Dict) -> List[Tuple[str, Dict[str, Any]]]:
response = []
json_policy = json_data.get('policy', [])
lists = []
for policy in json_policy:
policyy = {}
name = policy.get('name', {})
default = policy.get('default-action', {}).get('policy-result', {})
policyy['name'] = str(name)
policyy['default-action'] = {}
policyy['default-action']['policy-result'] = str(default)
lists.append(policyy)
if len(lists) == 0:
continue
resource_key = '/srl_nokia-routing-policy:routing-policy'
response.append((resource_key, lists))
return response
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from typing import Optional, Set, Union
from common.tools.grpc.Tools import grpc_message_to_json
from ..gnmi.gnmi_pb2 import CapabilityRequest # pylint: disable=no-name-in-module
from ..gnmi.gnmi_pb2_grpc import gNMIStub
def get_supported_encodings(
stub : gNMIStub, username : str, password : str, timeout : Optional[int] = None
) -> Set[Union[str, int]]:
metadata = [('username', username), ('password', password)]
req = CapabilityRequest()
reply = stub.Capabilities(req, metadata=metadata, timeout=timeout)
data = grpc_message_to_json(reply)
supported_encodings = {
supported_encoding
for supported_encoding in data.get('supported_encodings', [])
if isinstance(supported_encoding, str)
}
if len(supported_encodings) == 0:
# pylint: disable=broad-exception-raised
raise Exception('No supported encodings found')
return supported_encodings
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import grpc, logging, ssl
def get_grpc_channel(address : str, port : int, use_tls : bool, logger : logging.Logger) -> grpc.Channel:
endpoint = str(address) + ':' + str(port)
logger.info('Connecting gNMI {:s}...'.format(endpoint))
if use_tls:
logger.debug('Getting server certificate...')
str_server_certificate = ssl.get_server_certificate((str(address), int(port)))
bytes_server_certificate = str_server_certificate.encode('UTF-8')
logger.debug('Using secure SSL channel...')
credentials = grpc.ssl_channel_credentials(
root_certificates=bytes_server_certificate, private_key=None, certificate_chain=None)
options = [
#('grpc.ssl_target_name_override', options.altName,)
]
channel = grpc.secure_channel(endpoint, credentials, options)
else:
logger.debug('Using insecure channel...')
channel = grpc.insecure_channel(endpoint)
return channel