/** * 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()); } }
/** * 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()); } }