Skip to content

Commit e87cb0a

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

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

p4runtime_sh/shell.py

Lines changed: 14 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,7 @@ 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, self._direct_meter.spec.unit, self._direct_meter.spec.type)
16661667
return self._meter_config
16671668
if name == "time_since_last_hit":
16681669
if self._idle_timeout_behavior is None:
@@ -1716,7 +1717,7 @@ def _from_msg(self, msg):
17161717
self._counter_data = None
17171718
if msg.HasField('meter_config'):
17181719
self._meter_config = _MeterConfig(
1719-
self._direct_meter.preamble.name, self._direct_meter.spec.unit)
1720+
self._direct_meter.preamble.name, self._direct_meter.spec.unit, self._direct_meter.spec.type)
17201721
self._meter_config._from_msg(msg.meter_config)
17211722
else:
17221723
self._meter_config = None
@@ -2012,7 +2013,8 @@ def read(self, function=None):
20122013
class _MeterEntryBase(_P4EntityBase):
20132014
def __init__(self, *args, **kwargs):
20142015
super().__init__(*args, **kwargs)
2015-
self._meter_type = self._info.spec.unit
2016+
self._meter_unit = self._info.spec.unit
2017+
self._meter_type = self._info.spec.type
20162018
self._config = None
20172019

20182020
def __dir__(self):
@@ -2031,7 +2033,7 @@ def __setattr__(self, name, value):
20312033
raise UserError("Cannot change meter name")
20322034
if name in _MeterConfig.attrs():
20332035
self._config = _MeterConfig.set_param(
2034-
self._config, self.name, self._meter_type, name, value)
2036+
self._config, self.name, self._meter_unit, self._meter_type, name, value)
20352037
return
20362038
if name == "config":
20372039
if value is None:
@@ -2043,18 +2045,18 @@ def __setattr__(self, name, value):
20432045
def __getattr__(self, name):
20442046
if name in _MeterConfig.attrs():
20452047
self._config, r = _MeterConfig.get_param(
2046-
self._config, self.name, self._meter_type, name)
2048+
self._config, self.name, self._meter_unit, self._meter_type, name)
20472049
return r
20482050
if name == "config":
20492051
if self._config is None:
2050-
self._config = _MeterConfig(self.name, self._meter_type)
2052+
self._config = _MeterConfig(self.name, self._meter_unit, self._meter_type)
20512053
return self._config
20522054
return super().__getattr__(name)
20532055

20542056
def _from_msg(self, msg):
20552057
self._entry.CopyFrom(msg)
20562058
if msg.HasField('config'):
2057-
self._config = _MeterConfig(self.name, self._meter_type)
2059+
self._config = _MeterConfig(self.name, self._meter_unit, self._meter_type)
20582060
self._config._from_msg(msg.config)
20592061
else:
20602062
self._config = None

0 commit comments

Comments
 (0)