Esempio n. 1
0
 /**
  * {@inheritdoc}
  * @see AbstractEntity::delete()
  */
 public function delete()
 {
     $db = $this->db();
     try {
         // we should set scaling to manual to prevent starting new instances while we are deleting FarmRole
         $frs = new FarmRoleSetting();
         $db->Execute("\n                 UPDATE {$frs->table()}\n                 SET {$frs->columnValue} = ?\n                 WHERE {$frs->columnFarmRoleId} = ?\n                 AND {$frs->columnName} = ?\n            ", [0, $this->id, FarmRoleSetting::SCALING_ENABLED]);
         $this->terminateServers();
         $db->BeginTrans();
         // Clear farm role options & scripts
         $db->Execute("DELETE FROM farm_role_service_config_presets WHERE farm_roleid=?", [$this->id]);
         $db->Execute("DELETE FROM farm_role_scaling_times WHERE farm_roleid=?", [$this->id]);
         $db->Execute("DELETE FROM farm_role_service_config_presets WHERE farm_roleid=?", [$this->id]);
         $db->Execute("DELETE FROM farm_role_scripting_targets WHERE `target`=? AND `target_type` = 'farmrole'", [$this->id]);
         $db->Execute("DELETE FROM ec2_ebs WHERE farm_roleid=?", [$this->id]);
         $db->Execute("DELETE FROM elastic_ips WHERE farm_roleid=?", [$this->id]);
         $db->Execute("DELETE FROM storage_volumes WHERE farm_roleid=?", [$this->id]);
         // Clear apache vhosts and update DNS zones
         $db->Execute("UPDATE apache_vhosts SET farm_roleid='0', farm_id='0' WHERE farm_roleid=?", [$this->id]);
         $db->Execute("UPDATE dns_zones SET farm_roleid='0' WHERE farm_roleid=?", [$this->id]);
         $this->deleteScheduled();
         $db->Execute("DELETE FROM farm_role_scripts WHERE farm_roleid=?", [$this->id]);
         parent::delete();
         $db->CommitTrans();
     } catch (Exception $e) {
         $db->RollbackTrans();
         throw $e;
     }
 }