XConf Admin

XConf Admin is a comprehensive configuration management server designed for RDK (Reference Design Kit) devices. It provides a centralized platform for managing device configurations, firmware updates, telemetry settings, and various administrative functions across RDK deployments.
π Features
- Configuration Management: Centralized management of device configurations
- Firmware Management: Control firmware distribution and updates
- Telemetry Services: Manage telemetry profiles and data collection
- Device Control Manager (DCM): Handle device control and settings
- Feature Management: Control feature flags and rules
- Authentication & Authorization: JWT-based security with role-based access control
- RESTful API: Comprehensive REST API for all operations
- Metrics & Monitoring: Built-in Prometheus metrics support
- Canary Deployments: Support for gradual rollouts
π Prerequisites
- Go 1.23+: This project requires Go version 1.23 or later
- Cassandra: For data persistence (configure in config file)
- Git: For version control and building
π οΈ Installation
1. Clone the Repository
git clone https://github.com/rdkcentral/xconfadmin.git
cd xconfadmin
2. Install Dependencies
go mod download
3. Build the Application
make build
This will create a binary bin/xconfadmin-{OS}-{ARCH} (e.g., bin/xconfadmin-linux-amd64)
βοΈ Configuration
Environment Variables
Set the following required environment variables:
export SAT_CLIENT_ID='your_client_id'
export SAT_CLIENT_SECRET='your_client_secret'
export SECURITY_TOKEN_KEY='your_security_token_key'
Configuration File
Create a configuration file based on the sample provided:
cp config/sample_xconfadmin.conf config/xconfadmin.conf
Edit the configuration file to match your environment settings including:
- Server port and timeouts
- Database connection details
- Logging configuration
- Authentication settings
- Service endpoints
π Running the Application
1. Create Log Directory
mkdir -p /app/logs/xconfadmin
2. Start the Server
bin/xconfadmin-linux-amd64 -f config/xconfadmin.conf
3. Verify Installation
Test the server is running:
curl http://localhost:9001/api/v1/version
Expected response:
{
"status": 200,
"message": "OK",
"data": {
"code_git_commit": "abc123",
"build_time": "2025-09-08T10:00:00Z",
"binary_version": "v1.0.0",
"binary_branch": "main",
"binary_build_time": "2025-09-08_10:00:00_UTC"
}
}
π API Documentation
The XConf Admin server provides several API endpoints organized by functionality:
Core APIs
- Version:
GET /api/v1/version - Get application version info
- Health:
GET /health - Health check endpoint
- Metrics:
GET /metrics - Prometheus metrics
Administrative APIs
- Authentication:
/auth/* - Authentication and authorization
- Firmware:
/firmware/* - Firmware management
- DCM:
/dcm/* - Device Control Manager
- Telemetry:
/telemetry/* - Telemetry configuration
- Features:
/feature/* - Feature management
- Settings:
/setting/* - Various device settings
Example API Calls
# Get firmware configurations
curl -H "Authorization: Bearer <token>" http://localhost:9001/api/firmware/configs
# Update device settings
curl -X POST -H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"key":"value"}' \
http://localhost:9001/api/dcm/settings
ποΈ Project Structure
xconfadmin/
βββ adminapi/ # Admin API handlers and services
β βββ auth/ # Authentication and authorization
β βββ canary/ # Canary deployment management
β βββ change/ # Change management
β βββ dcm/ # Device Control Manager
β βββ firmware/ # Firmware management
β βββ queries/ # Query handlers
β βββ rfc/ # Remote Feature Control
β βββ setting/ # Settings management
β βββ telemetry/ # Telemetry services
βββ common/ # Common utilities and constants
βββ config/ # Configuration files
βββ http/ # HTTP utilities and middleware
βββ shared/ # Shared components
βββ taggingapi/ # Tagging API
βββ util/ # Utility functions
π§ͺ Testing
Run All Tests
make test
Run Tests Locally
make localtest
Generate Coverage Report
make cover
make html
π§ Development
Build for Development
make build
Clean Build Artifacts
make clean
Release Build
make release
π Monitoring
XConf Admin includes built-in monitoring capabilities:
- Prometheus Metrics: Available at
/metrics endpoint
- Health Checks: Available at
/health endpoint
- Structured Logging: JSON-formatted logs with configurable levels
- Request Tracing: Optional OpenTelemetry integration
π€ Contributing
We welcome contributions! Please see our Contributing Guidelines for details.
Development Workflow
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Run the test suite
- Submit a pull request
π License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
π Support
For support and questions:
- Create an issue in the GitHub repository
- Check the documentation
- Review existing issues and discussions
Note: This is a configuration management server for RDK devices. Ensure proper security measures are in place when deploying in production environments.