diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md
index 7ded546af7c..88189978ef8 100644
--- a/src/sonic-yang-models/doc/Configuration.md
+++ b/src/sonic-yang-models/doc/Configuration.md
@@ -1,99 +1,96 @@
-=======
# SONiC Configuration Database Manual
-Table of Contents
-=================
-
- * [Introduction](#introduction)
- * [Configuration](#configuration)
- * [Config Load and Save](#config-load-and-save)
-
- * [Incremental Configuration](#incremental-configuration)
- * [Redis and Json Schema](#redis-and-json-schema)
-
- * [ACL and Mirroring](#acl-and-mirroring)
- * [BGP BBR](#bgp-bbr)
- * [ASIC SDK health event](#asic-sdk-health-event)
- * [BGP Device Global](#bgp-device-global)
- * [BGP Sessions](#bgp-sessions)
- * [BUFFER_PG](#buffer_pg)
- * [Buffer pool](#buffer-pool)
- * [Buffer profile](#buffer-profile)
- * [Buffer queue](#buffer-queue)
- * [Buffer port ingress profile list](#buffer-port-ingress-profile-list)
- * [Buffer port egress profile list](#buffer-port-egress-profile-list)
- * [Cable length](#cable-length)
- * [Chassis module](#chassis-module)
- * [COPP_TABLE](#copp_table)
- * [Console](#console)
- * [CRM](#crm)
- * [CRM DASH](#crm-dash)
- * [Data Plane L3 Interfaces](#data-plane-l3-interfaces)
- * [DEFAULT_LOSSLESS_BUFFER_PARAMETER](#DEFAULT_LOSSLESS_BUFFER_PARAMETER)
- * [Device Metadata](#device-metadata)
- * [Device neighbor metada](#device-neighbor-metada)
- * [DHCP_RELAY](#dhcp_relay)
- * [DHCP Server IPV4](#dhcp_server_ipv4)
- * [BMP](#bmp)
- * [DSCP_TO_TC_MAP](#dscp_to_tc_map)
- * [FG_NHG](#fg_nhg)
- * [FG_NHG_MEMBER](#fg_nhg_member)
- * [FG_NHG_PREFIX](#fg_nhg_prefix)
- * [FABRIC_MONITOR](#fabric-monitor)
- * [FABRIC_PORT](#fabric-port)
- * [FLEX_COUNTER_TABLE](#flex_counter_table)
- * [Hash](#hash)
- * [IPv6 Link-local] (#ipv6-link-local)
- * [KDUMP](#kdump)
- * [Kubernetes Master](#kubernetes-master)
- * [L2 Neighbors](#l2-neighbors)
- * [Loopback Interface](#loopback-interface)
- * [LOSSLESS_TRAFFIC_PATTERN](#LOSSLESS_TRAFFIC_PATTERN)
- * [Management Interface](#management-interface)
- * [Management port](#management-port)
- * [Management VRF](#management-vrf)
- * [MAP_PFC_PRIORITY_TO_QUEUE](#map_pfc_priority_to_queue)
- * [MUX_CABLE](#mux_cable)
- * [MUX_LINKMGR](#mux_linkmgr)
- * [NEIGH](#neigh)
- * [NTP Global Configuration](#ntp-global-configuration)
- * [NTP Servers](#ntp-servers)
- * [Peer Switch](#peer-switch)
- * [Policer](#policer)
- * [Port](#port)
- * [Port Channel](#port-channel)
- * [Portchannel member](#portchannel-member)
- * [Scheduler](#scheduler)
- * [Port QoS Map](#port-qos-map)
- * [Queue](#queue)
- * [Syslog Global Configuration](#syslog-global-configuration)
- * [Syslog Servers](#syslog-servers)
- * [Sflow](#sflow)
- * [Restapi](#restapi)
- * [System Port](#system-port)
- * [Tacplus Server](#tacplus-server)
- * [TC to Priority group map](#tc-to-priority-group-map)
- * [TC to Queue map](#tc-to-queue-map)
- * [Telemetry](#telemetry)
- * [Telemetry client](#telemetry-client)
- * [Tunnel](#tunnel)
- * [Versions](#versions)
- * [VLAN](#vlan)
- * [VLAN_MEMBER](#vlan_member)
- * [VNET](#vnet)
- * [VOQ Inband Interface](#voq-inband-interface)
- * [VXLAN](#vxlan)
- * [Virtual router](#virtual-router)
- * [LOGGER](#logger)
- * [WRED_PROFILE](#wred_profile)
- * [PASSWORD_HARDENING](#password_hardening)
- * [SSH_SERVER](#ssh_server)
- * [SYSTEM_DEFAULTS table](#systemdefaults-table)
- * [RADIUS](#radius)
- * [Static DNS](#static-dns)
- * [For Developers](#for-developers)
- * [Generating Application Config by Jinja2 Template](#generating-application-config-by-jinja2-template)
- * [Incremental Configuration by Subscribing to ConfigDB](#incremental-configuration-by-subscribing-to-configdb)
+**Table of Contents**
+
+* [Introduction](#introduction)
+* [Configuration](#configuration)
+* [Config Load and Save](#config-load-and-save)
+ * [Incremental Configuration](#incremental-configuration)
+* [Redis and Json Schema](#redis-and-json-schema)
+ * [ACL and Mirroring](#acl-and-mirroring)
+ * [BGP BBR](#bgp-bbr)
+ * [ASIC SDK health event](#asic-sdk-health-event)
+ * [BGP Device Global](#bgp-device-global)
+ * [BGP Sessions](#bgp-sessions)
+ * [BUFFER_PG](#buffer_pg)
+ * [Buffer pool](#buffer-pool)
+ * [Buffer profile](#buffer-profile)
+ * [Buffer queue](#buffer-queue)
+ * [Buffer port ingress profile list](#buffer-port-ingress-profile-list)
+ * [Buffer port egress profile list](#buffer-port-egress-profile-list)
+ * [Cable length](#cable-length)
+ * [Chassis module](#chassis-module)
+ * [COPP_TABLE](#copp_table)
+ * [Console](#console)
+ * [CRM](#crm)
+ * [CRM DASH](#crm-dash)
+ * [Data Plane L3 Interfaces](#data-plane-l3-interfaces)
+ * [DEFAULT_LOSSLESS_BUFFER_PARAMETER](#DEFAULT_LOSSLESS_BUFFER_PARAMETER)
+ * [Device Metadata](#device-metadata)
+ * [Device neighbor metada](#device-neighbor-metada)
+ * [DHCP_RELAY](#dhcp_relay)
+ * [DHCP Server IPV4](#dhcp_server_ipv4)
+ * [BMP](#bmp)
+ * [DSCP_TO_TC_MAP](#dscp_to_tc_map)
+ * [FG_NHG](#fg_nhg)
+ * [FG_NHG_MEMBER](#fg_nhg_member)
+ * [FG_NHG_PREFIX](#fg_nhg_prefix)
+ * [FABRIC_MONITOR](#fabric-monitor)
+ * [FABRIC_PORT](#fabric-port)
+ * [FLEX_COUNTER_TABLE](#flex_counter_table)
+ * [Hash](#hash)
+ * [IPv6 Link-local] (#ipv6-link-local)
+ * [KDUMP](#kdump)
+ * [Kubernetes Master](#kubernetes-master)
+ * [L2 Neighbors](#l2-neighbors)
+ * [Loopback Interface](#loopback-interface)
+ * [LOSSLESS_TRAFFIC_PATTERN](#LOSSLESS_TRAFFIC_PATTERN)
+ * [Management Interface](#management-interface)
+ * [Management port](#management-port)
+ * [Management VRF](#management-vrf)
+ * [MAP_PFC_PRIORITY_TO_QUEUE](#map_pfc_priority_to_queue)
+ * [MUX_CABLE](#mux_cable)
+ * [MUX_LINKMGR](#mux_linkmgr)
+ * [NEIGH](#neigh)
+ * [NTP Global Configuration](#ntp-global-configuration)
+ * [NTP Servers](#ntp-servers)
+ * [Peer Switch](#peer-switch)
+ * [Policer](#policer)
+ * [Port](#port)
+ * [Port Channel](#port-channel)
+ * [Portchannel member](#portchannel-member)
+ * [Scheduler](#scheduler)
+ * [Port QoS Map](#port-qos-map)
+ * [Queue](#queue)
+ * [Syslog Global Configuration](#syslog-global-configuration)
+ * [Syslog Servers](#syslog-servers)
+ * [Sflow](#sflow)
+ * [Restapi](#restapi)
+ * [System Port](#system-port)
+ * [Tacplus Server](#tacplus-server)
+ * [TC to Priority group map](#tc-to-priority-group-map)
+ * [TC to Queue map](#tc-to-queue-map)
+ * [Telemetry](#telemetry)
+ * [Telemetry client](#telemetry-client)
+ * [Tunnel](#tunnel)
+ * [Versions](#versions)
+ * [VLAN](#vlan)
+ * [VLAN_MEMBER](#vlan_member)
+ * [VNET](#vnet)
+ * [VOQ Inband Interface](#voq-inband-interface)
+ * [VXLAN](#vxlan)
+ * [Virtual router](#virtual-router)
+ * [LOGGER](#logger)
+ * [WRED_PROFILE](#wred_profile)
+ * [PASSWORD_HARDENING](#password_hardening)
+ * [SSH_SERVER](#ssh_server)
+ * [SYSTEM_DEFAULTS table](#systemdefaults-table)
+ * [RADIUS](#radius)
+ * [Static DNS](#static-dns)
+ * [ASIC_SENSORS](#asic_sensors)
+* [For Developers](#for-developers)
+ * [Generating Application Config by Jinja2 Template](#generating-application-config-by-jinja2-template)
+ * [Incremental Configuration by Subscribing to ConfigDB](#incremental-configuration-by-subscribing-to-configdb)
@@ -2850,7 +2847,23 @@ The DPUS table introduces the information on the DPUs (Data Processing Unit) ava
}
```
-#### 5.2.3 Update value directly in db memory
+### ASIC_SENSORS
+
+The ASIC_SENSORS table introduces the asic sensors polling configuration when they are available on the platform.
+
+```json
+{
+ "ASIC_SENSORS": {
+ "ASIC_SENSORS_POLLER_INTERVAL": {
+ "interval": "10"
+ },
+ "ASIC_SENSORS_POLLER_STATUS": {
+ "admin_status": "enable"
+ }
+ }
+}
+```
+
For Developers
==============
diff --git a/src/sonic-yang-models/setup.py b/src/sonic-yang-models/setup.py
index 6748bb13784..a632594eeaf 100644
--- a/src/sonic-yang-models/setup.py
+++ b/src/sonic-yang-models/setup.py
@@ -202,6 +202,7 @@ def run(self):
'./yang-models/sonic-system-port.yang',
'./yang-models/sonic-macsec.yang',
'./yang-models/sonic-bgp-sentinel.yang',
+ './yang-models/sonic-asic-sensors.yang',
'./yang-models/sonic-bmp.yang',
'./yang-models/sonic-smart-switch.yang',]),
('cvlyang-models', ['./cvlyang-models/sonic-acl.yang',
diff --git a/src/sonic-yang-models/tests/files/sample_config_db.json b/src/sonic-yang-models/tests/files/sample_config_db.json
index 0c90790e7a9..8b5e8da071e 100644
--- a/src/sonic-yang-models/tests/files/sample_config_db.json
+++ b/src/sonic-yang-models/tests/files/sample_config_db.json
@@ -2698,6 +2698,14 @@
"motd": "Some message of the day",
"logout": "Some logout message"
}
+ },
+ "ASIC_SENSORS": {
+ "ASIC_SENSORS_POLLER_INTERVAL": {
+ "interval": "10"
+ },
+ "ASIC_SENSORS_POLLER_STATUS": {
+ "admin_status": "enable"
+ }
}
},
"SAMPLE_CONFIG_DB_UNKNOWN": {
diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/asic-sensors.json b/src/sonic-yang-models/tests/yang_model_tests/tests/asic-sensors.json
new file mode 100644
index 00000000000..227904f4008
--- /dev/null
+++ b/src/sonic-yang-models/tests/yang_model_tests/tests/asic-sensors.json
@@ -0,0 +1,25 @@
+{
+ "ASIC_SENSORS_TABLE": {
+ "desc": "Config DB interval parameters for ASIC Sensors polling"
+ },
+ "ASIC_SENSORS_INVALID_POLLER_INTERVAL": {
+ "desc": "Configure an invalid ASIC Sensors polling interval",
+ "eStrKey" : "Pattern"
+ },
+ "ASIC_SENSORS_INVALID_POLLER_ADMIN_STATUS": {
+ "desc": "Configure an invalid ASIC Sensors polling admin status",
+ "eStrKey" : "InvalidValue"
+ },
+ "ASIC_SENSORS_POLLER_INTERVAL_BAD_LEN_MAX": {
+ "desc": "Configure an invalid ASIC Sensors polling interval: out of range value",
+ "eStrKey" : "InvalidValue"
+ },
+ "ASIC_SENSORS_POLLER_INTERVAL_EMPTY_VALUE": {
+ "desc": "Configure an empty ASIC Sensors polling interval",
+ "eStrKey" : "InvalidValue"
+ },
+ "ASIC_SENSORS_POLLER_ADMIN_STATUS_EMPTY_VALUE": {
+ "desc": "Configure an empty ASIC Sensors polling admin status",
+ "eStrKey" : "InvalidValue"
+ }
+}
diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/asic-sensors.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/asic-sensors.json
new file mode 100644
index 00000000000..e9985c69ccc
--- /dev/null
+++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/asic-sensors.json
@@ -0,0 +1,74 @@
+{
+ "ASIC_SENSORS_TABLE": {
+ "sonic-asic-sensors:sonic-asic-sensors": {
+ "sonic-asic-sensors:ASIC_SENSORS": {
+ "ASIC_SENSORS_POLLER_INTERVAL": {
+ "interval": "10"
+ },
+ "ASIC_SENSORS_POLLER_STATUS": {
+ "admin_status": "enable"
+ }
+ }
+ }
+ },
+ "ASIC_SENSORS_INVALID_POLLER_INTERVAL": {
+ "sonic-asic-sensors:sonic-asic-sensors": {
+ "sonic-asic-sensors:ASIC_SENSORS": {
+ "ASIC_SENSORS_POLLER_INTERVAL": {
+ "interval": "0"
+ },
+ "ASIC_SENSORS_POLLER_STATUS": {
+ "admin_status": "enable"
+ }
+ }
+ }
+ },
+ "ASIC_SENSORS_INVALID_POLLER_ADMIN_STATUS": {
+ "sonic-asic-sensors:sonic-asic-sensors": {
+ "sonic-asic-sensors:ASIC_SENSORS": {
+ "ASIC_SENSORS_POLLER_INTERVAL": {
+ "interval": "10"
+ },
+ "ASIC_SENSORS_POLLER_STATUS": {
+ "admin_status": "testing"
+ }
+ }
+ }
+ },
+ "ASIC_SENSORS_POLLER_INTERVAL_BAD_LEN_MAX": {
+ "sonic-asic-sensors:sonic-asic-sensors": {
+ "sonic-asic-sensors:ASIC_SENSORS": {
+ "ASIC_SENSORS_POLLER_INTERVAL": {
+ "interval": "1010101010101010101010"
+ },
+ "ASIC_SENSORS_POLLER_STATUS": {
+ "admin_status": "enable"
+ }
+ }
+ }
+ },
+ "ASIC_SENSORS_POLLER_INTERVAL_EMPTY_VALUE": {
+ "sonic-asic-sensors:sonic-asic-sensors": {
+ "sonic-asic-sensors:ASIC_SENSORS": {
+ "ASIC_SENSORS_POLLER_INTERVAL": {
+ "interval": ""
+ },
+ "ASIC_SENSORS_POLLER_STATUS": {
+ "admin_status": "enable"
+ }
+ }
+ }
+ },
+ "ASIC_SENSORS_POLLER_ADMIN_STATUS_EMPTY_VALUE": {
+ "sonic-asic-sensors:sonic-asic-sensors": {
+ "sonic-asic-sensors:ASIC_SENSORS": {
+ "ASIC_SENSORS_POLLER_INTERVAL": {
+ "interval": "10"
+ },
+ "ASIC_SENSORS_POLLER_STATUS": {
+ "admin_status": ""
+ }
+ }
+ }
+ }
+}
diff --git a/src/sonic-yang-models/yang-models/sonic-asic-sensors.yang b/src/sonic-yang-models/yang-models/sonic-asic-sensors.yang
new file mode 100644
index 00000000000..afc25bf4bec
--- /dev/null
+++ b/src/sonic-yang-models/yang-models/sonic-asic-sensors.yang
@@ -0,0 +1,41 @@
+module sonic-asic-sensors {
+ yang-version 1.1;
+ namespace "http://github.com/sonic-net/sonic-asic-sensors";
+ prefix asic-sensors;
+
+ import sonic-types {
+ prefix stypes;
+ }
+
+ description "ASIC SENSORs config yang Module for SONiC OS";
+
+ revision 2024-11-19 {
+ description "First Revision";
+ }
+
+ container sonic-asic-sensors {
+ container ASIC_SENSORS {
+ description "ASIC_SENSORS part of config_db.json";
+
+ container ASIC_SENSORS_POLLER_INTERVAL {
+ leaf interval {
+ description "ASIC SENSORS polling interval";
+ type uint32 {
+ range "1..999";
+ }
+ units seconds;
+ default "10 ";
+ }
+ } /* ASIC_SENSORS_POLLER_INTERVAL */
+
+ container ASIC_SENSORS_POLLER_STATUS {
+ leaf admin_status {
+ description "ASIC SENSORS polling administrative status";
+ type stypes:mode-status;
+ default "enable";
+ } /* admin_status */
+ } /* ASIC_SENSORS_POLLER_STATUS */
+
+ } /* end of ASIC_SENSORS */
+ } /* end of container sonic-asic-sensors */
+} /* end of module sonic-asic-sensors */