Ejemplo n.º 1
0
 /**
  *
  *
  * List server snapshots
  *
  * request object is like this;
  * <code>
  * $request['id'] = $id; //server ID
  * $request['nid'] = $id; //node destination ID
  * </code>
  *
  * @param sfWebRequest $request A request object
  *
  * @return string json string representation of array('success'=>true,'agent'=>$agent, 'response'=>$response)
  *
  */
 public function executeJsonListSnapshots(sfWebRequest $request)
 {
     $sid = $request->getParameter('id');
     if (!($etva_server = EtvaServerPeer::retrieveByPK($sid))) {
         $msg_i18n = $this->getContext()->getI18N()->__(EtvaServerPeer::_ERR_NOTFOUND_ID_, array('%id%' => $sid));
         $error = array('agent' => sfConfig::get('config_acronym'), 'success' => false, 'error' => $msg_i18n);
         //notify event log
         $server_log = Etva::getLogMessage(array('id' => $sid), EtvaServerPeer::_ERR_NOTFOUND_ID_);
         $message = Etva::getLogMessage(array('info' => $server_log), EtvaServerPeer::_ERR_MIGRATE_UNKNOWN_);
         $this->dispatcher->notify(new sfEvent($error['agent'], 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR)));
         // if is browser request return text renderer
         $error = $this->setJsonError($error);
         return $this->renderText($error);
     }
     $etva_node = $etva_server->getEtvaNode();
     $server_va = new EtvaServer_VA($etva_server);
     $response = $server_va->get_list_snapshots($etva_node);
     if (isset($response['success']) && !$response['success']) {
         if (sfConfig::get('sf_environment') == 'soap') {
             return json_encode($response);
         }
         $return = $this->setJsonError($response);
         return $this->renderText($return);
     }
     $elements = $response['response'];
     // return array
     $result = array('success' => true, 'total' => count($elements), 'data' => $elements, 'agent' => $etva_node->getName());
     $return = json_encode($result);
     if (sfConfig::get('sf_environment') == 'soap') {
         return $return;
     }
     $this->getResponse()->setHttpHeader('Content-type', 'application/json');
     return $this->renderText($return);
 }