Python

Python

SoftLayer, una compañía de IBM, proporciona un paquete de API basado en Python que agiliza la realización de llamadas de API XML-RPC manuales. Nuestra API basada en Python requiere Python 2.6 como mínimo. Para instalar el paquete de Python en el directorio site-packages de su instalación de Python, ejecute el siguiente mandato:


pip install softlayer

Consulte nuestra Documentación de enlaces de Python para ver más opciones de instalación.

Realización de llamadas de API

Una vez instalado el cliente de API, lo primero que hay que hacer es importar el paquete de SoftLayer al script. Para ello, utilice la siguiente línea:

import SoftLayer

A continuación, debemos crear un objeto de cliente. El siguiente fragmento de código proporciona un ejemplo de configuración de un cliente de API:

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

Cuando el objeto del cliente de API esté preparado, podremos realizar llamadas con él. La forma de obtener los detalles de la cuenta para la cuenta actual es la siguiente. La llamada no utiliza parámetros y no requiere un ID, por lo que es el punto de partida natural.

client['Account'].getObject()

A continuación, se muestra cómo crear una nueva instancia de sistema de CloudLayer, que requiere el uso del registro de invitado virtual. El registro de invitado virtual es un tipo complejo, que se pasa como un diccionario de Python.

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

Así es cómo se crea una nueva zona de dominio en nuestro servicio DNS.

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

Ahora que hemos creado una zona para nuestro dominio, el siguiente ejemplo muestra cómo añadir un registro A en esa zona después del hecho. Observe cómo se pasan los parámetros como argumentos posicionales y cómo se pasa el id de dominio necesario utilizando el argumento de palabra clave id. En este ejemplo se utiliza el id de dominio que se ha creado en la última llamada.[Sarah Reese] (Una pregunta: el ID de Dominio debe ir en mayúsculas o minúsculas?)

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

Utilización de máscaras de objeto

Las máscaras de objeto permiten controlar qué atributos se devuelven en cada llamada. Pueden utilizarse para profundizar mucho más en un objeto para obtener datos específicos de [Sarah Reese] Falta el resto de la frase.

# 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)

Utilización de los límites de resultados

La API de SoftLayer permite limitar el número de resultados devueltos y utilizar desplazamientos para controlar mejor la cantidad de datos devueltos en determinadas llamadas. El siguiente ejemplo muestra la paginación.

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

Manejo de errores

Los errores que se producen cuando se realizan llamadas de API de SoftLayer aparecen como excepciones. El siguiente script proporciona un ejemplo de cómo puede manejarse un error de API. En este caso, sólo imprimimos los detalles del error y salimos:

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.

Gestores

En esta sección se ha analizado cómo utilizar el cliente de API base para interactuar con la API XML-RPC que se describe aquí en SLDN. Los enlaces de Python también tienen gestores que hacen una abstracción de la funcionalidad de las llamadas de API directas. Para obtener una referencia de todos los gestores disponibles, consulte nuestra Documentación del cliente Python de API.

La creación de una nueva instancia de sistema de CloudLayer, como hemos hecho anteriormente, será parecida al siguiente ejemplo, utilizando nuestros gestores de cliente de API Python (no estoy seguro de que gestores de cliente de API Python sea correcto, pero puede sustituirse por lo que sea necesario):

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)

A continuación, se muestra un ejemplo de cómo listar los servidores de hardware con más de 8 gigabytes de memoria en el centro de datos dal05.

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

Los gestores son una buena forma de conocer un subconjunto más pequeño de las API y sirven como referencia para realizar tareas comunes.

Más recursos

Los enlaces de Python se han desarrollado públicamente en GitHub. Se han desarrollado nuevas características y se han notificado errores en GitHub's Integrated Issue Tracking. Aquí encontrará la documentación completa del cliente Python de la API de SoftLayer. Los enlaces también tienen una interfaz de línea de mandatos que no se ha citado en este documento. Puede encontrar más información al respecto en el sitio de documentación completa.