CCI 入门

在 SoftLayer API 环境中,SoftLayer CloudLayer 云计算主机 (CCI) 通过 SoftLayer_Virtual_Guest 对象来表示。您可以通过 SoftLayer_Virtual_Guest 服务与特定的 CCI 进行交互,还可以通过 SoftLayer_Account 服务与您帐户上的所有 CCI 进行交互。

创建

可通过 SoftLayer_Virtual_Guest::createObject 来订购新的 CCI。
首先创建一个包含 CCI 详细信息的 SoftLayer_Virtual_Guest 模板对象。每个 CCI 模板对象至少需要定义以下属性:

  • hostname - 新 CCI 的主机名
  • domain - 新 CCI 的域名
  • startCpus - 处理器内核数
  • maxMemory - 分配的内存量(以 MB 为单位)
  • hourlyBillingFlag - 对于按小时计费,设置为 true;对于按月计费,设置为 false
  • operatingSystemReferenceCode - 用于指定要安装的操作系统的代码
  • localDiskFlag - 设置为 true 时,将使用本地磁盘来配置 CCI;设置为 false 时,将使用 SAN 磁盘来配置 CCI
$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);

可以使用 SoftLayer_Virtual_Guest::getCreateObjectOptions 来检索所有 CCI 订购选项。
createObject() 方法会产生帐户费用,因此最好是测试 CCI 创建操作,确保其不会导致使用 SoftLayer_Virtual_Guest::generateOrderTemplate 下单来生成订单对象。此方法返回的 SoftLayer_Container_Product_Order 可传递到 SoftLayer_Product_Order::verifyOrder,后者将通知任何会阻止处理订单的问题。

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

列出

可以使用 SoftLayer_Account::getVirtualGuests 方法从 SoftLayer_Account 服务中收集所有 CloudLayer 云计算主机的列表。此方法返回 SoftLayer_Virtual_Guest 数据类型对象的数组。

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

此完整列表通常用于检索有关帐户上所有 CCI 的信息,并且还有助于搜索其 ID 未知的特定 CCI。

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

详细信息

要获取有关特定 CCI 的信息,可以使用 SoftLayer_Virtual_Guest::getObject,它将返回 SoftLayer_Virtual_Guest 对象。对象掩码可用于包含 SoftLayer_Virtual_Guest 本地属性外部的数据。以下示例将 SoftLayer_Virtual_Guest 服务的 getObject 与对象掩码(提供服务器上安装的操作系统的密码)结合使用。

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

由于我们还定义了许多本地属性,因此请注意,除了由对象掩码引入的关系属性外,输出仅包含掩码中定义的本地属性的有限集合。

取消

可通过从 SoftLayer_Account 服务中提取 ID 来取消 CCI。在此示例中,我们将提取帐户中的所有虚拟访客,并使用主机名解析要取消的特定访客。由于虚拟访客的主机名不唯一,因此应谨慎使用此操作。
SoftLayer_Virtual_Guest::deleteObject

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

此方法可立即取消具有指定 ID 的云计算主机。
注:使用 SoftLayer_Virtual_Guest::pause 暂停云主机将不会停止计费。必须取消/销毁云主机才能停止计费。

重新启动

可通过以下两种方式来重新启动 CCI: