예제 #1
0
 /**
  * Saves/Edits an account
  *
  */
 public function postEdit($id = false)
 {
     if ($id !== false) {
         $account = CloudAccount::where('user_id', Auth::id())->findOrFail($id);
     }
     try {
         if (empty($account)) {
             $account = new CloudAccount();
         } else {
             if ($account->user_id !== Auth::id()) {
                 throw new Exception('general.access_denied');
             }
         }
         $account->name = Input::get('name');
         $account->cloudProvider = Input::get('cloudProvider');
         $account->credentials = json_encode(Input::get('credentials'));
         $account->user_id = Auth::id();
         // logged in user id
         $conStatus = CloudProvider::authenticate($account);
         if ($conStatus == 1) {
             Log::info('Credentials are encrypted before saving to DB.');
             CloudAccountHelper::save($account);
             return Redirect::intended('account')->with('success', Lang::get('account/account.account_updated'));
         } else {
             return Redirect::to('account')->with('error', Lang::get('account/account.account_auth_failed') . ' for ' . $account->cloudProvider);
         }
     } catch (Exception $e) {
         Log::error($e);
         return Redirect::to('account')->with('error', $e->getMessage());
     }
 }
예제 #2
0
 /**
  * Saves/Edits an deployment
  *
  */
 public function postEdit($deployment = false)
 {
     $this->check();
     try {
         if (empty($deployment)) {
             $deployment = new Deployment();
         } else {
             if ($deployment->user_id !== Auth::id()) {
                 throw new Exception('general.access_denied');
             }
         }
         $deployment->name = Input::get('name');
         $deployment->cloudAccountId = Input::get('cloudAccountId');
         //Check if account credentials are valid
         $account = CloudAccountHelper::findAndDecrypt($deployment->cloudAccountId);
         if (!CloudProvider::authenticate($account)) {
             Log::error('Failed to authenticate before deployment! ' . json_encode($account));
             return Redirect::to('deployment/')->with('error', 'Failed to authenticate before deployment! ' . $deployment->name);
         }
         $params = Input::get('parameters');
         //$params['instanceImage'] = Input::get('instanceImage');
         $arr = explode(':', Input::get('instanceAmi'));
         $params['instanceAmi'] = $arr[1];
         $params['OS'] = $arr[0];
         $deployment->parameters = json_encode($params);
         $deployment->docker_name = Input::get('docker_name');
         $deployment->user_id = Auth::id();
         // logged in user id
         try {
             // Get and save status from external WS
             $user = Auth::user();
             $responseJson = xDockerEngine::authenticate(array('username' => $user->username, 'password' => md5($user->engine_key)));
             EngineLog::logIt(array('user_id' => Auth::id(), 'method' => 'authenticate', 'return' => $responseJson));
             $obj = json_decode($responseJson);
             if (!empty($obj) && $obj->status == 'OK') {
                 $deployment->token = $obj->token;
                 $this->prepare($user, $account, $deployment);
                 $responseJson = xDockerEngine::run(json_decode($deployment->wsParams));
                 EngineLog::logIt(array('user_id' => Auth::id(), 'method' => 'run', 'return' => $responseJson));
                 $obj1 = json_decode($responseJson);
                 if (!empty($obj1) && $obj1->status == 'OK') {
                     $deployment->job_id = $obj1->job_id;
                     $deployment->status = Lang::get('deployment/deployment.status');
                     unset($deployment->token);
                     $success = $deployment->save();
                     if (!$success) {
                         Log::error('Error while saving deployment : ' . json_encode($deployment->errors()));
                         return Redirect::to('deployment')->with('error', 'Error saving deployment!');
                     }
                 } else {
                     if (!empty($obj1) && $obj1->status == 'error') {
                         Log::error('Failed during deployment!' . $obj1->fail_message);
                         Log::error('Log :' . implode(' ', $obj2->job_log));
                         return Redirect::to('deployment')->with('error', 'Failed during deployment!' . $obj1->fail_message);
                     }
                 }
                 UtilHelper::sendMail(Auth::user(), $account->name, $deployment, 'site/deployment/email', Lang::get('deployment/deployment.deployment_updated'));
                 return Redirect::to('deployment')->with('success', Lang::get('deployment/deployment.deployment_updated'));
             } else {
                 if (!empty($obj) && $obj->status == 'error') {
                     Log::error('Failed to authenticate before deployment!' . $obj2->fail_code . ':' . $obj->fail_message);
                     Log::error('Log :' . implode(' ', $obj2->job_log));
                     return Redirect::to('deployment')->with('error', 'Failed to authenticate before deployment!' . $obj->fail_message);
                 } else {
                     Log::error('error', 'Unexpected error - Backend Engine API should be down!');
                     return Redirect::to('ServiceStatus')->with('error', 'Backend API is down, please try again later!');
                 }
             }
         } catch (Exception $err) {
             $status = 'Unexpected Error: ' . $err->getMessage();
             Log::error('Error while saving deployment : ' . $status);
             throw new Exception($err->getMessage());
         }
     } catch (Exception $e) {
         Log::error('Error while saving deployment : ' . $e->getMessage());
         return Redirect::back()->with('error', $e->getMessage());
     }
 }