виртуальная машина — PHP: ошибка при создании экземпляра сервера в Google Cloud Compute

Используя API Google Cloud Compute в PHP, я могу запускать, останавливать, удалять экземпляры, а также создавать и удалять диски.

Тем не менее, при попытке создать экземпляр я получаю эту ошибку

Неверное значение для поля ‘resource.disks’

PHP Fatal error:  Uncaught exception 'Google_Service_Exception' with message 'Error calling POST https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances: (400) Invalid value for field 'resource.disks': ''.  Boot disk must be specified.' in /var/www/html/google/google-api-php-client/src/Google/Http/REST

Вот просьба, которую я делаю

self::connectClient();

$computeService = new Google_Service_Compute($this->client);

if ($this->client->getAccessToken())
{
$googleNetworkInterfaceObj = new Google_Service_Compute_NetworkInterface();
$network = self::DEFAULT_NETWORK;
$googleNetworkInterfaceObj->setNetwork($network);

$diskObj = self::getDisk($instance_name);

$new_instance = new Google_Service_Compute_Instance();
$new_instance->setName($instance_name);
$new_instance->setMachineType(self::DEFAULT_MACHINE_TYPE);
$new_instance->setNetworkInterfaces(array($googleNetworkInterfaceObj));
$new_instance->setDisks(array(
"source"=>$diskObj->selfLink,
"boot"=>true,
"type"=>"PERSISTENT",
"deviceName"=>$diskObj->name,
));

$insertInstance = $computeService->instances->insert(self::DEFAULT_PROJECT,self::DEFAULT_ZONE_NAME, $new_instance);

Любая помощь будет высоко оценена, спасибо.

-1

Решение

Хорошо, решение было действительно простым (и глупым)

Вместо

$new_instance->setDisks(array(
"source"=>$diskObj->selfLink,
"boot"=>true,
"type"=>"PERSISTENT",
"deviceName"=>$diskObj->name,
));

Это должно быть

$new_instance->setDisks(array(
array(
'source'=>self::getDisk($instance_name)->selfLink,
'boot'=>true,
'type' => "PERSISTENT",
'deviceName'=>self::getDisk($instance_name)->name,
)
));
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]