public function postReceiveNotification(Request $request) { // $this->validate($request, ['apikey' => 'required', 'account' => 'required', 'event' => 'required', 'uuid' => 'required', 'ostypeid' => 'required']); if ($request->apikey != Config::get('cloud.brgApiKey')) { abort(401); } switch ($request->event) { case 'SNAPSHOT.CREATE': SnapshotMetadata::create(['id' => $request->uuid, 'ostypeid' => $request->ostypeid]); break; case 'SNAPSHOT.DELETE': SnapshotMetadata::destroy($request->uuid); break; } return response()->json(['status' => 'success']); }
public function createTemplateFromSnapshot(Request $request, $id) { // Get metadata for this snapshot. $meta = SnapshotMetadata::find($id); // Get user's API credentials $user = current($this->acs->listUsers(['account' => Auth::User()->email, 'domainid' => SiteConfig::whereParameter('domainId')->first()->data])); // If null, generate them. if (empty($user->secretkey) || empty($user->apikey)) { $keys = $this->acs->registerUserKeys(['id' => $user->id]); } $apikey = isset($keys->apikey) ? $keys->apikey : $user->apikey; $secretkey = isset($keys->secretkey) ? $keys->secretkey : $user->secretkey; // Create ACS connector using the API credentials $user_acs = app('Cloudstack\\CloudStackClient'); $user_acs->setKeys($apikey, $secretkey); // Call createTemplate as the user $resp = $user_acs->createTemplate(['displaytext' => $request->name, 'name' => $request->name, 'ostypeid' => $meta->ostypeid, 'snapshotid' => $id]); return redirect()->route('progress', [$resp->jobid]); }