Ejemplo n.º 1
0
 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]);
 }