public function executeJsonGridNoPager($request) { $isAjax = $request->isXmlHttpRequest(); if (!$isAjax) { return $this->redirect('@homepage'); } $sid = $this->getRequestParameter('sid'); if ($sid) { $server = EtvaServerPeer::retrieveByPK($sid); $cid = $server->getClusterId(); } else { // get cluster id $cid = $this->getRequestParameter('cid'); if (!$cid) { $etva_cluster = EtvaClusterPeer::retrieveDefaultCluster(); $cid = $etva_cluster->getId(); } } //Get networks from cluster $c_vlan = new Criteria(); $c_vlan->add(EtvaVlanPeer::CLUSTER_ID, $cid); $etva_vlans = EtvaVlanPeer::doSelect($c_vlan); //get networks with server $c = new Criteria(); $vlan_flag = false; $server_flag = false; $query = $this->getRequestParameter('query') ? json_decode($this->getRequestParameter('query'), true) : array(); foreach ($query as $key => $val) { $column = EtvaNetworkPeer::translateFieldName(sfInflector::camelize($key), BasePeer::TYPE_PHPNAME, BasePeer::TYPE_COLNAME); if ($key == 'vlan_id') { $vlan_flag = true; } if ($key == 'server_id') { $server_flag = true; } $c->add($column, $val); } //error_log($c->toString()); //get vlans from cluster if (!$vlan_flag && !$server_flag) { // && !$server_flag && $cid){ //error_log('!(!$vlan_flag && !$server_flag)'); foreach ($etva_vlans as $etva_vlan) { if ($this->getRequestParameter('query')) { $c->addOr(EtvaNetworkPeer::VLAN_ID, $etva_vlan->getId()); } else { $c->addAnd(EtvaNetworkPeer::VLAN_ID, $etva_vlan->getId()); } } } // add sort criteria to sort elements $this->addSortCriteria($c); // add server criteria $this->addServerCriteria($c); //error_log($c->toString()); $etva_network_list = EtvaNetworkPeer::doSelectJoinEtvaServer($c); $elements = array(); $i = 0; foreach ($etva_network_list as $item) { $etva_server = $item->getEtvaServer(); $etva_vlan = $item->getEtvaVlan(); if ($etva_server && $etva_vlan) { $etva_server_name = $etva_server->getName(); $etva_server_type = $etva_server->getVmType(); $etva_vm_state = $etva_server->getVmState(); $etva_vlan_name = $etva_vlan->getName(); $elements[$i] = $item->toArray(); $elements[$i]['ServerName'] = $etva_server_name; $elements[$i]['VmType'] = $etva_server_type; $elements[$i]['Vlan'] = $etva_vlan_name; $elements[$i]['Vm_state'] = $etva_vm_state; $etva_node = $etva_server->getEtvaNode(); if ($etva_node) { $etva_node_name = $etva_node->getName(); $elements[$i]['NodeName'] = $etva_node_name; $elements[$i]['NodeId'] = $etva_node->getId(); } $i++; } } $final = array('total' => count($etva_network_list), 'data' => $elements); $result = json_encode($final); $this->getResponse()->setHttpHeader('Content-type', 'application/json'); return $this->renderText($result); }
/** * Used to process soap requests => updateVirtAgentVlans * * Updates vlan info sent by virt Agent * * Replies with succcess * * $request may contain the following keys: * - uid: uid (virtAgent sending request uid) * - vlans (object containing vlans info) * @return array array(new vlans) */ public function executeSoapUpdate(sfWebRequest $request) { if (sfConfig::get('sf_environment') == 'soap') { //get config data file $etva_data = Etva::getEtvaModelFile(); //check etva model type $etvamodel = $etva_data['model']; $vlans = $request->getParameter('vlans'); $vlans_names = array(); foreach ($vlans as $vlanInfo) { $vlan_data = (array) $vlanInfo; $vlans_names[] = $vlan_data['name']; } $c = new Criteria(); $c->add(EtvaNodePeer::UUID, $request->getParameter('uuid')); if (!($etva_node = EtvaNodePeer::doSelectOne($c))) { $error_msg = sprintf('Object etva_node does not exist (%s).', $request->getParameter('uuid')); $node_log = Etva::getLogMessage(array('name' => $request->getParameter('uuid')), EtvaNodePeer::_ERR_NOTFOUND_UUID_); //notify system log $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => Etva::getLogMessage(array('info' => $node_log), EtvaVlanPeer::_ERR_SOAPUPDATE_), 'priority' => EtvaEventLogger::ERR))); $error = array('success' => false, 'error' => $error_msg); return $error; } $node_initialize = $etva_node->getInitialize(); if ($node_initialize != EtvaNode_VA::INITIALIZE_OK) { $error_msg = sprintf('Etva node initialize status: %s', $node_initialize); $error = array('success' => false, 'error' => $error_msg); return $error; } /* * checks if CM vlans exists on node info Vlans * return vlans to be created on node * */ // filter results by cluster $vlan_criteria = new Criteria(); $vlan_criteria->add(EtvaVlanPeer::CLUSTER_ID, $etva_node->getClusterId()); $etva_vlans = EtvaVlanPeer::doSelect($vlan_criteria); $new_vlans = array(); foreach ($etva_vlans as $etva_vlan) { if (!in_array($etva_vlan->getName(), $vlans_names)) { $data = array('name' => $etva_vlan->getName(), 'ifout' => $etva_vlan->getIntf()); /* * if model type == enterprise send vlan ID and untagged/tagged option */ if (strtolower($etvamodel) != 'standard') { $data['vlanid'] = $etva_vlan->getVlanId(); $tagged = $etva_vlan->getTagged(); if ($tagged) { $data['vlan_tagged'] = 1; } else { $data['vlan_untagged'] = 1; } } $new_vlans[$etva_vlan->getName()] = $data; } } $vlans_names = array_keys($new_vlans); $vlans = implode(', ', $vlans_names); //notify system log $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => Etva::getLogMessage(array('name' => $etva_node->getName(), 'info' => $vlans), EtvaVlanPeer::_OK_SOAPUPDATE_), 'priority' => EtvaEventLogger::INFO))); return $new_vlans; } // end soap request }