Job Ephemeral Data Services (JEDS) is a lightweight command-line and Python tool that simplifies the creation of secure, short-lived data service containers for compute jobs on LC clusters. Unlike Persistent Data Services (PDS), JEDS runs only for the duration of a compute resource scheduled job. All data is discarded when the job ends or the service is stopped. JEDS leverages the same LC security integrated and curated container images that PDS uses. 

Key Features

  • Ephemeral Data: Data is available only for the lifetime of the job; nothing is stored after the job or service ends.
  • Supported Services: MariaDB, MongoDB, PostgreSQL, RabbitMQ, Redis.
  • Secure by Default: All instances are password protected, use TLS, and comply with LC security policy.
  • Flexible Usage: Available as both a CLI tool and a Python library.
  • Containerized: Uses Podman to run services in containers.

Getting Started

Prerequisites

  • Podman: JEDS uses Podman to manage containers.  

    If you have never used Podman on LC clusters, run:

enable-podman

Installation

Install the JEDS CLI tool in your Python virtual environment:

python3.11 -m venv venv 
source venv/bin/activate
pip install jeds-cli

Usage

Command Line Interface (CLI)

Start a new ephemeral service instance using the `jeds run` command. For example, to start a RabbitMQ instance:

jeds run rabbitmq

JEDS will print the connection details (host, port, credentials, etc.) after starting the instance.

Supported Services
Service Command Example
MariaDB jeds run mariadb
MongoDB jeds run mongodb
PostgreSQL jeds run postgresql
RabbitMQ jeds run rabbitmq
Redis jeds run redis
Additional Options

JEDS provides additional command-line options to customize the service instance. Refer to the help command for details:

jeds run --help

Python Library

You can also use JEDS as a Python library in your scripts. Example usage:

from jeds.mariadb import MariaDB

# create a client to start and stop 
# a specific mariadb instance
mariadb = MariaDB()

# start mariadb 
mariadb.run()

# print the connection details
print(mariadb.conf)

# stop the instance 
mariadb.stop()

Security

  • All JEDS instances are password protected.
  • TLS encryption is enabled by default.
  • Compliance with LC security policy is enforced.

Service Lifecycle

  • Start: Service runs only for the duration of your job.
  • Stop: Data is deleted when the job ends or the service is stopped.

Troubleshooting

Common Issues

Issue     Solution
Podman Not Enabled Run `enable-podman` on LC clusters before using JEDS.
Service Not Starting Check container logs for error messages.
Instance Fails Unexpectedly Check container logs for error messages.

Debugging with Podman

JEDS uses Podman to run service containers. You can use Podman commands to inspect and debug running or stopped containers:

List JEDS Containers
podman ps -a

This command shows all containers, including those that have exited. Look for containers with names or images related to JEDS.

View Logs for a Container

1. Find the container ID or name from the output of `podman ps -a`.

2. View logs with:

podman logs rabbitmq

This will display the standard output and error logs for the container, which can help diagnose issues.

Example Workflow
podman ps -a
podman logs mariadb

Contact & Support

For questions or support, contact lit-help@llnl.gov or lc-hotline@llnl.gov