安価で、豊富な機能を持つ管理コンソールとAPIが充実してるVPSサービスプロバイダーとして定評のある「ConoHa」。このブログでも非常にお世話になっています。
このConoHaでは、VPS向けに多くのプランが提供されており、これらを使用してサーバーを作成するわけです。
しかし、APIで作成できるように自動化する場合には、それらのプランの「UUID(flavorRef値)」が必要になります。
このUUIDが公開されていなくて、毎回取得するのがメンドくさい。というわけで、それを取得するPythonスクリプトを書いてみました。
同じ境遇の方、あるいはPython初学者のサンプルソースとして、お役に立てれば幸いです。
ConoHaの全プラン一覧を表示するPythonスクリプト
前提
ConoHaでしか使えません。ConoHaのAPI専用のスクリプトです。
スクリプトソース
#!/bin/python
from requests.exceptions import ConnectionError, RequestException, HTTPError
import json
import requests
import sys
''' === Setting Parameters ============================= '''
APIUSER = '{APIユーザー名}'
APIPASS = '{APIパスワード}'
TENANT = '{テナントID}'
''' ==================================================== '''
def get_conoha_token(tid, user, passwd):
''' Function of getting a text of conoha token'''
_api = 'https://identity.tyo1.conoha.io/v2.0/tokens'
_header = {'Accept': 'application/json'}
_body = {
"auth": {
"passwordCredentials": {
"username": user,
"password": passwd
},
"tenantId": tid
}}
try:
_res = requests.post(_api, data=json.dumps(_body), headers=_header)
return (json.loads(_res.text))["access"]["token"]["id"]
except (ValueError, NameError, ConnectionError, RequestException, HTTPError) as e:
print('Error: Could not get ConoHa token text.', e)
sys.exit()
def show_flavor_uuid(tid, token):
''' Function of getting Conoha Server Plan(flvor) name and ID'''
_api = 'https://compute.tyo1.conoha.io/v2/' + tid + '/flavors/detail'
_header = {'Accept': 'application/json', 'X-Auth-Token': token}
try:
_res = requests.get(_api, headers=_header)
for server in json.loads(_res.content)['flavors']:
print('{name} => {id}'.format(name=server['name'], id=server['id']))
except (ValueError, NameError, ConnectionError, RequestException, HTTPError) as e:
print('Error: Could not get ConoHa Plan(flavor) name and uuid.¥n', e)
sys.exit()
def main():
# Get API token
Token = get_conoha_token(TENANT, APIUSER, APIPASS)
# Get Flavor UUID
show_flavor_uuid(TENANT, Token)
if __name__ == '__main__':
main()
仕様
- {APIユーザー名}、{APIパスワード}、{テナントID}はいずれもConoHa 管理コンソールから取得して、置き換えてください。手順はこちらをご覧ください。
- Python3 で動作します。動作確認は Python 3.6 環境。
- Requestsモジュールを別途インストールしておいてください。
出力結果
下記の形式で表示します。
プラン名 => プランID(flavor UUID)
2018年9月時点で提供されてるプランはこちらですね。
g-2gb => 294639c7-72ba-43a5-8ff2-513c8995b869 g-16gb => 3aa001cd-95b6-46c9-a91e-e62d6f7f06a3 g-4gb => 62e8fb4b-6a26-46cd-be13-e5bbf5614d15 g-1gb => 7eea7469-0d85-4f82-8050-6ae742394681 g-8gb => 965affd4-d9e8-4ffb-b9a9-624d63e2d83f g-32gb => a20905c6-3733-46c4-81cc-458c7dca1bae g-64gb => c2a97b05-1b4b-4038-bbcb-343201659279 g-512mb => d92b02ce-9a4f-4544-8d7f-ae8380bc08e7
注意:上記で紹介したプラン一覧はどんどん変わっていくはずです。IDもアカウントごとに違ったりするかもしれませんので、各自で一度は全件取得してみた方が無難だと思います。
ConoHaで提供されている全プラン一覧を取得するPythonスクリプト まとめ
ConoHa VPS は、安価なVPSながら非常に多様なAPIが揃っていて便利ですね。
ただ、今回ご紹介したスクリプト単体では、さほど役に立つものではありません。下記と併用する必要があります。
次のような作業をしたい場合に役立てていただければと思います。
なお、匠は下記の書籍をかじった程度のプログラミング能力しかありませんので、プログラムソースに違和感があれば是非ともご指摘くださいませ。
