cake
1
在适配网卡时发现,网卡本身不支持从硬件上直接读取温度,使用NCSI协议获取温度时,vpd配置如下:

此场景下,网卡断电,资源树上的温度值与温度状态由于持久化,不会产生跳变,仍是下电前的值
sr文件中的同步语法表明,没有产生跳变,Reading的值不变,导致会有:网卡断电状态下,web上温度传感器值仍有值 的情况
如图
序号67的传感器从硬件直接读值,掉电后读取不到,所以显示 –
序号68的传感器从资源树读值,掉电后保持掉电前的值,场景合理性来看,显示 – 会更好点
当前同步语法的特性是不是表明这个问题无法解决
资源树上的温度值与温度状态你可以改成非下电持久化试试,如改成复位持久化
cake
3
这两个属性是所有网卡类的公共属性,改持久化类型的处理是不是得考虑可能影响的场景了
排查改网卡用的什么协议,在代码中网卡下电后预期带外会获取失败,会将TemperatureStatus置为非0,这样会展示为–了
cake
5
用的ncsi协议,正常下电时会触发状态属性置为非0么
如果网卡下电,报文会发不出去会报错,会将TemperatureStatus置为非0。除非网卡支持standby,os下电网卡也可以回复报文,这样才不会设置TemperatureStatus。
cake
7
置状态为非0的这个逻辑在代码的哪里实现的。
我加了打印以后发现,网卡更新温度和状态的函数在下电后并没有被再调用:
温度状态位也自然没有被更新为非0,保持原有的0,温度值保持之前的温度,导致了主楼的问题
cake
8
主楼表述不太恰当,想表达的意思是网卡的温度值/状态都是从资源树拿的,环境下电后网卡的资源树上属性不会变(chip上读取的就会变),所以导致下电后网卡温度值显示一个死值
已联系宇浩看过,从vpd修改温度状态表达式上解决问题,使用
“ReadingStatus”: “<=/::FruCtrl_1_0.PowerState;<=/NetworkAdapter_1.TemperatureStatus |> expr($1 == ‘OFF’ ? 1 : $2)”
测试,满足要求,问题解决