protected function execute(InputInterface $input, OutputInterface $output)
 {
     $repository = $this->getEntityManager()->getRepository('Rainmaker:Container');
     $uniqueName = $input->getArgument('name');
     if (empty($uniqueName)) {
         if ($input->isInteractive()) {
             $uniqueName = $this->askForProjectUniqueName($input, $output);
         } else {
             $output->writeln("<error>You must specify a unique name for the project.</error>");
             return 1;
         }
     }
     if (!$repository->projectContainerExists($uniqueName)) {
         $output->writeln("<error>No container with the unique name specified exists.</error>");
         return 1;
     }
     $this->setContainerEntity($repository->findOneByName($uniqueName));
     $this->getConfiguredTask()->setContainer($this->getContainerEntity());
     parent::execute($input, $output);
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $repository = $this->getEntityManager()->getRepository('Rainmaker:Container');
     $uniqueName = $input->getArgument('name');
     if (empty($uniqueName)) {
         if ($input->isInteractive()) {
             $uniqueName = $this->askForProjectBranchUniqueName($input, $output);
         } else {
             $output->writeln("<error>You must specify the unique name for the project branch you wish to clone.</error>");
             return 1;
         }
     }
     if (!$repository->projectBranchContainerExists($uniqueName)) {
         $output->writeln("<error>No project branch container with the unique name specified exists.</error>");
         return 1;
     }
     $newUniqueName = $input->getArgument('newname');
     $newFriendlyName = $input->getOption('fname');
     if (empty($newUniqueName)) {
         if ($input->isInteractive()) {
             if (empty($newFriendlyName)) {
                 $newFriendlyName = $this->askForNewProjectBranchFriendlyName($input, $output);
             }
             $newUniqueName = $this->askForNewProjectBranchUniqueName($input, $output, $repository->friendlyNameToContainerName($newFriendlyName));
         } else {
             $output->writeln("<error>You must specify a unique name for the new project branch.</error>");
             return 1;
         }
     }
     if ($repository->containerExists($newUniqueName)) {
         $output->writeln("<error>A project branch already exists with the unique name you have specified.</error>");
         return 1;
     }
     if (empty($newFriendlyName)) {
         if ($input->isInteractive()) {
             $newFriendlyName = $this->askForNewProjectBranchFriendlyName($input, $output);
         } else {
             $output->writeln("<error>You must specify a friendly name for the new project branch.</error>");
             return 1;
         }
     }
     $currentBranch = $repository->findOneByName($uniqueName);
     $newHostname = $input->getOption('hostname');
     if (empty($newHostname)) {
         if ($input->isInteractive()) {
             $defaultHostname = $newUniqueName . '.' . $currentBranch->getDomain();
             $newHostname = $this->askForNewProjectBranchHostName($input, $output, $defaultHostname);
         } else {
             $output->writeln("<error>You must specify a host name for the new project branch.</error>");
             return 1;
         }
     }
     $project = $repository->getParentContainer($currentBranch);
     $newBranch = $repository->createContainer($newUniqueName, $newFriendlyName, false)->setDomain($project->getDomain())->setHostname($newHostname)->setParentId($project->getId());
     $repository->saveContainer($newBranch);
     $newBranch->setCloneSource($currentBranch);
     $newBranch->setDownloadHost($this->getContainer()->getParameter('rainmaker_download_host'));
     $this->setContainerEntity($newBranch);
     $this->getConfiguredTask()->setContainer($newBranch);
     parent::execute($input, $output);
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     //$output->writeln('project:create');
     //print_r($this->getContainer());
     //lxc-create --template download --name "$GOLDPROJ_LXC_NAME" -- --dist ubuntu --release trusty --arch amd64
     //lxc-clone _golden-proj_ myproject
     /** @var ContainerRepository $repository */
     $repository = $this->getEntityManager()->getRepository('Rainmaker:Container');
     $uniqueName = $input->getArgument('name');
     $friendlyName = $input->getOption('fname');
     if (empty($uniqueName)) {
         if ($input->isInteractive()) {
             if (empty($friendlyName)) {
                 $friendlyName = $this->askForProjectFriendlyName($input, $output);
             }
             $uniqueName = $this->askForProjectUniqueName($input, $output, $repository->friendlyNameToContainerName($friendlyName));
         } else {
             $output->writeln("<error>You must specify a unique name for the project.</error>");
             return 1;
         }
     }
     if (empty($friendlyName)) {
         if ($input->isInteractive()) {
             $friendlyName = $this->askForProjectFriendlyName($input, $output);
         } else {
             $output->writeln("<error>You must specify a friendly name for the project.</error>");
             return 1;
         }
     }
     if ($repository->containerExists($uniqueName)) {
         $output->writeln("<error>A project already exists with the unique name you have specified.</error>");
         return 1;
     }
     //
     $domain = $input->getOption('domain');
     if (empty($domain)) {
         if ($input->isInteractive()) {
             $defaultDomain = $uniqueName . '.localdev';
             $domain = $this->askForProjectDomainName($input, $output, $defaultDomain);
         } else {
             $output->writeln("<error>You must specify a domain name for the project.</error>");
             return 1;
         }
     }
     $hostname = $input->getOption('hostname');
     if (empty($hostname)) {
         if ($input->isInteractive()) {
             $defaultHostname = 'cluster.' . $domain;
             $hostname = $this->askForProjectHostName($input, $output, $defaultHostname);
         } else {
             $output->writeln("<error>You must specify a host name for the project.</error>");
             return 1;
         }
     }
     $createBranch = $input->getOption('newbranch');
     if (empty($createBranch)) {
         if ($input->isInteractive()) {
             $createBranch = $this->askWhetherToCreateBranch($input, $output);
         }
     }
     $branchName = $input->getOption('branch-name');
     $branchFriendlyName = $input->getOption('branch-fname');
     $branchHostname = $input->getOption('branch-hostname');
     if ($createBranch && empty($branchName)) {
         if ($input->isInteractive()) {
             $branchName = $this->askForProjectBranchUniqueName($input, $output, $uniqueName . '.prod');
         } else {
             $output->writeln("<error>You must specify a unique name for the project branch.</error>");
             return 1;
         }
     }
     if ($createBranch && empty($branchFriendlyName)) {
         if ($input->isInteractive()) {
             $branchFriendlyName = $this->askForProjectBranchFriendlyName($input, $output);
         } else {
             $output->writeln("<error>You must specify a friendly name for the project branch.</error>");
             return 1;
         }
     }
     if ($createBranch && empty($branchHostname)) {
         if ($input->isInteractive()) {
             $defaultHostname = $domain;
             $branchHostname = $this->askForProjectHostName($input, $output, $defaultHostname);
         } else {
             $output->writeln("<error>You must specify a host name for the project branch.</error>");
             return 1;
         }
     }
     $project = $repository->createContainer($uniqueName, $friendlyName, false)->setDomain($domain)->setHostname($hostname);
     $repository->saveContainer($project);
     $project->setProfileName($this->getContainer()->getParameter('rainmaker_default_project_profile'));
     $project->setDownloadHost($this->getContainer()->getParameter('rainmaker_download_host'));
     $this->setContainerEntity($project);
     $this->getConfiguredTask()->setContainer($project);
     if ($createBranch) {
         $branch = $repository->createContainer($branchName, $branchFriendlyName, false)->setDomain($domain)->setHostname($branchHostname)->setParentId($project->getId());
         $repository->saveContainer($branch);
         $branch->setProfileName($this->getContainer()->getParameter('rainmaker_default_project_branch_profile'));
         $branch->setDownloadHost($this->getContainer()->getParameter('rainmaker_download_host'));
         $this->getConfiguredTask()->setBranchContainer($branch);
     }
     parent::execute($input, $output);
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $task = $this->getConfiguredTask();
     parent::execute($input, $output);
     $output->write("\n" . $task->getList() . "\n", true);
 }