From b58debd443279eeeca69e2fe78ae0825c534c852 Mon Sep 17 00:00:00 2001 From: robojerk Date: Tue, 15 Jul 2025 18:09:51 -0700 Subject: [PATCH] feat: complete daemon integration testing and troubleshooting - Fix daemon executable path from apt-ostree.py to apt-ostree - Resolve daemon package installation with --break-system-packages flag - Fix test script path calculations for proper apt-layer.sh location - Identify and document import conflicts between local and system dbus modules - Complete test infrastructure and automation for daemon + D-Bus integration - Update changelog and TODO to reflect current status and remaining work - All daemon integration foundation complete, ready for import conflict resolution --- apt-layer.sh | 4 +- src/apt-layer/CHANGELOG.md | 10 +- .../scriptlets/20-daemon-integration.sh | 2 +- .../test-scripts/test-daemon-integration.sh | 4 +- .../__pycache__/apt_ostree.cpython-313.pyc | Bin 0 -> 6774 bytes .../python/apt_ostree.egg-info/PKG-INFO | 365 ++++++++++++++++++ .../python/apt_ostree.egg-info/SOURCES.txt | 20 + .../apt_ostree.egg-info/dependency_links.txt | 1 + .../apt_ostree.egg-info/entry_points.txt | 2 + .../python/apt_ostree.egg-info/requires.txt | 14 + .../python/apt_ostree.egg-info/top_level.txt | 3 + .../{dbus => apt_ostree_dbus}/__init__.py | 0 .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 400 bytes .../__pycache__/interface.cpython-313.pyc | Bin 0 -> 19970 bytes .../{dbus => apt_ostree_dbus}/interface.py | 0 15 files changed, 419 insertions(+), 6 deletions(-) create mode 100644 src/apt-ostree.py/python/__pycache__/apt_ostree.cpython-313.pyc create mode 100644 src/apt-ostree.py/python/apt_ostree.egg-info/PKG-INFO create mode 100644 src/apt-ostree.py/python/apt_ostree.egg-info/SOURCES.txt create mode 100644 src/apt-ostree.py/python/apt_ostree.egg-info/dependency_links.txt create mode 100644 src/apt-ostree.py/python/apt_ostree.egg-info/entry_points.txt create mode 100644 src/apt-ostree.py/python/apt_ostree.egg-info/requires.txt create mode 100644 src/apt-ostree.py/python/apt_ostree.egg-info/top_level.txt rename src/apt-ostree.py/python/{dbus => apt_ostree_dbus}/__init__.py (100%) create mode 100644 src/apt-ostree.py/python/apt_ostree_dbus/__pycache__/__init__.cpython-313.pyc create mode 100644 src/apt-ostree.py/python/apt_ostree_dbus/__pycache__/interface.cpython-313.pyc rename src/apt-ostree.py/python/{dbus => apt_ostree_dbus}/interface.py (100%) diff --git a/apt-layer.sh b/apt-layer.sh index faba30c..4a24666 100644 --- a/apt-layer.sh +++ b/apt-layer.sh @@ -6,7 +6,7 @@ # DO NOT modify this file directly as it will be overwritten # # # # apt-layer Tool # -# Generated on: 2025-07-15 17:15:04 # +# Generated on: 2025-07-15 17:57:47 # # # ################################################################################################################ @@ -7123,7 +7123,7 @@ APT_OSTREE_DBUS_PATH="/org/debian/aptostree1/Sysroot" APT_OSTREE_DBUS_INTERFACE="org.debian.aptostree1.Sysroot" # Daemon executable path -APT_OSTREE_DAEMON_PATH="/usr/local/bin/apt-ostree.py" +APT_OSTREE_DAEMON_PATH="/usr/local/bin/apt-ostree" APT_OSTREE_DAEMON_SERVICE="apt-ostree.service" # Check if daemon is available and running diff --git a/src/apt-layer/CHANGELOG.md b/src/apt-layer/CHANGELOG.md index ae805ef..573f8a3 100644 --- a/src/apt-layer/CHANGELOG.md +++ b/src/apt-layer/CHANGELOG.md @@ -1647,7 +1647,15 @@ This project is part of the Particle-OS system tools and follows the same licens ### Changed - Updated compile.sh to include new scriptlet and ensure correct build order - Improved main dispatch and help text for daemon commands +- Fixed daemon executable path from `/usr/local/bin/apt-ostree.py` to `/usr/local/bin/apt-ostree` ### Fixed - Path and invocation issues for test scripts and daemon lifecycle -- D-Bus communication reliability and timeout handling \ No newline at end of file +- D-Bus communication reliability and timeout handling +- Daemon package installation with `--break-system-packages` flag for externally managed environments +- Test script path calculations for proper apt-layer.sh location + +### Technical Notes +- Identified and documented import conflicts between local `dbus` module and system `dbus` module +- Daemon package successfully installed but requires import conflict resolution for full functionality +- Test infrastructure complete and ready for use once daemon import issues are resolved \ No newline at end of file diff --git a/src/apt-layer/scriptlets/20-daemon-integration.sh b/src/apt-layer/scriptlets/20-daemon-integration.sh index cc91edc..856fb42 100644 --- a/src/apt-layer/scriptlets/20-daemon-integration.sh +++ b/src/apt-layer/scriptlets/20-daemon-integration.sh @@ -10,7 +10,7 @@ APT_OSTREE_DBUS_PATH="/org/debian/aptostree1/Sysroot" APT_OSTREE_DBUS_INTERFACE="org.debian.aptostree1.Sysroot" # Daemon executable path -APT_OSTREE_DAEMON_PATH="/usr/local/bin/apt-ostree.py" +APT_OSTREE_DAEMON_PATH="/usr/local/bin/apt-ostree" APT_OSTREE_DAEMON_SERVICE="apt-ostree.service" # Check if daemon is available and running diff --git a/src/apt-layer/test-scripts/test-daemon-integration.sh b/src/apt-layer/test-scripts/test-daemon-integration.sh index 18794e6..a511fb1 100644 --- a/src/apt-layer/test-scripts/test-daemon-integration.sh +++ b/src/apt-layer/test-scripts/test-daemon-integration.sh @@ -13,9 +13,9 @@ NC='\033[0m' # No Color # Test configuration SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -PROJECT_ROOT="$(dirname "$SCRIPT_DIR")/.." +PROJECT_ROOT="$(dirname "$(dirname "$(dirname "$SCRIPT_DIR")")")" APT_LAYER_PATH="$PROJECT_ROOT/apt-layer.sh" -APT_OSTREE_DAEMON_PATH="/usr/local/bin/apt-ostree.py" +APT_OSTREE_DAEMON_PATH="/usr/local/bin/apt-ostree" DBUS_NAME="org.debian.aptostree1" DBUS_PATH="/org/debian/aptostree1" diff --git a/src/apt-ostree.py/python/__pycache__/apt_ostree.cpython-313.pyc b/src/apt-ostree.py/python/__pycache__/apt_ostree.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..96a83048f29d8d05836fce31bd2d350fcb4c895b GIT binary patch literal 6774 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 literal 0 HcmV?d00001 diff --git a/src/apt-ostree.py/python/apt_ostree.egg-info/PKG-INFO b/src/apt-ostree.py/python/apt_ostree.egg-info/PKG-INFO new file mode 100644 index 0000000..cb68590 --- /dev/null +++ b/src/apt-ostree.py/python/apt_ostree.egg-info/PKG-INFO @@ -0,0 +1,365 @@ +Metadata-Version: 2.2 +Name: apt-ostree +Version: 0.1.0 +Summary: Atomic package management system for Debian/Ubuntu inspired by rpm-ostree +Home-page: https://github.com/particle-os/apt-ostree +Author: Particle-OS Team +Author-email: team@particle-os.org +Project-URL: Bug Reports, https://github.com/particle-os/apt-ostree/issues +Project-URL: Source, https://github.com/particle-os/apt-ostree +Project-URL: Documentation, https://github.com/particle-os/apt-ostree/docs +Keywords: debian ubuntu package management atomic ostree +Classifier: Development Status :: 3 - Alpha +Classifier: Intended Audience :: System Administrators +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: POSIX :: Linux +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Topic :: System :: Systems Administration +Classifier: Topic :: System :: Operating System +Requires-Python: >=3.8 +Description-Content-Type: text/markdown +Requires-Dist: PyGObject>=3.40.0 +Requires-Dist: python-apt>=2.0.0 +Requires-Dist: dbus-python>=1.2.0 +Requires-Dist: PyYAML>=6.0.0 +Requires-Dist: ostree>=0.1.1 +Requires-Dist: psutil>=5.8.0 +Requires-Dist: structlog>=21.0.0 +Requires-Dist: systemd-python>=234 +Requires-Dist: pytest>=6.0.0 +Requires-Dist: pytest-asyncio>=0.18.0 +Requires-Dist: pytest-cov>=3.0.0 +Requires-Dist: black>=22.0.0 +Requires-Dist: flake8>=4.0.0 +Requires-Dist: mypy>=0.950 +Dynamic: author +Dynamic: author-email +Dynamic: classifier +Dynamic: description +Dynamic: description-content-type +Dynamic: home-page +Dynamic: keywords +Dynamic: project-url +Dynamic: requires-dist +Dynamic: requires-python +Dynamic: summary + +# apt-ostree Python Daemon + +This is the Python implementation of the apt-ostree daemon, providing atomic package management for Debian/Ubuntu systems inspired by rpm-ostree. + +## Overview + +The apt-ostree daemon provides: +- **D-Bus API**: Clean interface for package management operations +- **OSTree Integration**: Atomic filesystem management using OSTree +- **APT Integration**: Native Debian package management +- **Transaction Management**: Atomic operations with rollback capabilities +- **Security**: PolicyKit integration and AppArmor support +- **Concurrent Operations**: Multiple simultaneous transactions + +## Architecture + +``` +apt-ostree.py/ +├── apt_ostree.py # Main daemon entry point +├── core/ # Core daemon components +│ ├── daemon.py # Main daemon class +│ ├── transaction.py # Transaction management +│ ├── client_manager.py # D-Bus client tracking +│ └── sysroot.py # OSTree sysroot management +├── dbus/ # D-Bus interface components +│ └── interface.py # D-Bus API implementation +├── utils/ # Utility components +│ ├── config.py # Configuration management +│ ├── logging.py # Structured logging +│ └── security.py # Security utilities +├── tests/ # Test suite +│ └── test_basic.py # Basic functionality tests +├── requirements.txt # Python dependencies +├── setup.py # Package setup +└── README.md # This file +``` + +## Installation + +### Prerequisites + +- Python 3.8 or higher +- OSTree development libraries +- D-Bus development libraries +- PolicyKit development libraries + +### System Dependencies + +```bash +# Ubuntu/Debian +sudo apt-get install \ + python3-dev \ + python3-gi \ + python3-gi-cairo \ + gir1.2-ostree-1.0 \ + libostree-dev \ + libdbus-1-dev \ + libpolkit-gobject-1-dev \ + apparmor-utils + +# Build dependencies +sudo apt-get install \ + build-essential \ + pkg-config \ + libglib2.0-dev \ + libgirepository1.0-dev +``` + +### Python Installation + +```bash +# Clone the repository +git clone https://github.com/particle-os/apt-ostree.git +cd apt-ostree/src/apt-ostree.py/python + +# Install Python dependencies +pip install -r requirements.txt + +# Install the package +pip install -e . +``` + +## Configuration + +The daemon uses YAML configuration files. Default configuration is loaded from `/etc/apt-ostree/config.yaml`. + +### Example Configuration + +```yaml +daemon: + dbus: + bus_name: "org.debian.aptostree1" + object_path: "/org/debian/aptostree1" + + concurrency: + max_workers: 3 + transaction_timeout: 300 + + logging: + level: "INFO" + format: "json" + file: "/var/log/apt-ostree/daemon.log" + +sysroot: + path: "/" + repo_path: "/var/lib/ostree/repo" + +shell_integration: + script_path: "/usr/local/bin/apt-layer.sh" + timeout: + install: 300 + remove: 300 + composefs: 600 + +security: + polkit_required: true + apparmor_profile: "/etc/apparmor.d/apt-ostree" +``` + +## Usage + +### Running the Daemon + +```bash +# Run as root (required for system operations) +sudo python3 -m apt_ostree + +# Or install and run as service +sudo apt-ostree +``` + +### D-Bus API + +The daemon provides a D-Bus API at `org.debian.aptostree1`. + +#### Example: Install Packages + +```python +import dbus + +# Connect to system bus +bus = dbus.SystemBus() + +# Get daemon interface +daemon = bus.get_object( + 'org.debian.aptostree1', + '/org/debian/aptostree1/Sysroot' +) + +# Install packages +result = daemon.InstallPackages(['firefox', 'thunderbird'], False) +print(f"Install result: {result}") +``` + +#### Example: System Upgrade + +```python +# Upgrade system +result = daemon.Upgrade({}) +print(f"Upgrade result: {result}") +``` + +### Command Line Interface + +```bash +# Install packages +apt-ostree install firefox thunderbird + +# Remove packages +apt-ostree remove firefox + +# System upgrade +apt-ostree upgrade + +# System rollback +apt-ostree rollback + +# Check status +apt-ostree status +``` + +## Development + +### Running Tests + +```bash +# Run all tests +python -m pytest tests/ + +# Run specific test +python -m pytest tests/test_basic.py::TestConfigManager::test_default_config + +# Run with coverage +python -m pytest --cov=apt_ostree tests/ +``` + +### Code Formatting + +```bash +# Format code +black . + +# Lint code +flake8 . + +# Type checking +mypy . +``` + +### Development Setup + +```bash +# Install development dependencies +pip install -r requirements.txt +pip install pytest pytest-cov black flake8 mypy + +# Setup pre-commit hooks +pre-commit install +``` + +## D-Bus Interface + +### Sysroot Interface + +- `RegisterClient(options)` - Register client for monitoring +- `UnregisterClient(options)` - Unregister client +- `Reload()` - Reload sysroot state +- `ReloadConfig()` - Reload configuration +- `GetStatus()` - Get daemon status +- `GetOS()` - Get list of OS instances + +### OS Interface + +- `Deploy(revision, options)` - Deploy specific revision +- `Upgrade(options)` - Upgrade to latest version +- `Rollback(options)` - Rollback to previous deployment +- `PkgChange(packages_added, packages_removed, options)` - Add/remove packages +- `Rebase(refspec, options)` - Switch to different base OS +- `GetDeployments()` - Get list of deployments +- `GetBootedDeployment()` - Get currently booted deployment + +### Transaction Interface + +- `Start()` - Start the transaction +- `Cancel()` - Cancel the transaction +- `Title` (property) - Transaction title +- `InitiatingClientDescription` (property) - Client description + +## Security + +### PolicyKit Integration + +The daemon uses PolicyKit for authorization. Required actions: + +- `org.debian.aptostree.package.install` - Install packages +- `org.debian.aptostree.package.remove` - Remove packages +- `org.debian.aptostree.system.upgrade` - System upgrade +- `org.debian.aptostree.system.rollback` - System rollback +- `org.debian.aptostree.deploy` - Deploy operations +- `org.debian.aptostree.rebase` - Rebase operations + +### AppArmor Support + +The daemon includes AppArmor profile support for enhanced security. + +## Logging + +The daemon uses structured logging with JSON format by default. + +### Log Levels + +- `DEBUG` - Detailed debug information +- `INFO` - General information +- `WARNING` - Warning messages +- `ERROR` - Error messages + +### Log Files + +- Console output: Human-readable format +- File output: JSON format for machine processing +- Systemd journal: Integration with systemd logging + +## Integration + +### Systemd Integration + +The daemon integrates with systemd for service management and status reporting. + +### OSTree Integration + +Direct integration with libostree for filesystem management and atomic operations. + +### APT Integration + +Native integration with python-apt for Debian package management. + +## Contributing + +1. Fork the repository +2. Create a feature branch +3. Make your changes +4. Add tests for new functionality +5. Ensure all tests pass +6. Submit a pull request + +## License + +This project is licensed under the MIT License - see the LICENSE file for details. + +## Support + +For support and questions: +- GitHub Issues: https://github.com/particle-os/apt-ostree/issues +- Documentation: https://github.com/particle-os/apt-ostree/docs +- Wiki: https://github.com/particle-os/apt-ostree/wiki diff --git a/src/apt-ostree.py/python/apt_ostree.egg-info/SOURCES.txt b/src/apt-ostree.py/python/apt_ostree.egg-info/SOURCES.txt new file mode 100644 index 0000000..55a50c9 --- /dev/null +++ b/src/apt-ostree.py/python/apt_ostree.egg-info/SOURCES.txt @@ -0,0 +1,20 @@ +README.md +setup.py +apt_ostree.egg-info/PKG-INFO +apt_ostree.egg-info/SOURCES.txt +apt_ostree.egg-info/dependency_links.txt +apt_ostree.egg-info/entry_points.txt +apt_ostree.egg-info/requires.txt +apt_ostree.egg-info/top_level.txt +core/__init__.py +core/client_manager.py +core/daemon.py +core/sysroot.py +core/transaction.py +dbus/__init__.py +dbus/interface.py +tests/test_basic.py +utils/__init__.py +utils/config.py +utils/logging.py +utils/security.py \ No newline at end of file diff --git a/src/apt-ostree.py/python/apt_ostree.egg-info/dependency_links.txt b/src/apt-ostree.py/python/apt_ostree.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/apt-ostree.py/python/apt_ostree.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/src/apt-ostree.py/python/apt_ostree.egg-info/entry_points.txt b/src/apt-ostree.py/python/apt_ostree.egg-info/entry_points.txt new file mode 100644 index 0000000..89be9ff --- /dev/null +++ b/src/apt-ostree.py/python/apt_ostree.egg-info/entry_points.txt @@ -0,0 +1,2 @@ +[console_scripts] +apt-ostree = apt_ostree:main diff --git a/src/apt-ostree.py/python/apt_ostree.egg-info/requires.txt b/src/apt-ostree.py/python/apt_ostree.egg-info/requires.txt new file mode 100644 index 0000000..3cd034e --- /dev/null +++ b/src/apt-ostree.py/python/apt_ostree.egg-info/requires.txt @@ -0,0 +1,14 @@ +PyGObject>=3.40.0 +PyYAML>=6.0.0 +black>=22.0.0 +dbus-python>=1.2.0 +flake8>=4.0.0 +mypy>=0.950 +ostree>=0.1.1 +psutil>=5.8.0 +pytest-asyncio>=0.18.0 +pytest-cov>=3.0.0 +pytest>=6.0.0 +python-apt>=2.0.0 +structlog>=21.0.0 +systemd-python>=234 diff --git a/src/apt-ostree.py/python/apt_ostree.egg-info/top_level.txt b/src/apt-ostree.py/python/apt_ostree.egg-info/top_level.txt new file mode 100644 index 0000000..8779cf3 --- /dev/null +++ b/src/apt-ostree.py/python/apt_ostree.egg-info/top_level.txt @@ -0,0 +1,3 @@ +core +dbus +utils diff --git a/src/apt-ostree.py/python/dbus/__init__.py b/src/apt-ostree.py/python/apt_ostree_dbus/__init__.py similarity index 100% rename from src/apt-ostree.py/python/dbus/__init__.py rename to src/apt-ostree.py/python/apt_ostree_dbus/__init__.py diff --git a/src/apt-ostree.py/python/apt_ostree_dbus/__pycache__/__init__.cpython-313.pyc b/src/apt-ostree.py/python/apt_ostree_dbus/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3b705ff66456d31a8c34af392e1aa02b18946303 GIT binary patch literal 400 zcmYLEJx{|h5Vf78pX$Z}3tl@EOUwufR0&ZeiexccspHb1Bp00>q_XiN_!0b|N+@e5 zwxSNKIEc14+`YT^?rS?3^oX}|{jym3xNef2v461T9=sDtkVq=o9i1>_lK=xwWFSMq zFno%Jt=IG3cywJ^o)*sFJl2M5$V(_p;Vhp6^0;&(unvvkNo;Z`dSBF!9Rd@HR4}yk`vrMTEvh{jWE0GsYXz^$b zT7fVVW6)LJTqzz9o{ermj4sug8BL{d0GSmQwKzO*RxU-kbPFg%GOMgmDlJl{l&{yF tiyV?FGnd%+`-q1~pMEo;6*+fB~y|uCHHNRD)bWH#N literal 0 HcmV?d00001 diff --git a/src/apt-ostree.py/python/apt_ostree_dbus/__pycache__/interface.cpython-313.pyc b/src/apt-ostree.py/python/apt_ostree_dbus/__pycache__/interface.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f6fc2e15aa8c430b2fecb6eee688373a0dabe47c GIT binary patch literal 19970 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 literal 0 HcmV?d00001 diff --git a/src/apt-ostree.py/python/dbus/interface.py b/src/apt-ostree.py/python/apt_ostree_dbus/interface.py similarity index 100% rename from src/apt-ostree.py/python/dbus/interface.py rename to src/apt-ostree.py/python/apt_ostree_dbus/interface.py