centralM
[ class tree: centralM ] [ index: centralM ] [ all elements ]

Source for file actions.class.php

Documentation is available at actions.class.php

  1. <?php
  2.  
  3.  
  4. /**
  5.  * node actions.
  6.  *
  7.  * @package    centralM
  8.  * @subpackage node
  9.  * @author     Your name here
  10.  * @version    SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
  11.  */
  12. class nodeActions extends sfActions
  13. {
  14.   /*
  15.    * Used when loading from left panel
  16.    * Displays node panel related stuff (node info | servers | network | storage)
  17.    * Uses view template
  18.    * Params: id ( node id)
  19.    */
  20.     public function executeView(sfWebRequest $request)
  21.     {
  22.         //used to make soap requests to node VirtAgent
  23.         $this->node_id $request->getParameter('id');
  24.  
  25.         // used to build node grid dynamic
  26.         $this->node_tableMap EtvaNodePeer::getTableMap();
  27.  
  28.         //maybe deprecated
  29.         //used to build form to create new server with default values
  30.         $this->server_form new EtvaServerForm();
  31.  
  32.         // used to build server grid dynamic
  33.         $this->server_tableMap EtvaServerPeer::getTableMap();
  34.  
  35.         $this->sfGuardGroup_tableMap sfGuardGroupPeer::getTableMap();
  36.  
  37.  
  38.     }
  39.   /*
  40.    * Triggered when clicking in 'storage tab'
  41.    * Shows device info
  42.    * Uses storage template
  43.    */
  44.     public function executeStorage(sfWebRequest $request)
  45.     {
  46.         $this->node EtvaNodePeer::retrieveByPk($request->getParameter('id'));
  47.     }
  48.  
  49.  
  50.   /*
  51.    * Used to create new node object
  52.    * Note: NOt used
  53.    */
  54.  
  55.     public function executeJsonCreate(sfWebRequest $request)
  56.     {
  57.         $isAjax $request->isXmlHttpRequest();
  58.  
  59.         if(!$isAjaxreturn $this->redirect('@homepage');
  60.  
  61.         if(!$request->isMethod('post')){
  62.             $info array('success'=>false,'errors'=>'Wrong parameters');
  63.             $error $this->setJsonError($info);
  64.             return $this->renderText($error);
  65.         }
  66.  
  67.         $this->form new EtvaNodeForm();
  68.  
  69.         $result $this->processJsonForm($request$this->form);
  70.  
  71.         if(!$result['success']){
  72.             $error $this->setJsonError($result);
  73.             return $this->renderText($error);
  74.         }
  75.  
  76.         $result json_encode($result);
  77.  
  78.         $this->getContext()->getResponse()->setHttpHeader("X-JSON"'()')// set a header, (although it is empty, it is nicer than without a correct header. Filling the header with the result will not be parsed by extjs as far as I have seen).
  79.  
  80.         return $this->renderText($result);
  81.  
  82.     }
  83.  
  84.   /*
  85.    * Used to update a field node
  86.    * Note: not in use
  87.    */
  88.     public function executeJsonUpdate(sfWebRequest $request)
  89.     {
  90.         $isAjax $request->isXmlHttpRequest();
  91.  
  92.         if(!$isAjaxreturn $this->redirect('@homepage');
  93.  
  94.         if(!$request->isMethod('post'&& !$request->isMethod('put')){
  95.             $info array('success'=>false,'errors'=>'Wrong parameters');
  96.             $error $this->setJsonError($info);
  97.             return $this->renderText($error);
  98.         }
  99.  
  100.         if(!$etva_node EtvaNodePeer::retrieveByPk($request->getParameter('id'))){
  101.             $error_msg sprintf('Object etva_node does not exist (%s).'$request->getParameter('id'));
  102.             $info array('success'=>false,'errors'=>$error_msg);
  103.             $error $this->setJsonError($info);
  104.             return $this->renderText($error);
  105.         }
  106.  
  107.         $etva_node->setByName($request->getParameter('field')$request->getParameter('value'));
  108.         $etva_node->save();
  109.  
  110.         $result array('success'=>true);
  111.         $result json_encode($result);
  112.         $this->getResponse()->setHttpHeader("X-JSON"'()')// set a header, (although it is empty, it is nicer than without a correct header. Filling the header with the result will not be parsed by extjs as far as I have seen).
  113.         return $this->renderText($result);
  114.  
  115.     }
  116.  
  117.   /*
  118.    * Used to update a field node
  119.    * Note: not in use
  120.    */
  121.     public function executeJsonDelete(sfWebRequest $request)
  122.     {
  123.         $isAjax $request->isXmlHttpRequest();
  124.  
  125.         if(!$isAjaxreturn $this->redirect('@homepage');
  126.  
  127.         if(!$etva_node EtvaNodePeer::retrieveByPk($request->getParameter('id'))){
  128.             $error_msg sprintf('Object etva_node does not exist (%s).'$request->getParameter('id'));
  129.             $info array('success'=>false,'errors'=>$error_msg);
  130.             $error $this->setJsonError($info);
  131.             return $this->renderText($error);
  132.         }
  133.  
  134.         $etva_node->delete();
  135.  
  136.         $result array('success'=>true);
  137.         $result json_encode($result);
  138.         $this->getResponse()->setHttpHeader("X-JSON"'()')// set a header, (although it is empty, it is nicer than without a correct header. Filling the header with the result will not be parsed by extjs as far as I have seen).
  139.         return $this->renderText($result);
  140.     }
  141.  
  142.   /*
  143.    * Used to show node grid info
  144.    * Returns: array(total=>1,data=>node info)
  145.    */
  146.     public function executeJsonGridInfo(sfWebRequest $request)
  147.     {
  148.         $isAjax $request->isXmlHttpRequest();
  149.  
  150.         if(!$isAjaxreturn $this->redirect('@homepage');
  151.         $elements array();
  152.         $this->etva_node EtvaNodePeer::retrieveByPk($request->getParameter('id'));
  153.         $elements[$this->etva_node->toArray();
  154.  
  155.         $final array('total' =>   count($elements),'data'  => $elements);
  156.         $result json_encode($final);
  157.  
  158.         $this->getResponse()->setHttpHeader("X-JSON"'()')// set a header, (although it is empty, it is nicer than without a correct header. Filling the header with the result will not be parsed by extjs as far as I have seen).
  159.  
  160.         return $this->renderText($result);
  161.  
  162.     }
  163.  
  164.   /*
  165.    * Returns lists all nodes for grid with pager
  166.    */
  167.     public function executeJsonGrid($request)
  168.     {
  169.         $isAjax $request->isXmlHttpRequest();
  170.  
  171.         if(!$isAjaxreturn $this->redirect('@homepage');
  172.  
  173.         $limit $this->getRequestParameter('limit'10);
  174.         $page floor($this->getRequestParameter('start'0$limit)+1;
  175.  
  176.         // pager
  177.         $this->pager new sfPropelPager('EtvaNode'$limit);
  178.         $c new Criteria();
  179.  
  180.         $this->addSortCriteria($c);
  181.  
  182.         $this->pager->setCriteria($c);
  183.         $this->pager->setPage($page);
  184.  
  185.         $this->pager->setPeerMethod('doSelect');
  186.         $this->pager->setPeerCountMethod('doCount');
  187.  
  188.         $this->pager->init();
  189.  
  190.  
  191.         $elements array();
  192.  
  193.         # Get data from Pager
  194.         foreach($this->pager->getResults(as $item)
  195.         $elements[$item->toArray();
  196.  
  197.         $final array(
  198.       'total' =>   $this->pager->getNbResults(),
  199.       'data'  => $elements
  200.         );
  201.  
  202.         $result json_encode($final);
  203.  
  204.         $this->getResponse()->setHttpHeader("X-JSON"'()')// set a header, (although it is empty, it is nicer than without a correct header. Filling the header with the result will not be parsed by extjs as far as I have seen).
  205.         return $this->renderText($result);
  206.  
  207.     }
  208.  
  209.     protected function addSortCriteria($criteria)
  210.     {
  211.         if ($this->getRequestParameter('sort')==''return;
  212.  
  213.         $column EtvaNodePeer::translateFieldName(sfInflector::camelize($this->getRequestParameter('sort'))BasePeer::TYPE_PHPNAMEBasePeer::TYPE_COLNAME);
  214.  
  215.         if ('asc' == strtolower($this->getRequestParameter('dir')))
  216.         $criteria->addAscendingOrderByColumn($column);
  217.         else
  218.         $criteria->addDescendingOrderByColumn($column);
  219.     }
  220.  
  221.  
  222. /*
  223.  *
  224.  * SOAP Requests
  225.  *
  226.  */
  227.  
  228.   /*
  229.    * Executes requests for all nodes ('broadcast' messages)
  230.    */
  231.     function executeBulkSoap(sfWebRequest $request){
  232.  
  233.         $node_list EtvaNodePeer::doSelect(new Criteria());
  234.  
  235.         foreach($node_list as $etva_node){
  236.  
  237.  
  238.             $request->setParameter('id'$etva_node->getId());
  239.  
  240.             $result $this->executeSoap($request);
  241.         }
  242.  
  243.         return $result;
  244.  
  245.     }
  246.  
  247.  
  248.     function executeSoap(sfWebRequest $request){
  249.  
  250.         $this->node EtvaNodePeer::retrieveByPk($request->getParameter('id'));
  251.  
  252.         if(!$this->node){
  253.  
  254.             $error 'Error: no virt agent found'"\n";
  255.             $this->getResponse()->setStatusCode(400);
  256.             // $this->getResponse()->setHttpHeader('Status', '404 Not Found');
  257.             $error json_encode($error);
  258.             // $error = json_encode(array('error'=>'da'));
  259.             return $this->renderText($error);
  260.         }
  261.  
  262.         $addr $this->node->getIP();
  263.         $port $this->node->getPort();
  264.         $proto "tcp";
  265.         $host "" $proto "://" $addr ":" $port;
  266.  
  267.         //$soap = new SOAP_Client($host,false,$port);
  268.  
  269.         $soap new soapClient($host,$port);
  270.         $method $this->getRequestParameter('method');
  271.         $params ($this->getRequestParameter('params'))?
  272.         json_decode($this->getRequestParameter('params'),truearray("nil"=>"true");
  273.  
  274.         $response $soap->processSoap($method$params);
  275.         $return $response;
  276.  
  277.         if (is_a($response'PEAR_Error')) {
  278.             $error 'Error: ' $response->getMessage("\n";
  279.             $error .= 'Error: ' $response->getDetail("\n";
  280.  
  281.  
  282.             $params_string array();
  283.             foreach ($params as $key => $value)
  284.             $params_string[$key ." = "$value;
  285.  
  286.  
  287.             $error .= "(".implode(',',$params_string).")"."\n";
  288.  
  289.             $this->getResponse()->setStatusCode(400);
  290.             $error json_encode($error);
  291.             return $this->renderText($error);
  292.         // end error response
  293.  
  294.  
  295.  
  296.         $is_xml stripos($method,"xml");
  297.         if($is_xml===false){
  298.  
  299.             $opt $this->getRequestParameter('opt');
  300.             // ex: method=getlvs&opt=tree
  301.             // calls generatelvsTree
  302.             if($opt=='tree'){
  303.                 $tam strlen($method);
  304.                 $call_ substr($method,3,$tam);
  305.                 $func_call 'generate'.$call_.'Tree';
  306.                 switch($call_){
  307.                     case 'vgs' $pvs $soap->call('getpvs',$params);
  308.                         $return $this->$func_call($response,$pvs);
  309.                         break;
  310.                     default$return $this->$func_call($response);
  311.                     }
  312.  
  313.                 }
  314.                 // ex: method=getlvs&opt=q
  315.                 // calls generatelvsQuery
  316.                 if($opt=='q'){
  317.                     $query $this->getRequestParameter('query');
  318.                     $tam strlen($method);
  319.  
  320.                     $call_ substr($method,3,$tam);
  321.                     $func_call 'generate'.$call_.'Query';
  322.  
  323.                     $return $this->$func_call($response,$query);
  324.                 }
  325.  
  326.                 if($opt=='update'){
  327.                     // $tam = strlen($method);
  328.                     //  $call_ = substr($method,3,$tam);
  329.                     $func_call 'update_'.$method;
  330.  
  331.                     $return $this->$func_call($this->node,$response);
  332.  
  333.  
  334.                     //  die($call_);
  335.  
  336.                     // die($call_);
  337.                     // $ret = $this->generateTree($ret);
  338.                 }
  339.  
  340.  
  341.  
  342.                 if($opt=='l'){
  343.                     $query $this->getRequestParameter('q');
  344.                     $tam strlen($method);
  345.  
  346.                     $call_ substr($method,3,$tam);
  347.                     $func_call 'generate'.$call_.'List';
  348.  
  349.                     $return $this->$func_call($response,$query);
  350.                 }
  351.  
  352.  
  353.                 $return json_encode($return);
  354.                 $this->getResponse()->setHttpHeader("X-JSON"'()');
  355.             }
  356.             else $this->getContext()->getResponse()->setContentType('text/xml;');
  357.  
  358.             return $this->renderText($return);
  359.  
  360.         }
  361.  
  362.  
  363.         public function generatephydiskTree($list)
  364.         {
  365.  
  366.  
  367.             $aux array();
  368.             foreach ($list as $elem=>$props){
  369.                 $children array();
  370.                 foreach ($props as $tag=>$item){
  371.                     $id $item->device;
  372.                     $qtip 'Physical volume NOT initialized';
  373.                     $type $cls 'dev-pd';
  374.  
  375.                     $pretty_size $item->pretty_size;
  376.                     $size $item->size;
  377.  
  378.  
  379.  
  380.  
  381.                     $pretty_pvsize $item->pretty_pvsize;
  382.                     $pvsize $item->pvsize;
  383.  
  384.  
  385.                     if(isset($item->pvinit))
  386.                     if($item->pvinit)$qtip 'Physical volume initialized';
  387.                         $type'dev-pv';
  388.                         $cls 'dev-pv';
  389.                     }
  390.  
  391.                     $children[array('id'=>$id,'uiProvider'=>'col','iconCls'=>'task','cls'=>$cls,'text'=>$tag,'size'=>$size,'prettysize'=>$pretty_size,'pvsize'=>$pvsize,'pretty-pvsize'=>$pretty_pvsize'singleClickExpand'=>true,'type'=>$type,'qtip'=>$qtip,'leaf'=>true);
  392.                 }
  393.  
  394.                 $aux[array('id'=>$elem,'uiProvider'=>'col','iconCls'=>'devices-folder','text'=>$elem'singleClickExpand'=>true,'children'=>$children);
  395.  
  396.  
  397.             }
  398.  
  399.  
  400.             //      $local_devs = $list->local;
  401.             //
  402.             //
  403.             //      foreach ($local_devs as $elem=>$props){
  404.             //
  405.             //          $aux_ = array();
  406.             //
  407.             //
  408.             //          $id = $props->device;
  409.             //          $qtip = 'Physical volume NOT initialized';
  410.             //          $type = $cls = 'dev-pd';
  411.             //          $size = $props->size;
  412.             //
  413.             //
  414.             //          $type= 'dev-pv';
  415.             //
  416.             //          if(isset($props->pvinit))
  417.             //              if($props->pvinit){ $qtip = 'Physical volume initialized';
  418.             //                                  $type= 'dev-pv';
  419.             //                                  $cls = 'dev-pv';
  420.             //              }
  421.             //
  422.             //           foreach ($props as $prop){
  423.             //
  424.             //         //  $size = $prop['size'];
  425.             //
  426.             ////          foreach ($props as $prop=>$value){
  427.             ////                        if($prop=='device') $id = $value;
  428.             ////                        if($prop=='pvinit'){
  429.             ////                            $qtip = 'Physical volume initialized';
  430.             ////                            $cls = 'dev-pv';
  431.             ////                            $type= 'dev-pv';
  432.             ////                        }
  433.             ////
  434.             ////                        $aux_[] = array('text'=>$prop,'leaf'=>true);
  435.             ////
  436.             //                        // die($prop);
  437.             //                     //   $aux_[] = array('text'=>$prop,'id'=>$child_id,'url'=> $this->getController()->genUrl('server/view?id='.$server->getID()),
  438.             //                      //      'leaf'=>true);
  439.             //          }
  440.             //
  441.             //
  442.             //  //  iconCls:'task-folder',
  443.             //$aux[] = array('id'=>$id,'uiProvider'=>'col','iconCls'=>'task','cls'=>$cls,'text'=>$elem,'size'=>$size, 'singleClickExpand'=>true,'type'=>$type,'qtip'=>$qtip,'leaf'=>true);
  444.             //          $aux[] = array('id'=>$id,'cls'=>$cls,'text'=>$elem,'size'=>$size, 'singleClickExpand'=>true,'type'=>$type,'qtip'=>$qtip,'children'=>$aux_);
  445.  
  446.             //          if(empty($aux_)){
  447.             //              $aux[] = array('text'=>$node->getName(),'id'=>$node->getID(),'url'=>$this->getController()->genUrl('node/view?id='.$node->getID()),
  448.             //                'children'=>$aux_servers,'expanded'=>true,'cls'=> 'x-tree-node-collapsed');
  449.             //          }else $aux[] = array('text'=>$node->getName(),'id'=>$node->getID(),'url'=>$this->getController()->genUrl('node/view?id='.$node->getID()),
  450.             //                        'singleClickExpand'=>true,'children'=>$aux_servers);
  451.  
  452.             // }
  453.             return $aux;
  454.  
  455.         }
  456.  
  457.  
  458.  
  459.         public function generatevgsTree($list,$pvsl)
  460.         {
  461.  
  462.             $aux array();
  463.             foreach ($list as $elem=>$props){
  464.  
  465.                 $aux_ array();
  466.                 $id '';
  467.                 $qtip '';
  468.                 $cls 'dev-pd';
  469.  
  470.                 $pvs_list $props->physicalvolumes;
  471.                 $pvs_tree $this->generatepvsTree($pvs_list);
  472.  
  473.                 //          foreach ($props as $prop=>$value){
  474.                 //                        if($prop=='vg') $id = $value;
  475.                 //                        if($prop=='vsize'){
  476.                 //                            $qtip = 'Size:'.$value;
  477.                 //                            $cls = 'vg';
  478.                 //                        }
  479.                 //
  480.                 //                        $aux_[] = array('text'=>$prop,'leaf'=>true);
  481.                 //
  482.                 //
  483.                 //                        // die($prop);
  484.                 //                     //   $aux_[] = array('text'=>$prop,'id'=>$child_id,'url'=> $this->getController()->genUrl('server/view?id='.$server->getID()),
  485.                 //                      //      'leaf'=>true);
  486.                 //          }
  487.  
  488.                 //          $pvs_tree = $this->generatepvsTree($pvsl,$id);
  489.  
  490.                 foreach($pvs_tree as $pvitem){
  491.                     $aux_[$pvitem;
  492.                 }
  493.                 //$aux_[] = array_merge($aux,);
  494.                 //  $aux_[] = array('id'=>'toto','cls'=>$cls,'text'=>'elem','singleClickExpand'=>true,'type'=>'vg','qtip'=>$qtip,'children'=>$tt);
  495.  
  496.                 //          $aux[] = array('id'=>$id,'cls'=>$cls,'text'=>$elem,'expanded'=> true,'singleClickExpand'=>true,'type'=>'vg','qtip'=>$qtip,'children'=>$aux_);
  497.                 $aux[array('id'=>$id,'uiProvider'=>'col','iconCls'=>'task','cls'=>$cls,'text'=>$elem,'size'=>$size'singleClickExpand'=>true,'type'=>$type,'qtip'=>$qtip,'leaf'=>true);
  498.  
  499.             }
  500.             return $aux;
  501.  
  502.         }
  503.  
  504.  
  505.         public function generatepvsTree_old($list,$vg_filter=null)
  506.         {
  507.  
  508.             $aux array();
  509.             $aux_it array();
  510.             foreach ($list as $elem=>$props){
  511.  
  512.                 $aux_ array();
  513.                 $id '';
  514.                 $qtip '';
  515.                 $cls 'dev-pv';
  516.                 $match 0;
  517.                 foreach ($props as $prop=>$value){
  518.                     if($vg_filter)
  519.                     if($prop=='vg' && $value==$vg_filter$match 1// pv belogns to the vg_filter group
  520.  
  521.                     if($prop=='pv'$id $value// setting id
  522.                     if($prop=='psize'){
  523.                         $qtip['Total size:'.$value;
  524.                     }
  525.  
  526.                     if($prop=='pfree'){
  527.                         $qtip['Free size:'.$value;
  528.                     }
  529.  
  530.                     $aux_[array('text'=>$prop,'leaf'=>true);
  531.  
  532.                     // die($prop);
  533.                     //   $aux_[] = array('text'=>$prop,'id'=>$child_id,'url'=> $this->getController()->genUrl('server/view?id='.$server->getID()),
  534.                     //      'leaf'=>true);
  535.                 }
  536.                 $qtip implode("<br>",$qtip);
  537.                 if($vg_filter)
  538.                 if($match)
  539.                 $aux[array('id'=>$id,'cls'=>$cls,'text'=>$elem,'singleClickExpand'=>true,'type'=>'dev-pv','qtip'=>$qtip,'children'=>$aux_);
  540.  
  541.  
  542.             }
  543.             //   $tt = array();
  544.             //   $aux_it[0] = array('id'=>'toto','cls'=>$cls,'text'=>'elem','singleClickExpand'=>true,'type'=>'vg','qtip'=>$qtip,'children'=>$tt);
  545.             return $aux;
  546.  
  547.         }
  548.  
  549.         public function generatepvsTree($list)
  550.         {
  551.  
  552.             $aux array();
  553.             $aux_it array();
  554.             foreach ($list as $elem=>$props){
  555.  
  556.                 $aux_ array();
  557.                 $id $props->device;
  558.                 $size $props->size;
  559.                 $pretty_size $props->pretty_size;
  560.                 $qtip '';
  561.                 $cls 'dev-pv';
  562.                 $match 0;
  563.                 //          foreach ($props as $prop=>$value){
  564.                 //
  565.                 //                        if($prop=='pv') $id = $value; // setting id
  566.                 //                        if($prop=='psize'){
  567.                 //                            $qtip[] = 'Total size:'.$value;
  568.                 //                        }
  569.                 //
  570.                 //                        if($prop=='pfree'){
  571.                 //                            $qtip[] = 'Free size:'.$value;
  572.                 //                        }
  573.                 //
  574.                 //                        $aux_[] = array('text'=>$prop,'leaf'=>true);
  575.                 //
  576.                 //                        // die($prop);
  577.                 //                     //   $aux_[] = array('text'=>$prop,'id'=>$child_id,'url'=> $this->getController()->genUrl('server/view?id='.$server->getID()),
  578.                 //                      //      'leaf'=>true);
  579.                 //          }
  580.                 //   $qtip = implode("<br>",$qtip);
  581.  
  582.                 $aux[array('id'=>$id,'cls'=>$cls,'uiProvider'=>'col','iconCls'=>'task','text'=>$elem,'size'=>$size,'prettysize'=>$pretty_size,'singleClickExpand'=>true,'type'=>'dev-pv','qtip'=>$qtip,'leaf'=>true);
  583.  
  584.  
  585.             }
  586.             //   $tt = array();
  587.             //   $aux_it[0] = array('id'=>'toto','cls'=>$cls,'text'=>'elem','singleClickExpand'=>true,'type'=>'vg','qtip'=>$qtip,'children'=>$tt);
  588.             return $aux;
  589.  
  590.         }
  591.  
  592.  
  593.         public function generatepvsQuery($list,$query)
  594.         {
  595.  
  596.             $elements array();
  597.             foreach ($list as $elem=>$props){
  598.  
  599.                 if(!isset($props->$query))
  600.                 $elements[array('value'=>$props->device,'name'=>$elem);
  601.  
  602.             }
  603.  
  604.             $result array('total' =>   count($elements),'data'  => $elements);
  605.  
  606.             return $result;
  607.         }
  608.  
  609.  
  610.         public function generatevgsList($list,$query)
  611.         {
  612.  
  613.             $elements array();
  614.             foreach ($list as $elem=>$props){
  615.                 if($props->$query<>){
  616.                     $size $props->freesize;
  617.                     // $size = Etva::byte_to_MBconvert($size);
  618.                     $elements[array('id'=>$props->vg,'txt'=>$elem,'size'=>$size);
  619.                 }
  620.             }
  621.  
  622.             $result array('total' =>   count($elements),'data'  => $elements);
  623.  
  624.             return $result;
  625.         }
  626.  
  627.  
  628.         public function generatevgpvsTree($list)
  629.         {
  630.  
  631.             $aux array();
  632.             foreach ($list as $elem=>$props){
  633.  
  634.                 $aux_ array();
  635.                 $id $props->vg;
  636.                 $qtip '';
  637.                 $cls 'vg';
  638.                 $size $props->size;
  639.                 $pretty_size $props->pretty_size;
  640.  
  641.  
  642.                 $pvsList $props->physicalvolumes;
  643.                 $pvs_tree $this->generatepvsTree($pvsList);
  644.  
  645.  
  646.                 //  $aux_[] = array('id'=>'toto','cls'=>$cls,'text'=>'elem','singleClickExpand'=>true,'type'=>'vg','qtip'=>$qtip,'children'=>$tt);
  647.  
  648.                 //          $aux[] = array('id'=>$id,'cls'=>$cls,'text'=>$elem,'expanded'=> true,'singleClickExpand'=>true,'type'=>'vg','qtip'=>$qtip,'children'=>$aux_);
  649.                 $aux[array('id'=>$id,'uiProvider'=>'col','iconCls'=>'devices-folder','cls'=>$cls,'text'=>$elem,'type'=>'vg','size'=>$size,'prettysize'=>$pretty_size'singleClickExpand'=>true,'qtip'=>$qtip,'children'=>$pvs_tree);
  650.  
  651.             }
  652.             return $aux;
  653.  
  654.         }
  655.  
  656.  
  657.         public function generatelvsTree($list)
  658.         {
  659.  
  660.             $aux array();
  661.             $aux_it array();
  662.             foreach ($list as $elem=>$props){
  663.  
  664.                 $aux_ array();
  665.                 $id $props->lv;
  666.                 $pretty_size $props->lsize;
  667.                 $size $props->size;
  668.                 $vgfreesize $props->vgfreesize;
  669.                 $vg $props->vg;
  670.                 $vg_size $props->vgsize;
  671.                 $cls 'lv';
  672.                 $aux[array('id'=>$id,'cls'=>$cls,'uiProvider'=>'col','iconCls'=>'devices-folder','text'=>$elem,'size'=>$size,'prettysize'=>$pretty_size,'vgsize'=>$vg_size,'singleClickExpand'=>true,'type'=>'lv','vg'=>$vg,'vgfreesize'=>$vgfreesize,'leaf'=>true);
  673.  
  674.  
  675.             }
  676.             //   $tt = array();
  677.             //   $aux_it[0] = array('id'=>'toto','cls'=>$cls,'text'=>'elem','singleClickExpand'=>true,'type'=>'vg','qtip'=>$qtip,'children'=>$tt);
  678.             return $aux;
  679.  
  680.         }
  681.  
  682.         public function generatelvsList($list,$query)
  683.         {
  684.  
  685.             $elements array();
  686.             foreach ($list as $elem=>$props){
  687.                 if($props->$query<>){
  688.                     $size $props->size;
  689.                     // $size = Etva::byte_to_MBconvert($size);
  690.                     $elements[array('id'=>$props->lvdevice,'txt'=>$elem,'size'=>$size);
  691.                 }
  692.             }
  693.  
  694.             $result array('total' =>   count($elements),'data'  => $elements);
  695.  
  696.             return $result;
  697.         }
  698.  
  699.  
  700.         public function update_list_vms(EtvaNode $node,$vms){
  701.  
  702.             //   $this->request->setParameter('uid', $node_uid);
  703.             // $this->request->setParameter('vms',$vms);
  704.  
  705.             //  $this->executeUpdate($etva_node, $vms);
  706.             // $this->forward('server', 'update');
  707.             $action sfContext::getInstance()->getController()->getAction('server','update');
  708.             $result $action->executeUpdate($node,$vms);
  709.             return $result;
  710.  
  711.         }
  712.  
  713.  
  714.         public function executeSoapCreate(sfWebRequest $request)
  715.         {
  716.             if(SF_ENVIRONMENT == 'soap'){
  717.  
  718.                 //           $array = array(
  719.                 //                'name'=>'node_name',
  720.                 //                'memtotal'=>1,
  721.                 //                'cputotal'=>1,
  722.                 //                'ip'=>'10.10.20.79',
  723.                 //                'port'=>'7001',
  724.                 //                'uid'=>'e93927a5-05e4-4ed6-a0bb-8c0268e1096c',
  725.                 //                'state'=>1);
  726.  
  727.  
  728.                 //    $this->request->setParameter('etva_node', $array);
  729.  
  730.  
  731.  
  732.                 // Check if already initialized
  733.                 $this->form new EtvaNodeForm();
  734.                 $params $request->getParameter($this->form->getName());
  735.                 $uid $params['uid'];
  736.  
  737.                 //   $request->getParameterHolder()->remove('etva_node');
  738.  
  739.  
  740.  
  741.                 $c new Criteria();
  742.                 $c->add(EtvaNodePeer::UID,$uid);
  743.  
  744.                 $etva_node EtvaNodePeer::doSelectOne($c);
  745.                 //$da = array()
  746.                 //   $request->setParameter('etva_node', $etva_node->getId());
  747.  
  748.                 if($etva_node){
  749.  
  750.                     $params['id'$etva_node->getId();
  751.  
  752.                     $request->getParameterHolder()->set($this->form->getName(),$params);
  753.                     $this->form new EtvaNodeForm($etva_node);
  754.                 }
  755.  
  756.  
  757.                 $result $this->processJsonForm($request$this->form);
  758.  
  759.  
  760.                 return $result;
  761.  
  762.  
  763.             }
  764.  
  765.         }
  766.  
  767.         public function executeSoapUpdate(sfWebRequest $request)
  768.         {
  769.  
  770.             if(SF_ENVIRONMENT == 'soap'){
  771.  
  772.                 $c new Criteria();
  773.                 $c->add(EtvaNodePeer::UID ,$request->getParameter('uid'));
  774.  
  775.  
  776.                 if(!$etva_node EtvaNodePeer::doSelectOne($c)){
  777.                     $error_msg sprintf('Object etva_node does not exist (%s).'$request->getParameter('uid'));
  778.                     $error array('success'=>false,'errors'=>$error_msg);
  779.  
  780.                     return $error;
  781.                 }
  782.  
  783.                 $etva_node->setByName($request->getParameter('field')$request->getParameter('value'),BasePeer::TYPE_FIELDNAME);
  784.                 $etva_node->save();
  785.  
  786.                 $result array('success'=>true);
  787.                 return $result;
  788.             }
  789.  
  790.         }
  791.  
  792.   /*
  793.  *
  794.  * END SOAP Requests
  795.  *
  796.  */
  797.  
  798.         protected function processJsonForm(sfWebRequest $requestsfForm $form)
  799.         {
  800.             // die(print_r($request));
  801.             $form->bind($request->getParameter($form->getName())$request->getFiles($form->getName()));
  802.  
  803.             // print_r($form);
  804.             // die($form->getName());
  805.             if ($form->isValid())
  806.             {
  807.                 //  print_r($etva_node);
  808.                 // die(print_r($form));
  809.                 $etva_node $form->save();
  810.  
  811.                 //          $request->getParameterHolder()->remove('etva_node');
  812.                 //
  813.                 //          $request->setParameter('id', $etva_node->getId());
  814.                 //          $request->setParameter('method', 'list_vms');
  815.                 //
  816.                 //
  817.                 //          $this->executeGetSoap($request);
  818.  
  819.  
  820.                 $result array('success'=>true,'insert_id'=>$etva_node->getId());
  821.                 return $result;
  822.  
  823.             }
  824.             else{
  825.  
  826.                 $errors array();
  827.                 foreach ($form->getErrorSchema(as $field => $error)
  828.                 $errors[$field$error->getMessage();
  829.                 $result array('success'=>false,'errors'=>$errors);
  830.                 return $result;
  831.             }
  832.  
  833.  
  834.         }
  835.  
  836.         private function setJsonError($info,$statusCode 400){
  837.  
  838.             $this->getContext()->getResponse()->setStatusCode($statusCode);
  839.             $error json_encode($info);
  840.             $this->getContext()->getResponse()->setHttpHeader("X-JSON"'()');
  841.             return $error;
  842.  
  843.         }
  844.  
  845.  
  846.  
  847.     }

Documentation generated on Fri, 19 Jun 2009 10:45:45 +0100 by phpDocumentor 1.4.2