LoginSignup
6
1

More than 5 years have passed since last update.

Openstackで立てたVMのフレーバー情報を確認するコマンド

Posted at

概要

払い出したVMのフレーバーを確認するために1つ1つのVMをGUIなどで確認するのは手間がかかるため、novaコマンドを利用してコマンド一発で全VMのフレーバーを確認するスクリプトを作成してみました。

使うこと

  • python2
  • VMの一覧を確認するためにnova list --fields を使います。このとき、VMのidは数字および小文字の羅列が8文字以上存在することを想定しています。
  • フレーバーの一覧を確認するためにnova flavor-listを使います。このとき、Is_Public列のTrueとFalseで必要な行を取得します。
  • テナントIDを引数として渡します。(テナントIDを調べるのもぶっちゃけ面倒なので、テナント名に命名規則があるなら、それを特定するようなコードを挟むと良いです。)
# -*- coding: utf-8 -*-

import sys
import commands

# nova listの結果からVM名、flavorIDだけ取り出してリスト化します。
def flavorCount(tenant):
    dic = flavorDict()
    novaResult = commands.getoutput("export OS_TENANT_ID=" + tenant + " ; nova list --fields name,flavor | grep '[0-9a-z]\{8\}' | awk -F '|' '{print $3 $4}' | sed -e 's/[ ]^*//'")
    for column in novaResult.splitlines():
        vm = column.split()
        if len(vm) == 2:
            vm[1] = dic[vm[1]]
            print(vm)

# nova flavor-listの結果からflavorID, Nameを取り出して辞書化します。
def flavorDict():
    fravorDictionary = {}
    flavorListResult = commands.getoutput("nova flavor-list | grep -e 'True' -e 'False' | awk -F '|' '{print $2 $3}' | sed -e 's/[ ]^*//'")
    for column in flavorListResult.splitlines():
        vm = column.split()
        if len(vm) == 2:
            fravorDictionary[vm[0]] = vm[1]
    return fravorDictionary

if __name__ == '__main__':
    args = sys.argv
    if len(args) < 2 or len(args) > 2:
        print('usage: thiscode.py tenant_id')
        sys.exit()

    tenant = args[1]
    flavorCount(tenant.decode())

    print('Completed.')

実行例

$ python thiscode.py 5wfd9ab3109aee53bbb8e91ad6a4523d
['vm1', 'm1-large']
['vm2', 'm1-small']
['vm3', 'm2-small']
['vm4', 'm1-medium']
Completed.

今後

VMごとの起動時間・課金情報とかと組み合わせると、VMのフレーバー別の使用状況も見れたりしてよさそうです。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1