How sonic-net/sonic-utilities works
SONiC Utilities is a collection of command-line tools for configuring, inspecting, and operating SONiC switches. The principal workflow is an operator invoking a command, which performs a domain-specific action—such as changing configuration, querying switch state, or clearing counters—and reports a result. Separate tools manage configuration patches, software images, and packages, while hardware-facing utilities expose platform and transceiver operations. Shared CLI, database, and multi-ASIC helpers support these commands. The graph follows documented capabilities and source-index references; unsampled implementations and unshown runtime wiring are not inferred.
Main entry points: cli.py CLI helpers · multi_asic.py Multi-ASIC support · main.py Show commands · db.py Database helpers
Components 21
Switch CLI
- Show commands
show/main.py - Domain displays
show - Clear commands
clear/main.py - Counter polling
counterpoll/main.py - Resource monitoring
crm/main.py - PFC watchdog
pfcwd/main.py
Configuration
- Configuration commands
config/main.py - Feature configuration
config/feature.py - Config management
config/config_mgmt.py - Patch updater
generic_config_updater/main.py - Patch engine
generic_config_updater/generic_updater.py
Software Lifecycle
- Image installer
sonic_installer/main.py - Package manager
sonic_package_manager/manager.py - Package database
sonic_package_manager/database.py
Hardware Utilities
- Transceiver utility
sfputil/main.py - Platform utilities
pddf_fanutil/main.py
Shared Runtime
- CLI helpers
utilities_common/cli.py - Database helpers
utilities_common/db.py - Multi-ASIC support
utilities_common/multi_asic.py - Plugin loader
utilities_common/util_base.py
Other components
- Operator
Connections 30
- Operator → Show commands: runs commands
- Operator → Configuration commands: runs commands
- Operator → Clear commands: runs commands
- Operator → Transceiver utility: runs commands
- Show commands → Domain displays: imports displays
show/main.py - Show commands → Database helpers: uses database
show/main.py - Show commands → CLI helpers: uses CLI helpers
show/main.py - Clear commands → CLI helpers: uses CLI helpers
clear/main.py - Clear commands → Multi-ASIC support: uses ASIC support
clear/main.py - Counter polling → Multi-ASIC support: uses ASIC support
counterpoll/main.py - Resource monitoring → Multi-ASIC support: uses ASIC support
crm/main.py - Resource monitoring → CLI helpers: imports displays
crm/main.py - PFC watchdog → Multi-ASIC support: uses ASIC support
pfcwd/main.py - Configuration commands → Patch engine: imports patch engine
config/main.py - Configuration commands → Patch updater: imports updater
config/main.py - Configuration commands → Database helpers: uses database
config/main.py - Feature configuration → CLI helpers: uses CLI helpers
config/feature.py - Feature configuration → Database helpers: uses database connector
config/feature.py - Config management → CLI helpers: uses CLI helpers
config/config_mgmt.py - Patch updater → Patch engine: calls patch logic
generic_config_updater/main.py - Patch engine → CLI helpers: imports shared utilities
- Image installer → CLI helpers: uses CLI helpers
sonic_installer/main.py - Package manager → Package database: uses database
sonic_package_manager/manager.py - Package database → CLI helpers: imports shared utilities
- Transceiver utility → CLI helpers: uses shared utilities
sfputil/main.py - Transceiver utility → Platform utilities: uses platform helpers
sfputil/main.py - Database helpers → Multi-ASIC support: uses ASIC support
utilities_common/db.py - CLI helpers → Database helpers: uses database
utilities_common/cli.py - CLI helpers → Multi-ASIC support: uses ASIC support
- Plugin loader → Show commands: registers plugins
show/main.py