Add support for a LXD backend to Libertine
Bug #1580612 reported by
Christopher Townsend
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Libertine | Status tracked in Devel | |||||
Devel |
Fix Released
|
Medium
|
Larry Price | |||
Trunk |
Fix Released
|
Medium
|
Larry Price | |||
libertine (Ubuntu) |
Fix Released
|
Medium
|
Larry Price |
Bug Description
Need to investigate the feasibility of using an LXD backend in Libertine.
1. Need to see if it's possible to have all of the bind-mounts we need.
2. LXD seems to have much better reporting of various statuses [0]
3. LXD uses a basic REST API for interacting with the LXD daemon [0]
4. ???
[0] https:/
Related branches
lp:~larryprice/libertine/lxd
- Christopher Townsend: Approve
- Libertine CI Bot: Approve (continuous-integration)
-
Diff: 862 lines (+520/-88)16 files modified.bzrignore (+1/-0)
common/ContainerConfigList.h (+1/-2)
data/CMakeLists.txt (+1/-1)
data/libertine-lxd-sudo (+1/-0)
debian/control (+15/-0)
debian/python3-libertine-lxd.install (+3/-0)
liblibertine/libertine.cpp (+41/-26)
python/libertine/ChrootContainer.py (+1/-2)
python/libertine/HostInfo.py (+5/-0)
python/libertine/Libertine.py (+28/-31)
python/libertine/LxcContainer.py (+4/-20)
python/libertine/LxdContainer.py (+375/-0)
tests/unit/test_libertine_gir.py (+2/-4)
tools/CMakeLists.txt (+1/-1)
tools/libertine-container-manager (+1/-1)
tools/libertine-lxd-setup (+40/-0)
lp:~townsend/libertine/release-1.5
- Larry Price: Approve
-
Diff: 3383 lines (+1572/-672)45 files modified.bzrignore (+8/-0)
CMakeLists.txt (+1/-1)
common/ContainerConfigList.h (+1/-2)
data/CMakeLists.txt (+4/-6)
data/com.canonical.libertine.LxdManager.service (+3/-0)
data/libertine-lxd-sudo (+1/-0)
data/python3-libertine-chroot.click-hook.in (+0/-4)
data/snap-runner.wrapper (+11/-0)
debian/changelog (+20/-0)
debian/control (+17/-4)
debian/python3-libertine-chroot.install (+0/-1)
debian/python3-libertine-lxd.install (+5/-0)
debian/python3-libertine.install (+1/-0)
debian/rules (+1/-1)
liblibertine/libertine.cpp (+41/-26)
parts/plugins/utils.py (+63/-0)
parts/plugins/x-libertine-deps.py (+155/-0)
parts/plugins/x-libertine.py (+45/-0)
python/CMakeLists.txt (+1/-1)
python/libertine/AppDiscovery.py (+1/-3)
python/libertine/ChrootContainer.py (+30/-31)
python/libertine/ContainersConfig.py (+3/-3)
python/libertine/HostInfo.py (+5/-0)
python/libertine/Libertine.py (+113/-125)
python/libertine/LxcContainer.py (+67/-77)
python/libertine/LxdContainer.py (+455/-0)
python/libertine/launcher/session.py (+10/-13)
python/libertine/launcher/task.py (+3/-3)
python/libertine/lifecycle/ContainerLifecycleService.py (+108/-0)
python/libertine/lifecycle/ContainerLifecycleServiceRunner.py (+46/-0)
python/libertine/lifecycle/LifecycleResult.py (+37/-0)
python/libertine/lifecycle/__init__.py (+23/-0)
python/libertine/utils.py (+24/-3)
snapcraft.yaml (+32/-0)
tests/unit/test_libertine_gir.py (+2/-4)
tests/unit/test_logger.py (+5/-1)
tools/CMakeLists.txt (+4/-5)
tools/libertine-container-manager (+55/-44)
tools/libertine-container-manager.1 (+8/-2)
tools/libertine-lxc-manager (+46/-123)
tools/libertine-lxd-manager (+57/-0)
tools/libertine-lxd-manager.1 (+9/-0)
tools/libertine-lxd-setup (+40/-0)
tools/libertined (+11/-6)
tools/update-puritine-containers (+0/-183)
Changed in libertine: | |
importance: | Undecided → Low |
assignee: | nobody → Christopher Townsend (townsend) |
status: | New → Triaged |
Changed in libertine: | |
milestone: | none → 1.2 |
Changed in libertine: | |
milestone: | 1.2 → 1.3 |
Changed in libertine: | |
milestone: | 1.3 → 1.4 |
Changed in libertine: | |
milestone: | 1.4 → 1.5 |
Changed in libertine (Ubuntu): | |
status: | New → Triaged |
importance: | Undecided → Medium |
Changed in libertine (Ubuntu): | |
status: | Triaged → In Progress |
assignee: | nobody → Larry Price (larryprice) |
To post a comment you must log in.
After quite a bit of investigation, I found that there is already a python3-pylxd API in development by the maintainers of LXD. Instead of rolling our own API and duplicate work, we should use that instead.
However, one of the most important pieces is missing form pylxd- the actual executing of commands inside the LXD container. There is a very minimal exec function, but offers no process control nor any access to stdin, stdout, and stderr. There is a comment in that part of the pylxd code that says it needs to be expanded in the future.
I think we should wait on pylxd to mature some more before moving forward with this.