Skip to content

A simple and idiomatic Clojure facade around the Mesos JAVA API

License

Notifications You must be signed in to change notification settings

clojusc/mesomatic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

56a291b · Jul 13, 2018
Dec 20, 2017
Dec 20, 2017
Dec 20, 2017
Feb 4, 2016
Dec 20, 2017
Mar 25, 2015
Dec 20, 2017
Mar 25, 2015
Jul 13, 2018
Dec 20, 2017

Repository files navigation

mesomatic

Build StatusClojars ProjectClojure version

A simple and idiomatic Clojure facade around the Mesos JAVA API

Contents

  • About
  • Resources
  • Usage
  • Examples
  • Namespaces
  • Type Conversions
  • Release Notes
  • Contributor Resources
  • Donating

About

Mesomatic provides facilities to interact with Apache Mesos from clojure. It provides a simple and idiomatic facade around the Mesos JAVA API and facilities to help when writing mesos frameworks.

Mesomatic versions match the API version they target, a trailing minor indicates the patch release number, for instance version 1.0.1-r0 will target mesos 1.0.1.

Note that the clojusc Github org has volunteered to maintain the library originally created by pyr at pyr/mesomatic. The new location, clojusc/mesomatic, is now the offical home for the library.

Resources

Usage

Add this to your leiningen profile:

:dependencies [[clojusc/mesomatic "1.0.1-r1"]]

If you want to use the core.async facade, you will need to pull it in as well:

:dependencies [[clojusc/mesomatic "1.0.1-r1"]
               [clojusc/mesomatic-async "1.0.1-r1"]]

Examples

Be sure to examine the example frameworks built with mesomatic.

Namespaces

  • mesomatic.types: contains a facade to and from all protobuf types.
  • mesomatic.scheduler: facades for schedulers and scheduler-drivers
  • mesomatic.executor: facades for executors and executor-drivers
  • mesomatic.async.executor: produce executor callbacks on a channel
  • mesomatic.async.scheduler: produce scheduler callbacks on a channel
  • mesomatic.helpers: utility helpers for cluster decisions

Type Conversions

To go to and from protobuf types, mesomatic uses two simple functions:

  • pb->data: yields a data structure from a mesos type, usually in the form of a record.
  • data->pb: converts a data structure to a mesos type.
  • ->pb: convert a plain map to a mesos type hinted at by a keyword

By yielding records, mesomatic provides elements which are homomorphic to maps and can easily be converted back to protobuf.

Special Cases

A few cases do not yield records:

  • Scalar values (Protos.Value.Scalar) yield doubles.
  • All enums yield keywords.
  • Set values (Protos.Value.Set) yield sets.
  • Some types containing a single repeated field are unrolled as a seq of their content, such as Protos.Value.Ranges.

Release Notes

1.0.1

  • Target mesos 1.0.1
  • Support for GPU resources
  • Updates for API changes in Java bindings

Contributor Resources

Donating

A donation account for supporting development on this project has been set up on Liberapay here:

You can learn more about Liberapay on its Wikipedia entry or on the service's "About" page.

https://liberapay.com/clojusc-mesomatic/donate