public function executeJsonReplace(sfWebRequest $request) { $sid = $request->getParameter('sid'); $networks = json_decode($request->getParameter('networks'), true); if (!($etva_server = EtvaServerPeer::retrieveByPK($sid))) { $msg_i18n = $this->getContext()->getI18N()->__(EtvaServerPeer::_ERR_NOTFOUND_ID_, array('%id%' => $sid)); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n); //notify system log $server_log = Etva::getLogMessage(array('id' => $sid), EtvaServerPeer::_ERR_NOTFOUND_ID_); $message = Etva::getLogMessage(array('info' => $server_log), EtvaNetworkPeer::_ERR_REMOVEALL_); $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); // if is a CLI soap request return json encoded data if (sfConfig::get('sf_environment') == 'soap') { return json_encode($error); } // if is browser request return text renderer $error = $this->setJsonError($error); return $this->renderText($error); } //get cluster id from server $cluster_id = $etva_server->getClusterId(); $etva_node = $etva_server->getEtvaNode(); $method = 'detachall_interfaces'; $params = array('uuid' => $etva_server->getUuid()); $response = $etva_node->soapSend($method, $params); if (!$response['success']) { $error_decoded = $response['error']; //$error = 'Detaching '.$server.' interfaces: '.$error_decoded; $msg_i18n = $this->getContext()->getI18N()->__(EtvaNetworkPeer::_ERR_REMOVEALL_, array('%info%' => $error_decoded)); $response['error'] = $msg_i18n; $result = $response; //notify system log $message = Etva::getLogMessage(array('info' => $response['info']), EtvaNetworkPeer::_ERR_REMOVEALL_); $this->dispatcher->notify(new sfEvent($response['agent'], 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); if (sfConfig::get('sf_environment') == 'soap') { return json_encode($result); } $return = $this->setJsonError($result); return $this->renderText($return); } $response_decoded = (array) $response['response']; $returned_status = $response_decoded['_okmsg_']; $etva_server->deleteNetworks(); //notify system log $message = Etva::getLogMessage(array('server' => $etva_server->getName()), EtvaNetworkPeer::_OK_REMOVEALL_); $this->dispatcher->notify(new sfEvent($response['agent'], 'event.log', array('message' => $message))); $method = 'attach_interface'; $netSend = array(); foreach ($networks as $network) { $netSend[] = "name=" . $network['vlan'] . ",macaddr=" . $network['mac']; } $network_string = implode(';', $netSend); $params = array('uuid' => $etva_server->getUuid(), 'network' => $network_string); $response = $etva_node->soapSend($method, $params); if ($response['success']) { $response_decoded = (array) $response['response']; $returned_status = $response_decoded['_okmsg_']; foreach ($networks as $network) { $c_dc_nm = new Criteria(); $c_dc_nm->addAnd(EtvaVlanPeer::CLUSTER_ID, $cluster_id); $etva_vlan = EtvaVlanPeer::retrieveByName($network['vlan'], $c_dc_nm); $etva_network = new EtvaNetwork(); $etva_network->fromArray($network, BasePeer::TYPE_FIELDNAME); $etva_network->setEtvaServer($etva_server); $etva_network->setEtvaVlan($etva_vlan); $etva_network->save(); } //$msg = $server.' attached interfaces: '.$returned_status; $msg_i18n = $this->getContext()->getI18N()->__(EtvaNetworkPeer::_OK_CREATEALL_, array('%server%' => $etva_server->getName())); $response['response'] = $msg_i18n; $message = Etva::getLogMessage(array('server' => $etva_server->getName()), EtvaNetworkPeer::_OK_CREATEALL_); $this->dispatcher->notify(new sfEvent($response['agent'], 'event.log', array('message' => $message))); $result = $response; $return = json_encode($result); // if the request is made throught soap request... if (sfConfig::get('sf_environment') == 'soap') { return $return; } // if is browser request return text renderer $this->getResponse()->setHttpHeader('Content-type', 'application/json'); return $this->renderText($return); } else { $error_decoded = $response['error']; $msg_i18n = $this->getContext()->getI18N()->__(EtvaNetworkPeer::_ERR_CREATEALL_, array('%info%' => $error_decoded)); //$error = 'Attaching '.$server.' interfaces: '.$error_decoded; $response['error'] = $msg_i18n; //notify system log $message = Etva::getLogMessage(array('info' => $response['info']), EtvaNetworkPeer::_ERR_CREATEALL_); $this->dispatcher->notify(new sfEvent($response['agent'], 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); if (sfConfig::get('sf_environment') == 'soap') { return json_encode($response); } $return = $this->setJsonError($response); return $this->renderText($return); } }
function toArray() { $result = array('IntfModel' => $this->type); if ($this->address) { $result['Mac'] = $this->address; } if ($this->network) { if ($etva_vlan = EtvaVlanPeer::retrieveByName($this->network)) { $result['Vlan'] = $etva_vlan->getName(); $result['VlanId'] = $etva_vlan->getId(); } } return $result; }