Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/clojusc/mesomatic
A simple and idiomatic Clojure facade around the Mesos JAVA API
https://github.com/clojusc/mesomatic
apache-projects clojure data-centers distributed-systems mesos
Last synced: about 20 hours ago
JSON representation
A simple and idiomatic Clojure facade around the Mesos JAVA API
- Host: GitHub
- URL: https://github.com/clojusc/mesomatic
- Owner: clojusc
- License: other
- Created: 2015-03-26T08:37:13.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2018-07-13T17:02:56.000Z (over 6 years ago)
- Last Synced: 2025-01-28T18:43:12.502Z (17 days ago)
- Topics: apache-projects, clojure, data-centers, distributed-systems, mesos
- Language: Clojure
- Homepage:
- Size: 586 KB
- Stars: 70
- Watchers: 6
- Forks: 13
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# mesomatic
[![Build Status][travis-badge]][travis][![Clojars Project][clojars-badge]][clojars][![Clojure version][clojure-v]](project.clj)
*A simple and idiomatic Clojure facade around the Mesos JAVA API*
[![][logo]][logo-large]
**Contents**
* About
* Resources
* Usage
* Examples
* Namespaces
* Type Conversions
* Release Notes
* Contributor Resources
* Donating## About
Mesomatic provides facilities to interact with [Apache Mesos][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][clojusc] has volunteered to maintain the
library originally created by [pyr][pyr] at `pyr/mesomatic`. The new location,
`clojusc/mesomatic`, is now the offical home for the library.## Resources
* An excellent [Mesos presentation][mesos-video] from ApacheCon 2014
* [pyr][pyr]'s Euroclojure 2015 [talk on Mesomatic][mesomatic-video]## Usage
Add this to your leiningen profile:
```clojure
:dependencies [[clojusc/mesomatic "1.0.1-r1"]]
```If you want to use the [core.async][core-async] facade,
you will need to pull it in as well:```clojure
:dependencies [[clojusc/mesomatic "1.0.1-r1"]
[clojusc/mesomatic-async "1.0.1-r1"]]
```## Examples
Be sure to examine the [example frameworks][examples] 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 keywordBy 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
- http://mesos.apache.org/documentation/latest/upgrades/
- https://github.com/ContainerSolutions/minimesos
- https://github.com/ContainerSolutions/minimesos-docker
- https://github.com/katacoda/minimesos-examples
- https://github.com/mesos/elasticsearch/tree/master/system-test/src/systemTest/java/org/apache/mesos/elasticsearch/systemtest## Donating
A donation account for supporting development on this project has been set up
on Liberapay here:* [https://liberapay.com/clojusc-mesomatic/donate](https://liberapay.com/clojusc-mesomatic/donate)
You can learn more about Liberapay on its [Wikipedia entry][libera-wiki] or on the
service's ["About" page][libera-about].https://liberapay.com/clojusc-mesomatic/donate
[travis]: https://travis-ci.org/clojusc/mesomatic
[travis-badge]: https://travis-ci.org/clojusc/mesomatic.png?branch=master
[deps]: http://jarkeeper.com/clojusc/mesomatic
[deps-badge]: http://jarkeeper.com/clojusc/mesomatic/status.svg
[logo]: ux-resources/images/mesomatic-logo-x250.png
[logo-large]: ux-resources/images/mesomatic-logo-x1000.png
[tag-badge]: https://img.shields.io/github/tag/clojusc/mesomatic.svg
[tag]: https://github.com/clojusc/mesomatic/tags
[clojure-v]: https://img.shields.io/badge/clojure-1.9.0-blue.svg
[clojars]: https://clojars.org/clojusc/mesomatic
[clojars-badge]: https://img.shields.io/clojars/v/clojusc/mesomatic.svg
[mesos]: http://mesos.apache.org
[pyr]: https://github.com/pyr
[core-async]: https://github.com/clojure/core.async
[examples]: https://github.com/clojusc/mesomatic-examples
[mesos-video]: https://www.youtube.com/watch?v=hTcZGODnyf0
[mesomatic-video]: https://www.youtube.com/watch?v=X-fVA5DxezE
[clojusc]: https://github.com/clojusc
[libera-wiki]: https://en.wikipedia.org/wiki/Liberapay
[libera-about]: https://liberapay.com/about/