2014-07-03 219 views
1

我們將爲項目目的探索Chef的其餘api。我能夠獲取,發佈和刪除節點/節點數據。但是我無法執行PUT請求,即更新服務器上與節點相關的數據。這裏是我得到的錯誤的屏幕截圖。 enter image description here廚師服務器REST API

以下是發出請求的代碼。我已經正確指定了驗證參數,並且它們正常工作。

rest = Chef::REST.new(server_url, client_name, signing_key_filename) 
print "Enter the node you want to edit :\n" 
editnode = gets.chomp 
node = rest.get_rest("/nodes/#{editnode}") 
print "#{node.name}\n" 
print "\t#{node.run_list}\n" 
print "Now updating the node as per the parameters specified :\n" 
update_node = { 
"run_list" => "recipe[123]" 
} 
rest.put_rest("nodes/#{editnode}","update_node")  

請提出一些解決方案。

+0

是您的網址確實https://開頭的Google用戶?此外,以明文而不是截圖的形式提供堆棧跟蹤會很有幫助 – sethvargo

+0

看起來您在使用Ruby編碼?使用優秀的Ridley gem代替直接調用REST API:https://github.com/RiotGames/ridley –

+0

@sethvargon是的。其實我在本地數據中心vm上運行服務器,並將其設置爲FQDN。 +我已將相同內容添加到我的工作站上的主機文件,因此可以使用此名稱訪問它。 – tortuga

回答

3

所以兩個問題:

  1. 的主要問題是,你在put_rest引述"update_node"所以你要發送回的文字,當服務器需要一個哈希值。
  2. 你不能只發送PUT的運行列表,你需要發送一個完整的節點數據結構。最簡單的方法是修改從GET獲取的服務器。
相關問題