Lifecycle Management Overview¶
The Broadband Apps Toolkit follows the Broadband Forum TR-369 USP specification, which provides standard definitions for Deployment Units (Downloadable Apps, AKA Software Modules), Execution Units (Running Instances), and Execution Environments (e.g. Containers, Virtual Machines, etc...), as well as standard models for managing the state of Apps and Environments on CPE devices.
Data Models¶
Note
This is up to date as of TR-181 v2.20.1 (USP).
The RDK Broadband Apps Toolkit primarily implements the standard TR-369 (USP - User Services Platform) data models for managing, monitoring, and controlling containerised 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.
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
└── ...
Key Terminology¶
The following sections provide an overview of the key terminology used in this wiki, with links to their definitions.
| Terminology | Description | Notes |
|---|---|---|
| Software Modules | Provides the framework for managing containerised applications through standardized data model objects. | |
| Deployment Units (DU) | Represents installable software packages (e.g., OCI bundles or images) that can be deployed to the device. | 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 Key Operations: - Device.SoftwareModules.InstallDU(): Install a new deployment unit from a URL- Device.SoftwareModules.DeploymentUnit.{i}.Update(): Update an existing deployment unit- Device.SoftwareModules.DeploymentUnit.{i}.Uninstall(): Remove a deployment unit from the device |
| Execution Units (EU) | Represents running instances of deployed software (containers). | 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 Key Operations: - Device.SoftwareModules.ExecutionUnit.{i}.SetRequestedState(): Request state transition (Active, Idle, etc.)- Device.SoftwareModules.ExecutionUnit.{i}.Restart(): Restart the execution unit |
| Execution Environments (EE) | Represents the container runtime environments (e.g., Dobby daemon, LXC runtime) where execution units run. | 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 Key Operations: - Device.SoftwareModules.ExecEnv.{i}.Restart(): Restart the execution environment- Device.SoftwareModules.ExecEnv.{i}.Reset(): Reset this execution environment back to its bootup state- Device.SoftwareModules.ExecEnv.{i}.Remove(): Remove this execution from the device |
| Application Data Volumes | Provides persistent storage for containerised 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 | 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 |
| Deployment Unit Faults | Describes 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 | Describes 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 |