コード例 #1
0
ファイル: Check.php プロジェクト: pierre-hamm/prototype
 public function check(VmManager $vmManager, Vm $vm, OutputInterface $output)
 {
     /** @var VM $vm */
     $output->writeln('> VM ' . $vm->__toString());
     $savedStatus = $vm->getStatus();
     $silexApp = $this->getSilexApplication();
     $currentStatus = $silexApp['vm.service']->getStatus($vm);
     if (is_null($currentStatus)) {
         $output->writeln('Cannot resolve status for vm ' . $vm->getIdVm());
         return;
     }
     $output->writeln('  - Old status: ' . $savedStatus . '  => Current status: ' . $currentStatus);
     if ($savedStatus == Vm::TO_START && $currentStatus != Vm::RUNNING) {
         $output->writeln('  - Need to be started, Do it Now');
         $silexApp['vm.service']->start($vm);
     } elseif ($savedStatus == Vm::ARCHIVED) {
         $output->writeln('  - Vm is archived.');
     } elseif ($savedStatus == Vm::EXPIRED) {
         $output->writeln('  - Has just expired');
         $silexApp['vm.service']->archived($vm);
         $vm->setStatus(Vm::ARCHIVED);
         $vmManager->save($vm);
     } else {
         if ($savedStatus != $currentStatus) {
             $vm->setStatus($currentStatus);
             $vmManager->save($vm);
             switch ($currentStatus) {
                 case Vm::RUNNING:
                     $output->writeln('  - Running');
                     $expireDt = $vm->getExpiredDt();
                     $expireDt->add(new \DateInterval('PT' . $silexApp['config']['vm.to_expire_in'] . 'H'));
                     break;
                 case Vm::STOPPED:
                     if ($savedStatus != Vm::STOPPED && $savedStatus != Vm::EXPIRED && $savedStatus != Vm::ARCHIVED) {
                         $output->writeln('  - Has been just killed');
                         //Someone else have killed the VM (serveur ? admin ? other ?) Something wrong append
                     }
                     break;
                 case Vm::SUSPEND:
                     //todo: this case is currently not used
                     break;
                 case Vm::MISSING:
                     $output->writeln('  - Is missing');
                     break;
             }
         }
     }
 }