Source for file actions.class.php
Documentation is available at actions.class.php
* @version SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
* Creates a logical volume
* Params: array lv (mapping to db phpnames)
* Decode lv object and map it to array
$node_id = $lv['NodeId'];
* Gets volume group ID giving volume group name and node id
$vgname = $lv['VolumegroupName'];
unset ($lv['VolumegroupName']);
$vg_id = $etva_vg->getId();
* sets vg id for the lv to created
$lv['VolumegroupId'] = $vg_id;
* updates volumegroup free size
$vg_freesize = $lv['VolumegroupFreesize'];
unset ($lv['VolumegroupFreesize']);
$etva_vg->setFreesize($vg_freesize);
$etva_lv->fromArray($lv);
// $etva_vg = $etva_lv->getEtvaVolumegroup();
$result = array('success'=> true,'object'=> $etva_lv->toArray());
$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).
return $this->renderText($result);
* Remove the logical volume
* Params: device, nid (virtAgent node ID)
$isAjax = $request->isXmlHttpRequest();
if(!$isAjax) return $this->redirect('@homepage');
$criteria = new Criteria();
$error_msg = sprintf('Object etvalogicalvolume does not exist (%s).', $request->getParameter('lvdev'));
$info = array('success'=> false,'errors'=> $error_msg);
return $this->renderText($error);
* updates volume group free size on delete
$etva_vg = $etva_lv->getEtvaVolumegroup();
$etva_vg->setFreesize($request->getParameter('vgfreesize'));
$result = array('success'=> true);
$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).
return $this->renderText($result);
* Updates logical volume info
* Params: array lv (mapping to db phpnames)
$isAjax = $request->isXmlHttpRequest();
$lv = ($request->getParameter('lv'))? json_decode($request->getParameter('lv'),true) : array();
$node_id = $lv['NodeId'];
// retrieve lv by node id and lvdevice
$error_msg = sprintf('Object etva_logicalvol does not exist (%s).', $lv['Lvdevice']);
$info = array('success'=> false,'errors'=> $error_msg);
return $this->renderText($error);
$etva_lv->fromArray($lv);
* If vgfreesize is set to update then retrieve vg info and update it
if(isset ($lv['VgFreesize'])){
$vg_freesize = $lv['VgFreesize'];
$etva_vg = $etva_lv->getEtvaVolumegroup();
$etva_vg->setFreesize($vg_freesize);
if($etva_lv->validate()){
$result = array('success'=> true,'object'=> $etva_lv->toArray());
$info = array('success'=> false,'errors'=> 'Not valid');
return $this->renderText($error);
$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).
return $this->renderText($result);
* Params: nid (virtAgent node ID)
* Used to return pre-formatted data for tree-column extjs
$criteria = new Criteria();
// retrieves array logical volumes with node ID containing vg info
foreach ($list as $elem){
$etva_vg = $elem->getEtvaVolumegroup();
//check data consistency....should be fine
$pretty_size = $elem->getSize();
$size = $elem->getSize();
$vg_size = $etva_vg->getSize();
$vg_freesize = $etva_vg->getFreesize();
$aux[] = array('id'=> $id,'cls'=> $cls,'uiProvider'=> 'col','iconCls'=> 'devices-folder','text'=> $id,'size'=> $size,'prettysize'=> $pretty_size,'vgsize'=> $vg_size,'singleClickExpand'=> true,'type'=> 'lv','vg'=> $vg,'vgfreesize'=> $vg_freesize,'leaf'=> true);
$this->getResponse()->setHttpHeader("X-JSON", '()');
return $this->renderText($return);
* Params: nid (virtAgent node ID)
* Returns lvs with writeable==1 AND in_use == 0
* Returns pre-formated data for Extjs combo with lvs available
$isAjax = $request->isXmlHttpRequest();
if(!$isAjax) return $this->redirect('@homepage');
$criteria = new Criteria();
$info = array('success'=> false,'errors'=> 'No logical volumes available');
return $this->renderText($error);
// build result to feed to combo...
foreach ($etva_lvs as $lv){
// $size = Etva::byte_to_MBconvert($size);
$elements[] = array('id'=> $lv->getLvdevice(),'txt'=> $lv->getLv(),'size'=> $size);
$result = array('total' => count($elements),'data' => $elements);
$this->getResponse()->setHttpHeader("X-JSON", '()');
return $this->renderText($return);
$this->getContext()->getResponse()->setStatusCode($statusCode);
$this->getContext()->getResponse()->setHttpHeader("X-JSON", '()');
* Used to process soap requests => updateVirtAgentLvs
* Updates logical volume info
* Params: uid (virtAgent uid), lvs (object containing logical volumes info)
* Check if the request is made via soapapi.php interface
if(SF_ENVIRONMENT == 'soap'){
$lvs = $request->getParameter('lvs');
// check node ID correspondig to the uid given
$error_msg = sprintf('Object etva_node does not exist (%s).', $request->getParameter('uid'));
$error = array('success'=> false,'errors'=> $error_msg);
$criteriaVG = new Criteria();
$criteriaLV = new Criteria();
foreach($lvs as $lv=> $lvInfo){
// if NOT exists create new....else update som info
$etva_logicalvol->setNodeId($etva_node->getId());
// get volume group information for the lv
$etva_logicalvol->setVolumegroupId($etva_vg->getId());
$etva_logicalvol->setLv($lv);
$etva_logicalvol->setLvdevice($lvInfo->lvdevice);
$etva_logicalvol->setSize($lvInfo->size);
$etva_logicalvol->setFreesize($lvInfo->freesize);
$etva_logicalvol->setStorageType($lvInfo->type);
$etva_logicalvol->setWriteable($lvInfo->writeable);
$etva_logicalvol->save();
return array('success'=> true);
|