Cómo empezar con las CCI

En el contexto de la API de SoftLayer, las CCI (CloudLayer Computing Instances) de SoftLayer se representan mediante objetos SoftLayer_Virtual_Guest. El servicio SoftLayer_Virtual_Guest permite la interacción con una CCI específica y se puede interactuar con todas las CCI de la cuenta mediante el servicio SoftLayer_Account.

Creación

Los pedidos de nuevas CCI se realizan mediante SoftLayer_Virtual_Guest::createObject.
En primer lugar, se crea un objeto de plantilla de SoftLayer_Virtual_Guest que contiene los detalles de la CCI. Cada objeto de plantilla de CCI necesita, como mínimo, que se definan las siguientes propiedades:

  • hostname: nombre de host de la nueva CCI
  • domain: nombre de dominio de la nueva CCI
  • startCpus: número de núcleos de procesamiento
  • maxMemory: asignación de memoria en MB
  • hourlyBillingFlag: definido en true si la facturación es por horas, en false si es por meses
  • operatingSystemReferenceCode: código que especifica el sistema operativo que se tiene que instalar
  • localDiskFlag: si está definida en true, la CCI se configurará con discos locales, si está definida en false, se configurará con discos 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);

Es posible recuperar todas las opciones de pedidos de CCI con SoftLayer_Virtual_Guest::getCreateObjectOptions.
El método createObject() genera cargos en la cuenta, por lo que es mejor probar la creación de CCI sin que se realice un pedido en SoftLayer_Virtual_Guest::generateOrderTemplate que genere un objeto de pedido. El tipo SoftLayer_Container_Product_Order devuelto por este método se puede pasar por SoftLayer_Product_Order::verifyOrder, que señala cualquier problema que pudiese suponer un obstáculo en el procesamiento del pedido.

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

Listado

En el servicio SoftLayer_Account, se puede recuperar una lista con todas las CCI utilizando el método SoftLayer_Account::getVirtualGuests. Este método devuelve la matriz de objetos de tipo de datos SoftLayer_Virtual_Guest.

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

El listado completo suele utilizarse para recuperar información sobre todas las CCI de una cuenta. También resulta útil cuando se busca una CCI específica cuyo ID se desconoce.

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

Detalles

Para obtener información sobre una CCI específica, podemos utilizar SoftLayer_Virtual_Guest::getObject, que devuelve un objeto SoftLayer_Virtual_Guest. Se pueden utilizar máscaras de objeto para incluir los datos que se encuentran fuera de las propiedades locales de SoftLayer_Virtual_Guest. A continuación, se muestra un ejemplo del uso de getObject en el servicio SoftLayer_Virtual_Guest con una máscara de objeto que proporciona las contraseñas del sistema operativo instalado en el 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);

Aunque también hemos definido varias propiedades locales, fíjese en que la salida solo incluye un conjunto limitado de propiedades locales definidas en la máscara, además de las propiedades relacionales vinculadas a la máscara de objeto.

Cancelación

Para cancelar las CCI, extraiga el ID del servicio SoftLayer_Account. En este ejemplo, extraeremos todos los invitados virtuales de la cuenta y utilizaremos el nombre de host para analizar al invitado concreto que queramos cancelar. Esta funcionalidad debe utilizarse con cuidado, ya que el nombre de host de los invitados virtuales no es exclusivo.
SoftLayer_Virtual_Guest::deleteObject

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

Este método cancela de inmediato la instancia de sistema con el ID especificado.
Nota: si se utiliza SoftLayer_Virtual_Guest::pause para poner en pausa una CCI, la facturación no se detendrá. Para que esto suceda, debería cancelarse o destruirse la instancia.

Reinicio

El apagado y encendido de una CCI se puede efectuar de dos maneras: