Data Models¶
This page documents the data models supported by the RDK Broadband Apps Toolkit for managing the lifecycle of containerized applications.
Overview¶
The RDK Broadband Apps Toolkit primarily implements the standard TR-369 (USP - User Services Platform) data models for managing, monitoring, and controlling containerized applications on CPE devices, following the Broadband Forum specification for lifecycle management.
Additionally, provisions have been made to bring feature parity to legacy remote management standards such as TR-069 (CPE WAN Management Protocol (CWMP)) as used by ACS (Auto Configuration Server) solutions. This has been done by defining a new, custom data model that can be utilised without requiring support for method invocation or notification events.
Contributing¶
If you have implemented additional data models or have corrections to this documentation, please contribute by opening a pull request or issue on the GitHub repository.
Data Models¶
Note
This is up to date as of TR-181 v2.20.1 (USP).
Device.SoftwareModules.
├── InstallDU() # Method - not available in CWMP-compatible version
├── DUStateChange! # Notification - not available in CWMP-compatible version
├── ExecEnvClass.{i}. # ~Execution Environments~
│ ├── AddExecEnv() # Method - not available in CWMP-compatible version
│ └── Capability.{i}.
│ └── Specification
├── ExecEnv.{i}. # ~Execution Environments~
│ ├── SetRunLevel() # Method - not available in CWMP-compatible version
│ ├── Reset() # Method - not available in CWMP-compatible version
│ ├── Enable
│ ├── Status
│ ├── Name
│ ├── Type
│ ├── InitialRunLevel
│ ├── CurrentRunLevel
│ ├── AllocatedDiskSpace
│ ├── AvailableDiskSpace
│ ├── AllocatedMemory
│ ├── AvailableMemory
│ └── ...
├── DeploymentUnit.{i}. # ~Deployment Units~
│ ├── Update() # Method - not available in CWMP-compatible version
│ ├── Uninstall() # Method - not available in CWMP-compatible version
│ ├── UUID
│ ├── DUID
│ ├── Name
│ ├── Status
│ ├── Resolved
│ ├── URL
│ ├── ExecutionUnitList
│ ├── ExecutionEnvRef
│ └── ...
└── ExecutionUnit.{i}. # ~Execution Units~
├── SetRequestedState() # Method - not available in CWMP-compatible version
├── Restart() # Method - not available in CWMP-compatible version
├── EUID
├── Name
├── ExecEnvLabel
├── Status
├── ExecutionFaultCode
├── ExecutionFaultMessage
├── AutoStart
├── RunLevel
├── DiskSpaceInUse
├── MemoryInUse
└── ...
Device.X_RDK_SoftwareModules.
└── ... # COMING SOON...
Lifecycle Management¶
Lifecycle management follows the Broadband Forum TR-369 USP specification, which defines standardized mechanisms for deploying, executing, and managing software modules on CPE devices.
Software Modules¶
Software Modules provide the framework for managing containerized applications through standardized data model objects.
Deployment Units (DUs)¶
Deployment Units represent installable software packages (e.g., OCI bundles or images) that can be deployed to the device.
Deployment Unit Lifecycle State Machine:¶
The DU lifecycle follows a state machine with the following states:
- Installed: DU is installed on the device
- Uninstalled: DU has been removed from the device
- Failed: DU installation or operation failed
Operations:¶
Device.SoftwareModules.InstallDU(): Install a new deployment unit from a URLDevice.SoftwareModules.DeploymentUnit.{i}.Update(): Update an existing deployment unitDevice.SoftwareModules.DeploymentUnit.{i}.Uninstall(): Remove a deployment unit from the device
Execution Units (EUs)¶
Execution Units represent running instances of deployed software (containers).
Execution Unit Lifecycle State Machine:¶
The EU lifecycle follows a state machine with the following states:
- Idle: EU is installed but not running
- Starting: EU is in the process of starting
- Active: EU is running
- Stopping: EU is in the process of stopping
- Failed: EU failed to start or encountered a runtime error
Operations:¶
Device.SoftwareModules.ExecutionUnit.{i}.SetRequestedState(): Request state transition (Active, Idle, etc.)Device.SoftwareModules.ExecutionUnit.{i}.Restart(): Restart the execution unit
Execution Environments (EEs)¶
Execution Environments represent the container runtime environments (e.g., Dobby daemon, LXC runtime) where execution units run.
Execution Environment Lifecycle State Machine:¶
The EE lifecycle follows a state machine with the following states:
- Up: EE is operational and can run execution units
- Down: EE is not operational
- Starting: EE is initializing
- Stopping: EE is shutting down
- Failed: EE encountered an error
Operations:¶
Device.SoftwareModules.ExecEnv.{i}.Restart(): Restart the execution environment
Application Data Volumes¶
Application Data Volumes provide persistent storage for containerized applications, allowing data to survive container restarts and upgrades.
Features:¶
- Persistent data storage across container lifecycle
- Volume mounting into containers
- Data retention policies
Related Data Models¶
Device.SoftwareModules.ExecEnv.{i}.ApplicationData
Signing Deployment Units¶
Signing Deployment Units provides security mechanisms to verify the authenticity and integrity of software modules before installation.
Features:¶
- Cryptographic signature verification
- Certificate chain validation
- Trust store management
Related Data Models¶
Device.Security.Certificate
Fault Model¶
The fault model defines how errors and failures are reported and handled in the lifecycle management system.
Deployment Unit Faults¶
Deployment Unit Faults describe errors that can occur during DU installation, update, or operation.
Common DU fault codes: - Download failure - Installation failure - Insufficient storage - Invalid package format - Signature verification failure
Data Model Parameter: Device.SoftwareModules.DeploymentUnit.{i}.ExecutionFaultCode
Execution Unit Faults¶
Execution Unit Faults describe errors that can occur during EU execution.
Common EU fault codes: - Startup failure - Runtime crash - Resource exhaustion - Configuration error - Dependency failure
Data Model Parameters:
- Device.SoftwareModules.ExecutionUnit.{i}.ExecutionFaultCode
- Device.SoftwareModules.ExecutionUnit.{i}.ExecutionFaultMessage