https://github.com/hpc-gridware/go-clusterscheduler

Simple Go API wrapping Open Cluster Schedulers cli

https://github.com/hpc-gridware/go-clusterscheduler

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.6%) to scientific vocabulary

Keywords

api gcs go gridengine gridwareclusterscheduler hpc ocs openclusterscheduler qconf sge
Last synced: 6 months ago · JSON representation

Repository

Simple Go API wrapping Open Cluster Schedulers cli

Basic Info
Statistics
  • Stars: 4
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Topics
api gcs go gridengine gridwareclusterscheduler hpc ocs openclusterscheduler qconf sge
Created over 1 year ago · Last pushed 7 months ago
Metadata Files
Readme

README.md

Open Cluster Scheduler Go API

Welcome to the Open Cluster Scheduler Go API repository. This project provides a Go-based API to interact with the Open Cluster Scheduler, encapsulating the command-line interface to streamline the configuration and management of Open/Gridware Cluster Scheduler clusters.

Features

The Go API offers a range of powerful features, including:

  • qconf Command Line Wrapper: This primary feature enables developers to build robust applications to configure the Open/Gridware Cluster Scheduler effortlessly.
  • simulator Application: This application implements a container based simulator of a real "Grid Engine" cluster. It can dump the configuration of a SGE or Open Grid Engine cluster and apply changes to a cluster simulated within a container. (See the cmd/simulator directory for more information.)
  • sharetree GUI Editor: This application implements a simple web-based visualization and editing tool for Open Cluster Scheduler (OCS) and Gridware Cluster Scheduler (GCS) sharetree configurations. (See the cmd/sharetree directory for more information.)
  • mcp-server: Implements an example MCP (Model Context Protocol) for interacting with the cluster. Process job details, accounting information, cluster configuration details with your favorite AI application (like Claude) which supports MCP extensions.

Go API Development Container

This project includes scripts to set up a one-node Open Cluster Scheduler cluster, which helps you to quickly build and test Go API applications without manually constructing a build environment.

Note, that the tests are written for this container setup. You should not run the tests against a real cluster as they will modify the cluster configuration of course.

Getting Started

Prerequisites

To begin, ensure you have the following software installed:

  • Docker
  • make tool

Building and Testing Using the Container

Build the Container

First, build the container, which is based on Ubuntu 22.04 and includes all required dependencies:

bash make build

Run the Single Node Cluster

After successfully building the container, you can initialize and run a single-node cluster:

bash make run

Upon the first successful execution of make run, you can expect command line output similar to the following:

shell Install log can be found in: /opt/cs-install/default/common/install_logs/qmaster_install_master_2024-08-11_12:00:00.log Install log can be found in: /opt/cs-install/default/common/install_logs/execd_install_master_2024-08-11_12:00:00.log root@master modified "global" in configuration list root@master modified "all.q" in cluster queue list

This indicates that the cluster has been successfully set up. You can check the status of the cluster by running the following command:

```bash

qhost

HOSTNAME ARCH NCPU NSOC NCOR NTHR LOAD MEMTOT MEMUSE SWAPTO SWAPUS

global - - - - - - - - - - master lx-amd64 7 1 7 7 0.37 23.5G 838.0M 3.0G 0.0 cd /root/go/src/github.com/hpc-gridware/go-clusterscheduler/pkg/qconf ginkgo -v ... ```

The installation directly is the local "installation" subdirectory on the the host which is mounted into the container. The subsequent runs of make run will reuse the existing installation for faster startup. If you want to reinstall the cluster, you can remove the installation directory and run make run again.

Issues

If you encounter any issues or have questions, please open an issue in this repository. We'll be happy to assist.

  • No jobs are scheduled: When using a laptop and closing and re-opening, the scheduler thread times out. To protect the qmaster, the scheduler thread gets disconnect. To get it running again either restart the container or remove and attach the scheduler thread manually ("qconf -kt scheduler" and then "qconf -at scheduler").

Owner

  • Name: HPC-Gridware GmbH
  • Login: hpc-gridware
  • Kind: organization

GitHub Events

Total
  • Delete event: 25
  • Push event: 49
  • Pull request review event: 4
  • Pull request review comment event: 3
  • Pull request event: 57
  • Create event: 31
Last Year
  • Delete event: 25
  • Push event: 49
  • Pull request review event: 4
  • Pull request review comment event: 3
  • Pull request event: 57
  • Create event: 31

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 1
  • Total pull requests: 19
  • Average time to close issues: 2 minutes
  • Average time to close pull requests: 2 minutes
  • Total issue authors: 1
  • Total pull request authors: 1
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 15
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 19
  • Average time to close issues: 2 minutes
  • Average time to close pull requests: 2 minutes
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 15
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • dgruber (1)
Pull Request Authors
  • dgruber (41)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 6
  • Total downloads: unknown
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 0
proxy.golang.org: github.com/hpc-gridware/go-clusterscheduler/cmd/adapter
Rankings
Dependent packages count: 5.9%
Average: 6.1%
Dependent repos count: 6.3%
Last synced: 7 months ago
proxy.golang.org: github.com/hpc-gridware/go-clusterscheduler/examples/testexample
Rankings
Dependent packages count: 6.1%
Average: 6.3%
Dependent repos count: 6.5%
Last synced: 6 months ago
proxy.golang.org: github.com/hpc-gridware/go-clusterscheduler/pkg/adapter
Rankings
Dependent packages count: 6.2%
Average: 6.4%
Dependent repos count: 6.6%
Last synced: 10 months ago
proxy.golang.org: github.com/hpc-gridware/go-clusterscheduler/cmd/diag
Rankings
Dependent packages count: 6.2%
Average: 6.4%
Dependent repos count: 6.6%
Last synced: 7 months ago
proxy.golang.org: github.com/hpc-gridware/go-clusterscheduler/cmd/simulator
Rankings
Dependent packages count: 6.2%
Average: 6.4%
Dependent repos count: 6.7%
Last synced: 10 months ago
proxy.golang.org: github.com/hpc-gridware/go-clusterscheduler
Rankings
Dependent packages count: 6.3%
Average: 6.5%
Dependent repos count: 6.7%
Last synced: 10 months ago

Dependencies

cmd/simulator/go.mod go
  • ../.. *
  • github.com/inconshreveable/mousetrap v1.1.0
  • github.com/spf13/cobra v1.8.1
  • github.com/spf13/pflag v1.0.5
cmd/simulator/go.sum go
  • github.com/cpuguy83/go-md2man/v2 v2.0.4
  • github.com/go-logr/logr v1.4.2
  • github.com/go-task/slim-sprig/v3 v3.0.0
  • github.com/google/go-cmp v0.6.0
  • github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6
  • github.com/inconshreveable/mousetrap v1.1.0
  • github.com/onsi/ginkgo/v2 v2.19.1
  • github.com/onsi/gomega v1.34.1
  • github.com/russross/blackfriday/v2 v2.1.0
  • github.com/spf13/cobra v1.8.1
  • github.com/spf13/pflag v1.0.5
  • golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
  • golang.org/x/net v0.27.0
  • golang.org/x/sys v0.22.0
  • golang.org/x/text v0.16.0
  • golang.org/x/tools v0.23.0
  • gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
  • gopkg.in/yaml.v3 v3.0.1
Dockerfile docker
  • hpcgridware/clusterscheduler-latest-ubuntu2204 latest build
cmd/diag/go.mod go
  • ./../../../go-clusterscheduler *
go.mod go
  • github.com/go-logr/logr v1.4.2
  • github.com/go-task/slim-sprig/v3 v3.0.0
  • github.com/google/go-cmp v0.6.0
  • github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6
  • github.com/onsi/ginkgo/v2 v2.19.1
  • github.com/onsi/gomega v1.34.1
  • golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
  • golang.org/x/net v0.27.0
  • golang.org/x/sys v0.22.0
  • golang.org/x/text v0.16.0
  • golang.org/x/tools v0.23.0
  • gopkg.in/yaml.v3 v3.0.1
go.sum go
  • github.com/davecgh/go-spew v1.1.1
  • github.com/go-logr/logr v1.4.2
  • github.com/go-task/slim-sprig/v3 v3.0.0
  • github.com/google/go-cmp v0.6.0
  • github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6
  • github.com/onsi/ginkgo/v2 v2.19.1
  • github.com/onsi/gomega v1.34.1
  • github.com/pmezard/go-difflib v1.0.0
  • github.com/stretchr/testify v1.8.4
  • golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
  • golang.org/x/net v0.27.0
  • golang.org/x/sys v0.22.0
  • golang.org/x/text v0.16.0
  • golang.org/x/tools v0.23.0
  • google.golang.org/protobuf v1.34.1
  • gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
  • gopkg.in/yaml.v3 v3.0.1
cmd/adapter/go.mod go
  • ./../../ *
  • github.com/go-logr/logr v1.4.2
  • github.com/go-logr/stdr v1.2.2
  • github.com/google/uuid v1.6.0
  • github.com/gorilla/mux v1.8.1
  • go.opentelemetry.io/contrib/bridges/otelslog v0.5.0
  • go.opentelemetry.io/otel v1.30.0
  • go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.6.0
  • go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.30.0
  • go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.30.0
  • go.opentelemetry.io/otel/log v0.6.0
  • go.opentelemetry.io/otel/metric v1.30.0
  • go.opentelemetry.io/otel/sdk v1.30.0
  • go.opentelemetry.io/otel/sdk/log v0.6.0
  • go.opentelemetry.io/otel/sdk/metric v1.30.0
  • go.opentelemetry.io/otel/trace v1.30.0
  • golang.org/x/sys v0.25.0
cmd/adapter/go.sum go
  • github.com/davecgh/go-spew v1.1.1
  • github.com/go-logr/logr v1.2.2
  • github.com/go-logr/logr v1.4.2
  • github.com/go-logr/stdr v1.2.2
  • github.com/go-task/slim-sprig/v3 v3.0.0
  • github.com/google/go-cmp v0.6.0
  • github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6
  • github.com/google/uuid v1.6.0
  • github.com/gorilla/mux v1.8.1
  • github.com/hpc-gridware/go-clusterscheduler v0.0.0-20240914092021-0285da16cc31
  • github.com/hpc-gridware/go-clusterscheduler/pkg/adapter v0.0.0-20240914092021-0285da16cc31
  • github.com/onsi/ginkgo/v2 v2.19.1
  • github.com/onsi/gomega v1.34.1
  • github.com/pmezard/go-difflib v1.0.0
  • github.com/stretchr/testify v1.9.0
  • go.opentelemetry.io/contrib/bridges/otelslog v0.5.0
  • go.opentelemetry.io/otel v1.30.0
  • go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.6.0
  • go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.30.0
  • go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.30.0
  • go.opentelemetry.io/otel/log v0.6.0
  • go.opentelemetry.io/otel/metric v1.30.0
  • go.opentelemetry.io/otel/sdk v1.30.0
  • go.opentelemetry.io/otel/sdk/log v0.6.0
  • go.opentelemetry.io/otel/sdk/metric v1.30.0
  • go.opentelemetry.io/otel/trace v1.30.0
  • golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
  • golang.org/x/net v0.27.0
  • golang.org/x/sys v0.25.0
  • golang.org/x/text v0.16.0
  • golang.org/x/tools v0.23.0
  • gopkg.in/yaml.v3 v3.0.1
.github/workflows/review.yml actions
  • actions/checkout v3 composite
  • mattzcarey/code-review-gpt v0.1.10 composite
examples/testexample/go.mod go
  • ../.. *
  • github.com/goccy/go-json v0.10.3
  • go.uber.org/multierr v1.10.0
  • go.uber.org/zap v1.27.0
  • google.golang.org/protobuf v1.35.1
examples/testexample/go.sum go
  • github.com/davecgh/go-spew v1.1.1
  • github.com/go-logr/logr v1.4.2
  • github.com/go-task/slim-sprig/v3 v3.0.0
  • github.com/goccy/go-json v0.10.3
  • github.com/google/go-cmp v0.6.0
  • github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6
  • github.com/onsi/ginkgo/v2 v2.19.1
  • github.com/onsi/gomega v1.34.1
  • github.com/pmezard/go-difflib v1.0.0
  • github.com/stretchr/testify v1.8.1
  • go.uber.org/goleak v1.3.0
  • go.uber.org/multierr v1.10.0
  • go.uber.org/zap v1.27.0
  • golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
  • golang.org/x/net v0.27.0
  • golang.org/x/sys v0.25.0
  • golang.org/x/text v0.16.0
  • golang.org/x/tools v0.23.0
  • google.golang.org/protobuf v1.35.1
  • gopkg.in/yaml.v3 v3.0.1