ConoHa API를 Ruby에서 호출
이번은 세세한 부분은 생략해 코드만.
Token 받기
포인트로서는 http로 통신하는 것입니까.
require 'net/https'
require 'uri'
require 'json'
....
def GetToken(username, password, region)
tenantId = username.gsub("gncu","gnct")
url = "https://identity." + region + ".conoha.io/v2.0/tokens"
uri = URI.parse(url)
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
#https.set_debug_output $stderr
req = Net::HTTP::Post.new(uri.request_uri)
req["Content-Type"] = "application/json"
req.body = '{ "auth": { "passwordCredentials": { "username": "'+ username +'", "password": "'+ password + '"}, "tenantName": "'+ tenantId +'" } }'
res = https.request(req)
if res.code == "200"
json = JSON.parse(res.body)
json["access"]["token"]
else
nil
end
end
중간당 "#https.set_debug_output $stderr"는 코멘트를 해제하면 통신 상태의 상세가 표시됩니다. 디버깅에 매우 유용합니다.
참고 : ConoHa API 토큰 발급
서버 상태 얻기
취득한 API 토큰을 req[X-Auth-Token]로 전달합니다.
require 'net/https'
require 'uri'
require 'json'
....
def GetServers(region, token)
url = "https://compute." + region + ".conoha.io/v2/" + token["tenant"]["id"] + "/servers/detail"
uri = URI.parse(url)
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
#https.set_debug_output $stderr
req = Net::HTTP::Get.new(uri.request_uri)
req["Accept"] = "application/json"
req["X-Auth-Token"] = token["id"]
res = https.request(req)
if res.code == "200"
json = JSON.parse(res.body)
json
else
nil
end
end
참고 : ConoHa API VM 일람 상세 취득
응용편
한 번 요령을 알고 버리면 API를 괴롭히고 무엇을 할 수 있는지 생각하는 것은 즐겁네요.
그렇다고 해서, 자신 이외에 사용하는 사람이 있는지 의문입니다만 이 코드를 응용해 Alfred2용의 Workflow를 만들어 보았습니다. Conoha와 명령을 치면 서버 목록이 표시됩니다. 선택하면 제어판이 열립니다.
아직 묵직하게 만든 만큼의 테스트 단계입니다만, 흥미가 있는 사람은 부디.
Reference
이 문제에 관하여(ConoHa API를 Ruby에서 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bellx2/items/fa2445a1280dccd76d69텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)