{"id":25328533,"url":"https://github.com/clojusc/mesomatic","last_synced_at":"2025-12-12T01:09:02.545Z","repository":{"id":29381117,"uuid":"32916051","full_name":"clojusc/mesomatic","owner":"clojusc","description":"A simple and idiomatic Clojure facade around the Mesos JAVA API","archived":false,"fork":false,"pushed_at":"2018-07-13T17:02:56.000Z","size":600,"stargazers_count":70,"open_issues_count":12,"forks_count":13,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-01-28T18:43:12.502Z","etag":null,"topics":["apache-projects","clojure","data-centers","distributed-systems","mesos"],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clojusc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-26T08:37:13.000Z","updated_at":"2024-05-31T07:50:30.000Z","dependencies_parsed_at":"2022-08-18T23:02:27.721Z","dependency_job_id":null,"html_url":"https://github.com/clojusc/mesomatic","commit_stats":null,"previous_names":["pyr/mesomatic"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojusc%2Fmesomatic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojusc%2Fmesomatic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojusc%2Fmesomatic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojusc%2Fmesomatic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clojusc","download_url":"https://codeload.github.com/clojusc/mesomatic/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238772136,"owners_count":19527879,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache-projects","clojure","data-centers","distributed-systems","mesos"],"created_at":"2025-02-14T02:56:10.252Z","updated_at":"2025-10-29T04:32:27.181Z","avatar_url":"https://github.com/clojusc.png","language":"Clojure","funding_links":["https://liberapay.com/clojusc-mesomatic/donate","https://liberapay.com/about/"],"categories":[],"sub_categories":[],"readme":"# mesomatic\n\n[![Build Status][travis-badge]][travis][![Clojars Project][clojars-badge]][clojars][![Clojure version][clojure-v]](project.clj)\n\n*A simple and idiomatic Clojure facade around the Mesos JAVA API*\n\n[![][logo]][logo-large]\n\n**Contents**\n\n* About\n* Resources\n* Usage\n* Examples\n* Namespaces\n* Type Conversions\n* Release Notes\n* Contributor Resources\n* Donating\n\n\n## About\n\nMesomatic provides facilities to interact with [Apache Mesos][mesos] from\nclojure. It provides a simple and idiomatic facade around the Mesos JAVA API\nand facilities to help when writing mesos frameworks.\n\nMesomatic versions match the API version they target, a trailing minor\nindicates the patch release number, for instance version `1.0.1-r0` will\ntarget mesos `1.0.1`.\n\nNote that the [clojusc Github org][clojusc] has volunteered to maintain the\nlibrary originally created by [pyr][pyr] at `pyr/mesomatic`. The new location,\n`clojusc/mesomatic`, is now the offical home for the library.\n\n\n## Resources\n\n* An excellent [Mesos presentation][mesos-video] from ApacheCon 2014\n* [pyr][pyr]'s Euroclojure 2015 [talk on Mesomatic][mesomatic-video]\n\n\n## Usage\n\nAdd this to your leiningen profile:\n\n```clojure\n:dependencies [[clojusc/mesomatic \"1.0.1-r1\"]]\n```\n\nIf you want to use the [core.async][core-async] facade,\nyou will need to pull it in as well:\n\n```clojure\n:dependencies [[clojusc/mesomatic \"1.0.1-r1\"]\n               [clojusc/mesomatic-async \"1.0.1-r1\"]]\n```\n\n\n## Examples\n\nBe sure to examine the [example frameworks][examples] built with mesomatic.\n\n\n## Namespaces\n\n- `mesomatic.types`: contains a facade to and from all protobuf types.\n- `mesomatic.scheduler`: facades for schedulers and scheduler-drivers\n- `mesomatic.executor`: facades for executors and executor-drivers\n- `mesomatic.async.executor`: produce executor callbacks on a channel\n- `mesomatic.async.scheduler`: produce scheduler callbacks on a channel\n- `mesomatic.helpers`: utility helpers for cluster decisions\n\n\n## Type Conversions\n\nTo go to and from protobuf types, mesomatic uses two simple functions:\n\n- `pb-\u003edata`: yields a data structure from a mesos type, usually in the form of\n              a record.\n- `data-\u003epb`: converts a data structure to a mesos type.\n- `-\u003epb`: convert a plain map to a mesos type hinted at by a keyword\n\nBy yielding records, mesomatic provides elements which are homomorphic to\nmaps and can easily be converted back to protobuf.\n\n\n### Special Cases\n\nA few cases do not yield records:\n\n- Scalar values (`Protos.Value.Scalar`) yield doubles.\n- All enums yield keywords.\n- Set values (`Protos.Value.Set`) yield sets.\n- Some types containing a single repeated field are unrolled\n  as a seq of their content, such as `Protos.Value.Ranges`.\n\n\n## Release Notes\n\n### 1.0.1\n\n- Target mesos 1.0.1\n- Support for GPU resources\n- Updates for API changes in Java bindings\n\n\n## Contributor Resources\n\n- http://mesos.apache.org/documentation/latest/upgrades/\n- https://github.com/ContainerSolutions/minimesos\n- https://github.com/ContainerSolutions/minimesos-docker\n- https://github.com/katacoda/minimesos-examples\n- https://github.com/mesos/elasticsearch/tree/master/system-test/src/systemTest/java/org/apache/mesos/elasticsearch/systemtest\n\n\n## Donating\n\nA donation account for supporting development on this project has been set up\non Liberapay here:\n\n* [https://liberapay.com/clojusc-mesomatic/donate](https://liberapay.com/clojusc-mesomatic/donate)\n\nYou can learn more about Liberapay on its [Wikipedia entry][libera-wiki] or on the\nservice's [\"About\" page][libera-about].\n\nhttps://liberapay.com/clojusc-mesomatic/donate\n\n\u003c!-- Named page links below: /--\u003e\n\n[travis]: https://travis-ci.org/clojusc/mesomatic\n[travis-badge]: https://travis-ci.org/clojusc/mesomatic.png?branch=master\n[deps]: http://jarkeeper.com/clojusc/mesomatic\n[deps-badge]: http://jarkeeper.com/clojusc/mesomatic/status.svg\n[logo]: ux-resources/images/mesomatic-logo-x250.png\n[logo-large]: ux-resources/images/mesomatic-logo-x1000.png\n[tag-badge]: https://img.shields.io/github/tag/clojusc/mesomatic.svg\n[tag]: https://github.com/clojusc/mesomatic/tags\n[clojure-v]: https://img.shields.io/badge/clojure-1.9.0-blue.svg\n[clojars]: https://clojars.org/clojusc/mesomatic\n[clojars-badge]: https://img.shields.io/clojars/v/clojusc/mesomatic.svg\n[mesos]: http://mesos.apache.org\n[pyr]: https://github.com/pyr\n[core-async]: https://github.com/clojure/core.async\n[examples]: https://github.com/clojusc/mesomatic-examples\n[mesos-video]: https://www.youtube.com/watch?v=hTcZGODnyf0\n[mesomatic-video]: https://www.youtube.com/watch?v=X-fVA5DxezE\n[clojusc]: https://github.com/clojusc\n[libera-wiki]: https://en.wikipedia.org/wiki/Liberapay\n[libera-about]: https://liberapay.com/about/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclojusc%2Fmesomatic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclojusc%2Fmesomatic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclojusc%2Fmesomatic/lists"}