ConoHaで提供されているプランの一覧を取得するPythonスクリプト

この記事は約 6 分で読めます。

安価で、豊富な機能を持つ管理コンソールと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が揃っていて便利ですね。

ただ、今回ご紹介したスクリプト単体では、さほど役に立つものではありません。下記と併用する必要があります。

ConoHaで提供されているサーバーイメージの一覧を表示するPythonスクリプト
安価で、豊富な機能を持つ管理コンソールとAPIが充実してるVPSサービスプロバイダーとして定評のある「ConoHa」。このブログでも非常にお世話になっています。このConoHaでは、VPS向けに多くのサーバーイメージが提供されており...

次のような作業をしたい場合に役立てていただければと思います。

ConoHaでサーバーを自動作成するためのPythonスクリプト
安価で、豊富な機能が充実してる VPS サービスプロバイダーとして定評のある「ConoHa」。このブログでは、とてもとてもお世話になっています。この ConoHa では、APIを使ってサーバーやネットワークの操作が自由自在にでき...

なお、匠は下記の書籍をかじった程度のプログラミング能力しかありませんので、プログラムソースに違和感があれば是非ともご指摘くださいませ。


ITセキュリティを生業とするエンジニアという名の社畜です。妻と子供一人と共に、毎日を楽しく生きてます。このブログを通じて、ただひたすらに共有欲を発散しています。詳しいプロフィールはこちら