Пример #1
0
 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);
     }
 }
Пример #2
0
 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;
 }