public function executeJsonCreate(sfWebRequest $request) { $nid = $request->getParameter('nid'); $server = json_decode($request->getParameter('server'), true); if ($server['boot'] == 'location') { $valid = $this->validateLocationUrl($server['location']); if ($valid == false) { $msg_i18n = $this->getContext()->getI18N()->__('Could not validate the location URL!'); $error = array('agent' => sfConfig::get('config_acronym'), 'success' => false, 'error' => $msg_i18n, 'info' => $msg_i18n); $error = $this->setJsonError($error); return $this->renderText($error); } // error_log('[INFO] '.$server['location']); // $url_obj = parse_url($server['location']); // error_log($url_obj['scheme']); // $valid = false; // // if($url_obj['scheme'] == 'ftp'){ // $valid = $this->checkFtpDir($server['location']); // }else if(preg_match('/^(http|https)$/', $url_obj['scheme']) && get_headers($server['location'])){ // $valid = true; // }else if($url_obj['scheme'] == 'nfs'){ // $valid = true; // } // // if($valid == false){ // $msg_i18n = $this->getContext()->getI18N()->__('Could not validate the location URL!'); // $error = array('agent'=>sfConfig::get('config_acronym'),'success'=>false,'error'=>$msg_i18n,'info'=>$msg_i18n); // $error = $this->setJsonError($error); // return $this->renderText($error); // } } // if($server['boot'] == 'location'){ // error_log('[INFO] '.$server['location']); // if(preg_match('/^ftp/', $server['location'])){ // error_log("[INFO] FTP URL detected"); // $handle = fopen($server['location'], 'r'); // or return $this->renderText($this->errorUrl()); // fclose($handle); // }else if(preg_match('/^http/', $server['location']) && !get_headers($server['location'])){ // //$msg_i18n = $this->getContext()->getI18N()->__(EtvaServerPeer::_ERR_NOTFOUND_ID_,array('%id%'=>$sid)); // //$error = array('agent'=>sfConfig::get('config_acronym'),'success'=>false,'error'=>$msg_i18n); // $error = array('agent'=>sfConfig::get('config_acronym'),'success'=>false,'error'=>'URL not found. Insert a valid URL', 'info'=>'URL not found!'); // $error = $this->setJsonError($error); // return $this->renderText($error); // } // } if (!($etva_node = EtvaNodePeer::retrieveByPK($nid))) { $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); //notify event log $node_log = Etva::getLogMessage(array('id' => $nid), EtvaNodePeer::_ERR_NOTFOUND_ID_); $message = Etva::getLogMessage(array('name' => $server['name'], 'info' => $node_log), EtvaServerPeer::_ERR_CREATE_); $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); } $etva_server = new EtvaServer(); $server_va = new EtvaServer_VA($etva_server); $response = $server_va->send_create($etva_node, $server); if ($response['success']) { $return = json_encode($response); // 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 { if (sfConfig::get('sf_environment') == 'soap') { return json_encode($response); } $return = $this->setJsonError($response); return $this->renderText($return); } }
protected function execute($arguments = array(), $options = array()) { // Context $context = sfContext::createInstance(sfProjectConfiguration::getApplicationConfiguration('app', $options['env'], true)); // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'])->getConnection(); // add your code here $node = $options['node']; $etva_node = EtvaNodePeer::retrieveByPK($node); if (!$etva_node) { $msg_i18n = $context->getI18N()->__(EtvaNodePeer::_ERR_NOTFOUND_ID_, array('%id%' => $node)); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n); return $error; } if ($arguments['boot'] == 'location') { $valid = $this->validateLocationUrl($options['location']); if ($valid == false) { $msg_i18n = $context->getI18N()->__('Could not validate the location URL!'); $error = array('agent' => sfConfig::get('config_acronym'), 'success' => false, 'error' => $msg_i18n, 'info' => $msg_i18n); return $error; } } $server = array_merge($arguments, $options); // decode networks if ($server['networks']) { $server['networks'] = $this->process_array_of_arguments($server['networks']); } //$this->log("[DEBUG] server networks ".print_r($server['networks'],true)); // decode disks if ($server['disks']) { $server_disks = $this->process_array_of_arguments($server['disks']); $server['disks'] = $this->prepare_disks($server_disks); } //$this->log("[DEBUG] server disks ".print_r($server['disks'],true)); $etva_server = new EtvaServer(); $server_va = new EtvaServer_VA($etva_server); $response = $server_va->send_create($etva_node, $server); if ($response['success']) { $this->log("[INFO] " . $response['response']); } else { $this->log("[ERROR] " . $response['error']); } return $response; }