func main() { config := marathon.NewDefaultConfig() config.URL = marathonURL client, err := marathon.NewClient(config) if err != nil { log.Fatalf("Make new marathon client error: %v", err) } app := marathon.Application{} app.ID = "queue-test" app.Command("sleep 5") app.Count(1) app.Memory(32) fmt.Println("Creating/updating app.") // Update application will either create or update the app. _, err = client.UpdateApplication(&app, false) if err != nil { log.Fatalf("Update application error: %v", err) } // wait until marathon will launch tasks err = client.WaitOnApplication(app.ID, 10*time.Second) if err != nil { log.Fatalln("Application deploy failure, timeout.") } fmt.Println("Application was deployed.") // get marathon queue by chance for i := 0; i < 30; i++ { // Avoid shadowing err from outer scope. var queue *marathon.Queue queue, err = client.Queue() if err != nil { log.Fatalf("Get queue error: %v\n", err) } if len(queue.Items) > 0 { fmt.Println(queue) break } fmt.Printf("Queue is blank now, retry(%d)...\n", 30-i) time.Sleep(time.Second) } // delete marathon queue delay err = client.DeleteQueueDelay(app.ID) if err != nil { log.Fatalf("Delete queue delay error: %v\n", err) } fmt.Println("Queue delay deleted.") return }
func main() { config := marathon.NewDefaultConfig() config.URL = marathonURL client, err := marathon.NewClient(config) if err != nil { panic(err) } app := marathon.Application{} app.ID = "tasks-test" app.Cmd = "sleep 60" app.Instances = 3 fmt.Println("Creating app.") // Update application will either create or update the app. _, err = client.UpdateApplication(&app, false) if err != nil { panic(err) } // wait until marathon will launch tasks client.WaitOnApplication(app.ID, 10*time.Second) fmt.Println("Tasks were deployed.") tasks, err := client.Tasks(app.ID) if err != nil { panic(err) } host := tasks.Tasks[0].Host fmt.Printf("Killing tasks on the host: %s\n", host) _, err = client.KillApplicationTasks(app.ID, &marathon.KillApplicationTasksOpts{Scale: true, Host: host}) if err != nil { panic(err) } }