Metadata-Version: 2.1
Name: olive2022
Version: 0.1.3
Summary: Edge-native virtual desktop application
Home-page: https://github.com/cmusatyalab/olive2022
License: MIT
Author: Carnegie Mellon University
Author-email: satya+group@cs.cmu.edu
Requires-Python: >=3.7,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Environment :: X11 Applications
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: sinfonia-tier3 (>=0.5.0,<0.6.0)
Requires-Dist: tqdm (>=4.64.1,<5.0.0)
Requires-Dist: xdg (>=5.1.1,<6.0.0)
Project-URL: Repository, https://github.com/cmusatyalab/olive2022
Description-Content-Type: text/markdown

# Olive 2022

Edge-native virtual desktop application that uses the
[Sinfonia](https://github.com/cmusatyalab/sinfonia) framework to discover a
nearby cloudlet to run the virtual machine.

Virtual machine images from [Olivearchive](https://olivearchive.org) are
converted from their original vmnetx package format to a containerDisk
that can be executed with KubeVirt. The containerDisk images can be pushed into
a private Docker registry.


## Usage

`olive2022 install` creates a .desktop file to declare a handler for vmnetx+https URLs.

When you then 'Launch' a virtual machine from the Olivearchive website, the
handler will execute `olive2022 launch` with the VMNetX URL for the virtual machine image.


## Internals

`olive2022 launch` hashes the VMNetX URL to a Sinfonia UUID, and uses
`sinfonia-tier3` to request the relevant backend to be started on a nearby
cloudlet. When deployment has started, `sinfonia-tier3` will create a local
wireguard tunnel endpoint and runs `olive2022 stage2` which waits for the
deployment to complete by probing if the VNC endpoint has become accessible.
It will then try to run remote-viewer (from the virt-viewer package),
gvncviewer, or vncviewer.


## Converting VMNetX packages

`olive2022 convert` will take a VMNetX URL, download the vmnetx format package
file and convert it to a containerDisk image and associated Sinfonia recipe.
The Docker registry to push the containerDisk image to can be set with the
`OLIVE2022_REGISTRY` environment variable. If it is a private repository, the
necessary pull credentials to add to the recipe can be specified with
`OLIVE2022_CREDENTIALS=<username>:<access_token>`.

