Python

Python

A SoftLayer, uma empresa IBM, fornece um pacote de API baseada em Python que tira o peso de fazer chamadas de API XML-RPC manuais. Nossa API baseada em Python requer pelo menos Python 2.6. Para instalar o pacote da Python no diretório site-packages da instalação da Python, execute o comando a seguir:


pip install softlayer

Consulte nossa documentação de ligações da Python para obter mais opções de instalação.

Fazendo chamadas de API

Quando o cliente da API estiver instalado, a primeira coisa a fazer é importar o pacote da SoftLayer para seu script. Use a linha a seguir para fazer isso:

import SoftLayer

Em seguida, precisamos criar um objeto do cliente. O fragmento de código abaixo fornece um exemplo de configuração de um cliente da API:

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

Quando o objeto do cliente da API estiver pronto, poderemos fazer chamadas com ele. A seguir saiba como obter detalhes da conta para a conta atual. A chamada não aceita nenhum parâmetro e não requer um ID, portanto, é o ponto de início natural.

client['Account'].getObject()

A seguir, saiba como criar uma nova Instância de computação do CloudLayer, que requer o uso do registro do Virtual Guest. O registro do Virtual Guest é um tipo complexo que é passado como um dicionário Python.

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

A seguir, saiba como criar uma nova zona de domínio em nosso serviço DNS.

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

Agora que temos uma zona criada para nosso domínio, o exemplo a seguir mostra como incluir um registro A nessa zona após o fato. Observe como parâmetros são passados como argumentos posicionais e que o ID do domínio necessário é passado usando o argumento da palavra-chave ID. Este exemplo usa o ID do domínio criado na última chamada. [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'])

Usando máscaras de objetos

Máscaras de objetos permitem controlar quais atributos são retornados em cada chamada. Elas podem ser usadas para ir muito mais profundamente em um objeto para ser bem específico[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)

Usando limites de resultados

A API da SoftLayer permite determinar limites para o número de resultados retornados e deslocamentos para controlar melhor a quantia de dados retornados em determinadas chamadas. Abaixo, está um exemplo mostrando paginação.

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

Manipulação de erros

Erros que ocorrem ao fazer chamadas da API da SoftLayer aparecem como exceções. O script a seguir fornece um exemplo de como um erro de API pode ser manipulado. Nesse caso, nós simplesmente imprimimos os detalhes do erro e saímos:

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.

Gerenciadores

Tudo acima desta seção abordou como usar o cliente da API base para interagir com a API XML-RPC documentada aqui no SLDN. As ligações da Python também têm gerenciadores que ocultam alguma funcionalidade de chamadas de API diretas. Para referência de todos os gerenciadores disponíveis, consulte nossa documentação do cliente Python da API.

A criação de uma nova Instância de computação do CloudLayer, como fizemos acima, teria uma aparência semelhante a esta, usando nossos gerenciadores de cliente Python da API (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)

Abaixo está um exemplo de listagem de servidores de hardware com mais de 8 gigabytes de memória no datacenter dal05.

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

Os gerenciadores são uma boa maneira de ser apresentado a um subconjunto menor da API e fornecer uma referência para executar tarefas comuns.

Mais recursos

As ligações da Python são desenvolvidas publicamente no GitHub. Novos recursos são desenvolvidos e erros são relatados por meio do Rastreamento integrado de problemas do GitHub. A documentação completa do cliente Python da API da SoftLayer está disponível aqui. As ligações também têm uma interface da linha de comandos que não foi mencionada aqui. É possível encontrar mais informações sobre isso no site de documentação completa.