@@ -1251,8 +1251,9 @@ class _MeterConfig:
1251
1251
def attrs ():
1252
1252
return ["cir" , "cburst" , "pir" , "pburst" , "eburst" ]
1253
1253
1254
- def __init__ (self , meter_name , meter_type ):
1254
+ def __init__ (self , meter_name , meter_unit , meter_type ):
1255
1255
self ._meter_name = meter_name
1256
+ self ._meter_unit = meter_unit
1256
1257
self ._meter_type = meter_type
1257
1258
self ._msg = p4runtime_pb2 .MeterConfig ()
1258
1259
self ._attrs = _MeterConfig .attrs ()
@@ -1288,18 +1289,18 @@ def _repr_pretty_(self, p, cycle):
1288
1289
p .text (str (self .msg ()))
1289
1290
1290
1291
@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 ):
1292
1293
if instance is None :
1293
- d = cls (meter_name , meter_type )
1294
+ d = cls (meter_name , meter_unit , meter_type )
1294
1295
else :
1295
1296
d = instance
1296
1297
setattr (d , name , value )
1297
1298
return d
1298
1299
1299
1300
@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 ):
1301
1302
if instance is None :
1302
- d = cls (meter_name , meter_type )
1303
+ d = cls (meter_name , meter_unit , meter_type )
1303
1304
else :
1304
1305
d = instance
1305
1306
r = getattr (d , name )
@@ -1662,7 +1663,10 @@ def __getattr__(self, name):
1662
1663
raise UserError ("Table has no direct meter" )
1663
1664
if self ._meter_config is None :
1664
1665
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
+ )
1666
1670
return self ._meter_config
1667
1671
if name == "time_since_last_hit" :
1668
1672
if self ._idle_timeout_behavior is None :
@@ -1716,7 +1720,10 @@ def _from_msg(self, msg):
1716
1720
self ._counter_data = None
1717
1721
if msg .HasField ('meter_config' ):
1718
1722
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
+ )
1720
1727
self ._meter_config ._from_msg (msg .meter_config )
1721
1728
else :
1722
1729
self ._meter_config = None
@@ -2012,7 +2019,8 @@ def read(self, function=None):
2012
2019
class _MeterEntryBase (_P4EntityBase ):
2013
2020
def __init__ (self , * args , ** kwargs ):
2014
2021
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
2016
2024
self ._config = None
2017
2025
2018
2026
def __dir__ (self ):
@@ -2031,7 +2039,7 @@ def __setattr__(self, name, value):
2031
2039
raise UserError ("Cannot change meter name" )
2032
2040
if name in _MeterConfig .attrs ():
2033
2041
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 )
2035
2043
return
2036
2044
if name == "config" :
2037
2045
if value is None :
@@ -2043,18 +2051,18 @@ def __setattr__(self, name, value):
2043
2051
def __getattr__ (self , name ):
2044
2052
if name in _MeterConfig .attrs ():
2045
2053
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 )
2047
2055
return r
2048
2056
if name == "config" :
2049
2057
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 )
2051
2059
return self ._config
2052
2060
return super ().__getattr__ (name )
2053
2061
2054
2062
def _from_msg (self , msg ):
2055
2063
self ._entry .CopyFrom (msg )
2056
2064
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 )
2058
2066
self ._config ._from_msg (msg .config )
2059
2067
else :
2060
2068
self ._config = None
0 commit comments