Two new source types for pvr app add and friends (pvr url and rootfs)

Add support two new source types for applications in PVR (pvr, rootfs)

Until right now PVR let us manage in an easy manner to create and manage applications from docker containers, but we could run containers that are built for another source. Now we are adding two new sources called pvr and rootfs:

  • pvr: Manage applications using a PVR repository URL, this allows an easy way to share components from another PV repository (example: hub.pantacor.com). In that way when you install an application that application will have all the necessary configurations needed to run on pantavisor without any extra work.

  • rootfs: Manage applications using a plain root filesystem inside a tar or in a folder, this will allow developers that have already a root filesystem deployed on their devices imported to pantavisor without the need of creating a docker container, instead pvr will convert this root filesystem into an LXC container directly and could be configured as any other pantavisor container, that means, docker configuration, volumes, pantavisor arguments and more.

NOTE:
Right now this feature is only available for the PVR development branch. If you want to test the feature you can set your pvr to self-upgrade using the development branch like this.

pvr global-config set DistributionTag=develop AutoUpgrade=true

How to use rootfs type

We now can create an app, install an app, and update an app using as source a root filesystem, that filesystem could be as a tar in local for the computer is running the PVR, could be a plain folder with the filesystem inside, or could be an URL where the tar is to be downloaded.

Add app from rootfs

pvr app add --from=~/Desktop/pvwebstatus -t rootfs pvwebstatus

This will create a new application folder with these files:

pvwebstatus/
├── lxc.container.conf
├── root.squashfs
├── root.squashfs.rootfs-digest
├── run.json
└── src.json

The Source file will have a rootfs_url argument and rootfs_digest to track the filesystem digest.

If you need to add some docker_config on creation to the app, you could use all the parameters supported. Example:

pvr app add --from=~/Desktop/pvwebstatus --config-json=pvwebstatus.config.json -t rootfs pvwebstatus

Where the pvwebstatus.config.json is a JSON configuration.

{
  "ArgsEscaped": true,
  "Cmd": [
    "/app/pantavisor-web-status"
  ],
  "Env": [
    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  ],
  "WorkingDir": "/app"
}

Install app from rootfs

In order to install will as with any other type:

pvr app install pvwebstatus

Update app from rootfs

Here you can update like a normal docker container:

pvr app update pvwebstatus

But you can update from another tar or an URL

pvr app update --from=~/Desktop/pvwebstatus.tar pvwebstatus

How to use pv type

Another source that could be used as a source for an application is a device description inside your computer or from a PV repository URL.

Add app from pvr

You could use any PVR repository compatible URL, which could be a local .pvr folder or a remote repository URL.

pvr app add -t pvr --from https://pvr.pantahub.com/highercomve/one_marketplace_production#tailscale tailscale

Then install and update will work exactly the same way as previously described for rootfs.

2 Likes