megos alternatives and similar packages
Based on the "Third-party APIs" category.
Alternatively, view megos alternatives based on common mentions on social networks and blogs.
-
go-openai
OpenAI ChatGPT, GPT-3, GPT-4, DALL·E, Whisper API wrapper for Go -
goamz
Popular fork of goamz which adds some missing API calls to certain packages. -
webhooks
:fishing_pole_and_fish: Webhook receiver for GitHub, Bitbucket, GitLab, Gogs -
githubql
Package githubv4 is a client library for accessing GitHub GraphQL API v4 (https://docs.github.com/en/graphql). -
twitter-scraper
Scrape the Twitter Frontend API without authentication with Golang. -
lark
Feishu(飞书)/Lark Open API Go SDK, Support ALL Open API and Event Callback. -
openaigo
OpenAI GPT3/3.5 ChatGPT API Client Library for Go, simple, less dependencies, and well-tested -
gostorm
GoStorm is a Go library that implements the communications protocol required to write Storm spouts and Bolts in Go that communicate with the Storm shells. -
hipchat (xmpp)
A golang package to communicate with HipChat over XMPP -
clarifai
DEPRECATED: please use https://github.com/Clarifai/clarifai-go-grpc -
go-lark
An easy-to-use SDK for Feishu and Lark Open Platform (Messaging API only) -
go-trending
Go library for accessing trending repositories and developers at Github. -
simples3
Simple no frills AWS S3 Golang Library using REST with V4 Signing (without AWS Go SDK) -
go-tgbot
Golang telegram bot API wrapper, session-based router and middleware -
go-postman-collection
Go module to work with Postman Collections
Access the most powerful time series database as a service
Do you think we are missing an alternative of megos or a related project?
README
megos
Go(lang) client library for accessing an Apache Mesos cluster.
Features
- Determine the Mesos leader
- Get the current state of every mesos node (master or slave)
- Retrieve stdout and stderr of tasks
- Covered with unit tests
Installation
It is go gettable
$ go get github.com/andygrunwald/megos
(optional) to run unit / example tests:
$ cd $GOPATH/src/github.com/andygrunwald/megos
$ go test -v ./...
API
Please have a look at the GoDoc documentation for a detailed API description.
Examples / use cases
A (small) list of usecases how this library can be used:
- Determine the leader of a Mesos cluster
- Get a list of all completed Mesos tasks
- Get the stdout and stderr of a failed mesos task
- Get the statistics and push it to a different backend
Further more a few examples how the API can be used and the code looks like.
Determine the leader node
node1, _ := url.Parse("http://192.168.1.120:5050/")
node2, _ := url.Parse("http://192.168.1.122:5050/")
mesos := megos.NewClient([]*url.URL{node1, node2}, nil)
leader, err := mesos.DetermineLeader()
if err != nil {
panic(err)
}
fmt.Println(leader)
// Output:
// [email protected]:5050
Get the version of Mesos
node1, _ := url.Parse("http://192.168.1.120:5050/")
node2, _ := url.Parse("http://192.168.1.122:5050/")
mesos := megos.NewClient([]*url.URL{node1, node2}, nil)
state, err := mesos.GetStateFromCluster()
if err != nil {
panic(err)
}
fmt.Printf("Mesos v%s", state.Version)
// Output:
// Mesos v0.26.0
Get stdout and stderr of a task
Get stdout and stderr from a task of the chronos framework. Error checks are dropped for simplicity.
node1, _ := url.Parse("http://192.168.1.120:5050/")
node2, _ := url.Parse("http://192.168.1.122:5050/")
mesos := megos.NewClient([]*url.URL{node1, node2}, nil)
frameworkPrefix := "chronos"
taskID := "ct:1444578480000:0:example-chronos-task:"
mesos.DetermineLeader()
state, _ := mesos.GetStateFromLeader()
framework, _ := mesos.GetFrameworkByPrefix(state.Frameworks, frameworkPrefix)
task, _ := mesos.GetTaskByID(framework.CompletedTasks, taskID)
slave, _ := mesos.GetSlaveByID(state.Slaves, task.SlaveID)
pid, _ := mesos.ParsePidInformation(slave.PID)
slaveState, _ := mesos.GetStateFromPid(pid)
framework, _ = mesos.GetFrameworkByPrefix(slaveState.CompletedFrameworks, frameworkPrefix)
executor, _ := mesos.GetExecutorByID(framework.CompletedExecutors, taskID)
stdOut, _ := mesos.GetStdOutOfTask(pid, executor.Directory)
stdErr, _ := mesos.GetStdErrOfTask(pid, executor.Directory)
fmt.Println(string(stdOut))
fmt.Println("================")
fmt.Println(string(stdErr))
// Output:
// Registered executor on 192.168.1.123
// Starting task ct:1444578480000:0:example-chronos-task:
// sh -c 'MY COMMAND'
// Forked command at 10629
// ...
// ================
// I1011 17:48:00.390614 10602 exec.cpp:132] Version: 0.22.1
// I1011 17:48:00.532158 10618 exec.cpp:206] Executor registered on slave 20150603-103119-2046951690-5050-24382-S1
Version compatibility
This library was tested with Apache Mesos in version 0.26.0. In theory this should work with versions >= v0.25.x.
In version 0.25.x they renamed various API endpoints (like state.json to /state). See Upgrading Mesos - Upgrading from 0.24.x to 0.25.x for details. This is the reason why we support no lower versions of Mesos.
Other/Similar projects
- boldfield/go-mesos: A client for discovering information about a Mesos exposed via HTTP API
- antonlindstrom/mesos_stats: Statistics definition for Mesos /monitor/statistics.json
- Clever/marathon-stats: A simple container which queries marathon and mesos for stats about their current state, and logs these stats to stderr
- bolcom/mesos_metrics: Go definitions for the Mesos
{master}:5050/metrics/snapshot
and{slave}:5051/metrics/snapshot
endpoints
Contribution
- You have a question?
- Don`t know if a feature is supported?
- Want to implement a new feature, but don`t know how?
- You like the library and use it for your implementation / use case?
- You found a bug or incompatibility?
- Something is not working as expected?
Feel free to open a new issue. I will be happy to answer them and try to help you. It might be useful to add as much information as possible into the issue like Mesos version, example URL, (parts) of your code and the expected and current behaviour.
License
This project is released under the terms of the MIT license.
*Note that all licence references and agreements mentioned in the megos README section above
are relevant to that project's source code only.