Introdução a CCIs

No contexto da API da SoftLayer, CloudLayer Computing Instances (CCIs) da SoftLayer são apresentadas por objetos SoftLayer_Virtual_Guest. O serviço SoftLayer_Virtual_Guest permite a interação com uma CCI específica e você é capaz de interagir com todas as CCIs em sua conta por meio do serviço SoftLayer_Account.

Criando

Os pedidos de novas CCIs são feitos por meio de SoftLayer_Virtual_Guest::createObject.
Primeiro, um objeto de modelo SoftLayer_Virtual_Guest é criado contendo os detalhes da CCI. Cada objeto de modelo de CCI precisará pelo menos das propriedades a seguir definidas:

  • hostname - Nome do host da nova CCI
  • domain - Nome de domínio da nova CCI
  • startCpus - Número de núcleos de processamento
  • maxMemory - Alocação de memória em MB
  • hourlyBillingFlag - Configurar como true para faturamento por hora, como false para mensal
  • operatingSystemReferenceCode - Código para especificar qual OS instalar
  • localDiskFlag - Configurar para true irá configurar uma CCI com discos locais, false para discos da SAN
$virtualGuestClient = SoftLayer_SoapClient::getClient('SoftLayer_Virtual_Guest', null, $user, $key);
$virtualGuestTemplate = new stdClass();
$virtualGuestTemplate->hostname = 'test1';
$virtualGuestTemplate->domain = 'example.com';
$virtualGuestTemplate->startCpus = 1;
$virtualGuestTemplate->maxMemory = 1024;
$virtualGuestTemplate->hourlyBillingFlag = true;
$virtualGuestTemplate->operatingSystemReferenceCode = 'UBUNTU_LATEST';
$virtualGuestTemplate->localDiskFlag = false;
 
$result = $virtualGuestClient->createObject($virtualGuestTemplate);
print_r($result);

Todas as opções para fazer pedido de CCI podem ser recuperadas com SoftLayer_Virtual_Guest::getCreateObjectOptions.
O método createObject() incorre em encargos na conta, portanto, é melhor testar a criação da CCI sem que um pedido seja feito com SoftLayer_Virtual_Guest::generateOrderTemplate para gerar um objeto de pedido. O SoftLayer_Container_Product_Order retornado por esse método pode ser passado em SoftLayer_Product_Order::verifyOrder, que informa sobre quaisquer problemas que evitariam o processamento do pedido.

$orderClient = SoftLayer_SoapClient::getClient('SoftLayer_Product_Order', Null, $user, $key);
$orderContainer = $virtualGuestClient->generateOrderTemplate($virtualGuestTemplate);
print_r($orderClient->verifyOrder($orderContainer);

Listando

Uma lista de todas as CloudLayer Computing Instances pode ser reunida a partir do serviço SoftLayer_Account com o método SoftLayer_Account::getVirtualGuests. Esse método retorna uma matriz de objetos de tipos de dados SoftLayer_Virtual_Guest.

$accountClient = SoftLayer_SoapClient::getClient('SoftLayer_Account', Null, $user, $key);
$virtualGuests = $accountClient->getVirtualGuests();
print_r($virtualGuests);

Essa listagem completa é frequentemente usada para recuperar informações sobre todas as CCIs de uma conta e também é útil quando se está procurando uma CCI específica cujo ID é desconhecido.

$accountClient = SoftLayer_SoapClient::getClient('SoftLayer_Account', Null, $user, $key);
$virtualGuests = $accountClient->getVirtualGuests();
foreach ($virtualGuests as $virtualGuest) {
    if ($virtualGuest->hostname == "server1") {
        $serverId = $virtualGuest->id;
    }
}

Detalhes

Para obter informações sobre uma CCI específica, podemos usar SoftLayer_Virtual_Guest::getObject, que retorna um objeto SoftLayer_Virtual_Guest. Máscaras de objetos podem ser usadas para incluir dados fora das propriedades locais de SoftLayer_Virtual_Guest. Segue abaixo um exemplo de como usar getObject no serviço SoftLayer_Virtual_Guest com uma máscara de objeto que forneça as senhas para o sistema operacional instalado no servidor.

$guestClient = SoftLayer_SoapClient::getClient('SoftLayer_Virtual_Guest', $id, $user, $key);
$objectMask = "mask[id, hostname, domain, operatingSystem[passwords]]"
$guestClient->setObjectMask($objectMask);
$virtualGuest = $guestClient->getObject();
print_r($virtualGuest);

Como definimos também diversas propriedades locais, observe que a saída inclui somente o conjunto de propriedades locais limitado definido na máscara, além das propriedades relacionais trazidas pela máscara de objeto.

Cancelando

O cancelamento de CCIs pode ser feito efetuando pull do ID do serviço SoftLayer_Account. Neste exemplo, efetuamos pull de todos os guests virtuais da conta e usamos o nome do host para analisar o guest específico que desejamos cancelar. Isso deve ser usado com cuidado, já que o nome do host de um guest virtual não é exclusivo.
SoftLayer_Virtual_Guest::deleteObject

$guestClient = SoftLayer_SoapClient::getClient('SoftLayer_Virtual_Guest', $serverId, $user, $key);
$result = $guestClient->deleteObject();
print_r($result);

Esse método cancela imediatamente a Instância de computação com o ID especificado.
Nota: pausar uma instância com SoftLayer_Virtual_Guest::pause não interromperá o faturamento. Uma instância deve ser cancelada/destruída para que o faturamento deixe de ocorrer.

Reinicializando

O ciclo de ativação de uma CCI pode ser executado de duas maneiras: