/mini-hpc-manager

Tiny HPC Task Manager in Go

Primary LanguageGo

mini-hpc-manager

Welcome to Mini HPC Manager! 🎉

Mini HPC Manager is a simple tool designed to manage and execute jobs in HPC (High Performance Computing) and Cloud environments using Go and Docker. It provides a CLI for adding, listing, and running jobs with Docker containers.

features

  • Job Scheduling: Add jobs to a queue and specify their Docker images and commands.
  • Database Integration: Stores job details and status using SQLite.
  • Docker Integration: Handles job execution via Docker containers.
  • Status Tracking: Updates and tracks job status (Pending, Running, Complete, Failed).
  • Log Collection: Captures and stores job logs for review.

getting started

  1. Clone the Repository:
git clone https://github.com/yourusername/mini-hpc-manager.git
cd mini-hpc-manager
  1. Install Dependencies:

Make sure you have Go installed, and then install the required dependencies:

go mod download
  1. Build the Project:
go build -o mini-hpc
  1. Add a Job:
./mini-hpc add <docker-image> <command>
  1. List Jobs:
./mini-hpc list
  1. Run a Job:
./mini-hpc run <job-id>

architecture

+---------------------+       +----------------------+
|                     |       |                      |
|    CLI Commands     |       |    Scheduler         |
|    (add, list, run) |       |                      |
|                     |       |                      |
+----------+----------+       +----------+-----------+
           |                           |
           |                           |
           v                           v
+----------+----------+       +----------+-----------+
|                     |       |                      |
|  SQLite Database    |       |   Docker Engine      |
|                     |       |                      |
+---------------------+       +----------------------+
           ^
           |
           |
           v
+----------+----------+
|                     |
|    Job Data Model   |
|                     |
+---------------------+
  • CLI Commands: The command-line interface allows you to add, list, and run jobs.
  • Scheduler: Manages job scheduling, execution, and status updates.
  • SQLite Database: Stores job details and status.
  • Docker Engine: Executes the jobs in Docker containers.
  • Job Data Model: Represents the job structure used by both the scheduler and database.

future features?

  • Release v1.0.0
  • Job Priority: Implement job prioritization for more advanced scheduling.
  • Job Dependencies: Support job dependencies and chained execution.
  • User Authentication: Add authentication for user management.
  • Web Interface: Build a web-based UI for easier job management.
  • Enhanced Logging: Improve log handling and storage.

License

This project is licensed under the MIT License. See the LICENSE file for details.