/** * Creates cluster * Does not create the default cluster * * @return * */ public function executeJsonCreate(sfWebRequest $request) { $clustername = $request->getParameter('name'); $form_data = array(); if ($clustername) { $form_data['name'] = $clustername; $form_data['isDefaultCluster'] = '0'; $form_data['hasNodeHA'] = '0'; $form_data['admissionGate_type'] = 0; $form_data['admissionGate_value'] = 0; error_log("CLUSTER[INFO] Creating cluster with name " . $clustername); } else { //invalid parameters $msg = "Invalid parameters"; error_log("CLUSTER[ERROR] Invalid parameters"); $msg_i18n = $this->getContext()->getI18N()->__($msg); $error_msg = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n); //notify system log $this->dispatcher->notify(new sfEvent($error['agent'], 'event.log', array('message' => Etva::getLogMessage(array('name' => $clustername, 'info' => $msg), EtvaClusterPeer::_ERR_CREATE_), 'priority' => EtvaEventLogger::ERR))); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'info' => $msg_i18n, 'error' => array($error_msg)); // 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 (!preg_match('/^[a-zA-Z][a-zA-Z0-9\\-\\_]+$/', $clustername)) { $msg = "Invalid name format"; error_log("CLUSTER[ERROR]" . $msg); $msg_i18n = $this->getContext()->getI18N()->__($msg); $error_msg = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n); //notify system log $this->dispatcher->notify(new sfEvent($error['agent'], 'event.log', array('message' => Etva::getLogMessage(array('name' => $clustername, 'info' => $msg), EtvaClusterPeer::_ERR_CREATE_), 'priority' => EtvaEventLogger::ERR))); $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'info' => $msg_i18n, 'error' => array($error_msg)); // 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); } // $form_data['isDefaultCluster']; //cluster name validator $cluster_criteria = new Criteria(); $cluster_criteria->add(EtvaClusterPeer::NAME, $clustername, Criteria::EQUAL); $exists = EtvaClusterPeer::doCount($cluster_criteria); if ($exists != 0) { //cluster already exists $msg = 'Cluster name not available'; error_log("CLUSTER[INFO]" . $msg); $msg_i18n = $this->getContext()->getI18N()->__($msg); $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => Etva::getLogMessage(array('name' => $netname, 'info' => $msg_i18n), EtvaClusterPeer::_ERR_CREATE_), 'priority' => EtvaEventLogger::ERR))); $result = array('success' => false, 'avaialable' => true, 'info' => $msg_i18n, 'error' => $msg_i18n); $return = json_encode($result); // if is browser request return text renderer $this->getResponse()->setHttpHeader('Content-type', 'application/json'); return $this->renderText($return); } // create cluster entry $form = new EtvaClusterForm(); $result = $this->processJsonForm($request, $form, $form_data); if (!$result['success']) { error_log("CLUSTER[ERROR] Error processing cluster form"); //$result['ok'] = $oks; //notify system log $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => Etva::getLogMessage(array('name' => $netname, 'info' => 'Could not insert cluster'), EtvaClusterPeer::_ERR_CREATE_), 'priority' => EtvaEventLogger::ERR))); $error = $this->setJsonError($result); return $this->renderText($error); } else { //Cluster creation well succeeded $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => Etva::getLogMessage(array('name' => $netname), EtvaClusterPeer::_OK_CREATE_)))); } //get cluster object $etva_cluster = $result['object']; //create default network configuration error_log("CLUSTER[INFO] Loading cluster default networks"); $res = $this->loadNetworkDefaults($etva_cluster); if ($res == 1) { $i18n_msg = $msg_i18n = $this->getContext()->getI18N()->__('Cluster added to the system!'); //notify system log $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => Etva::getLogMessage(array('name' => $netname), EtvaVlanPeer::_OK_CREATE_)))); $result = array('success' => true, 'agent' => sfConfig::get('config_acronym'), 'response' => $i18n_msg, 'cluster_id' => $etva_cluster->getId()); } elseif ($res == 0) { error_log("CLUSTER[ERROR] Error creating datacenter default networks"); $this->dispatcher->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => Etva::getLogMessage(array('name' => $netname, 'info' => 'Could not create vlans'), EtvaVlanPeer::_ERR_CREATE_), 'priority' => EtvaEventLogger::CRIT))); $error = $this->setJsonError($result); return $this->renderText($error); } $return = json_encode($result); // if is browser request return text renderer $this->getResponse()->setHttpHeader('Content-type', 'application/json'); return $this->renderText($return); }