NI+CのSoftLayerエンジニアの常田です。

SoftLayerのAPIでは色々な情報を取得できます。
あまり利用者が直接見ることがない情報などもここには色々書かれているのでたまに覗いていると新しい発見があったりします。

データセンター情報

今回は東京データセンターの周りの情報を見てみたいと思います。
実施するにあたり、SoftLayer API のはじめの一歩 を参考にして下さい。

データセンターの一覧

沢山ありますね。いつの間にか24データセンターが存在しています。この全てでプライベートネットワークを構成できるとかクラウド以外ではとても出来ない事ですね。
今回は東京データセンター(tok02)なので id=449604 をキーにして調べていきましょう。

>>> pp.pprint(client['Location_Datacenter'].getDatacenters())
[   {   'id': 265592, 'longName': 'Amsterdam 1', 'name': 'ams01', 'statusId': 2},
    {   'id': 814994, 'longName': 'Amsterdam 3', 'name': 'ams03', 'statusId': 2},
    {   'id': 3, 'longName': 'Dallas 1', 'name': 'dal01', 'statusId': 2},
    {   'id': 154770, 'longName': 'Dallas 2', 'name': 'dal02', 'statusId': 2},
    {   'id': 167092, 'longName': 'Dallas 4', 'name': 'dal04', 'statusId': 2},
    {   'id': 138124, 'longName': 'Dallas 5', 'name': 'dal05', 'statusId': 2},
    {   'id': 154820, 'longName': 'Dallas 6', 'name': 'dal06', 'statusId': 2},
    {   'id': 142776, 'longName': 'Dallas 7', 'name': 'dal07', 'statusId': 2},
    {   'id': 449494, 'longName': 'Dallas 9', 'name': 'dal09', 'statusId': 2},
    {   'id': 449506, 'longName': 'Frankfurt 2', 'name': 'fra02', 'statusId': 2},
    {   'id': 352494, 'longName': 'Hong Kong 2', 'name': 'hkg02', 'statusId': 2},
    {   'id': 142775, 'longName': 'Houston 2', 'name': 'hou02', 'statusId': 2},
    {   'id': 358694, 'longName': 'London 2', 'name': 'lon02', 'statusId': 2},
    {   'id': 449596, 'longName': 'Melbourne 1', 'name': 'mel01', 'statusId': 2},
    {   'id': 449600, 'longName': 'Mexico 1', 'name': 'mex01', 'statusId': 2},
    {   'id': 449610, 'longName': 'Montreal 1', 'name': 'mon01', 'statusId': 2},
    {   'id': 449500, 'longName': 'Paris 1', 'name': 'par01', 'statusId': 2},
    {   'id': 168642, 'longName': 'San Jose 1', 'name': 'sjc01', 'statusId': 2},
    {   'id': 18171, 'longName': 'Seattle', 'name': 'sea01', 'statusId': 2},
    {   'id': 224092, 'longName': 'Singapore 1', 'name': 'sng01', 'statusId': 2},
    {   'id': 449612, 'longName': 'Sydney 1', 'name': 'syd01', 'statusId': 2},
    {   'id': 449604, 'longName': 'Tokyo 2', 'name': 'tok02', 'statusId': 2},
    {   'id': 448994, 'longName': 'Toronto 1', 'name': 'tor01', 'statusId': 2},
    {   'id': 37473, 'longName': 'Washington 1', 'name': 'wdc01', 'statusId': 2}]

東京データセンターの所在

住所も取得できます。
未契約の状態で公開して良いのか不明なので一応適当にマスクしておきます。アカウントを作ればどのデータセンターがどこにあるのか調べることが出来ます。色々オープンですね。

>>> pp.pprint(client['Location_Datacenter'].getLocationAddress(id=449604))
{   'accountId': 1,
    'address1': 'x-x-x NNNN',
    'city': 'NNN-ku, Tokyo',
    'contactName': 'SoftLayer Technologies Japan K.K',
    'country': 'JP',
    'description': 'TOK02',
    'id': 15124,
    'isActive': 1,
    'locationId': 449604,
    'postalCode': 'xxx-xxxx',
    'type': {   'createDate': '2010-04-05T21:49:15-06:00',
                'id': 1,
                'keyName': 'SOFTLAYER_DATACENTER',
                'name': 'SoftLayer Datacenter (accepts customer DTS shipments)'}}

東京データセンターの機器構造

取得できるのはフロントエンド、バックエンドのルータの情報とFirewallの情報などが取れます。他のデータンターでは複数台情報が取得できますが東京データセンターはそれぞれ1つ登録されています。

Router

>>> pp.pprint(client['Location_Datacenter'].getHardwareRouters(id=449604,mask='fullyQualifiedDomainName'))
[   {   'fullyQualifiedDomainName': 'bcr01a.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'fcr01a.tok02.softlayer.com'}]

Firewall

dfという名前と、fwという名前が何かの役割を示しているのでしょう。
FQDNから見ると、先ほどのルータの名称(fcr01x)に関連する名前が見えるので各ルータ毎についているFirewallのようです。この場合、フロントカスタマールータ(fcr01a)の配下には、dfが20台、fwが2台あるようです。

>>> pp.pprint(client['Location_Datacenter'].getHardwareFirewalls(id=449604,mask='fullyQualifiedDomainName'))[   {   'fullyQualifiedDomainName': 'df01.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df02.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df03.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df04.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df05.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df06.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df07.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df08.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df09.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df10.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df11.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df12.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df13.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df14.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df15.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df16.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df17.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df18.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df19.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'df20.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'fw01.fcr01.tok02.softlayer.com'},
    {   'fullyQualifiedDomainName': 'fw02.fcr01.tok02.softlayer.com'}]

リージョン情報

あまりSoftLayerの中では「リージョン」という単語は出てこないのですが一部のサービスでは利用されています。東京データセンターのリージョンは「as-jpn-central-1」のようです。アジアは1つのリージョンとして扱われていた記憶があるのですがそうではないようですね。

>>> pp.pprint(client['Location_Datacenter'].getRegionalGroup(id=449604))
{   'description': 'as-jpn-central-1',
    'id': 302,
    'locationGroupType': {   'name': 'REGIONAL'},
    'locationGroupTypeId': 42,
    'name': 'as-jpn-central-1',
    'securityLevelId': ''}

まとめ

SoftLayerのAPIは色々取得できますが、その全てが管理ポータルからは見えるわけではないので調べていると面白いですね。
今回紹介した以外にも、LocationSoftLayer_Location_Datacenter | SoftLayer Development Network に載っているような情報がが取得できます。