/** * Executes index action * * @param sfRequest $request A request object */ public function executeView(sfWebRequest $request) { $dispatcher_id = $request->getParameter('dispatcher_id'); // used to get parent id component (extjs) //$this->containerId = $request->getParameter('containerId'); // load modules file of dispatcher if ($dispatcher_id) { $criteria = new Criteria(); $criteria->add(EtvaServicePeer::ID, $dispatcher_id); //$criteria->add(EtvaServicePeer::NAME_TMPL,$dispatcher); $etva_service = EtvaServicePeer::doSelectOne($criteria); $dispatcher = $etva_service->getNameTmpl(); $etva_server = $etva_service->getEtvaServer(); $tmpl = $etva_server->getAgentTmpl() . '_' . $dispatcher . '_modules'; $directory = $this->context->getConfiguration()->getTemplateDir('etms', '_' . $tmpl . '.php'); //echo 'dispatcher_id ---> '.$tmpl; if ($directory) { return $this->renderPartial($tmpl); } else { return $this->renderText('Template ' . $tmpl . ' not found'); } } else { $this->etva_server = EtvaServerPeer::retrieveByPK($request->getParameter('sid')); } }
public function executeCreatewin(sfWebRequest $request) { $sid = $request->getParameter('sid'); if ($sid) { $server = EtvaServerPeer::retrieveByPK($sid); $this->cid = $server->getClusterId(); } else { $this->cid = $request->getParameter('cid'); } }
protected function execute($arguments = array(), $options = array()) { // Context $context = sfContext::createInstance(sfProjectConfiguration::getApplicationConfiguration('app', $options['env'], true)); // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'])->getConnection(); // add your code here // server id $server = $arguments['server']; $this->log("[INFO] Shutdown server with '{$server}'"); $etva_server = EtvaServerPeer::retrieveByPK($server); if (!$etva_server) { $etva_server = EtvaServerPeer::retrieveByUuid($server); } if (!$etva_server) { $etva_server = EtvaServerPeer::retrieveByName($server); } if (!$etva_server) { $msg_i18n = $context->getI18N()->__(EtvaServerPeer::_ERR_NOTFOUND_, array('name' => $server)); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n); $this->log("[ERROR] " . $error['error']); return $error; } else { if ($nid = $options['node']) { $etva_node = EtvaNodePeer::retrieveByPK($nid); } else { $etva_node = $etva_server->getEtvaNode(); } if (!$etva_node) { //notify event log $msg_i18n = Etva::makeNotifyLogMessage(sfConfig::get('config_acronym'), EtvaNodePeer::_ERR_NOTFOUND_ID_, array('id' => $nid), EtvaServerPeer::_ERR_STOP_, array('name' => $server)); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n); $this->log("[ERROR] " . $error['error']); return $error; } $destroy = $options['destroy'] ? 1 : 0; $force = $options['force'] ? 1 : 0; $extra = array('destroy' => $destroy, 'force' => $force); $server_va = new EtvaServer_VA($etva_server); $response = $server_va->send_stop($etva_node, $extra); if ($response['success']) { $this->log("[INFO] " . $response['response']); } else { $this->log("[ERROR] " . $response['error']); } return $response; } }
public function executeJsonGetId(sfWebRequest $request) { $level = $request->getParameter('level'); $id = $request->getParameter('id'); if ($level == 'node') { $node = EtvaNodePeer::retrieveByPK($id); $cluster_id = $node->getClusterId(); } elseif ($level == 'server') { $server = EtvaServerPeer::retrieveByPK($id); $cluster_id = $server->getClusterId(); } $return = array('cluster_id' => $cluster_id); // error_log(print_r($return, true)); $result = json_encode($return); $this->getResponse()->setHttpHeader('Content-type', 'application/json'); return $this->renderText($result); }
/** * Executes index action * * @param sfRequest $request A request object */ public function executeView(sfWebRequest $request) { $dispatcher_id = $request->getParameter('dispatcher_id'); // load modules file of dispatcher if ($dispatcher_id) { $criteria = new Criteria(); $criteria->add(EtvaServicePeer::ID, $dispatcher_id); $etva_service = EtvaServicePeer::doSelectOne($criteria); $dispatcher = $etva_service->getNameTmpl(); $etva_server = $etva_service->getEtvaServer(); $tmpl = $etva_server->getAgentTmpl() . '_' . $dispatcher . '_modules'; //if exists, load _DUMMY_main_modules.php file $directory = $this->context->getConfiguration()->getTemplateDir('dummy', '_' . $tmpl . '.php'); if ($directory) { return $this->renderPartial($tmpl); } else { return $this->renderText('Template ' . $tmpl . ' not found'); } } else { $this->etva_server = EtvaServerPeer::retrieveByPK($request->getParameter('sid')); } }
public function executeJsonGridNoPager($request) { $isAjax = $request->isXmlHttpRequest(); if (!$isAjax) { return $this->redirect('@homepage'); } $sid = $this->getRequestParameter('sid'); if ($sid) { $server = EtvaServerPeer::retrieveByPK($sid); $cid = $server->getClusterId(); } else { // get cluster id $cid = $this->getRequestParameter('cid'); if (!$cid) { $etva_cluster = EtvaClusterPeer::retrieveDefaultCluster(); $cid = $etva_cluster->getId(); } } //Get networks from cluster $c_vlan = new Criteria(); $c_vlan->add(EtvaVlanPeer::CLUSTER_ID, $cid); $etva_vlans = EtvaVlanPeer::doSelect($c_vlan); //get networks with server $c = new Criteria(); $vlan_flag = false; $server_flag = false; $query = $this->getRequestParameter('query') ? json_decode($this->getRequestParameter('query'), true) : array(); foreach ($query as $key => $val) { $column = EtvaNetworkPeer::translateFieldName(sfInflector::camelize($key), BasePeer::TYPE_PHPNAME, BasePeer::TYPE_COLNAME); if ($key == 'vlan_id') { $vlan_flag = true; } if ($key == 'server_id') { $server_flag = true; } $c->add($column, $val); } //error_log($c->toString()); //get vlans from cluster if (!$vlan_flag && !$server_flag) { // && !$server_flag && $cid){ //error_log('!(!$vlan_flag && !$server_flag)'); foreach ($etva_vlans as $etva_vlan) { if ($this->getRequestParameter('query')) { $c->addOr(EtvaNetworkPeer::VLAN_ID, $etva_vlan->getId()); } else { $c->addAnd(EtvaNetworkPeer::VLAN_ID, $etva_vlan->getId()); } } } // add sort criteria to sort elements $this->addSortCriteria($c); // add server criteria $this->addServerCriteria($c); //error_log($c->toString()); $etva_network_list = EtvaNetworkPeer::doSelectJoinEtvaServer($c); $elements = array(); $i = 0; foreach ($etva_network_list as $item) { $etva_server = $item->getEtvaServer(); $etva_vlan = $item->getEtvaVlan(); if ($etva_server && $etva_vlan) { $etva_server_name = $etva_server->getName(); $etva_server_type = $etva_server->getVmType(); $etva_vm_state = $etva_server->getVmState(); $etva_vlan_name = $etva_vlan->getName(); $elements[$i] = $item->toArray(); $elements[$i]['ServerName'] = $etva_server_name; $elements[$i]['VmType'] = $etva_server_type; $elements[$i]['Vlan'] = $etva_vlan_name; $elements[$i]['Vm_state'] = $etva_vm_state; $etva_node = $etva_server->getEtvaNode(); if ($etva_node) { $etva_node_name = $etva_node->getName(); $elements[$i]['NodeName'] = $etva_node_name; $elements[$i]['NodeId'] = $etva_node->getId(); } $i++; } } $final = array('total' => count($etva_network_list), 'data' => $elements); $result = json_encode($final); $this->getResponse()->setHttpHeader('Content-type', 'application/json'); return $this->renderText($result); }
protected function execute($arguments = array(), $options = array()) { // Context $context = sfContext::createInstance(sfProjectConfiguration::getApplicationConfiguration('app', $options['env'], true)); // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'])->getConnection(); // add your code here // server id $server = $arguments['server']; $this->log("[INFO] Check status of server '{$server}'"); $etva_server = EtvaServerPeer::retrieveByPK($server); if (!$etva_server) { $etva_server = EtvaServerPeer::retrieveByUuid($server); } if (!$etva_server) { $etva_server = EtvaServerPeer::retrieveByName($server); } if (!$etva_server) { $msg_i18n = $context->getI18N()->__(EtvaServerPeer::_ERR_NOTFOUND_, array('name' => $server)); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n); $this->log("[ERROR] " . $error['error']); return $error; } else { if ($nid = $options['node']) { $etva_node = EtvaNodePeer::retrieveByPK($nid); } else { $etva_node = $etva_server->getEtvaNode(); } /*if(!$etva_node){ //notify event log $msg_i18n = Etva::makeNotifyLogMessage(sfConfig::get('config_acronym'), EtvaNodePeer::_ERR_NOTFOUND_ID_, array('id'=>$nid)); $error = array('success'=>false,'agent'=>sfConfig::get('config_acronym'),'error'=>$msg_i18n,'info'=>$msg_i18n); $this->log("[ERROR] ".$error['error']); return $error; } $server_va = new EtvaServer_VA($etva_server); $response = $server_va->getGAInfo($etva_node); // update GA Info */ // TODO force check $response = array('success' => true, 'response' => 'check ok', 'agent' => sfConfig::get('config_acronym')); if ($etva_node) { $response['agent'] = $etva_node->getName(); } if ($options['check']) { if (!$options['request_id']) { $options['request_id'] = UUID::generate(UUID::UUID_RANDOM, UUID::FMT_STRING); } $response['_request_id'] = $options['request_id']; $response['_request_status'] = EtvaAsynchronousJob::PENDING; if ($etva_server->getVmState() == $options['check']) { $response['_request_status'] = EtvaAsynchronousJob::FINISHED; $msg_ok_type = ''; if ($options['check'] == EtvaServer::STATE_RUNNING) { $msg_ok_type = EtvaServerPeer::_OK_START_; } elseif ($options['check'] == EtvaServer::STATE_STOP) { $msg_ok_type = EtvaServerPeer::_OK_STOP_; } if ($msg_ok_type) { $response['response'] = Etva::makeNotifyLogMessage($response['agent'], $msg_ok_type, array('name' => $etva_server->getName()), null, array(), EtvaEventLogger::INFO); } } //$this->log("[DEBUG] status=".$response['_request_status']." state=".$etva_server->getVmState()." == ".$options['check']); } if ($response['success']) { $this->log("[INFO] " . $response['response']); //$this->log("[DEBUG ".print_r($response,true)); } else { $this->log("[ERROR] " . $response['error']); } return $response; } }
public function deleteServer($keep_fs = true) { $server_node = $this->getEtvaNode(); $con = Propel::getConnection(EtvaServerPeer::DATABASE_NAME, Propel::CONNECTION_WRITE); //$con->setAttribute(PDO::ATTR_TIMEOUT,10); try { $con->beginTransaction(); $this->deleteNetworks($con); $this->deleteRRAFiles(); $this->deleteDisks($keep_fs, $con); EtvaServerPeer::doDelete($this, $con); $server_node->updateMemFree(); $server_node->save(); $con->commit(); } catch (PropelException $e) { $con->rollBack(); throw $e; } }
/** * List logical volumes by server ID or node ID * * * Returns json array('id'=>id,'lv'=> lv name) * * */ public function executeJsonList(sfWebRequest $request) { $nid = $request->getParameter('nid'); $sid = $request->getParameter('sid'); $listBy = $sid ? 'server' : 'node'; if ($nid && !($etva_ = EtvaNodePeer::retrieveByPK($nid))) { $msg_i18n = $this->getContext()->getI18N()->__(EtvaNodePeer::_ERR_NOTFOUND_ID_, array('%id%' => $nid)); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n); if (sfConfig::get('sf_environment') == 'soap') { return json_encode($error); } // if is browser request return text renderer $error = $this->setJsonError($error); return $this->renderText($error); } if ($sid && !($etva_ = EtvaServerPeer::retrieveByPK($sid))) { $msg_i18n = $this->getContext()->getI18N()->__(EtvaServerPeer::_ERR_NOTFOUND_ID_, array('%id%' => $sid)); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n); if (sfConfig::get('sf_environment') == 'soap') { return json_encode($error); } // if is browser request return text renderer $error = $this->setJsonError($error); return $this->renderText($error); } $lvs = array(); switch ($listBy) { case 'server': $criteria = new Criteria(); $criteria->addAscendingOrderByColumn(EtvaServerLogicalPeer::BOOT_DISK); $list = $etva_->getEtvaServerLogical($criteria); $pos = 0; foreach ($list as $elem) { $disk_type = $elem->getDiskType(); $lv = $elem->getEtvaLogicalVolume(); $lv_array = $lv->toArray(BasePeer::TYPE_FIELDNAME); $lv_array['disk_type'] = $disk_type; $lv_array['pos'] = $pos; $lv_array['per_usage'] = $lv_array['virtual_size'] / $lv_array['size']; $lv_array['per_usage_snapshots'] = $lv->getPerUsageSnapshots(); $lvs[] = $lv_array; $pos++; } break; default: $criteria = new Criteria(); $criteria->addAscendingOrderByColumn(EtvaServerLogicalPeer::BOOT_DISK); $list = $etva_->getEtvaLogicalvolumes($criteria); foreach ($list as $elem) { $id = $elem->getId(); $lv = $elem->getLv(); $lvs[$id] = array('id' => $id, 'lv' => $lv, 'target'); } } $result = array('success' => true, 'total' => count($lvs), 'data' => $lvs); $return = json_encode($result); if (sfConfig::get('sf_environment') == 'soap') { return $return; } $this->getResponse()->setHttpHeader('Content-type', 'application/json'); return $this->renderText($return); }
/** * Executes view action * * @param sfRequest $request A request object */ public function executeView(sfWebRequest $request) { $this->etva_server = EtvaServerPeer::retrieveByPK($request->getParameter('sid')); }
protected function execute($arguments = array(), $options = array()) { // Context $context = sfContext::createInstance(sfProjectConfiguration::getApplicationConfiguration('app', $options['env'], true)); // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'])->getConnection(); // add your code here // server id $server = $arguments['server']; $this->log("[INFO] Start server with '{$server}'"); $etva_server = EtvaServerPeer::retrieveByPK($server); if (!$etva_server) { $etva_server = EtvaServerPeer::retrieveByUuid($server); } if (!$etva_server) { $etva_server = EtvaServerPeer::retrieveByName($server); } if (!$etva_server) { $msg_i18n = $context->getI18N()->__(EtvaServerPeer::_ERR_NOTFOUND_, array('name' => $server)); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n); $this->log("[ERROR] " . $error['error']); return $error; } else { if ($nid = $options['node']) { if (!($etva_node = EtvaNodePeer::retrieveByPK($nid))) { //notify event log $msg_i18n = Etva::makeNotifyLogMessage(sfConfig::get('config_acronym'), EtvaNodePeer::_ERR_NOTFOUND_ID_, array('id' => $nid), EtvaServerPeer::_ERR_START_, array('name' => $server)); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n); $this->log("[ERROR] " . $error['error']); return $error; } } else { // get list of nodes that server can assign $nodes_toassign = $etva_server->listNodesAssignTo(); if (count($nodes_toassign)) { $etva_node = $nodes_toassign[0]; // get first } else { //notify event log $msg_i18n = Etva::makeNotifyLogMessage(sfConfig::get('config_acronym'), EtvaServerPeer::_ERR_NO_NODE_TO_ASSIGN_, array(), EtvaServerPeer::_ERR_START_, array('name' => $server)); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n); $this->log("[ERROR] " . $error['error']); return $error; } } $server_va = new EtvaServer_VA($etva_server); if ($options['assign'] || $etva_server->getUnassigned()) { // Assign server to node $response = $server_va->send_assign($etva_node); if (!$response['success']) { $this->log("[ERROR] " . $response['error']); return $response; } } // start server $response = $server_va->send_start($etva_node); if ($response['success']) { // update GA Info $response_ga = $server_va->getGAInfo($etva_node); $this->log("[INFO] " . $response['response']); } else { $this->log("[ERROR] " . $response['error']); } return $response; } }
public function executeJsonImport(sfWebRequest $request) { $nid = $request->getParameter('nid'); $import_data = json_decode($request->getParameter('import'), true); $server = $import_data; $vnc_keymap = EtvaSettingPeer::retrieveByPk('vnc_keymap'); $server['vnc_keymap'] = $vnc_keymap->getValue(); $server['uuid'] = EtvaServerPeer::generateUUID(); $server['name'] = $import_data['name']; $server['vm_type'] = $import_data['vm_type']; $server['ip'] = '000.000.000.000'; $server['boot'] = 'filesystem'; $import_data['uuid'] = $server['uuid']; $import_data['vnc_keymap'] = $server['vnc_keymap']; // import validation check $result = $this->jsonImportCheck($request); if (!$result['success']) { // if is a CLI soap request return json encoded data if (sfConfig::get('sf_environment') == 'soap') { return json_encode($result); } // if is browser request return text renderer $error = $this->setJsonError($result); return $this->renderText($error); } if (!($etva_node = EtvaNodePeer::retrieveByPK($nid))) { $msg_i18n = $this->getContext()->getI18N()->__(EtvaNodePeer::_ERR_NOTFOUND_ID_, array('%id%' => $nid)); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n, 'info' => $msg_i18n); //notify event log $node_log = Etva::getLogMessage(array('id' => $nid), EtvaNodePeer::_ERR_NOTFOUND_ID_); $message = Etva::getLogMessage(array('info' => $node_log), OvfEnvelope_VA::_ERR_IMPORT_); $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); // if is a CLI soap request return json encoded data if (sfConfig::get('sf_environment') == 'soap') { return json_encode($error); } // if is browser request return text renderer $error = $this->setJsonError($error); return $this->renderText($error); } $disks = $import_data['disks']; $collVgs = array(); foreach ($disks as $id => $info) { $vg = $info['vg']; $lv = $info['lv']; if ($etva_lv = $etva_node->retrieveLogicalvolumeByLv($lv)) { $msg_type = $is_DiskFile ? EtvaLogicalvolumePeer::_ERR_DISK_EXIST_ : EtvaLogicalvolumePeer::_ERR_LV_EXIST_; $msg = Etva::getLogMessage(array('name' => $lv), $msg_type); $msg_i18n = $this->getContext()->getI18N()->__($msg_type, array('%name%' => $lv)); $error = array('success' => false, 'agent' => $etva_node->getName(), 'error' => $msg_i18n, 'info' => $msg_i18n); //notify system log $message = Etva::getLogMessage(array('name' => $lv, 'info' => $msg), OvfEnvelope_VA::_ERR_IMPORT_); $this->dispatcher->notify(new sfEvent($error['agent'], 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); // if is a CLI soap request return json encoded data if (sfConfig::get('sf_environment') == 'soap') { return json_encode($error); } // if is browser request return text renderer $error = $this->setJsonError($error); return $this->renderText($error); } if (!($etva_vg = $etva_node->retrieveVolumegroupByVg($vg))) { $msg = Etva::getLogMessage(array('name' => $vg), EtvaVolumegroupPeer::_ERR_NOTFOUND_); $msg_i18n = $this->getContext()->getI18N()->__(EtvaVolumegroupPeer::_ERR_NOTFOUND_, array('%name%' => $vg)); $error = array('success' => false, 'agent' => $etva_node->getName(), 'error' => $msg_i18n, 'info' => $msg_i18n); //notify system log $message = Etva::getLogMessage(array('name' => $lv, 'info' => $msg), OvfEnvelope_VA::_ERR_IMPORT_); $this->dispatcher->notify(new sfEvent($error['agent'], 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); // if is a CLI soap request return json encoded data if (sfConfig::get('sf_environment') == 'soap') { return json_encode($error); } // if is browser request return text renderer $error = $this->setJsonError($error); return $this->renderText($error); } // fix lv path $is_DiskFile = $vg == sfConfig::get('app_volgroup_disk_flag') ? 1 : 0; $import_data['disks'][$id]['lv'] = $is_DiskFile ? $etva_node->getStoragedir() . '/' . $lv : $lv; $collVgs[$vg] = $etva_vg; } $networks = $import_data['networks']; $networks_va = $import_data['networks']; $collNetworks = array(); $i = 0; // check if networks are available foreach ($networks as $network) { if ($etva_vlan = EtvaVlanPeer::retrieveByPk($network['vlan_id'])) { $import_data['networks'][$i]['network'] = $etva_vlan->getName(); $import_data['networks'][$i]['macaddr'] = $network['mac']; } $etva_mac = EtvaMacPeer::retrieveByMac($network['mac']); /* * TODO improve this to add Mac Address to the pool */ if (!$etva_mac || !$etva_vlan) { $msg = Etva::getLogMessage(array(), EtvaNetworkPeer::_ERR_); $msg_i18n = $this->getContext()->getI18N()->__(EtvaNetworkPeer::_ERR_, array()); if (!$etva_mac) { $msg = Etva::getLogMessage(array('%mac%' => $network['mac']), EtvaMacPeer::_ERR_INVALID_MAC_); $msg_i18n = $this->getContext()->getI18N()->__(EtvaMacPeer::_ERR_INVALID_MAC_, array('%mac%' => $network['mac'])); } $error = array('success' => false, 'agent' => $etva_node->getName(), 'error' => $msg_i18n, 'info' => $msg_i18n); //notify event log $message = Etva::getLogMessage(array('name' => $server['name'], 'info' => $msg), OvfEnvelope_VA::_ERR_IMPORT_); $this->dispatcher->notify(new sfEvent($error['agent'], 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); // if is a CLI soap request return json encoded data if (sfConfig::get('sf_environment') == 'soap') { return json_encode($error); } // if is browser request return text renderer $error = $this->setJsonError($error); return $this->renderText($error); } if ($etva_mac->getInUse()) { $msg = Etva::getLogMessage(array('%name%' => $etva_mac->getMac()), EtvaMacPeer::_ERR_ASSIGNED_); $msg_i18n = $this->getContext()->getI18N()->__(EtvaMacPeer::_ERR_ASSIGNED_, array('%name%' => $etva_mac->getMac())); $error = array('success' => false, 'agent' => $etva_node->getName(), 'info' => $msg_i18n, 'error' => $msg_i18n); //notify event log $message = Etva::getLogMessage(array('name' => $server['name'], 'info' => $msg), OvfEnvelope_VA::_ERR_IMPORT_); $this->dispatcher->notify(new sfEvent($error['agent'], 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); // if is a CLI soap request return json encoded data if (sfConfig::get('sf_environment') == 'soap') { return json_encode($error); } // if is browser request return text renderer $error = $this->setJsonError($error); return $this->renderText($error); } $etva_network = new EtvaNetwork(); $etva_network->fromArray($network, BasePeer::TYPE_FIELDNAME); $collNetworks[] = $etva_network; $i++; } $env = new OvfEnvelope_VA(); $env->fromArray($import_data); /* get server copy VA server representation */ $params = $env->_VA(); $method = 'vm_ovf_import_may_fork'; $response = $etva_node->soapSend($method, $params); if (!$response['success']) { $error_decoded = $response['error']; $result = $response; $msg_i18n = $this->getContext()->getI18N()->__(EtvaServerPeer::_ERR_CREATE_, array('%name%' => $server['name'], '%info%' => $error_decoded)); $result['error'] = $msg_i18n; //notify event log $message = Etva::getLogMessage(array('name' => $server['name'], 'info' => $response['info']), EtvaServerPeer::_ERR_CREATE_); $this->dispatcher->notify(new sfEvent($response['agent'], 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); if (sfConfig::get('sf_environment') == 'soap') { return json_encode($result); } $return = $this->setJsonError($result); return $this->renderText($return); } $response_decoded = (array) $response['response']; $returned_object = (array) $response_decoded['_obj_']; $returned_lvs = (array) $returned_object['LVS']; $collLvs = array(); foreach ($returned_lvs as $disk) { $disk_array = (array) $disk; $vg_info = (array) $disk_array[EtvaLogicalvolume::VOLUMEGROUP_MAP]; $vg = $vg_info[EtvaVolumegroup::VG_MAP]; $fake_lv_response = array('success' => true, 'response' => array('_obj_' => $disk_array)); // create logical volume $etva_lv = new EtvaLogicalvolume(); $etva_lv->setEtvaVolumegroup($collVgs[$vg]); $lv_va = new EtvaLogicalvolume_VA($etva_lv); $lv_response = $lv_va->processResponse($etva_node, $fake_lv_response, 'lvcreate'); if (!$lv_response['success']) { $return = $this->setJsonError($lv_response); return $this->renderText($return); } $collLvs[] = $etva_lv; } $etva_server = new EtvaServer(); $etva_server->fromArray($server, BasePeer::TYPE_FIELDNAME); $user_groups = $this->getUser()->getGroups(); $server_sfgroup = array_shift($user_groups); //if user has group then put one of them otherwise put DEFAULT GROUP ID if ($server_sfgroup) { $etva_server->setsfGuardGroup($server_sfgroup); } else { $etva_server->setsfGuardGroup(sfGuardGroupPeer::getDefaultGroup()); } foreach ($collNetworks as $coll) { $etva_server->addEtvaNetwork($coll); } $i = 0; foreach ($collLvs as $coll) { $server_disk = new EtvaServerLogical(); $server_disk->setEtvaLogicalvolume($coll); $server_disk->setBootDisk($i); $etva_server->addEtvaServerLogical($server_disk); $i++; } //update some data from agent response $vm = (array) $returned_object['VM']; $etva_server->initData($vm); //$etva_server->setEtvaNode($etva_node); $etva_server->setEtvaCluster($etva_node->getEtvaCluster()); try { $etva_server->save(); } catch (Exception $e) { $msg = $e->getMessage(); $result = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg, 'info' => $msg); $return = $this->setJsonError($result); return $this->renderText($return); } // assign To etva_node $etva_server->assignTo($etva_node); $msg_i18n = $this->getContext()->getI18N()->__(EtvaServerPeer::_OK_CREATE_, array('%name%' => $server['name'])); $message = Etva::getLogMessage(array('name' => $server['name']), EtvaServerPeer::_OK_CREATE_); $this->dispatcher->notify(new sfEvent($etva_node->getName(), 'event.log', array('message' => $message))); $result = array('success' => true, 'agent' => $response['agent'], 'insert_id' => $etva_server->getId(), 'response' => $msg_i18n); $return = json_encode($result); $this->getResponse()->setHttpHeader('Content-type', 'application/json'); // if is browser request return text renderer return $this->renderText($return); }
public function getEtvaServers(PropelPDO $con = null) { $criteria = new Criteria(); $criteria->add(EtvaServerLogicalPeer::LOGICALVOLUME_ID, $this->getId()); $criteria->addJoin(EtvaServerPeer::ID, EtvaServerLogicalPeer::SERVER_ID); return EtvaServerPeer::doSelect($criteria, $con); }
/** * returns json array encoded list of vlans * */ public function executeJsonList(sfWebRequest $request) { $isAjax = $request->isXmlHttpRequest(); if (!$isAjax) { return $this->redirect('@homepage'); } $p_cluster_id = $this->getRequestParameter('id'); $p_level = $this->getRequestParameter('level'); if ($p_level) { if (!$p_cluster_id) { $error_msg = 'No cluster id defined.'; $error = array('success' => false, 'error' => $error_msg, 'info' => $error_msg); return $error; } if ($p_level == 'node') { $dc_c = new Criteria(); //convert node id in cluster id $dc_c->add(EtvaNodePeer::ID, $p_cluster_id); $node = EtvaNodePeer::doSelectOne($dc_c); $p_cluster_id = $node->getClusterId(); } elseif ($p_level == 'server') { $dc_c = new Criteria(); //convert server id in cluster id $dc_c->add(EtvaServerPeer::ID, $p_cluster_id, Criteria::EQUAL); $server = EtvaServerPeer::doSelectOne($dc_c); $p_cluster_id = $server->getClusterId(); } elseif ($p_level == 'cluster') { //do nothing } else { error_log('NETWORK:[ERROR] executejsonlist invalid parameters'); } } elseif (!$p_cluster_id) { $defaultCluster = EtvaClusterPeer::retrieveDefaultCluster(); $p_cluster_id = $defaultCluster->getId(); } $c = new Criteria(); $c->add(EtvaVlanPeer::CLUSTER_ID, $p_cluster_id, Criteria::EQUAL); $vlan_nodes = EtvaVlanPeer::doSelect($c); $list = array(); foreach ($vlan_nodes as $vlan) { $list[] = $vlan->toArray(BasePeer::TYPE_FIELDNAME); } $untagged_vlan = EtvaVlanPeer::retrieveUntagged($p_cluser_id); $hasUntagged = 0; if ($untagged_vlan) { $hasUntagged = 1; } $result = array('total' => count($list), 'data' => $list, 'hasUntagged' => $hasUntagged); $result = json_encode($result); if (sfConfig::get('sf_environment') == 'soap') { $soap_result = array(success => true, 'total' => count($list), 'response' => $list); return json_encode($soap_result); } $this->getResponse()->setHttpHeader('Content-type', 'application/json'); return $this->renderText($result); }
public function hasDatacenterCredential($credential, $useAnd = true) { if ($this->isSuperAdmin()) { return true; } $p_permtype = $credential[0]; $p_user_id = $this->getId(); //$p_cluster_id = $credential[1]; if (is_array($credential[1])) { $p_type_credential = (array) $credential[1]; if ($p_type_credential['node']) { error_log("MYUSER:[INFO]Node id: " . $p_type_credential['node']); $dc_c = new Criteria(); $dc_c->add(EtvaNodePeer::ID, $p_type_credential['node']); $node = EtvaNodePeer::doSelectOne($dc_c); $p_cluster_id = $node->getClusterId(); } elseif ($p_type_credential['server']) { error_log("MYUSER:[INFO]Server id: " . $p_type_credential['server']); $dc_c = new Criteria(); $dc_c->add(EtvaServerPeer::ID, (int) $p_type_credential['server'], Criteria::EQUAL); $server = EtvaServerPeer::doSelectOne($dc_c); $p_cluster_id = $server->getClusterId(); } elseif ($p_type_credential['cluster']) { error_log("MYUSER:[INFO]Cluster id: " . $p_type_credential['cluster']); $p_cluster_id = (int) $p_type_credential['cluster']; } else { error_log('MYUSER:[ERROR] hasDatacenterCredential invalid parameters'); return false; } } else { $p_cluster_id = $credential[1]; } // Check if user has permission $c = new Criteria(); $c->add(EtvaPermissionUserPeer::USER_ID, $p_user_id, Criteria::EQUAL); $c->addJoin(EtvaPermissionUserPeer::ETVAPERM_ID, EtvaPermissionPeer::ID); $c->add(EtvaPermissionPeer::PERM_TYPE, $p_permtype, Criteria::EQUAL); $c->addJoin(EtvaPermissionPeer::ID, EtvaPermissionClusterPeer::ETVAPERM_ID); $c->add(EtvaPermissionClusterPeer::CLUSTER_ID, $p_cluster_id); //error_log($c->toString()); $permission = EtvaPermissionUserPeer::doSelect($c); if ($permission) { return true; } // Check if user groups have permission $grps = $this->getGroups(); foreach ($grps as $value) { foreach ($value->getEtvaPermissionGroups() as $relObj) { $perm = $relObj->getEtvaPermission(); // validates the permission type if ($perm->getPermType() == $p_permtype) { // check if user has permission on the cluster foreach ($perm->getEtvaPermissionClusters() as $clusters) { if ($clusters->getClusterId() == $p_cluster_id) { error_log("Permission: " . $clusters->getClusterId()); return true; } } } } } // Permission not found return false; }
protected function _execute($arguments = array(), $options = array()) { // get server id $sid = $arguments['serverid']; $etva_server = EtvaServerPeer::retrieveByPK($sid); // try by id if (!$etva_server) { $etva_server = EtvaServerPeer::retrieveByUuid($sid); } // try by uuid if (!$etva_server) { $etva_server = EtvaServerPeer::retrieveByName($sid); } // try by name if (!$etva_server) { $msg_i18n = sfContext::getInstance()->getI18N()->__(EtvaServerPeer::_ERR_NOTFOUND_ID_, array('%id%' => $sid)); // Error $err_m = "[ERROR] {$msg_i18n}"; $this->report .= $err_m . "\r\n"; $this->log($err_m); array_push($this->errors, array('message' => $err_m)); return -1; } else { $etva_node = $etva_server->getEtvaNode(); if ($etva_node) { $info_m = '[INFO] Backup of the server ' . $etva_server->getName() . ' assign to node ' . $etva_node->getName() . '...'; $this->log($info_m . "\n"); $params = array('name' => $etva_server->getName(), 'uuid' => $etva_server->getUuid()); if ($options['location']) { // location set $params['location'] = $options['location']; if ($options['do_not_generate_tar'] && $options['do_not_generate_tar'] != 'false') { // do not generate tar $params['do_not_generate_tar'] = true; } } if ($options['shutdown']) { // set shutdown $params['shutdown'] = true; } if ($options['delete_backups_n_days']) { $params['clean_old_backups'] = true; $n_days = intval($options['delete_backups_n_days']); if ($n_days) { $params['n_days'] = $n_days; } } if (!$etva_server->getHasSnapshots() && !$options['shutdown'] && !$options['snapshot'] && !$options['newsnapshot'] && $etva_server->getVmState() != 'stop' && $etva_server->getVmState() != 'notrunning') { // Error is running $err_m = "[ERROR] Server '" . $etva_server->getName() . "' can't create backup file of running server without snapshots"; $this->report .= $err_m . "\r\n"; $this->log($err_m); array_push($this->errors, array('message' => $err_m)); return -101; } $server_va = new EtvaServer_VA($etva_server); // use snapshot for backup if ($options['snapshot']) { // set snapshot $params['snapshot'] = $options['snapshot']; } if ($options['newsnapshot'] || !$options['shutdown']) { // create new snapshot $newsnapshot = $options['newsnapshot']; if (!$etva_server->getHasSnapshots() || $newsnapshot) { $response = $server_va->create_snapshot($etva_node, $newsnapshot); if (!$response['success']) { $msg_i18n = $response['info']; $err_m = "[ERROR] Server '" . $etva_server->getName() . "' can't create snapshot: {$msg_i18n}"; $this->report .= $err_m . "\r\n"; $this->log($err_m); array_push($this->errors, array('message' => $err_m, 'error' => $response)); // Error return -110; } $params['snapshot'] = $newsnapshot; } } // call backup $res = $this->call_backup($etva_node, $params, $options['filepath']); if ($res < 0) { return $res; } if ($options['deletesnapshot'] && $options['deletesnapshot'] != 'false') { // delete snapshot after if ($newsnapshot) { $server_va->remove_snapshot($etva_node, $newsnapshot); } else { if ($snapshot) { $server_va->remove_snapshot($etva_node, $snapshot); } } } return 0; } else { $warn_m = '[WARN] ' . $etva_server->getName() . ' VM is not assigned and will be ignored.'; $this->report .= $warn_m . "\r\n"; $this->log($warn_m . "\n"); return -1010; } } }
public function buildServer($method) { $etva_server = $this->etva_server; if ($method == self::SERVER_CREATE) { $etva_server->setUuid(EtvaServerPeer::generateUUID()); $vnc_keymap = EtvaSettingPeer::retrieveByPk('vnc_keymap'); $etva_server->setVncKeymap($vnc_keymap->getValue()); $user_groups = sfContext::getInstance()->getUser()->getGroups(); $server_sfgroup = array_shift($user_groups); //if user has group then put one of them otherwise put DEFAULT GROUP ID if ($server_sfgroup) { $etva_server->setsfGuardGroup($server_sfgroup); } else { $etva_server->setsfGuardGroup(sfGuardGroupPeer::getDefaultGroup()); } } foreach ($this->collNetworks as $coll) { $etva_server->addEtvaNetwork($coll); } foreach ($this->collDisks as $coll) { $etva_server->addEtvaServerLogical($coll); } if (isset($this->collDevices)) { $str = json_encode($this->collDevices); $etva_server->setDevices($str); } }
static function verify_iso_usage($iso) { $directory = sfConfig::get("config_isos_dir"); $iso_path = $directory . '/' . $iso; /* * * check ISO DIR in use * */ $errors = array(); $criteria = new Criteria(); $criteria->add(EtvaServerPeer::LOCATION, $iso_path); $servers_running_iso = EtvaServerPeer::doSelect($criteria); foreach ($servers_running_iso as $server) { $errors[] = sfContext::getInstance()->getI18N()->__(EtvaServerPeer::_CDROM_INUSE_, array('%name%' => $server->getName())); } return $errors; }
/** * * * Download server backup from snapshot * * request object is like this; * <code> * $request['id'] = $id; //server ID * $request['snapshot'] = $snapshot; //using snapshot * </code> * * @param sfWebRequest $request A request object * * donwload machine in OVF format * */ public function executeDownloadBackupSnapshot(sfWebRequest $request) { if ($sid = $request->getParameter('uuid')) { $etva_server = EtvaServerPeer::retrieveByUuid($sid); } else { if ($sid = $request->getParameter('name')) { $etva_server = EtvaServerPeer::retrieveByName($sid); } else { $sid = $request->getParameter('id'); $etva_server = EtvaServerPeer::retrieveByPK($sid); } } /*if(!$etva_server){ $msg_i18n = $this->getContext()->getI18N()->__(EtvaServerPeer::_ERR_NOTFOUND_ID_,array('%id%'=>$sid)); return $this->renderText($msg_i18n); } $newsnapshot = $request->getParameter('newsnapshot'); $snapshot = $request->getParameter('snapshot'); $delete = $request->getParameter('delete'); if(!$etva_server->getHasSnapshots() && !$snapshot && !$newsnapshot && ($etva_server->getVmState() != 'stop') && ($etva_server->getVmState() != 'notrunning') ){ $msg_i18n = $this->getContext()->getI18N()->__(EtvaServerPeer::_ERR_NOTFOUND_ID_,array('%id%'=>$sid)); return $this->renderText($msg_i18n); } $etva_node = $etva_server->getEtvaNode(); $server_va = new EtvaServer_VA($etva_server); if( !$etva_server->getHasSnapshots() || $newsnapshot ){ $response = $server_va->create_snapshot($etva_node,$newsnapshot); if( !$response['success'] ){ $msg_i18n = $response['info']; return $this->renderText($msg_i18n); } } $url = "http://".$etva_node->getIp(); $request_body = "uuid=".$etva_server->getUuid(); if( $snapshot ){ $request_body .= "&snapshot=$snapshot"; } $filename = $etva_server->getName().".tar"; $port = $etva_node->getPort(); if($port) $url.=":".$port; $url.="/vm_backup_snapshot_may_fork";*/ /* * get response stream data */ /*$ovf_curl = new ovfcURL($url); $ovf_curl->post($request_body); $ovf_curl->setFilename($filename); $ovf_curl->exec(); if($ovf_curl->getStatus()==500) return $this->renderText('Error 500');*/ $options_task_server_backup = array('filepath' => 'STDOUT'); $snapshot = $request->getParameter('snapshot'); if ($snapshot) { $options_task_server_backup['snapshot'] = $snapshot; } $newsnapshot = $request->getParameter('newsnapshot'); if ($newsnapshot) { $options_task_server_backup['newsnapshot'] = $newsnapshot; } $delete = $request->getParameter('delete'); if ($delete && $delete != 'false') { // delete after $options_task_server_backup['deletesnapshot'] = true; } $task_server_backup = new serverBackupTask($this->dispatcher, new sfFormatter()); $res_task = $task_server_backup->run(array('serverid' => $sid), $options_task_server_backup); if ($res_task < 0) { // TODO treat error return $this->renderText('Error 500'); } return sfView::NONE; }
public function executeJsonListCluster(sfWebRequest $request) { $filterBy = ''; if ($request->hasParameter('sid')) { $filterBy = 'sid'; } if ($request->hasParameter('cid')) { $filterBy = 'cid'; } $cluster_nodes = array(); $criteria = new Criteria(); if ($request->hasParameter('initialize')) { // filter by initialized nodes only $criteria->add(EtvaNodePeer::INITIALIZE, 'ok', Criteria::EQUAL); } switch ($filterBy) { case 'sid': $value = $request->getParameter($filterBy); $server = EtvaServerPeer::retrieveByPK($value); $node = $server->getEtvaNode(); $criteria->add(EtvaNodePeer::ID, $node->getId(), Criteria::NOT_EQUAL); $cluster_nodes = $node->getNodesCluster($criteria); break; case 'cid': $value = $request->getParameter($filterBy); if ($cluster = EtvaClusterPeer::retrieveByPK($value)) { $criteria->add(EtvaNodePeer::CLUSTER_ID, $cluster->getId()); $cluster_nodes = EtvaNodePeer::doSelect($criteria); } break; default: $cluster_nodes = EtvaNodePeer::doSelect($criteria); break; } $elements = array(); foreach ($cluster_nodes as $node) { $node_array = $node->toArray(); // get max allocatable memory $node_array['maxmem'] = $node->getMaxmem(); $elements[] = $node_array; } $result = array('success' => true, 'total' => count($elements), 'data' => $elements); $return = json_encode($result); if (sfConfig::get('sf_environment') == 'soap') { return $return; } $this->getResponse()->setHttpHeader('Content-type', 'application/json'); return $this->renderText($return); }
public function executeVncviewer(sfWebRequest $request) { if ($request->getParameter('sleep')) { $tsleep = $request->getParameter('sleep'); sleep($tsleep); } $etva_server = EtvaServerPeer::retrieveByPk($request->getParameter('id')); if (!$etva_server) { return sfView::NONE; } $etva_node = $etva_server->getEtvaNode(); $user = $this->getUser(); $tokens = $user->getGuardUser()->getEtvaVncTokens(); $this->username = $tokens[0]->getUsername(); $this->token = $tokens[0]->getToken(); $proxyhost1 = $request->getHost(); $proxyhost1_arr = split(':', $proxyhost1); $proxyhost1 = $proxyhost1_arr[0]; $proxyport1 = $request->isSecure() ? 443 : 80; //$proxyport1 = 80; if ($proxyhost1_arr[1]) { $proxyport1 = $proxyhost1_arr[1]; } $this->proxyhost1 = $proxyhost1; $this->proxyport1 = $proxyport1; $this->socketFactory = $request->isSecure() ? 'AuthHTTPSConnectSSLSocketFactory' : 'AuthHTTPConnectSocketFactory'; $this->host = $etva_node->getIp(); //if host is localhost address then is the same machine if ($this->host == '127.0.0.1') { $this->host = $proxyhost1; } $this->port = $etva_server->getVncPort(); $response = $this->getResponse(); $response->setTitle($etva_server->getName() . ' :: Console'); }
public function executeJsonMainETFW(sfWebRequest $request) { $etva_server = EtvaServerPeer::retrieveByPK($request->getParameter('sid')); $method = $request->getParameter('method'); $mode = $request->getParameter('mode'); $params = json_decode($request->getParameter('params'), true); if (!$params) { $params = array(); } $ret = $this->ETFW_main($etva_server, $method, $params, $mode); if ($ret['success']) { $result = json_encode($ret); } else { $result = $this->setJsonError($ret); } $result = array(); $this->getResponse()->setHttpHeader('Content-type', 'application/json; charset=utf-8'); $this->getResponse()->setHttpHeader("X-JSON", '()'); return $this->renderText($result); }
/** * Perform update on table setting * * @param string $param parameter name to perform operation * @param string $value value for the $param * */ public function executeJsonUpdateSetting(sfWebRequest $request) { $isAjax = $request->isXmlHttpRequest(); if (!$isAjax) { return $this->redirect('@homepage'); } $settings = $request->getParameter('settings'); $settings_decoded = json_decode($settings, true); $force = $request->getParameter('force'); $networks = $request->getParameter('networks'); $network_decoded = json_decode($networks, true); if ($networks) { $etva_data = Etva::getEtvaModelFile(); $etvamodel = $etva_data['model']; /* * get nodes....and call node agent script */ $remote_errors = array(); $change_networks = 0; $cm_networks = new SystemNetworkUtil(); $interfaces_devices = sfConfig::get('app_device_interfaces'); $devices = $interfaces_devices[$etvamodel]; $cm_networks->loadCMNetworks($devices); $sys_networks = $cm_networks->getNetworks(); if ($etvamodel == 'standard') { $local = $network_decoded['lan']; $remote = $network_decoded['cm_management']; $cm_ip = $remote['ip']; $local_net = new SystemNetwork(); $local_net->fromArray($local); $remote_net = new SystemNetwork(); $remote_net->fromArray($remote); $sys_lan_if = $devices['lan']; $sys_manag_if = $devices['cm_management']; $sys_lan_net = $sys_networks[$sys_lan_if]; $sys_manag_net = $sys_networks[$sys_manag_if]; if (!$local_net->equals($sys_lan_net) || !$remote_net->equals($sys_manag_net)) { $change_networks = 1; } } else { $local = $network_decoded['cm_management']; $remote = array(); $cm_ip = $local['ip']; $local_net = new SystemNetwork(); $local_net->fromArray($local); $sys_manag_if = $devices['cm_management']; $sys_manag_net = $sys_networks[$sys_manag_if]; if (!$local_net->equals($sys_manag_net)) { $change_networks = 1; } } if ($change_networks) { $criteria = new Criteria(); $etva_nodes = EtvaNodePeer::doSelect($criteria); if (!$force) { // check for nodes state if not force foreach ($etva_nodes as $etva_node) { $node_state = $etva_node->getState(); if (!$node_state) { $remote_errors[] = Etva::getLogMessage(array('agent' => $etva_node->getName(), 'msg' => 'Down'), Etva::_AGENT_MSG_); } /* * check if servers has an MA and are down...send error */ $etva_servers = $etva_node->getEtvaServers(); foreach ($etva_servers as $etva_server) { $server_ma = $etva_server->getAgentTmpl(); $server_state = $etva_server->getState(); if (!$server_state && $server_ma) { $remote_errors[] = Etva::getLogMessage(array('agent' => $etva_server->getName(), 'msg' => 'Down'), Etva::_AGENT_MSG_); } } } //end foreach } if ($remote_errors && !$force) { $msg = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'action' => 'check_nodes', 'info' => implode('<br>', $remote_errors), 'error' => implode(' ', $remote_errors)); $error = $this->setJsonError($msg); return $this->renderText($error); } if ($etvamodel != 'standard') { // only if not standard version /* * * check ISO DIR in use * */ $isosdir = sfConfig::get("config_isos_dir"); $criteria = new Criteria(); $criteria->add(EtvaServerPeer::LOCATION, "%{$isosdir}%", Criteria::LIKE); $criteria->add(EtvaServerPeer::VM_STATE, 'running'); $servers_running_iso = EtvaServerPeer::doSelect($criteria); foreach ($servers_running_iso as $server) { $remote_errors[] = $this->getContext()->getI18N()->__(EtvaServerPeer::_CDROM_INUSE_, array('%name%' => $server->getName())); } if ($remote_errors) { $message = Etva::getLogMessage(array('info' => ETVA::_CDROM_INUSE_), ETVA::_ERR_ISODIR_INUSE_); $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); $i18n_br_sep = implode('<br>', $remote_errors); $i18n_sp_sep = implode(' ', $remote_errors); //$iso_br_msg = Etva::getLogMessage(array('info'=>'<br>'.$br_sep), ETVA::_ERR_ISODIR_INUSE_); $i18n_iso_br_msg = $this->getContext()->getI18N()->__(ETVA::_ERR_ISODIR_INUSE_, array('%info%' => '<br>' . $i18n_br_sep)); //$iso_sp_msg = Etva::getLogMessage(array('info'=>$sp_sep), ETVA::_ERR_ISODIR_INUSE_); $i18n_iso_sp_msg = $this->getContext()->getI18N()->__(ETVA::_ERR_ISODIR_INUSE_, array('%info%' => $i18n_sp_sep)); $msg = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'info' => $i18n_iso_br_msg, 'error' => $i18n_iso_sp_msg); $error = $this->setJsonError($msg); return $this->renderText($error); } /* * if all ok so far.....send nodes umount ISO DIR */ foreach ($etva_nodes as $etva_node) { $node_va = new EtvaNode_VA($etva_node); $response = array('success' => true); if ($force && $etva_node->getState()) { $response = $node_va->send_umount_isosdir(); } $success = $response['success']; if (!$success) { $node_msg = Etva::getLogMessage(array('name' => $response['agent'], 'info' => $response['error']), EtvaNodePeer::_ERR_ISODIR_UMOUNT_); $remote_errors[] = $node_msg; $message = Etva::getLogMessage(array('info' => $node_msg), EtvaSettingPeer::_ERR_SETTING_REMOTE_CONNECTIVITY_SAVE_); $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); } } if (!empty($remote_errors)) { $msg = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'info' => implode('<br>', $remote_errors), 'error' => implode(' ', $remote_errors)); $error = $this->setJsonError($msg); return $this->renderText($error); } } /* * update using local script */ $local_updated = $this->localUpdate($local); if (!$local_updated) { $intf = $local['if']; $msg_i18n = $this->getContext()->getI18N()->__(SystemNetwork::_ERR_NOTFOUND_INTF_, array('%name%' => $intf, '%info%' => '')); $info = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n); $error = $this->setJsonError($info); return $this->renderText($error); } if (empty($remote_errors)) { foreach ($etva_nodes as $etva_node) { // send update to nodes if force $etva_node->setSoapTimeout(5); $remote_updated = $this->remoteUpdate($etva_node, $remote, $cm_ip); if ($remote_updated !== true) { if ($remote_updated === false) { $intf = $remote['intf']; $msg_i18n = $this->getContext()->getI18N()->__(SystemNetwork::_ERR_NOTFOUND_INTF_, array('%name%' => $intf, '%info%' => '')); $remote_errors[] = $msg_i18n; //$error = array('success'=>false,'agent'=>sfConfig::get('config_acronym'),'error'=>$msg_i18n); } else { $agent_msg = Etva::getLogMessage(array('agent' => $remote_updated['agent'], 'msg' => $remote_updated['error']), Etva::_AGENT_MSG_); $message = Etva::getLogMessage(array('info' => $agent_msg), EtvaSettingPeer::_ERR_SETTING_REMOTE_CONNECTIVITY_SAVE_); $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); $remote_errors[] = $agent_msg; } } /* * update MA if any... * */ $etva_servers = $etva_node->getEtvaServers(); foreach ($etva_servers as $etva_server) { $server_ma = $etva_server->getAgentTmpl(); $server_state = $etva_server->getState(); if ($server_state && $server_ma) { $aux_ip = $etva_server->getIp(); $etva_server->setSoapTimeout(5); $remote_updated = $this->remoteUpdate($etva_server, $remote, $cm_ip); if ($remote_updated === false) { $intf = $remote['intf']; $msg_i18n = $this->getContext()->getI18N()->__(SystemNetwork::_ERR_NOTFOUND_INTF_, array('%name%' => $intf, '%info%' => '')); $remote_errors[] = $msg_i18n; //$error = array('success'=>false,'agent'=>sfConfig::get('config_acronym'),'error'=>$msg_i18n); } else { $agent_msg = Etva::getLogMessage(array('agent' => $remote_updated['agent'], 'msg' => $remote_updated['error']), Etva::_AGENT_MSG_); $message = Etva::getLogMessage(array('info' => $agent_msg), EtvaSettingPeer::_ERR_SETTING_REMOTE_CONNECTIVITY_SAVE_); $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR))); $remote_errors[] = $agent_msg; } } } } } if (!empty($remote_errors)) { $msg = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'info' => implode('<br>', $remote_errors), 'error' => implode(' ', $remote_errors)); $error = $this->setJsonError($msg); return $this->renderText($error); } } // end if changed networks } foreach ($settings_decoded as $data) { $param = $data['param']; $value = $data['value']; if (!($etva_setting = EtvaSettingPeer::retrieveByPk($param))) { $msg_i18n = $this->getContext()->getI18N()->__(EtvaSettingPeer::_ERR_NOTFOUND_PARAM_, array('%id%' => $param)); $info = array('success' => false, 'error' => $msg_i18n); $error = $this->setJsonError($info); return $this->renderText($error); } $etva_setting->setValue($value); switch ($param) { case 'vnc_keymap': if ($etva_setting->saveVNCkeymap()) { //notify system log $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => Etva::getLogMessage(array('name' => $etva_setting->getValue()), EtvaSettingPeer::_OK_VNCKEYMAP_CHANGE_)))); } else { //notify system log $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => Etva::getLogMessage(array('name' => $value), EtvaSettingPeer::_ERR_VNCKEYMAP_CHANGE_), 'priority' => EtvaEventLogger::ERR))); } break; default: try { $etva_setting->save(); //notify system log $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => Etva::getLogMessage(array('name' => $etva_setting->getParam(), 'value' => $etva_setting->getValue()), EtvaSettingPeer::_OK_SETTING_CHANGE_)))); } catch (Exception $e) { //notify system log $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => Etva::getLogMessage(array('name' => $value), EtvaSettingPeer::_ERR_SETTING_CHANGE_), 'priority' => EtvaEventLogger::ERR))); } break; } } // end foreach $msg_i18n = $this->getContext()->getI18N()->__(EtvaSettingPeer::_OK_SETTING_CONNECTIVITY_SAVE_); $message = EtvaSettingPeer::_OK_SETTING_CONNECTIVITY_SAVE_; $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => $message))); $info = array('success' => true, 'agent' => sfConfig::get('config_acronym'), 'response' => $msg_i18n); return $this->renderText(json_encode($info)); }