LibCloud\Compute\Providers\Rackspace\RackspaceProvider::createNode PHP Method

createNode() public method

public createNode ( Symfony\Component\HttpFoundation\ParameterBag $parameters )
$parameters Symfony\Component\HttpFoundation\ParameterBag
    public function createNode(ParameterBag $parameters)
    {
        if (null === $parameters->get('name')) {
            throw new \UnexpectedValueException('A name is required for the creation of a node');
        }
        if (null === $parameters->get('image')) {
            throw new \UnexpectedValueException('A NodeImage is required for the creation of a node');
        }
        if (null === $parameters->get('size')) {
            throw new \UnexpectedValueException('A NodeSize is required for the creation of a node');
        }
        $creationParameters = array_merge_recursive(array('name' => $parameters->get('name'), 'imageId' => $parameters->get('image')->getId(), 'flavorId' => $parameters->get('size')->getId()), $parameters->get('extra', array()));
        $server = $this->toServer();
        $response = $server->create($creationParameters);
        # request more info about the node
        $nodes = $this->listNodes($server->id);
        $node = $nodes[0];
        # fill in some image and size detail
        $node->setSize($parameters->get('size'));
        $node->setImage($parameters->get('image'));
        return $node;
    }

Usage Example

 /**
  * @depends testListSizes
  * @depends testListImages
  */
 public function testCreateNode($sizes, $images)
 {
     $this->addMockSubscriber($this->getTestFilePath('Server_Create'));
     $this->addMockSubscriber($this->getTestFilePath('Server'));
     $this->addMockSubscriber($this->getTestFilePath('Server_Meta'));
     $expectedCreatedNodeId = '2e1a538c-5238-4bd8-af7d-3727ef06d7b2';
     $parameters = new ParameterBag(array('name' => 'test-2-saucy', 'size' => $sizes[0], 'image' => $images[0]));
     $node = $this->provider->createNode($parameters);
     $this->assertInstanceOf(Node::class, $node, 'createNode returns an instance of a Node');
     $this->assertSame($expectedCreatedNodeId, $node->getId(), 'createNode successfully created a Node');
     $this->assertSame($parameters->get('size'), $node->getSize(), 'The Node was created with the requested size');
     $this->assertSame($parameters->get('image'), $node->getImage(), 'The Node was created with the requested image');
 }