protected function writeHostsFile()
 {
     $config = Template::render('lxc/project-hosts.twig', array('hostname' => $this->getContainer()->getHostname()));
     $file = '/var/lib/lxc/' . $this->getContainer()->getName() . '/rootfs/etc/hosts';
     if ($this->getContainer()->isProjectBranch()) {
         $project = $this->getEntityManager()->getRepository('Rainmaker:Container')->getParentContainer($this->getContainer());
         $file = '/var/lib/lxc/' . $project->getName() . '/rootfs/var/lib/lxc/' . $this->getContainer()->getName() . '/rootfs/etc/hosts';
     }
     $this->getFilesystem()->putFileContents($file, $config);
 }
 /**
  * Writes the Linux NFS exports file to disk.
  */
 protected function writeExportsFile()
 {
     $exports = Template::render('exports.twig', array('exports' => $this->getExports()));
     $exportsFile = $this->getFilesystem()->getFileContents('/etc/exports');
     $startMarker = '# Rainmaker - Start #';
     $endMarker = '# Rainmaker - End #';
     $count = 0;
     $exportsFile = preg_replace("/{$startMarker}(?:.+){$endMarker}/s", $exports, $exportsFile, -1, $count);
     if ($count < 1) {
         $exportsFile .= "\n{$exports}\n";
     }
     $this->getFilesystem()->putFileContents('/etc/exports', $exportsFile);
 }
 protected function writeHostsFile()
 {
     $config = Template::render('lxc/project-hosts.twig', array('hostname' => $this->getContainer()->getHostname()));
     $file = '/var/lib/lxc/' . $this->getContainer()->getName() . '/rootfs/etc/hosts';
     $this->getFilesystem()->putFileContents($file, $config);
 }
 /**
  * Writes the configuration file for the Rainmaker project branch Linux container to the filesystem.
  */
 protected function writeProjectBranchLxcConfigurationFile()
 {
     $config = Template::render('lxc/project-branch-config.twig', array('lxc_root_fs' => $this->getContainer()->getLxcRootFs(), 'lxc_utsname' => $this->getContainer()->getLxcUtsName(), 'lxc_net_hwaddr' => $this->getContainer()->getLxcHwAddr()));
     $project = $this->getEntityManager()->getRepository('Rainmaker:Container')->getParentContainer($this->getContainer());
     $file = '/var/lib/lxc/' . $project->getName() . '/rootfs/var/lib/lxc/' . $this->getContainer()->getName() . '/config';
     $this->getFilesystem()->putFileContents($file, $config);
 }
 /**
  * Writes the DHCPD configuration file for the subnet the containers reside in to the filesystem.
  */
 protected function writeDhcpSubnetFile()
 {
     $config = Template::render('dhcp/subnet.twig', array('repo' => $this->getEntityManager()->getRepository('Rainmaker:Container'), 'containers' => $this->getEntityManager()->getRepository('Rainmaker:Container')->getAllParentContainers()));
     $file = '/var/lib/lxc/services/rootfs/etc/dhcp/dhcpd.subnet.conf.d/10.100.0.0.conf';
     $this->getFilesystem()->putFileContents($file, $config);
 }
 /**
  * Writes the DNS zone PTR file for the Rainmaker project branch Linux container to the filesystem.
  */
 protected function writeProjectBranchDnsZonePtrFile()
 {
     $project = $this->getEntityManager()->getRepository('Rainmaker:Container')->getParentContainer($this->getContainer());
     $config = Template::render('bind/ptr-zone.twig', array('repo' => $this->getEntityManager()->getRepository('Rainmaker:Container'), 'container' => $project));
     $file = '/var/lib/lxc/services/rootfs/etc/bind/db.rainmaker/db.' . $this->getContainer()->networkPrefix();
     $this->getFilesystem()->putFileContents($file, $config);
 }
 /**
  * Writes the Linux fstab file to disk.
  */
 protected function writeFstab()
 {
     $mounts = Template::render('fstab.twig', array('fstabToolMounts' => $this->getFstabToolMounts(), 'fstabNfsMounts' => $this->getFstabNfsMounts()));
     $fstab = $this->getFilesystem()->getFileContents('/etc/fstab');
     $startMarker = '# Rainmaker - Start #';
     $endMarker = '# Rainmaker - End #';
     $count = 0;
     $fstab = preg_replace("/{$startMarker}(?:.+){$endMarker}/s", $mounts, $fstab, -1, $count);
     if ($count < 1) {
         $fstab .= "\n{$mounts}\n";
     }
     $this->getFilesystem()->putFileContents('/etc/fstab', $fstab);
 }