Skip to content

Repository files navigation

Go bindings for ClusterD

Pure Go language bindings for ClusterD. ClusterD is the continued development of Apache Mesos and preserves its core HTTP and Protocol Buffer APIs. Clusterd-go communicates directly with a running ClusterD master and its agent instances. The project provides an idiomatic Go API for building ClusterD frameworks.

Build Status GoDoc Coverage Status

Release v1.0.0

The v1.0.0 release contains the current ClusterD v1 API definitions used by the clusterd source tree, including scheduler, master, agent, executor, maintenance, quota, allocator, and resource-provider APIs.

The generated bindings and JSON codecs are checked in so consumers do not need the Protocol Buffers toolchain to use the library.

Status

New projects should use the ClusterD v1 API bindings, located in api/v1. Unless otherwise indicated, the remainder of this README describes the ClusterD v1 API implementation.

Please vendor this library to avoid unpleasant surprises via go get ....

The legacy Mesos v0 API version of the bindings, located in api/v0, is more mature but will not see any major development besides critical compatibility and bug fixes.

Compatibility

mesos-N tags mark the start of support for a specific Mesos version while maintaining backwards compatibility with the previous major version.

This release targets the current ClusterD v1 HTTP and Protocol Buffer wire contract. The legacy v0 bindings remain available under api/v0 for older Apache Mesos and ClusterD deployments.

Features

  • The SchedulerDriver API implemented
  • The ExecutorDriver API implemented
  • Example programs on how to use the API
  • Modular design for easy readability/extensibility

Prerequisites

  • Go 1.26 or newer; https://go.dev/dl/
  • ClusterD (the continued development of Apache Mesos), compatible with the v1 API

The checked-in generated code does not require protoc for normal builds. Maintainers regenerating the bindings need protoc, protoc-gen-gogo, and ffjson.

Installing

Users of this library are encouraged to vendor it or pin the v1.0.0 tag.

# download the source code
$ git clone https://github.com/m3scluster/clusterd-go.git
$ cd clusterd-go

# build the example binaries
$ make install

Testing

$ make test

The project also supports the standard Go checks:

$ go test ./...
$ go vet ./...
$ go build ./...

For Protocol Buffer regeneration, use the repository's make protobufs target followed by make ffjson. The generated files must be reviewed with git diff --check before committing.

Contributing

Contributions are welcome. Please refer to CONTRIBUTING.md for guidelines.

License

This project is Apache License 2.0.

About

Go language bindings for ClusterD/Apache Mesos

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages