/** * Get agents can do a "module name" * * @param $module_name value Name of the module * * @return array of agents * **/ function getAgentsCanDo($module_name) { $pfAgent = new PluginFusioninventoryAgent(); if ($module_name == 'SNMPINVENTORY') { $module_name = 'SNMPQUERY'; } $agentModule = $this->getActivationExceptions($module_name); $where = ""; if ($agentModule['is_active'] == 0) { $a_agentList = importArrayFromDB($agentModule['exceptions']); if (count($a_agentList) > 0) { $where = " `id` IN ("; $i = 0; $sep = ''; foreach ($a_agentList as $agent_id) { if ($i > 0) { $sep = ', '; } $where .= $sep . $agent_id; $i++; } $where .= ") "; if (isset($_SESSION['glpiactiveentities_string'])) { $where .= getEntitiesRestrictRequest("AND", $pfAgent->getTable()); } } else { return array(); } } else { $a_agentList = importArrayFromDB($agentModule['exceptions']); if (count($a_agentList) > 0) { $where = " `id` NOT IN ("; $i = 0; $sep = ''; foreach ($a_agentList as $agent_id) { if ($i > 0) { $sep = ', '; } $where .= $sep . $agent_id; $i++; } $where .= ") "; if (isset($_SESSION['glpiactiveentities_string'])) { $where .= getEntitiesRestrictRequest("AND", $pfAgent->getTable()); } } } $a_agents = $pfAgent->find($where); return $a_agents; }
/** * Import agent : create if not exist and update if yet exist * * @param $p_xml simpleXMLobject * **/ function importToken($arrayinventory) { if (isset($arrayinventory['DEVICEID'])) { $pfAgent = new PluginFusioninventoryAgent(); $a_agent = $pfAgent->find("`device_id`='" . $arrayinventory['DEVICEID'] . "'", "", "1"); if (empty($a_agent)) { $a_input = array(); if (isset($arrayinventory['TOKEN'])) { $a_input['token'] = $arrayinventory['TOKEN']; } $a_input['name'] = $arrayinventory['DEVICEID']; $a_input['device_id'] = $arrayinventory['DEVICEID']; $a_input['entities_id'] = 0; $a_input['last_contact'] = date("Y-m-d H:i:s"); if (isset($_SERVER['HTTP_USER_AGENT'])) { $a_input['useragent'] = $_SERVER['HTTP_USER_AGENT']; } return $pfAgent->add($a_input); } else { foreach ($a_agent as $data) { $input = array(); $input['id'] = $data['id']; if (isset($arrayinventory['TOKEN'])) { $input['token'] = $arrayinventory['TOKEN']; } $input['last_contact'] = date("Y-m-d H:i:s"); if (isset($_SERVER['HTTP_USER_AGENT'])) { $input['useragent'] = $_SERVER['HTTP_USER_AGENT']; } $pfAgent->update($input); return $data['id']; } } } return; }
/** * @test */ public function newAgentChangeEntity() { $pfAgent = new PluginFusioninventoryAgent(); // Load Agent $this->assertTrue($pfAgent->getFromDBByQuery("WHERE `device_id` = 'port004.bureau.siprossii.com-2013-01-01-16-27-27' " . "LIMIT 1"), "Could not load agent"); $pfAgent->setAgentWithComputerid(100, 'port004.bureau.siprossii.com-2013-01-01-16-27-27', 0); $pfAgent = new PluginFusioninventoryAgent(); $a_agents = current($pfAgent->find("`computers_id`='100'")); $this->assertEquals(0, $a_agents['entities_id']); }
$docopt = new \Docopt\Handler(); $args = $docopt->handle($doc); $logger = new Logging(); $logger->setLevelFromArgs($args['--quiet'], $args['--debug']); $logger->debug($args); $agent = new PluginFusioninventoryAgent(); $computer = new Computer(); $task = new PluginFusioninventoryTask(); $staticmisc_methods = PluginFusioninventoryStaticmisc::getmethods(); $methods = array(); foreach ($staticmisc_methods as $method) { $methods[$method['method']] = $method['method']; } $device_ids = array(); if (count($args['<device_ids>']) == 0) { $agents = array_values($agent->find()); $randid = rand(0, count($agents)); $device_ids = array($agents[$randid]['device_id']); } else { //$agents = $agent->find("device_id in ('".implode("','", $args['<device_ids>'])."')"); //$device_ids[] = $agent_data['device_id']; $device_ids = $args['<device_ids>']; } //$logger->debug($device_ids); foreach ($device_ids as $device_id) { $logger->info("Get prepared jobs for Agent '{$device_id}'"); // $jobstates = $task->getTaskjobstatesForAgent($device_id, $methods, array('read_only'=>true)); // $jobstates = $task->getTaskjobstatesForAgent($device_id, $methods); $time = microtime(true); file_get_contents("http://glpi.kroy-laptop.sandbox/glpi/plugins/fusioninventory/b/deploy/?action=getJobs&machineid=" . $device_id); $time = microtime(true) - $time;