Skip to main content

A protocol native SPICE VDI proxy

Project description

Kerbside, a SPICE VDI proxy

Kerbside is a SPICE VDI protocol proxy written in python. The long term idea is that this would sit out the front of your Shaken Fist cluster and provide VDI access to VMs running inside the cluster. It does this by determining what VM to proxy your traffic to based on the password you provide when connecting.

Kerbside currently knows how to proxy console sessions for Shaken Fist, OpenStack, and oVirt. Ironically, OpenStack is probably the best documented of those at the moment because there are patches to add deployment support for Kerbside to Kolla-Ansible, whereas there is no deployment support for Shaken Fist just yet.

Documentation

Bootstrap CSS

Kerbside uses bootstrap CSS for styling. This was constructed by downloading Bootstrap 5.3 and jQuery 3.7.0 and then installing to kerbside/api/static/js.

Axios

Kerbside's web administration API uses Axios for HTTP requests. Version 1.6.5 is cached at kerbside/api/static/js.

Ryll

Ryll, located in the testclient/ directory, is a simple python native SPICE client used to implement various load tests. It has its own README file in that subdirectory.

Build the load testing OCI container images

There are a series of OCI container images intended for load testing. These need to be build from this top level directory however because of the way docker build likes to constrain what files you can copy into a container image.

Latency load test

This is the first load test that was implemented. It uses a UEFI binary as a test target, and sends keystrokes every two seconds to the instance running that binary. It then measures how long it takes to receive a display update back.

To build this OCI image, do this:

docker build . -f loadtests/latency/Dockerfile -t kerbside-latency:latest

For your convenience, there is also a version of this image at https://images.shakenfist.com/testimages/kerbside-latency.tar.gz

Database Migrations

Kerbside uses Alembic for database schema migrations. The migration files are located in the alembic/versions/ directory.

Creating a New Migration

To create a new migration:

cd /path/to/shakenfist/kerbside
alembic revision -m "description_of_your_changes"

This will create a new migration file in alembic/versions/. Edit the generated file to add your schema changes in the upgrade() and downgrade() functions.

Example:

def upgrade() -> None:
    op.add_column('table_name', sa.Column('column_name', sa.Type()))

def downgrade() -> None:
    op.drop_column('table_name', 'column_name')

Applying Migrations

To apply all pending migrations:

alembic upgrade head

To rollback one migration:

alembic downgrade -1

Note: Alembic automatically uses the database URL from the kerbside configuration, so ensure your kerbside config is properly set up before running migrations.

Checking OS Package Dependencies

Kerbside requires certain OS-level packages to be installed. You can check for missing dependencies using bindep via tox.

Check for Missing OS Packages

To check which OS packages are required but not installed:

tox -e bindep

This will read the bindep.txt file and report any missing system packages that need to be installed for your platform. The bindep tool automatically detects your operating system and checks for platform-specific packages.

Installing Missing Packages

After running the bindep check, install any missing packages using your system's package manager:

Debian/Ubuntu:

sudo apt-get install <package-names>

RHEL/CentOS/Fedora:

sudo dnf install <package-names>

The bindep.txt file includes dependencies for MariaDB/MySQL client libraries, XML parsing libraries, and build tools needed for compiling Python extensions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kerbside-0.2.5.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kerbside-0.2.5-py3-none-any.whl (1.7 MB view details)

Uploaded Python 3

File details

Details for the file kerbside-0.2.5.tar.gz.

File metadata

  • Download URL: kerbside-0.2.5.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kerbside-0.2.5.tar.gz
Algorithm Hash digest
SHA256 766dd3a90bfd0ae3ca8dd51b329d2d31eda5be20f800229ff4bebdc6be715634
MD5 f8d96af130cfcf4641646e2ef7d4a239
BLAKE2b-256 da1107fee7021a34cae7bca9b8e7ff2e72c5e58ebb89fef12db8645fb2d982fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for kerbside-0.2.5.tar.gz:

Publisher: release.yml on shakenfist/kerbside

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kerbside-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: kerbside-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kerbside-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 d21ae0ad6813cbb828310e8216ed4345be2c95df02b9c5cf779dbf638bef023a
MD5 b954b0bf9401c9e06c66a332a7c9b072
BLAKE2b-256 86b4979851e80d48f21c705027f7f6ef38c123a8aeb7d00720533812353257e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for kerbside-0.2.5-py3-none-any.whl:

Publisher: release.yml on shakenfist/kerbside

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page