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 $
// called by 'Add Server Wizard' button
$this->etva_node = EtvaNodePeer::retrieveByPk($request->getParameter('id'));
// remove session macs for cleanup the wizard
$this->getUser()->getAttributeHolder()->remove('macs_in_wizard');
$etva_server = EtvaServerPeer::retrieveByPk($request->getParameter('id'));
$this->forward404Unless($etva_server);
$this->node_id = $etva_server->getNodeId();
$this->server_id = $request->getParameter('id');
$this->server_form = new EtvaServerForm();
$this->sfGuardGroup_tableMap = sfGuardGroupPeer::getTableMap();
$this->network_form = new EtvaNetworkForm();
$this->agent_form = new EtvaAgentForm();
$server = json_decode($request->getParameter('server'),true);
$lvdev = $server['Logicalvolume'];
unset ($server['Logicalvolume']);
$node_id = $server['NodeId'];
$lv_id = $etva_lv->getId();
$server['LogicalvolumeId'] = $lv_id;
$serverMem = $server['Mem'];
$serverMemB = $serverMem * 1024 * 1024;
$node_id = $server['NodeId'];
$server['Ip'] = $etva_node->getIp();
$etva_node_free_mem = $etva_node->getMemfree();
$free = $etva_node_free_mem - $serverMemB;
$etva_node->setMemfree($free);
// $node_memfree = $server = json_decode($request->getParameter('server'),true);
// return print_r($server);
$etva_server->fromArray($server);
//7 $mac = EtvaMacPeer::retrieveByMac($object['Mac']);
$result = array('success'=> true,'object'=> $etva_server->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);
$isAjax = $request->isXmlHttpRequest();
// if(!$isAjax) return $this->redirect('@homepage');
// if(!$request->isMethod('post')){
// $info = array('success'=>false,'errors'=>'Wrong parameters');
// $error = $this->setJsonError($info);
// return $this->renderText($error);
$this->form = new EtvaServerForm();
$error = $this->setJsonError($result);
return $this->renderText($error);
$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);
$isAjax = $request->isXmlHttpRequest();
if(!$isAjax) return $this->redirect('@homepage');
if(!$request->isMethod('post') && !$request->isMethod('put')){
$info = array('success'=> false,'errors'=> 'Wrong parameters');
$error = $this->setJsonError($info);
return $this->renderText($error);
if(!$etva_server = EtvaServerPeer::retrieveByPk($request->getParameter('id'))){
$error_msg = sprintf('Object etva_server does not exist (%s).', $request->getParameter('id'));
$info = array('success'=> false,'errors'=> $error_msg);
$error = $this->setJsonError($info);
return $this->renderText($error);
$etva_server->setByName($request->getParameter('field'), $request->getParameter('value'));
$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);
$isAjax = $request->isXmlHttpRequest();
if(!$isAjax) return $this->redirect('@homepage');
$server = ($request->getParameter('server'))? json_decode($request->getParameter('server'),true) : array();
$etva_server->fromArray($server);
$etva_server->setNew(false);
if($etva_server->validate()){
$result = array('success'=> true,'object'=> $etva_server->toArray());
}else $result = array('success'=> false);
// if(!$etva_server = EtvaServerPeer::retrieveByPk($request->getParameter('id'))){
// $error_msg = sprintf('Object etva_server does not exist (%s).', $request->getParameter('id'));
// $info = array('success'=>false,'errors'=>$error_msg);
// $error = $this->setJsonError($info);
// return $this->renderText($error);
// $etva_server->setByName($request->getParameter('field'), $request->getParameter('value'));
$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);
$isAjax = $request->isXmlHttpRequest();
if(!$isAjax) return $this->redirect('@homepage');
if(!$etva_server = EtvaServerPeer::retrieveByPk($request->getParameter('id'))){
$error_msg = sprintf('Object etva_server does not exist (%s).', $request->getParameter('id'));
$info = array('success'=> false,'errors'=> $error_msg);
$error = $this->setJsonError($info);
return $this->renderText($error);
$etva_server_mem = $etva_server->getMem();
$etva_server_memB = $etva_server_mem * 1024 * 1024;
$etva_node = EtvaNodePeer::retrieveByPK($etva_server->getNodeId());
$etva_node_memfree = $etva_node->getMemfree();
$free = $etva_node_memfree + $etva_server_memB;
$etva_node->setMemfree($free);
$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);
$isAjax = $request->isXmlHttpRequest();
if(!$isAjax) return $this->redirect('@homepage');
$criteria = new Criteria();
$this->etva_server = EtvaServerPeer::doSelectJoinsfGuardGroup($criteria);
$serverGroup = $this->etva_server[0]->getsfGuardGroup();
$serverGroupName = $serverGroup->getName();
$elements[0] = $this->etva_server[0]->toArray();
$elements[0]['SfGuardGroupName'] = $serverGroupName;
$final = array('total' => count($elements),'data' => $elements);
$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);
$isAjax = $request->isXmlHttpRequest();
if(!$isAjax) return $this->redirect('@homepage');
$limit = $this->getRequestParameter('limit', 10);
$page = floor($this->getRequestParameter('start', 0) / $limit)+ 1;
$this->pager = new sfPropelPager('EtvaServer', $limit);
$this->pager->setCriteria($c);
$this->pager->setPage($page);
$this->pager->setPeerMethod('doSelectJoinsfGuardGroup');
$this->pager->setPeerCountMethod('doCountJoinsfGuardGroup');
foreach($this->pager->getResults() as $item){
$serverGroup = $item->getsfGuardGroup();
$serverGroupName = $serverGroup->getName();
$elements[$i] = $item->toArray();
$elements[$i]['SfGuardGroupName'] = $serverGroupName;
'total' => $this->pager->getNbResults(),
$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);
if ($this->getRequestParameter('sort')== '') return;
$column = EtvaServerPeer::translateFieldName(sfInflector::camelize($this->getRequestParameter('sort')), BasePeer::TYPE_PHPNAME, BasePeer::TYPE_COLNAME);
if ('asc' == strtolower($this->getRequestParameter('dir')))
$criteria->addAscendingOrderByColumn($column);
$criteria->addDescendingOrderByColumn($column);
$nodeID = $this->getRequestParameter("nid");
// get submitted form elements
$form_elems = $request->getParameter($form->getName());
// retrieve mac pool elements number
// $mac_pool = $request->getParameter('mac_pool');
//generate random macs and add to form elements
// $macs = $this->generateMacPool($mac_pool);
// $macs = implode(',',$macs);
// $form_elems['mac_addresses'] = $macs;
$form->bind($form_elems, $request->getFiles($form->getName()));
$etva_server = $form->save();
//$result = array('success'=>true,'insert_id'=>$etva_server->getId());
$result = array('success'=> true, 'object'=> $etva_server->toArray());
foreach ($form->getErrorSchema() as $field => $error)
$errors[$field] = $error->getMessage();
$result = array('success'=> false,'errors'=> $errors);
private function setJsonError($info,$statusCode = 400){
$this->getContext()->getResponse()->setStatusCode($statusCode);
$this->getContext()->getResponse()->setHttpHeader("X-JSON", '()');
$isAjax = $request->isXmlHttpRequest();
if(!$isAjax) return $this->redirect('@homepage');
return $this->renderText ($json);
foreach ($nodes as $node){
foreach ($node->getServers() as $i => $server){
$child_id = 's'. $server->getID();
$aux_servers[] = array('text'=> $server->getName(),'id'=> $child_id,'url'=> $this->getController()->genUrl('server/view?id='. $server->getID()),
$aux[] = array('text'=> $node->getName(),'id'=> $node->getID(),'url'=> $this->getController()->genUrl('node/view?id='. $node->getID()),
'children'=> $aux_servers,'expanded'=> true,'cls'=> 'x-tree-node-collapsed');
}else $aux[] = array('text'=> $node->getName(),'id'=> $node->getID(),'url'=> $this->getController()->genUrl('node/view?id='. $node->getID()),
'singleClickExpand'=> true,'children'=> $aux_servers);
$isAjax = $request->isXmlHttpRequest();
if(!$isAjax) return $this->redirect('@homepage');
$num_macs = $request->getParameter('size');
$query = ($this->getRequestParameter('query'))? json_decode($this->getRequestParameter('query'),true) : array();
$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);
// if(SF_ENVIRONMENT == 'soap'){
// $vlans = $request->getParameter('vlans');
// $vms = $request->getParameter('vms');
$vms = !empty($vms) ? $vms : array();
// die(print_r($vms_uids));
$node_servers = $node->getEtvaServers();
foreach($node_servers as $node_server){
if(!in_array($node_server->getUid(),$vms_uids)){
$server_uuid = $node_server->getUid();
$server_name = $node_server->getName();
$server_path = $node_server->getDisk();
$server_ram = $node_server->getMem();
$server_cpuset = $node_server->getCpuset();
$server_networks = $node_server->getEtvaNetworks();
$server_location = $node_server->getLocation();
$networks_string = array();
foreach($server_networks as $server_network){
$networks_string[] = 'name='. $server_network->getVlan(). ','.
'macaddr='. $server_network->getMac();
$network_string = implode(';',$networks_string);
$new_servers[$server_name] = array(
'cpuset'=> $server_cpuset,
'network'=> $network_string,
'location'=> $server_location
if(SF_ENVIRONMENT == 'soap'){
$vms = $request->getParameter('vms');
$error_msg = sprintf('Object etva_node does not exist (%s).', $request->getParameter('uid'));
$error = array('success'=> false,'errors'=> $error_msg);
// // foreach ($node->getServers() as $i => $server){
// $node_servers = $etva_node->getServers();
// // $node_vlans = EtvaVlanPeer::doSelect(new Criteria());
// // return $node_vlans;
// $servers_name = array();
// foreach($node_servers as $node_server){
// $servers_name[] = $node_server->getName();
// foreach($vms as $name=>$vm){
// // print("a ".$vlan['name']);
// $v = in_array($name,$servers_name);
// if(!in_array($name,$servers_name)){
// $disk = $vm->Disks->arrayi-0;
// $etva_server = new EtvaServer();
// $etva_server->setName($name);
// $etva_server->setVncPort($vm->vnc_port);
// $etva_server->setUid($vm->uuid);
// $etva_server->setMem($vm->memory);
// $etva_server->setDisk($disk);
// $etva_server->setRcpu($vm->cpuset);
// $etva_server->setIp('0');
// $etva_server->setState($vm->state);
// $etva_server->setNodeId($etva_node->getId());
// $etva_server->setSfGuardGroupId(1);
// // return 'retornou agora :-)';
// $etva_server->save();}
// $etva_node->setByName($request->getParameter('field'), $request->getParameter('value'),BasePeer::TYPE_FIELDNAME);
// $result = array('success'=>true);
// public function executefrUpdate(EtvaNode $node, $vms)
//// $this->request->setParameter('params', $new_server);
//// $this->request->setParameter('method', '');
//// $this->request->setParameter('id', $node->getId());
//// $action = sfContext::getInstance()->getController()->getAction('node','getSoap');
//// $result = $action->executeGetSoap($this->request);
// // foreach ($node->getServers() as $i => $server){
// $node_servers = $node->getEtvaServers();
// // $node_vlans = EtvaVlanPeer::doSelect(new Criteria());
// // return $node_vlans;
// // $servers_name = array();
// // foreach($node_servers as $node_server){
// // $servers_name[] = $node_server->getName();
// $vms_uids[] = $vm->uuid;
// foreach($node_servers as $node_server){
// // print("a ".$vlan['name']);
// // $v = in_array($vm->name,$servers_name);
// $server_uuid = $node_server->getUid();
// $server_name = $node_server->getName();
// $server_path = $node_server->getDisk();
// $server_ram = $node_server->getMem();
// $server_cpuset = $node_server->getCpuset();
// $server_networks = $etva_server->getEtvaNetworks();
// $server_location = $etva_server->getLocation();
// $networks_string = array();
// foreach($server_networks as $server_network){
// $networks_string[] = array('name'=>$server_network->getVlan(),
// 'macaddr'=>$server_network->getMac());
// $network_string = implode(';',$networks_string);
// if(!in_array($server_uid,$vms_uids)){
// 'cpuset'=>$server_cpuset,
// 'network'=>$network_string,
// 'location'=>$server_location
// $this->request->setParameter('params', $new_server);
// $this->request->setParameter('id', $node->getId());
// $action = sfContext::getInstance()->getController()->getAction('node','getSoap');
// $result = $action->executeGetSoap($this->request);
// $disk_index = 'arrayi-0';
// // print $disk->$v->path;
// // $variables = get_object_vars($vm->Disks);
////$keys = array_keys($variables);
//// $value = $variables->$keys[0];
////print $variables[$keys[0]]->arrayi-0;
// // $disk = $vm->Disks->arrayi-0;
// // $disk = $disk->path;
// $etva_server = new EtvaServer();
// $etva_server->setName($vm->name);
// $etva_server->setVncPort($vm->vnc_port);
// $etva_server->setUid($vm->uuid);
// $etva_server->setMem($vm->memory);
// $etva_server->setDisk($disk->$disk_index->path);
// if(isset($vm->cpuset))
// $etva_server->setRcpu($vm->cpuset);
// $etva_server->setVcpu($vm->vcpu);
// $etva_server->setIp('0');
// $etva_server->setState($vm->state);
// $etva_server->setNodeId($node->getId());
// $etva_server->setSfGuardGroupId(1);
// // return 'retornou agora :-)';
// if($etva_server->validate()){
// $server_networks = $etva_server->getEtvaNetworks();
// $networks_id = array();
// foreach($server_networks as $server_network){
// $networks_id[] = $server_network->getPort();
// $vm_networks = $vm->Network;
// foreach($vm_networks as $vm_net){
// if(!in_array($vm_net->i,$networks_id)){
// $etva_network = new EtvaNetwork();
// $etva_network->setServerId($etva_server->getId());
// $etva_network->setPort($vm_net->i);
// $etva_network->setMac($vm_net->macaddr);
// $etva_network->setVlan($vm_net->name);
// $etva_network->save();
// // $etva_node->setByName($request->getParameter('field'), $request->getParameter('value'),BasePeer::TYPE_FIELDNAME);
// // $etva_node->save();
// $result = array('success'=>true);
//for ($i = 0; $i < count($vms); $i++) {
//$arr[] = get_object_vars($vms[$i]);
// foreach ($node->getServers() as $i => $server){
$node_servers = $node->getEtvaServers();
// $node_vlans = EtvaVlanPeer::doSelect(new Criteria());
foreach($node_servers as $node_server){
$servers_name[] = $node_server->getName();
// print("a ".$vlan['name']);
// $v = in_array($vm->name,$servers_name);
$disk_index = 'arrayi-0';
// print $disk->$v->path;
// $variables = get_object_vars($vm->Disks);
//$keys = array_keys($variables);
// $value = $variables->$keys[0];
//print $variables[$keys[0]]->arrayi-0;
// $disk = $vm->Disks->arrayi-0;
$etva_server->setName($vm->name);
$etva_server->setVncPort($vm->vnc_port);
$etva_server->setUid($vm->uuid);
$etva_server->setMem($vm->memory);
$etva_server->setDisk($disk->$disk_index->path);
$etva_server->setRcpu($vm->cpuset);
$etva_server->setVcpu($vm->vcpu);
$etva_server->setIp('0');
$etva_server->setState($vm->state);
$etva_server->setNodeId($node->getId());
$etva_server->setSfGuardGroupId(1);
// return 'retornou agora :-)';
if($etva_server->validate()){
$server_networks = $etva_server->getEtvaNetworks();
foreach($server_networks as $server_network){
$networks_id[] = $server_network->getPort();
$vm_networks = $vm->Network;
foreach($vm_networks as $vm_net){
$etva_network->setServerId($etva_server->getId());
$etva_network->setPort($vm_net->i);
$etva_network->setMac($vm_net->macaddr);
$etva_network->setVlan($vm_net->name);
// $etva_node->setByName($request->getParameter('field'), $request->getParameter('value'),BasePeer::TYPE_FIELDNAME);
$result = array('success'=> true);
|