Bluemix-Infra(SoftLayer)のデバイスのユーザー名とパスワードを一覧表示するスクリプト

#内容
Bluemix Infrastructure (旧SoftLayer)のデバイス（ベアメタルや仮想サーバー）のユーザー名とパスワードを、毎回ポータルにアクセスするのも煩わしくなってきたので、コマンドで一覧表示できるスクリプトをつくりました。

#参考記事
<a href="http://qiita.com/testnin2/items/35d269daf7c6966624f7" >ShinobiLayer: Virtual Serverの作成者や稼動ホストのRack/Slot情報を確認するスクリプト - Qiita</a>

#スクリプト

```py:getDevicesTable.py
import SoftLayer
import dateutil.parser
from prettytable import PrettyTable

# account info
client = SoftLayer.create_client_from_env()

objectmask_vitualGuests = """
	id,
	virtualGuests[
		id,
		notes,
		provisionDate,
		fullyQualifiedDomainName,
		primaryBackendIpAddress,
		primaryIpAddress,
		datacenter[
			longName
		],
		operatingSystem[
                        softwareLicense[
                                softwareDescription[
                                        name
                                ]
                        ],
                        passwords[
                                username,
                                password
                        ]
                ]
	]
"""

objectmask_hardware = """
	id,
	hardware[
		id,
		notes,
		provisionDate,
		fullyQualifiedDomainName,
		primaryBackendIpAddress,
		primaryIpAddress,
		datacenter[
			longName
		],
		operatingSystem[
			softwareLicense[
				softwareDescription[
					name
				]
			],
			passwords[		
				username,
				password
			]
		]
	]
"""

vg = client['Account'].getObject(mask=objectmask_vitualGuests)
hw = client['Account'].getObject(mask=objectmask_hardware)

virtualGuests=vg.keys()[0]
hardware=hw.keys()[0]

table = PrettyTable([
	'Device Name',
	'Device Type',
	'Location',
	'Public IP',
	'Private IP',
	'Start Date',
	'OS Name',
	'Username',
	'Password'])

for key in range(len(vg['virtualGuests'])):
	for key2 in range(len(vg['virtualGuests'][key]['operatingSystem']['passwords'])):
		table.add_row([
			vg['virtualGuests'][key]['fullyQualifiedDomainName'],
                	virtualGuests,
			vg['virtualGuests'][key]['datacenter']['longName'],
			vg['virtualGuests'][key].get('primaryIpAddress'),
			vg['virtualGuests'][key]['primaryBackendIpAddress'],
			dateutil.parser.parse(vg['virtualGuests'][key]['provisionDate']).strftime('%Y/%m/%d'),
			vg['virtualGuests'][key]['operatingSystem']['softwareLicense']['softwareDescription']['name'][:16],
			vg['virtualGuests'][key]['operatingSystem']['passwords'][key2]['username'],
			vg['virtualGuests'][key]['operatingSystem']['passwords'][key2]['password']
		])
for key in range(len(hw['hardware'])):
	for key2 in range(len(hw['hardware'][key]['operatingSystem']['passwords'])):
	        table.add_row([
        	        hw['hardware'][key]['fullyQualifiedDomainName'],
        	        hardware,
        	        hw['hardware'][key]['datacenter']['longName'],
			hw['hardware'][key].get('primaryIpAddress'),
        	        hw['hardware'][key]['primaryBackendIpAddress'],
        	        dateutil.parser.parse(hw['hardware'][key]['provisionDate']).strftime('%Y/%m/%d'),
			hw['hardware'][key]['operatingSystem']['softwareLicense']['softwareDescription']['name'][:16],
			hw['hardware'][key]['operatingSystem']['passwords'][key2]['username'],
			hw['hardware'][key]['operatingSystem']['passwords'][key2]['password']
        	])

print(table)
```


#実行結果の例
```
+-----------------------------------------------+---------------+----------+-----------------+---------------+------------+------------------+-----------------------------+---------------+
|                  Device Name                  |  Device Type  | Location |    Public IP    |   Private IP  | Start Date |     OS Name      |           Username          |    Password   |
+-----------------------------------------------+---------------+----------+-----------------+---------------+------------+------------------+-----------------------------+---------------+
| xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.vsphere.local | virtualGuests | Tokyo 2  |       None      | 10.133.xx.xxx | 2016/10/26 | Windows 2012 R2  |        Administrator        |    xxxxxxxx   |
|            win2012r2.softlayer.com            | virtualGuests | Tokyo 2  |  161.202.xxx.xx | 10.132.xx.xxx | 2016/05/09 | Windows 2012 R2  |        Administrator        |    xxxxxxxx   |
|              esx01.softlayer.com              |    hardware   | Tokyo 2  |  161.202.xxx.xx | 10.132.xx.xxx | 2016/04/19 | Customer Install |             root            |   xxxxxxxxx   |
|              esx02.softlayer.com              |    hardware   | Tokyo 2  |  161.202.xxx.xx | 10.132.xx.xxx | 2016/04/19 | Customer Install |             root            | xxxxxxxxxxxxx |
|             vyatta01.softlayer.com            |    hardware   | Tokyo 2  | 161.202.xxx.xxx | 10.132.xx.xxx | 2016/04/08 | Vyatta Subscript |             root            |    xxxxxxxx   |
|             vyatta01.softlayer.com            |    hardware   | Tokyo 2  | 161.202.xxx.xxx | 10.132.xx.xxx | 2016/04/08 | Vyatta Subscript |            vyatta           |    xxxxxxxx   |
+-----------------------------------------------+---------------+----------+-----------------+---------------+------------+------------------+-----------------------------+---------------+
```