public function getMemory($units = 'B') { $mem_array = $this->virtualsystem->getMemory(); $all_mem = array_sum($mem_array); switch ($units) { case 'B': $all_mem = Etva::MB_to_Byteconvert($all_mem); break; default: break; } return $all_mem; }
public function send_create(EtvaNode $etva_node, $size, $format = '', $persnapshotusage = null) { $method = self::LVCREATE; $lv = $this->etva_lv->getLv(); $etva_vg = $this->etva_lv->getEtvaVolumegroup(); $vg = $etva_vg->getVg(); $is_DiskFile = $vg == sfConfig::get('app_volgroup_disk_flag') ? 1 : 0; $params = array('lv' => $is_DiskFile ? $etva_node->getStoragedir() . '/' . $lv : $lv, 'vg' => $vg, 'size' => $size, 'format' => $format); if ($persnapshotusage) { $params['usagesize'] = Etva::MB_to_Byteconvert($size) * (1 - $persnapshotusage / 100); } $response = $etva_node->soapSend($method, $params); $result = $this->processResponse($etva_node, $response, $method); return $result; }
public function canResizeTo($sizeMB) { $vg = $this->getEtvaVolumegroup(); $size_bytes = Etva::MB_to_Byteconvert($sizeMB); $total_available_size = $vg->getFreesize() + $this->size; if ($size_bytes > 0 && $size_bytes <= $total_available_size) { return true; } else { return false; } }
public function canAssignServer(EtvaServer $server) { $server_mem = Etva::MB_to_Byteconvert($server->getMem()); if ($this->getCputotal() >= $server->getVcpu() && $this->getMaxMem() > $server_mem && !$server->getDevices_VA() && !$server->getHasSnapshots()) { if ($server->getVmState() !== EtvaServer::RUNNING || $this->getMemfree() > $server_mem) { error_log("canAssignServer OK node=" . $this->getName() . " server=" . $server->getName() . " vmstate=" . $server->getVmState() . " maxmem=" . $this->getMaxMem() . " memfree=" . $this->getMemfree() . " server_mem=" . $server_mem); return true; } } error_log("canAssignServer NOK node=" . $this->getName() . " server=" . $server->getName() . " vmstate=" . $server->getVmState() . " maxmem=" . $this->getMaxMem() . " memfree=" . $this->getMemfree() . " server_mem=" . $server_mem); return false; }
public function send_start(EtvaNode $etva_node, $extra = null, $ignoreAdmissionGate = false) { $etva_server = $this->etva_server; $method = self::SERVER_START; $mem_available = $etva_node->getMemfree(); $server_mem_mb = $etva_server->getMem(); $server_mem = Etva::MB_to_Byteconvert($server_mem_mb); error_log(" start_vm mem_available=" . $mem_available . " server_mem=" . $server_mem); if ($server_mem > $mem_available) { //notify event log $msg_i18n = Etva::makeNotifyLogMessage($error['agent'], EtvaNodePeer::_ERR_MEM_AVAILABLE_, array('name' => $etva_node->getName(), 'info' => $server_mem_mb), EtvaServerPeer::_ERR_START_, array('name' => $server)); $error = array('success' => false, 'agent' => $etva_node->getName(), 'info' => $msg_i18n, 'error' => $msg_i18n); return $error; } $etva_cluster = $etva_node->getEtvaCluster(); if (!$ignoreAdmissionGate && $etva_cluster->getHasNodeHA()) { $admissiongate_response = $etva_cluster->getAdmissionGate($etva_server); if (!$admissiongate_response['success']) { //notify event log $msg_i18n = Etva::makeNotifyLogMessage($error['agent'], EtvaClusterPeer::_ERR_ADMISSION_GATE_FAIL_, array('name' => $etva_server->getName(), 'info' => $admissiongate_response['info']), EtvaServerPeer::_ERR_START_, array('name' => $server)); $error = array('success' => false, 'agent' => $etva_node->getName(), 'info' => $msg_i18n, 'error' => $msg_i18n); return $error; } } $params = $extra ? $extra : array(); $params['uuid'] = $etva_server->getUuid(); $boot = $etva_server->getBoot(); $location = $etva_server->getLocation(); $vm_type = $etva_server->getVmType(); $first_boot = $etva_server->getFirstBoot(); if ($first_boot) { $params['first_boot'] = $first_boot; if ($location && $vm_type == 'pv') { $boot = 'location'; } } $params['boot'] = $boot; if ($boot == 'location' || $boot == 'cdrom') { $params['location'] = $location; } $params['vnc_keymap'] = $etva_server->getVncKeymap(); $response = $etva_node->soapSend($method, $params); return $this->processStartStop($etva_node, $response, $method); }