2015-10-02 1 views
-1

Lorsque j'utilise l'API de Google Cloud Compute en PHP, je peux démarrer, arrêter, supprimer des instances ainsi que créer et supprimer des disques.PHP: Erreur lors de la création de l'instance de serveur dans Google Cloud Compute

Cependant, en essayant de créer une instance, je continue à obtenir cette erreur

Valeur non valide pour

'' resource.disks terrain
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 

est la demande Ici, je fais

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

Toute aide sera grandement appréciée, merci.

+0

pourrait-downvoter me le faire savoir pourquoi il est un downvote? –

Répondre

0

Ok la solution était très simple (et stupide)

Au lieu de

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

Il est censé être

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