Skip to content

Commit 914dc3c

Browse files
author
Justin Gong
committed
Add the meter spec.type
1 parent 22ed0c9 commit 914dc3c

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

p4runtime_sh/shell.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1251,8 +1251,9 @@ class _MeterConfig:
12511251
def attrs():
12521252
return ["cir", "cburst", "pir", "pburst", "eburst"]
12531253

1254-
def __init__(self, meter_name, meter_type):
1254+
def __init__(self, meter_name, meter_unit, meter_type):
12551255
self._meter_name = meter_name
1256+
self._meter_unit = meter_unit
12561257
self._meter_type = meter_type
12571258
self._msg = p4runtime_pb2.MeterConfig()
12581259
self._attrs = _MeterConfig.attrs()
@@ -1288,18 +1289,18 @@ def _repr_pretty_(self, p, cycle):
12881289
p.text(str(self.msg()))
12891290

12901291
@classmethod
1291-
def set_param(cls, instance, meter_name, meter_type, name, value):
1292+
def set_param(cls, instance, meter_name, meter_unit, meter_type, name, value):
12921293
if instance is None:
1293-
d = cls(meter_name, meter_type)
1294+
d = cls(meter_name, meter_unit, meter_type)
12941295
else:
12951296
d = instance
12961297
setattr(d, name, value)
12971298
return d
12981299

12991300
@classmethod
1300-
def get_param(cls, instance, meter_name, meter_type, name):
1301+
def get_param(cls, instance, meter_name, meter_unit, meter_type, name):
13011302
if instance is None:
1302-
d = cls(meter_name, meter_type)
1303+
d = cls(meter_name, meter_unit, meter_type)
13031304
else:
13041305
d = instance
13051306
r = getattr(d, name)
@@ -1662,7 +1663,10 @@ def __getattr__(self, name):
16621663
raise UserError("Table has no direct meter")
16631664
if self._meter_config is None:
16641665
self._meter_config = _MeterConfig(
1665-
self._direct_meter.preamble.name, self._direct_meter.spec.unit)
1666+
self._direct_meter.preamble.name,
1667+
self._direct_meter.spec.unit,
1668+
self._direct_meter.spec.type
1669+
)
16661670
return self._meter_config
16671671
if name == "time_since_last_hit":
16681672
if self._idle_timeout_behavior is None:
@@ -1716,7 +1720,10 @@ def _from_msg(self, msg):
17161720
self._counter_data = None
17171721
if msg.HasField('meter_config'):
17181722
self._meter_config = _MeterConfig(
1719-
self._direct_meter.preamble.name, self._direct_meter.spec.unit)
1723+
self._direct_meter.preamble.name,
1724+
self._direct_meter.spec.unit,
1725+
self._direct_meter.spec.type
1726+
)
17201727
self._meter_config._from_msg(msg.meter_config)
17211728
else:
17221729
self._meter_config = None
@@ -2012,7 +2019,8 @@ def read(self, function=None):
20122019
class _MeterEntryBase(_P4EntityBase):
20132020
def __init__(self, *args, **kwargs):
20142021
super().__init__(*args, **kwargs)
2015-
self._meter_type = self._info.spec.unit
2022+
self._meter_unit = self._info.spec.unit
2023+
self._meter_type = self._info.spec.type
20162024
self._config = None
20172025

20182026
def __dir__(self):
@@ -2031,7 +2039,7 @@ def __setattr__(self, name, value):
20312039
raise UserError("Cannot change meter name")
20322040
if name in _MeterConfig.attrs():
20332041
self._config = _MeterConfig.set_param(
2034-
self._config, self.name, self._meter_type, name, value)
2042+
self._config, self.name, self._meter_unit, self._meter_type, name, value)
20352043
return
20362044
if name == "config":
20372045
if value is None:
@@ -2043,18 +2051,18 @@ def __setattr__(self, name, value):
20432051
def __getattr__(self, name):
20442052
if name in _MeterConfig.attrs():
20452053
self._config, r = _MeterConfig.get_param(
2046-
self._config, self.name, self._meter_type, name)
2054+
self._config, self.name, self._meter_unit, self._meter_type, name)
20472055
return r
20482056
if name == "config":
20492057
if self._config is None:
2050-
self._config = _MeterConfig(self.name, self._meter_type)
2058+
self._config = _MeterConfig(self.name, self._meter_unit, self._meter_type)
20512059
return self._config
20522060
return super().__getattr__(name)
20532061

20542062
def _from_msg(self, msg):
20552063
self._entry.CopyFrom(msg)
20562064
if msg.HasField('config'):
2057-
self._config = _MeterConfig(self.name, self._meter_type)
2065+
self._config = _MeterConfig(self.name, self._meter_unit, self._meter_type)
20582066
self._config._from_msg(msg.config)
20592067
else:
20602068
self._config = None

0 commit comments

Comments
 (0)