Ejemplo n.º 1
0
 protected function createJson()
 {
     // Convert some values
     $this->metadata->sdk = $this->getService()->getClient()->getUserAgent();
     if ($this->image instanceof ImageInterface) {
         $this->imageRef = $this->image->getId();
     }
     if ($this->flavor instanceof Flavor) {
         $this->flavorRef = $this->flavor->id;
     }
     // Base object
     $server = (object) array('name' => $this->name, 'imageRef' => $this->imageRef, 'flavorRef' => $this->flavorRef);
     if ($this->metadata->count()) {
         $server->metadata = $this->metadata->toArray();
     }
     // Boot from volume
     if ($this->volume instanceof Volume) {
         $this->checkExtension('os-block-device-mapping-v2-boot');
         $server->block_device_mapping_v2 = array();
         $server->block_device_mapping_v2[] = (object) array('source_type' => 'volume', 'destination_type' => 'volume', 'uuid' => $this->volume->id, 'boot_index' => 0, 'delete_on_termination' => (bool) $this->volumeDeleteOnTermination);
     }
     // Networks
     if (is_array($this->networks) && count($this->networks)) {
         $server->networks = array();
         foreach ($this->networks as $network) {
             if (!$network instanceof NetworkInterface) {
                 throw new Exceptions\InvalidParameterError(sprintf('When creating a server, the "networks" key must be an ' . 'array of objects which implement OpenCloud\\Networking\\Resource\\NetworkInterface;' . 'variable passed in was a [%s]', gettype($network)));
             }
             if (!($networkId = $network->getId())) {
                 $this->getLogger()->warning('When creating a server, the ' . 'network objects passed in must have an ID');
                 continue;
             }
             // Stock networks array
             $server->networks[] = (object) array('uuid' => $networkId);
         }
     }
     // Personality files
     if (!empty($this->personality)) {
         $server->personality = array();
         foreach ($this->personality as $path => $data) {
             // Stock personality array
             $server->personality[] = (object) array('path' => $path, 'contents' => $data);
         }
     }
     // Keypairs
     if (!empty($this->keypair)) {
         if (is_string($this->keypair)) {
             $server->key_name = $this->keypair;
         } elseif (isset($this->keypair['name']) && is_string($this->keypair['name'])) {
             $server->key_name = $this->keypair['name'];
         } elseif ($this->keypair instanceof Keypair && $this->keypair->getName()) {
             $server->key_name = $this->keypair->getName();
         }
     }
     // Cloud-init executable
     if (!empty($this->user_data)) {
         $server->user_data = $this->user_data;
     }
     return (object) array('server' => $server);
 }
 protected function createJson()
 {
     // Convert some values
     $this->metadata->sdk = $this->getService()->getClient()->getUserAgent();
     if ($this->image instanceof ImageInterface) {
         $this->imageRef = $this->image->getId();
     }
     if ($this->flavor instanceof Flavor) {
         $this->flavorRef = $this->flavor->id;
     }
     // Base object
     $server = (object) array('name' => $this->name, 'imageRef' => $this->imageRef, 'flavorRef' => $this->flavorRef);
     if ($this->metadata->count()) {
         $server->metadata = $this->metadata->toArray();
     }
     // Networks
     if (is_array($this->networks) && count($this->networks)) {
         $server->networks = array();
         foreach ($this->networks as $network) {
             if (!$network instanceof Network) {
                 throw new Exceptions\InvalidParameterError(sprintf('When creating a server, the "networks" key must be an ' . 'array of OpenCloud\\Compute\\Network objects with valid ' . 'IDs; variable passed in was a [%s]', gettype($network)));
             }
             if (empty($network->id)) {
                 $this->getLogger()->warning('When creating a server, the ' . 'network objects passed in must have an ID');
                 continue;
             }
             // Stock networks array
             $server->networks[] = (object) array('uuid' => $network->id);
         }
     }
     // Personality files
     if (!empty($this->personality)) {
         $server->personality = array();
         foreach ($this->personality as $path => $data) {
             // Stock personality array
             $server->personality[] = (object) array('path' => $path, 'contents' => $data);
         }
     }
     // Keypairs
     if (!empty($this->keypair)) {
         if (is_string($this->keypair)) {
             $server->key_name = $this->keypair;
         } elseif (isset($this->keypair['name']) && is_string($this->keypair['name'])) {
             $server->key_name = $this->keypair['name'];
         } elseif ($this->keypair instanceof Keypair && $this->keypair->getName()) {
             $server->key_name = $this->keypair->getName();
         }
     }
     // Cloud-init executable
     if (!empty($this->user_data)) {
         $server->user_data = $this->user_data;
     }
     return (object) array('server' => $server);
 }