예제 #1
0
 public function initData($arr)
 {
     if (array_key_exists(self::NAME_MAP, $arr)) {
         $this->setName($arr[self::NAME_MAP]);
     }
     if (array_key_exists(self::MEMORY_MAP, $arr)) {
         $memory = Etva::Byte_to_MBconvert($arr[self::MEMORY_MAP]);
         $this->setMem($memory);
     }
     if (array_key_exists(self::VCPU_MAP, $arr)) {
         $this->setCpus($arr[self::VCPU_MAP]);
     }
     if (array_key_exists(self::VNC_PORT_MAP, $arr)) {
         $this->setVncPort($arr[self::VNC_PORT_MAP]);
     }
     if (array_key_exists(self::VNC_KEYMAP_MAP, $arr)) {
         $this->setVncKeymap($arr[self::VNC_KEYMAP_MAP]);
     }
     if (array_key_exists(self::VM_STATE_MAP, $arr)) {
         $this->setVmState($arr[self::VM_STATE_MAP]);
     }
     if (array_key_exists(self::DISKS_MAP, $arr)) {
         $this->setDisks($arr[self::DISKS_MAP]);
     }
     if (array_key_exists(self::NETWORKS_MAP, $arr)) {
         $this->setNetworks($arr[self::NETWORKS_MAP]);
     }
     if (array_key_exists(self::FEATURES_MAP, $arr)) {
         $this->setFeatures(json_encode($arr[self::FEATURES_MAP]));
     }
 }
예제 #2
0
파일: EtvaNode.php 프로젝트: ketheriel/ETVA
 public function toDisplay()
 {
     $array_data = $this->toArray(BasePeer::TYPE_FIELDNAME);
     $array_data['mem_text'] = Etva::Byte_to_MBconvert($array_data['memtotal']);
     $array_data['mem_available'] = Etva::Byte_to_MBconvert($array_data['memfree']);
     if ($fencingconf = $this->getFencingconf()) {
         $fencingconf_arr = (array) json_decode($fencingconf);
         foreach ($fencingconf_arr as $f => $v) {
             $fk = "fencingconf_" . $f;
             $array_data[$fk] = $v;
         }
     }
     switch ($array_data['state']) {
         case self::NODE_ACTIVE:
             $array_data['state_text'] = sfContext::getInstance()->getI18N()->__('Up');
             break;
         case self::NODE_INACTIVE:
             $array_data['state_text'] = sfContext::getInstance()->getI18N()->__('Down');
             break;
         case self::NODE_FAIL_UP:
         case self::NODE_FAIL:
             $array_data['state_text'] = sfContext::getInstance()->getI18N()->__('Fail');
             break;
         case self::NODE_MAINTENANCE_UP:
         case self::NODE_MAINTENANCE:
             $array_data['state_text'] = sfContext::getInstance()->getI18N()->__('Maintenance');
             break;
     }
     return $array_data;
 }
예제 #3
0
 public function executeJsonLoad(sfWebRequest $request)
 {
     $count = 0;
     $id = $request->getParameter('id');
     if ($etva_node = EtvaNodePeer::retrieveByPK($id)) {
         $count = 1;
     } else {
         $msg_i18n = $this->getContext()->getI18N()->__(EtvaNodePeer::_ERR_NOTFOUND_ID_, array('%id%' => $id));
         $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n);
         // if is browser request return text renderer
         $error = $this->setJsonError($error);
         return $this->renderText($error);
     }
     $node_array = $etva_node->toDisplay();
     // check if datacenter hasNodeHA?
     $node_array['datacenter_hasNodeHA'] = $etva_node->getEtvaCluster()->getHasnodeha() ? true : false;
     $run_servers = $etva_node->getServers(EtvaServerQuery::create()->filterByVmState(EtvaServer::RUNNING));
     $stop_servers = $etva_node->getServers(EtvaServerQuery::create()->filterByVmState(EtvaServer::RUNNING, Criteria::NOT_EQUAL));
     $node_array['servers_up'] = count($run_servers);
     $node_array['servers_down'] = count($stop_servers);
     // get sys info from node
     $node_va = new EtvaNode_VA($etva_node);
     $response = $node_va->send_get_sys_info();
     if ($response['success']) {
         $node_array['sysinfo'] = (array) $response['response'];
         $node_array['node_free_memory'] = Etva::Byte_to_MBconvert($node_array['sysinfo']['meminfo']->NodeFreeMemory);
     }
     $return = array('success' => true, 'total' => $count, 'data' => $node_array);
     $result = json_encode($return);
     $this->getResponse()->setHttpHeader('Content-type', 'application/json');
     return $this->renderText($result);
 }
예제 #4
0
 public function executeJsonLoad(sfWebRequest $request)
 {
     $id = $request->getParameter('id');
     if (!($etva_cluster = EtvaClusterPeer::retrieveByPK($id))) {
         $msg_i18n = $this->getContext()->getI18N()->__(EtvaClusterPeer::_ERR_CLUSTER_, array('%id%' => $id));
         $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n);
         // if is browser request return text renderer
         $error = $this->setJsonError($error);
         return $this->renderText($error);
     }
     $cluster_array = $etva_cluster->toDisplay();
     $list_etva_nodes = $etva_cluster->getEtvaNodes();
     $cluster_array['nodes_up'] = 0;
     $cluster_array['nodes_down'] = 0;
     $cluster_array['servers_assign'] = 0;
     $cluster_array['servers_unassign'] = 0;
     $cluster_array['count_fencing_cmd'] = 0;
     foreach ($list_etva_nodes as $etva_node) {
         $cluster_array['mem_text'] += $etva_node->getMemtotal();
         $cluster_array['mem_available'] += $etva_node->getMemfree();
         $cluster_array['cpus'] += $etva_node->getCputotal();
         if ($etva_node->getState() == EtvaNode::NODE_ACTIVE) {
             $cluster_array['nodes_up'] += 1;
         } else {
             $cluster_array['nodes_down'] += 1;
         }
         if ($etva_node->getFencingconf_cmd()) {
             $cluster_array['count_fencing_cmd']++;
         }
     }
     $cluster_array['allnodes_have_fencing_cmd_configured'] = $cluster_array['count_fencing_cmd'] == count($list_etva_nodes) ? 1 : 0;
     $cluster_array['mem_text'] = Etva::Byte_to_MBconvert($cluster_array['mem_text']);
     $cluster_array['mem_available'] = Etva::Byte_to_MBconvert($cluster_array['mem_available']);
     $cluster_array['servers_assign'] = EtvaServerQuery::create()->filterByClusterId($etva_cluster->getId())->useEtvaServerAssignQuery()->endUse()->count();
     $cluster_array['servers_unassign'] = EtvaServerQuery::create()->filterByClusterId($etva_cluster->getId())->count() - $cluster_array['servers_assign'];
     $return = array('success' => true, 'total' => $count, 'data' => $cluster_array);
     $result = json_encode($return);
     $this->getResponse()->setHttpHeader('Content-type', 'application/json');
     return $this->renderText($result);
 }