/**
  * write metadata to Virtual File System
  *
  * @param array $metadata
  * @param string $hostname
  */
 public function __construct(array $metadata, $hostname = '')
 {
     parent::__construct();
     $this->vfsRoot = \org\bovigo\vfs\vfsStream::setup(empty($hostname) ? $this->hostname : $hostname);
     $file = \org\bovigo\vfs\vfsStream::newFile('latest');
     $file->write('dynamic' . PHP_EOL . 'meta-data' . PHP_EOL . 'user-data');
     $this->vfsRoot->addChild($file);
     if (array_key_exists('block-device-mapping', $metadata)) {
         $this->writeBlockDeviceMappingToVfs($metadata['block-device-mapping']);
         unset($metadata['block-device-mapping']);
     }
     if (array_key_exists('public-keys', $metadata)) {
         $this->writePublicKeysToVfs($metadata['public-keys']);
         unset($metadata['public-keys']);
     }
     if (array_key_exists('network/interfaces/macs', $metadata)) {
         $this->writeNetworkToVfs($metadata['network/interfaces/macs']);
         unset($metadata['network/interfaces/macs']);
     }
     if (array_key_exists('user-data', $metadata)) {
         $file = \org\bovigo\vfs\vfsStream::newFile('latest/user-data');
         $file->write($metadata['user-data']);
         $this->vfsRoot->addChild($file);
         unset($metadata['user-data']);
     }
     $this->writeArrayToVfs($metadata, $this->getMetadataPath());
 }