public function executeJsonRegister(sfWebRequest $request) { $msg_ok_type = EtvaPhysicalvolumePeer::_OK_REGISTER_; $msg_err_type = EtvaPhysicalvolumePeer::_ERR_REGISTER_; //adding cluster id filter $elements = array(); // get node id from cluster context $etva_node = EtvaNodePeer::getOrElectNode($request); if (!$etva_node) { $msg_i18n = $this->getContext()->getI18N()->__(EtvaNodePeer::_ERR_NOTFOUND_ID_, array('%id%' => $nid)); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n); $node_log = Etva::getLogMessage(array('id' => $nid), EtvaNodePeer::_ERR_NOTFOUND_ID_); //notify system log $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => $node_log, '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); } $device = $request->getParameter('device'); $uuid = $request->getParameter('uuid'); $etva_physicalvolume = new EtvaPhysicalvolume(); if ($uuid) { $etva_physicalvolume->setUuid($uuid); } $etva_physicalvolume->setDevice($device); $dev_info = json_decode($request->getParameter('physicalvolume'), true); error_log("dev_info: " . print_r($dev_info, true)); $etva_pv_va = new EtvaPhysicalvolume_VA($etva_physicalvolume); $response = $etva_pv_va->register($etva_node, $dev_info); //$response = array( 'success'=>true ); //error_log("register response: " . print_r($response,true)); if (!$response['success']) { $msg_i18n = $this->getContext()->getI18N()->__($msg_err_type, array('%name%' => $device, '%info%' => '')); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n); $node_log = Etva::getLogMessage(array('name' => $device, 'info' => ''), $msg_err_type); //notify system log $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => $node_log, '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); } //notify system log $message = Etva::getLogMessage(array('name' => $device), $msg_ok_type); $msg_i18n = sfContext::getInstance()->getI18N()->__($msg_ok_type, array('%name%' => $device)); sfContext::getInstance()->getEventDispatcher()->notify(new sfEvent($etva_node->getName(), 'event.log', array('message' => $message))); $result = array('success' => true, 'agent' => $etva_node->getName(), 'response' => $msg_i18n); $return = json_encode($result); if (sfConfig::get('sf_environment') == 'soap') { return $return; } $this->getResponse()->setHttpHeader('Content-type', 'application/json'); return $this->renderText($return); }