15
15
ASIC_DB = 'ASIC_DB'
16
16
COUNTERS_DB = 'COUNTERS_DB'
17
17
18
+ TABLE_NAME_SEPARATOR_COLON = ':'
19
+ TABLE_NAME_SEPARATOR_VBAR = '|'
20
+
21
+ # This is used in both rfc2737 and rfc3433
22
+ SENSOR_PART_ID_MAP = {
23
+ "temperature" : 1 ,
24
+ "voltage" : 2 ,
25
+ "rx1power" : 11 ,
26
+ "rx2power" : 21 ,
27
+ "rx3power" : 31 ,
28
+ "rx4power" : 41 ,
29
+ "tx1bias" : 12 ,
30
+ "tx2bias" : 22 ,
31
+ "tx3bias" : 32 ,
32
+ "tx4bias" : 42 ,
33
+ "tx1power" : 13 ,
34
+ "tx2power" : 23 ,
35
+ "tx3power" : 33 ,
36
+ "tx4power" : 43 ,
37
+ }
38
+
39
+ # IfIndex to OID multiplier for transceiver
40
+ IFINDEX_SUB_ID_MULTIPLIER = 1000
41
+
18
42
redis_kwargs = {'unix_socket_path' : '/var/run/redis/redis.sock' }
19
43
20
44
def counter_table (sai_id ):
@@ -34,6 +58,21 @@ def queue_table(sai_id):
34
58
def queue_key (port_index , queue_index ):
35
59
return str (port_index ) + ':' + str (queue_index )
36
60
61
+ def transceiver_info_table (port_name ):
62
+ """
63
+ :param: port_name: port name
64
+ :return: transceiver info entry for this port
65
+ """
66
+
67
+ return "TRANSCEIVER_INFO" + TABLE_NAME_SEPARATOR_VBAR + port_name
68
+
69
+ def transceiver_dom_table (port_name ):
70
+ """
71
+ :param: port_name: port name
72
+ :return: transceiver dom entry for this port
73
+ """
74
+
75
+ return "TRANSCEIVER_DOM_SENSOR" + TABLE_NAME_SEPARATOR_VBAR + port_name
37
76
38
77
def lldp_entry_table (if_name ):
39
78
"""
@@ -225,3 +264,49 @@ def init_sync_d_queue_tables(db_conn):
225
264
226
265
return port_queues_map , queue_stat_map , port_queue_list_map
227
266
267
+ def get_device_metadata (db_conn ):
268
+ """
269
+ :param db_conn: Sonic DB connector
270
+ :return: device metadata
271
+ """
272
+
273
+ DEVICE_METADATA = "DEVICE_METADATA|localhost"
274
+ db_conn .connect (db_conn .STATE_DB )
275
+
276
+ device_metadata = db_conn .get_all (db_conn .STATE_DB , DEVICE_METADATA )
277
+ return device_metadata
278
+
279
+ def get_transceiver_sub_id (ifindex ):
280
+ """
281
+ Returns sub OID for transceiver. Sub OID is calculated as folows:
282
+ +------------+------------+
283
+ |Interface |Index |
284
+ +------------+------------+
285
+ |Ethernet[X] |X * 1000 |
286
+ +------------+------------+
287
+ ()
288
+ :param ifindex: interface index
289
+ :return: sub OID of a port calculated as sub OID = {{index}} * 1000
290
+ """
291
+
292
+ return (ifindex * IFINDEX_SUB_ID_MULTIPLIER , )
293
+
294
+ def get_transceiver_sensor_sub_id (ifindex , sensor ):
295
+ """
296
+ Returns sub OID for transceiver sensor. Sub OID is calculated as folows:
297
+ +-------------------------------------+------------------------------+
298
+ |Sensor |Index |
299
+ +-------------------------------------+------------------------------+
300
+ |RX Power for Ethernet[X]/[LANEID] |X * 1000 + LANEID * 10 + 1 |
301
+ |TX Bias for Ethernet[X]/[LANEID] |X * 1000 + LANEID * 10 + 2 |
302
+ |Temperature for Ethernet[X] |X * 1000 + 1 |
303
+ |Voltage for Ethernet[X]/[LANEID] |X * 1000 + 2 |
304
+ +-------------------------------------+------------------------------+
305
+ ()
306
+ :param ifindex: interface index
307
+ :param sensor: sensor key
308
+ :return: sub OID = {{index}} * 1000 + {{lane}} * 10 + sensor id
309
+ """
310
+
311
+ transceiver_oid , = get_transceiver_sub_id (ifindex )
312
+ return (transceiver_oid + SENSOR_PART_ID_MAP [sensor ], )
0 commit comments