/** * * * 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); }