/**
  * Provides current active spot if available otherwise returns null
  * @return array|null
  * @throws \Exception
  */
 public function getActiveSpot()
 {
     $spots = $this->getSpotRequests();
     $activeSpot = null;
     foreach ($spots as $spot) {
         switch ($spot['Status']['Code']) {
             case 'pending-evaluation':
             case 'request-canceled-and-instance-running':
             case 'canceled-before-fulfillment':
             case 'instance-terminated-by-user':
                 continue;
             case 'fulfilled':
                 $activeSpot = $spot;
                 break;
             case 'price-too-low':
                 $this->ec2Client->cancelSpotInstanceRequests(['DryRun' => $this->dryRun, 'SpotInstanceRequestIds' => array($spot['SpotInstanceRequestId'])]);
                 break;
             default:
                 throw new \Exception($spot['Status']['Code'] . " spot status not handled yet.");
         }
     }
     return $activeSpot;
 }