2016-08-04 31 views
0

我試圖調用馬拉松API來暫停作業。我沒有在API文檔中看到如何去做,但我認爲我可以通過設置instance = 0來實現它。但是,所有這些都使我的工作進入「部署...」狀態(顯然是永遠) 。另一方面,當我使用馬拉松門戶網站暫停工作時,它立即被暫停。如何使用馬拉松API暫停作業

有誰知道如何做到這一點?

$.fn.suspendjob = function(id) { 
$.ajax({ 
    type: 'PUT', 
    url: 'https://mesos-head.achillesv.net/marathon/v2/apps' + id, 
    headers: { 
    "Authorization": "Basic " + btoa(user + ":" + pass) 
    }, 
    data: JSON.stringify({ instances: 0}), 
    contentType: "application/json; charset=utf-8", 
    success: function(result) { 
    appslist.length = 0; 
    $('#tabs').tabs("option", "active", 1); 
    $('#tabs').tabs("option", "active", 0); 
    } 
}); 

};

回答

1

我認爲你的解決方案很好(set instance = 0)。我試過這個解決方案,它工作。請再試一次!

1

小python腳本來實現這一點(它假設馬拉松在本地主機上運行的端口8080):

import requests 

    marathon = "http://localhost:8080/v2/apps/<app-name>" 
    payload = {'instances': 0} 
    r = requests.put(marathon+"?force=true", json=payload)  
    #'?force=true' will be useful if an app is in deploying state 
    print r.status_code, r.reason