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