ホントは他のことをしようと思ってて、それにはAuto Scaleの情報が必要だったのだけど、SoftLayer CLIにAuto Scale関連のコマンドがまだないようなので、ついでにスクリプトを作ってみた。
とりあえず、Auto Scaleで追加されたメンバーの情報を取得する方法は分かった。
sl_as.py
# !/usr/bin/env python
# -*- coding: utf-8 -*-
from prettytable import PrettyTable
import SoftLayer
import sluser
SL_USERNAME = sluser.SL_USERNAME
SL_API_KEY = sluser.SL_API_KEY
_maskAutoScaleGroup = '''
virtualGuestMemberCount
'''
client = SoftLayer.Client(username=SL_USERNAME, api_key=SL_API_KEY)
autoScaleGroups = client['Account'].getScaleGroups(mask=_maskAutoScaleGroup)
_tableHeader = [
'id',
'asg name',
'dc',
'status',
'min',
'max',
'now',
'member prefix',
'members',
]
# Table definition
table = PrettyTable(_tableHeader)
table.padding_width = 1
for asg in autoScaleGroups:
m = ""
ms = ""
for a in asg['virtualGuestMembers'][0:]:
# m = str(a['virtualGuest']['id']) + ":" + a['virtualGuest']['hostname'][-4:]
m = a['virtualGuest']['hostname'][-4:]
ms = m + ' ' + ms
table.add_row(
[
asg['id'],
asg['name'],
asg['virtualGuestMemberTemplate']['datacenter']['name'],
asg['status']['keyName'],
asg['minimumMemberCount'],
asg['maximumMemberCount'],
asg['virtualGuestMemberCount'],
asg['virtualGuestMemberTemplate']['hostname'],
ms,
]
)
print(table)
exit()
result
+-------+------------------+-------+-----------+-----+-----+-----+---------------+---------+
| id | asg name | dc | status | min | max | now | member prefix | members |
+-------+------------------+-------+-----------+-----+-----+-----+---------------+---------+
| 54654 | autoscale_grp01 | hkg02 | SUSPENDED | 1 | 5 | 0 | asserver | |
| 34158 | TK-as-group | sng01 | ACTIVE | 1 | 5 | 1 | TK-as-member | e727 |
| 34758 | autosacle_yasuda | sng01 | SUSPENDED | 1 | 1 | 0 | sh1nobu | |
| 8254 | dai39-group | sng01 | ACTIVE | 1 | 1 | 1 | dai39-scale | cca8 |
+-------+------------------+-------+-----------+-----+-----+-----+---------------+---------+
membersのところは、Auto Scaleでの仮想サーバー追加時に作成される仮想サーバーのホスト名が prefix + "-xxxx" という名前で作られますが、そのxxxxの部分です。