Python

Python

SoftLayer, an IBM company は、XML-RPC API の手動呼び出しから面倒な作業を取り除く Python ベースの API パッケージを提供します。Python ベース API には、Python 2.6 以上が必要です。Python パッケージを Python インストール済み環境の site-packages ディレクトリーにインストールするには、次のコマンドを実行してください。


pip install softlayer

その他のインストール・オプションについては、Python bindings documentation を参照してください。

API 呼び出しの実行

API クライアントがインストールされた後、最初の作業は、SoftLayer パッケージをスクリプトにインポートすることです。これを行うには、次の行を使用してください。

import SoftLayer

次に、クライアント・オブジェクトを作成する必要があります。以下のコード・スニペットは、API クライアントのセットアップ例を示しています。

import SoftLayer
client = SoftLayer.Client(username='YOUR_USERNAME', api_key='YOUR_API_KEY')

API クライアント・オブジェクトの準備ができたら、このオブジェクトで呼び出しを行うことができます。最新のアカウントの詳細を取得する方法は次のとおりです。この呼び出しではパラメーターを使用せず、ID も必要ありません。したがって、これが開始点になります。

client['Account'].getObject()

新しい CloudLayer コンピューティング・インスタンスの作成方法は次のとおりです。これには、仮想ゲスト・レコードを使用する必要があります。仮想ゲスト・レコードは複合タイプであり、Python ディクショナリーとして渡されます。

 
client['Virtual_Guest'].createObject({
    'hostname': 'myhostname',
    'domain': 'example.org',
    'startCpus': 1,
    'maxMemory': 1024,
    'hourlyBillingFlag': 'true',
    'operatingSystemReferenceCode': 'UBUNTU_LATEST',
    'localDiskFlag': 'false'
})

DNS サービスで新しいドメイン・ゾーンを作成する方法は次のとおりです。

 
new_domain = client['Dns_Domain'].createObject({{
    'name' : 'example.org',
    'resourceRecords' => [
        {
            'host' : '@',
            'data' : '127.0.0.1',
            'type' : 'a',
        }
    ]
})

これでドメイン用にゾーンが作成されました。以下の例は、事後にそのゾーンに A レコードを追加する方法を示しています。パラメーターが定位置引数として渡され、必要なドメイン ID が id キーワード引数を使用して渡される方法に注目してください。この例では、最後の呼び出しで作成されたドメイン ID を使用しています。[SarahReese] (Just a question – should Domain ID be capitalized or should be lower case?)

new_record = client['Dns_Domain'].createARecord('myhost', '127.0.0.1', 86400, id=new_domain['id'])
 
print("New A record id: %", new_record['id'])

オブジェクト・マスクの使用

オブジェクト・マスクを使用すると、各呼び出しで戻される属性を制御できます。オブジェクトをもっと深く探って特定のものを入手するのに使用できます。[Sarah Reese] We’re missing the rest of this sentence.

# Because of the object mask that we're using we will retrieve the following
# for each server:
# * operating system passwords
# * all network components
# * the datacenter the server is located in
# * the number of processors
object_mask = 'operatingSystem.passwords, networkComponents, datacenter, processorCount'
hardware = client['Account'].getHardware(mask=object_mask)

結果制限の使用

SoftLayer API では、特定の呼び出しで戻されるデータ量の制御を強化するために、戻される結果の数とオフセットを制限することができます。ページ編集を示す例は次のとおりです。

client['Account'].getVirtualGuests(limit=10, offset=0)  # Page 1
client['Account'].getVirtualGuests(limit=10, offset=10)  # Page 2

エラー処理

SoftLayer API 呼び出し時に発生するエラーは、例外として表示されます。次のスクリプトは、API エラーの処理方法の例を示しています。この場合、単にエラーの詳細を表示して終了します。

client = SoftLayer.Client(username='invalid', api_key='invalid')
 
try:
    account = client['Account'].getObject()
except SoftLayer.SoftLayerAPIError as e:
    print("Unable to retrieve account information faultCode=%s, faultString=%s"
          % (e.faultCode, e.faultString))
    exit(1)
# This should output:
# Unable to retrieve account information faultCode=SoftLayer_Exception, faultString=Invalid API token.

マネージャー

このセクションの上記の内容はすべて、基本 API クライアントを使用して、SLDN 上でここに記載されている XML-RPC API と対話する方法を取り扱いました。Python バインディングには、一部の機能を直接 API 呼び出しから取り出すマネージャーもあります。使用可能なすべてのマネージャーについては、API Python Client documentation を参照してください。

上記で行った新しい CloudLayer コンピューティング・インスタンスの作成は、Python API クライアント・マネージャーを使用した方法に少し似ています。(Python API クライアント・マネージャーが適切かどうか分かりませんが、必要に応じて置き換えてください)

import SoftLayer
client = SoftLayer.Client(username='YOUR_USERNAME', api_key='YOUR_API_KEY')
cci_manager = SoftLayer.CCIManager(client)
cci_manager.create_instance(
    hostname='myhostname',
    domain='example.org',
    cpus=1,
    memory=1024,
    hourly=True,
    os_code='UBUNTU_LATEST',
    local_disk=False)

dal05 データ・センターで 8 ギガバイトを超えるメモリーを備えたハードウェア・サーバーをリストした例は次のとおりです。

hardware_manager = SoftLayer.HardwareManager(client)
hardware = hardware_manager.list_hardware(datacenter='dal05', memory='> 8')

マネージャーは、小規模な API のサブセットに導入するのに適した方法であり、一般的なタスクを実行するための参考になります。

その他のリソース

Python バインディングは、GitHub で公開で開発されています。GitHub の Integrated Issue Tracking を介して、新機能が開発され、バグが報告されます。SoftLayer API Python クライアントの全資料はここで入手できます。バインディングには、ここで言及していないコマンド・ライン・インターフェースもあります。それに関する詳細情報は全資料サイトにあります。