Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vantage Agent Charmed Operator

A Juju charm for installing and operating the Vantage Agent snap.

Python Juju Charmcraft

Publish charm GitHub Issues Pull Requests GitHub Contributors


Quick Start

Pack the charm

# Install the local development environment
just env

# Build a local charm artifact with LXD
just pack

The pack recipe runs charmcraft pack --use-lxd and produces a platform-specific .charm artifact, such as vantage-agent_ubuntu@24.04-amd64.charm.

Deploy locally

juju deploy ./vantage-agent_ubuntu@24.04-amd64.charm

This is a subordinate charm. Relate it to the principal unit that should run the Vantage Agent:

juju integrate vantage-agent <principal-application>

Configure credentials with a single action call. The charm stores all three values in one Juju secret, then uses that secret to download and configure the snap:

juju run vantage-agent/0 configure-credentials \
  --client-id "<cluster-client-id>" \
  --client-secret "<cluster-client-secret>" \
  --vantage-url "https://app.dev.vantagecompute.ai"

You can also precreate the secret and pass its ID as charm config:

juju add-secret vantage-agent-configuration-credentials \
  vantage-url="https://app.dev.vantagecompute.ai" \
  client-id="<cluster-client-id>" \
  client-secret="<cluster-client-secret>"

juju grant-secret vantage-agent-configuration-credentials vantage-agent
juju config vantage-agent configuration-credentials-secret-id="<secret-id>"

Configuration

Option Description
configuration-credentials-secret-id Optional Juju secret ID containing vantage-url, client-id, and client-secret; the secret must be granted to this application.

The charm downloads vantage-agent.snap from the Vantage artifacts distribution using the same client-credentials and bearer-token flow used by Vantage CLI.

Development

# Regenerate uv.lock
just lock

# Install dependencies
just env

# Run tests
just test

# Show the current project version
just version

The project is managed with uv. Runtime and development dependencies live in pyproject.toml; requirements.txt is intentionally not generated or used.

Release

Publishing runs from the Publish charm GitHub Actions workflow when a v* tag is pushed.

Prerequisite repository settings:

  • Secret CHARMCRAFT_AUTH: exported Charmhub credentials from charmcraft login --export.
  • Optional variable CHARMHUB_CHANNEL: release channel, defaulting to latest/edge.

Create a release with:

just release 0.1.0

The release command bumps pyproject.toml, updates uv.lock, commits the change, creates tag v0.1.0, and pushes the commit and tag. The tag workflow verifies the tag matches the pyproject.toml version, packs the charm with charmcraft pack --use-lxd, and uploads it to Charmhub.

Support


Made by Vantage Compute

About

Vantage Agent Juju Charmed Operator

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages