Python

Python

SoftLayer, eine IBM Gesellschaft, bietet ein Python-basiertes API-Paket, das manuelle Aufrufe der XML-RPC-API vereinfacht. Zur Nutzung der Python-basierten API ist mindestens Python 2.6 erforderlich. Führen Sie den folgenden Befehl aus, um das Python-Paket im Verzeichnis für Python-Installationen zu installieren:


pip install softlayer

Weitere Installationsoptionen sind in der Dokumentation zu Python-Bindungen enthalten.

Durchführung von API-Aufrufen

Sobald der API-Client installiert ist, sollten Sie zuerst das SoftLayer-Paket in Ihr Script importieren. Verwenden Sie dafür die folgende Zeile:

import SoftLayer

Als Nächstes muss ein Clientobjekt erstellt werden. Das nachstehende Code-Snippet ist ein Beispiel für die Einrichtung eines API-Client:

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

Sobald Ihr API-Clientobjekt bereit ist, können damit Aufrufe durchgeführt werden. So können Sie die Accountdetails für den aktuellen Account abrufen. Für den Aufruf sind keine Parameter und keine ID erforderlich, es handelt sich daher um den natürlichen Ausgangspunkt.

client['Account'].getObject()

So können Sie eine neue CloudLayer-Computing-Instanz erstellen, für die die Verwendung des Virtual Guest-Datensatzes erforderlich ist. Der Virtual Guest-Datensatz ist ein komplexer Typ, der als Python-Wörterverzeichnis weitergegeben wird.

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

So können Sie eine neue Domänenzone in unserem DNS-Service erstellen.

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

Jetzt, wo wir eine Zone für unsere Domäne erstellt haben, zeigt das folgende Beispiel, wie Sie nachträglich einen „A“-Datensatz in diese Zone aufnehmen. Parameter werden als Positionsargumente weitergegeben und die erforderliche Domänen-ID wird unter Verwendung des ID-Schlüsselwortarguments weitergegeben. Dieses Beispiel verwendet die Domänen-ID, die im letzten Aufruf erstellt wurde.[Sarah Reese] (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'])

Verwendung von Objektmasken

Mit Objektmasken können Sie steuern, welche Attribute in einem Aufruf zurückgegeben werden. Sie können verwendet werden, um noch weiter in ein Objekt vorzudringen, um bestimmte [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)

Verwendung von Ergebnisbegrenzungen

In der SoftLayer-API kann die Anzahl zurückgegebener Ergebnisse und Offsets begrenzt werden, um das zurückgegebene Datenvolumen bei bestimmten Aufrufen besser steuern zu können. Nachstehend ein Beispiel zu Seitenumbrüchen.

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

Fehlerbehandlung

Fehler, die bei der Durchführung von Aufrufen der SoftLayer-API auftreten, werden als Ausnahmebedingungen dargestellt. Das folgende Script enthält ein Beispiel dafür, wie ein API-Fehler behandelt werden kann. In diesem Fall geben wir einfach die Einzelheiten zum Fehler aus und beenden:

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.

Manager

In den bisherigen Abschnitten haben Sie erfahren, wie der API-Basisclient verwendet wird, um mit der XML-RPC-API zu interagieren, die hier in SLDN dokumentiert wird. Die Python-Bindungen verfügen auch über Manager, die einige Funktionen direkter API-Aufrufe außer Acht lassen. Weitere Informationen zu allen verfügbaren Managern sind in der Dokumentation zum Python-Client der API enthalten.

Die Erstellung einer neuen CloudLayer-Computing-Instanz gemäß vorstehender Beschreibung würde bei Verwendung der Python-Client-Manager der API etwa wie folgt aussehen (unsure if Python API Client managers is right, but feel free to replace that with what is, if you need to):

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)

Nachstehend ein Beispiel für die Auflistung von Servern mit mehr als acht Gigabyte Speicher im Rechenzentrum dal05.

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

Die Manager bieten eine gute Möglichkeit, eine kleinere Untergruppe der API kennenzulernen, und eine Referenz zur Durchführung allgemeiner Tasks.

Weitere Ressourcen

Die Python-Bindungen werden öffentlich in GitHub entwickelt. Über GitHub Integrated Issue Tracking werden neue Features entwickelt und Fehler gemeldet. Die vollständige Dokumentation für den Python-Client der SoftLayer-API finden Sie hier. Die Bindungen verfügen zudem über eine Befehlszeilenschnittstelle, die hier nicht erwähnt wurde. Weitere Informationen darüber sind auf der Seite mit der vollständigen Dokumentation enthalten.