/**
  * @param ProvisionServiceRequest $request
  * @param array                   $options ['keep-database'=>true|false]
  *
  * @return bool
  * @throws ProvisioningException
  */
 protected function deprovisionInstance($request, $options = [])
 {
     $_keepDatabase = array_get($options, 'keep-database', false);
     $_instance = $request->getInstance();
     $_name = $_instance->instance_id_text;
     $this->info('[deprovisioning:instance] instance "' . $_name . '" begin');
     if ($_keepDatabase) {
         $this->info('[deprovisioning:instance] "keep-database" specified. Keeping existing schema, if any.');
     } else {
         //	Deprovision the database
         $_dbService = Provision::getDatabaseProvisioner($_instance->guest_location_nbr);
         if (false === ($_dbConfig = $_dbService->deprovision($request))) {
             throw new ProvisioningException('Failed to deprovision database. Check logs for error.');
         }
     }
     try {
         if (!$_instance->delete()) {
             throw new \RuntimeException('Instance row deletion failed.');
         }
     } catch (\Exception $_ex) {
         $this->error('[deprovisioning:instance] exception while deleting instance row: ' . $_ex->getMessage());
         return false;
     }
     //  Fire off a "deprovisioned" event...
     \Event::fire('dfe.deprovisioned', [$this, $request]);
     $this->info('[deprovisioning:instance] instance "' . $_name . '" complete');
     return true;
 }