/**
  *
  * update local machine interface. invoques local perl script throught php
  */
 static function updateLocalNetwork(SystemNetwork $network_obj)
 {
     $network = $network_obj->_VA();
     $build_args = array();
     if ($network['if']) {
         $build_args[] = '-if ' . $network['if'];
     }
     if ($network['ip']) {
         $build_args[] = '-ip ' . $network['ip'];
     }
     if ($network['netmask']) {
         $build_args[] = '-netmask ' . $network['netmask'];
     }
     if ($network['gateway']) {
         $build_args[] = '-gateway ' . $network['gateway'];
     }
     if ($network['primarydns']) {
         $build_args[] = '-primarydns ' . $network['primarydns'];
     }
     if ($network['secondarydns']) {
         $build_args[] = '-secondarydns ' . $network['secondarydns'];
     }
     if ($network['dhcp']) {
         $build_args[] = '-dhcp';
     }
     $args = implode(' ', $build_args);
     $path = sfConfig::get('sf_root_dir') . DIRECTORY_SEPARATOR . "utils";
     $command = "perl -I" . $path . DIRECTORY_SEPARATOR . "pl" . " " . $path . DIRECTORY_SEPARATOR . "pl" . DIRECTORY_SEPARATOR . "script_chgip.pl " . $args;
     ob_start();
     passthru('echo ' . $command . ' | sudo /usr/bin/php -f ' . $path . DIRECTORY_SEPARATOR . 'sudoexec.php', $return);
     $result = ob_get_contents();
     ob_end_clean();
     if ($result == 0 && $return == 0) {
         return true;
     } else {
         return false;
     }
 }
Beispiel #2
0
 public function send_change_ip($network)
 {
     $sys_network = new SystemNetwork();
     if (!$sys_network->fromArray($network)) {
         $intf = $network['if'];
         $msg_i18n = sfContext::getInstance()->getI18N()->__(SystemNetwork::_ERR_NOTFOUND_INTF_, array('%name%' => $intf, '%info%' => ''));
         //notify event log
         $node_log = Etva::getLogMessage(array('name' => $intf, 'info' => ''), SystemNetwork::_ERR_NOTFOUND_INTF_);
         $message = Etva::getLogMessage(array('name' => sfConfig::get('config_acronym'), 'info' => $node_log), EtvaNodePeer::_ERR_CHANGEIP_);
         sfContext::getInstance()->getEventDispatcher()->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR)));
         $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n);
         return $error;
     }
     $criteria = new Criteria();
     $criteria->add(EtvaNodePeer::ID, $this->etva_node->getId(), Criteria::NOT_EQUAL);
     $cluster_nodes = $this->etva_node->getNodesCluster($criteria);
     foreach ($cluster_nodes as $node) {
         $node_name = $node->getName();
         $node_ip = $node->getIp();
         if ($sys_network->get(SystemNetwork::IP) == $node_ip) {
             $msg_i18n = sfContext::getInstance()->getI18N()->__(SystemNetwork::_ERR_IP_INUSE_, array('%ip%' => $node_ip, '%name%' => $node_name));
             $msg = Etva::getLogMessage(array('ip' => $node_ip, 'name' => $node_name), SystemNetwork::_ERR_IP_INUSE_);
             $message = Etva::getLogMessage(array('name' => sfConfig::get('config_acronym'), 'info' => $msg), EtvaNodePeer::_ERR_CHANGEIP_);
             sfContext::getInstance()->getEventDispatcher()->notify(new sfEvent(sfConfig::get('config_acronym'), 'event.log', array('message' => $message, 'priority' => EtvaEventLogger::ERR)));
             $error = array('success' => false, 'agent' => sfConfig::get('config_acronym'), 'error' => $msg_i18n);
             return $error;
         }
     }
     $method = self::CHANGE_IP;
     $params = $sys_network->_VA();
     /*
      * update MA if any...
      *
      */
     $etva_servers = $this->etva_node->getEtvaServers();
     foreach ($etva_servers as $etva_server) {
         $server_ma = $etva_server->getAgentTmpl();
         $server_state = $etva_server->getState();
         if ($server_state && $server_ma) {
             $etva_server->setSoapTimeout(5);
             $response = $etva_server->soapSend($method, $params);
             $result = $this->processChangeIpResponse($response, $method);
         }
     }
     $this->etva_node->setSoapTimeout(5);
     $response = $this->etva_node->soapSend($method, $params);
     $result = $this->processChangeIpResponse($response, $method);
     return $result;
 }
Beispiel #3
0
 private function remoteUpdate($etva_node, $net, $cm_uri_ip = false, $cm_uri_port = false)
 {
     $sys = new SystemNetwork();
     if (!$sys->fromArray($net)) {
         return false;
     }
     if ($cm_uri_ip) {
         $sys->setURI($cm_uri_ip, $cm_uri_port);
     }
     $method = 'change_ip';
     $params = $sys->_VA();
     $response = $etva_node->soapSend($method, $params);
     $success = $response['success'];
     if (!$success) {
         /*
          * if error is caused by socket read timeout then maybe ip changed
          */
         if ($response['faultactor'] == 'socket_read') {
             //return true;
             //$etva_node->setIp($sys->get($sys->getIntf(), SystemNetwork::IP));
             //$etva_node->save();
         } else {
             $info = array('success' => false, 'agent' => $response['agent'], 'error' => $response['info'], 'info' => $response['info']);
             return $info;
         }
     }
     return true;
 }