Mise en route avec les CCI

Dans le contexte de l'API de SoftLayer, les CCI (CloudLayer Computing Instances) de SoftLayer sont représentées par les objets SoftLayer_Virtual_Guest. Le service SoftLayer_Virtual_Guest permet une interaction avec une CCI. Vous pouvez interagir avec toutes les CCI de votre compte via le service SoftLayer_Account.

Création

Pour commander de nouvelles CCI, vous devez passer par SoftLayer_Virtual_Guest::createObject.
Dans un premier temps, un objet de modèle SoftLayer_Virtual_Guest contenant les détails de la CCI est créé. Dans chaque objet de modèle de CCI, les propriétés suivantes doivent être définies :

  • hostname - Nom d'hôte de la nouvelle CCI
  • domain - Nom de domaine de la nouvelle CCI
  • startCpus - Nombre de cœurs de traitement
  • maxMemory - Mémoire allouée en Mo
  • hourlyBillingFlag - Valeur true pour une facturation à l'heure, false pour une facturation au mois
  • operatingSystemReferenceCode - Code indiquant le système d'exploitation à installer
  • localDiskFlag - Valeur true pour une configuration de CCI avec des disques locaux, false avec des disques 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);

Toutes les options de la commande de CCI peuvent être récupérées avec SoftLayer_Virtual_Guest::getCreateObjectOptions.
La méthode createObject() entraîne des frais pour le compte. Il est donc préférable de tester la création de CCI sans passer de commande avec SoftLayer_Virtual_Guest::generateOrderTemplate pour générer un objet de commande. Le SoftLayer_Container_Product_Order renvoyé par cette méthode peut être passé à SoftLayer_Product_Order::verifyOrder qui signale les problèmes susceptibles d'empêcher le traitement de la commande.

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

Liste

Vous pouvez collecter la liste de toutes les CCI auprès du service SoftLayer_Account avec la méthode SoftLayer_Account::getVirtualGuests. Cette méthode renvoie une matrice d'objets de type de données SoftLayer_Virtual_Guest.

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

Cette liste complète est souvent utilisée pour récupérer les informations sur toutes les CCI d'un compte et est également utile pour rechercher une CCI dont vous ne connaissez pas l'ID.

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

Détails

Pour obtenir des informations sur une CCI, utilisez SoftLayer_Virtual_Guest::getObject qui renvoie un objet SoftLayer_Virtual_Guest. Les masques d'objet permettent d'inclure les données en dehors des propriétés locales de SoftLayer_Virtual_Guest. Vous trouverez ci-après un exemple montrant comment utiliser getObject sur le service SoftLayer_Virtual_Guest avec un masque d'objet qui fournit les mots de passe du système d'exploitation installé sur le serveur.

$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);

Comme nous avons défini plusieurs propriétés locales, vous remarquerez que la sortie comprend uniquement l'ensemble limité de propriétés locales définies dans le masque en plus des propriétés relationnelles introduites avec le masque d'objet.

Annulation

Pour annuler des CCI, vous devez extraire leur ID du service SoftLayer_Account. Dans cet exemple, nous retirons tous les invités virtuels du compte et utilisons le nom d'hôte pour localiser l'invité que nous voulons annuler. Cette procédure doit être utilisée avec précaution car le nom d'hôte d'un invité virtuel n'est pas unique.
SoftLayer_Virtual_Guest::deleteObject

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

Cette méthode annule immédiatement l'instance de traitement correspondant à l'ID indiqué.
Remarque : L'arrêt d'une instance avec SoftLayer_Virtual_Guest::pause n'interrompt pas la facturation. Une instance doit être annulée/détruite pour que la facturation cesse.

Réamorçage

Pour exécuter le cycle extinction/allumage d'une CCI, deux solutions sont possibles :