mesos-rs :globewithmeridians:

Simple bindings for the Mesos v1 HTTP API.

Roadmap: - [x] scheduler - [ ] executor - [ ] zk master detection and failover

Running

[dependencies] mesos = "0.2.6"

```rust extern crate mesos;

use self::mesos::{Scheduler, SchedulerClient, runprotobufscheduler}; use self::mesos::proto::*;

struct TestScheduler;

impl Scheduler for TestScheduler { fn subscribed(&mut self, client: &SchedulerClient, frameworkid: &FrameworkID, heartbeatinterval_seconds: Option) { println!("received subscribed"); }

fn offers(&mut self,
          client: &SchedulerClient,
          offers: Vec<Offer>,
          inverse_offers: Vec<InverseOffer>) {
    println!("received offers");

    let mut offer_ids = vec![];
    for offer in offers {
        offer_ids.push(offer.get_id().clone());
    }
    for offer in inverse_offers {
        offer_ids.push(offer.get_id().clone());
    }

    client.decline(offer_ids, None).unwrap();
}

fn rescind(&mut self, client: &SchedulerClient, offer_id: &OfferID) {
    println!("received rescind");
}

fn update(&mut self, client: &SchedulerClient, status: &TaskStatus) {
    println!("received update");
}

fn message(&mut self,
           client: &SchedulerClient,
           agent_id: &AgentID,
           executor_id: &ExecutorID,
           data: Vec<u8>) {
    println!("received message");
}

fn failure(&mut self,
           client: &SchedulerClient,
           agent_id: Option<&AgentID>,
           executor_id: Option<&ExecutorID>,
           status: Option<i32>) {
    println!("received failure");
}

fn error(&mut self, client: &SchedulerClient, message: String) {
    println!("received error");
}

fn heartbeat(&mut self, client: &SchedulerClient) {
    println!("received heartbeat");
}

}

fn main() { let url = "http://localhost:5050".tostring(); let user = "root".tostring(); let name = "rust http".tostring(); let frameworktimeout = 0f64; let framework_id = None; let mut scheduler = TestScheduler;

run_protobuf_scheduler(url,
                       user,
                       name,
                       framework_timeout,
                       &mut scheduler,
                       framework_id);

} ```