/** * @test */ public function prepareDB() { global $DB; $DB->connect(); $pfDeployPackage = new PluginFusioninventoryDeployPackage(); $pfDeployGroup = new PluginFusioninventoryDeployGroup(); $pfTask = new PluginFusioninventoryTask(); $pfTaskjob = new PluginFusioninventoryTaskjob(); $pfTaskjobState = new PluginFusioninventoryTaskjobstate(); $pfTaskjoblog = new PluginFusioninventoryTaskjoblog(); $pfDeployGroup_Dynamicdata = new PluginFusioninventoryDeployGroup_Dynamicdata(); // Create package $input = array('entities_id' => 0, 'name' => 'package'); $packages_id = $pfDeployPackage->add($input); // Create fusioninventory dynamic group $input = array('name' => 'all computers have name computer', 'type' => 'DYNAMIC'); $groups_id = $pfDeployGroup->add($input); $input = array('plugin_fusioninventory_deploygroups_id' => $groups_id, 'fields_array' => 'a:2:{s:8:"criteria";a:1:{i:0;a:3:{s:5:"field";s:1:"1";s:10:"searchtype";s:8:"contains";s:5:"value";s:8:"computer";}}s:12:"metacriteria";s:0:"";}'); $pfDeployGroup_Dynamicdata->add($input); // create task $input = array('entities_id' => 0, 'name' => 'deploy', 'is_active' => 1); self::$tasks_id = $pfTask->add($input); // create taskjob $input = array('plugin_fusioninventory_tasks_id' => self::$tasks_id, 'entities_id' => 0, 'name' => 'deploy', 'method' => 'deployinstall', 'targets' => '[{"PluginFusioninventoryDeployPackage":"' . $packages_id . '"}]', 'actors' => '[{"PluginFusioninventoryDeployGroup":"' . self::$tasks_id . '"}]'); self::$taskjobs_id = $pfTaskjob->add($input); //create taskjobstate $input = array('plugin_fusioninventory_taskjobs_id' => self::$taskjobs_id, 'items_id' => 0, 'itemtype' => 'Computer', 'state' => PluginFusioninventoryTaskjobstate::FINISHED, 'plugin_fusioninventory_agents_id' => 0, 'specificity' => 0, 'uniqid' => 0); self::$taskjobstates_id = $pfTaskjobState->add($input); //crfeate taskjoblogR $input = array('plugin_fusioninventory_taskjobstates_id' => self::$taskjobstates_id, 'date ' => date('Y-m-d H:i:s'), 'items_id' => 0, 'itemtype' => 'Computer', 'state' => PluginFusioninventoryTaskjoblog::TASK_RUNNING, 'comment' => "1 ==devicesfound=="); self::$taskjoblogs_id = $pfTaskjoblog->add($input); }
/** * @test */ public function prepareDB() { global $DB; $DB->connect(); $computer = new Computer(); $pfAgent = new PluginFusioninventoryAgent(); $pfDeployPackage = new PluginFusioninventoryDeployPackage(); $pfDeployGroup = new PluginFusioninventoryDeployGroup(); $pfTask = new PluginFusioninventoryTask(); $pfTaskjob = new PluginFusioninventoryTaskjob(); $pfDeployGroup_Dynamicdata = new PluginFusioninventoryDeployGroup_Dynamicdata(); // Create package $input = array('entities_id' => 0, 'name' => 'package'); $packages_id = $pfDeployPackage->add($input); // Create fusioninventory dynamic group $input = array('name' => 'all computers have name computer', 'type' => 'DYNAMIC'); $groups_id = $pfDeployGroup->add($input); $input = array('plugin_fusioninventory_deploygroups_id' => $groups_id, 'fields_array' => 'a:2:{s:8:"criteria";a:1:{i:0;a:3:{s:5:"field";s:1:"1";s:10:"searchtype";s:8:"contains";s:5:"value";s:8:"computer";}}s:12:"metacriteria";s:0:"";}'); $pfDeployGroup_Dynamicdata->add($input); // create task $input = array('entities_id' => 0, 'name' => 'deploy', 'is_active' => 1); $tasks_id = $pfTask->add($input); // create takjob $input = array('plugin_fusioninventory_tasks_id' => $tasks_id, 'entities_id' => 0, 'name' => 'deploy', 'method' => 'deployinstall', 'targets' => '[{"PluginFusioninventoryDeployPackage":"' . $packages_id . '"}]', 'actors' => '[{"PluginFusioninventoryDeployGroup":"' . $tasks_id . '"}]'); $pfTaskjob->add($input); // Create computers + agents $input = array('entities_id' => 0, 'name' => 'computer1'); $computers_id = $computer->add($input); $input = array('entities_id' => 0, 'name' => 'portdavid', 'version' => '{"INVENTORY":"v2.3.11"}', 'device_id' => 'portdavid', 'useragent' => 'FusionInventory-Agent_v2.3.11', 'computers_id' => $computers_id); $pfAgent->add($input); $input = array('entities_id' => 0, 'name' => 'computer2'); $computers_id = $computer->add($input); $input = array('entities_id' => 0, 'name' => 'computer2', 'version' => '{"INVENTORY":"v2.3.11"}', 'device_id' => 'computer2', 'useragent' => 'FusionInventory-Agent_v2.3.11', 'computers_id' => $computers_id); $pfAgent->add($input); $input = array('entities_id' => 0, 'name' => 'computer3'); $computers_id = $computer->add($input); $input = array('entities_id' => 0, 'name' => 'computer3', 'version' => '{"INVENTORY":"v2.3.11"}', 'device_id' => 'computer3', 'useragent' => 'FusionInventory-Agent_v2.3.11', 'computers_id' => $computers_id); $pfAgent->add($input); }
public function package_clone($new_name = '') { if ($this->getField('id') < 0) { return FALSE; } $_SESSION['tmp_clone_package'] = TRUE; //duplicate package $package_oldId = $this->getField('id'); if ($new_name == "") { $new_name = $this->getField('name'); } $params = $this->fields; unset($params['id']); $params['name'] = $new_name; $new_package = new PluginFusioninventoryDeployPackage(); $package_newId = $new_package->add($params); //duplicate orders $order_obj = new PluginFusioninventoryDeployOrder(); $orders = $order_obj->find("plugin_fusioninventory_deploypackages_id = '" . $package_oldId . "'"); foreach ($orders as $order_oldId => $order) { //create new order for this new package $order_param = array('type' => $order['type'], 'create_date' => date("Y-m-d H:i:s"), 'plugin_fusioninventory_deploypackages_id' => $package_newId); $order_newId = $order_obj->add($order_param); unset($order_param); //duplicate checks $check_obj = new PluginFusioninventoryDeployCheck(); $checks = $check_obj->find("plugin_fusioninventory_deployorders_id = '" . $order_oldId . "'"); foreach ($checks as $check) { //create new check for this new order unset($check['id']); $check['plugin_fusioninventory_deployorders_id'] = $order_newId; $check_obj->add($check); } //duplicate files $file_obj = new PluginFusioninventoryDeployFile(); $files = $file_obj->find("plugin_fusioninventory_deployorders_id = '" . $order_oldId . "'"); foreach ($files as $file) { //create new file for this new order unset($file['id']); $file['plugin_fusioninventory_deployorders_id'] = $order_newId; $file_newId = $file_obj->add($file); //duplicate fileparts $filepart_obj = new PluginFusioninventoryDeployFilepart(); $fileparts = $filepart_obj->find("plugin_fusioninventory_deployfiles_id = '" . $order_oldId . "'"); foreach ($fileparts as $filepart) { //create new filepart for this new file unset($filepart['id']); $filepart['plugin_fusioninventory_deployorders_id'] = $order_newId; $filepart['plugin_fusioninventory_deployfiles_id'] = $file_newId; $filepart_obj->add($filepart); } } //duplicate actions $action_obj = new PluginFusioninventoryDeployAction(); $actions = $action_obj->find("plugin_fusioninventory_deployorders_id = '" . $order_oldId . "'"); foreach ($actions as $action) { //duplicate actions subitem $action_subitem_obj = new $action['itemtype'](); $action_subitem_oldId = $action['items_id']; $action_subitem_obj->getFromDB($action_subitem_oldId); $params_subitem = $action_subitem_obj->fields; unset($params_subitem['id']); $action_subitem_newId = $action_subitem_obj->add($params_subitem); //special case for command, we need to duplicate commandstatus and commandenvvariables if ($action['itemtype'] == 'PluginFusioninventoryDeployAction_Command') { $command_oldId = $action_subitem_oldId; $command_newId = $action_subitem_newId; //duplicate commandstatus $commandstatus_obj = new PluginFusioninventoryDeployAction_Commandstatus(); $commandstatus = $commandstatus_obj->find("plugin_fusioninventory_deploycommands_id = '" . $command_oldId . "'"); foreach ($commandstatus as $commandstate) { //create new commandstatus for this command unset($commandstate['id']); $commandstate['plugin_fusioninventory_deploycommands_id'] = $command_newId; $commandstatus_obj->add($commandstate); } //duplicate commandenvvariables $commandenvvariables_obj = new PluginFusioninventoryDeployAction_Commandenvvariable(); $commandenvvariables = $commandenvvariables_obj->find("plugin_fusioninventory_deploycommands_id = '" . $command_oldId . "'"); foreach ($commandenvvariables as $commandenvvariable) { //create new commandenvvariable for this command unset($commandenvvariable['id']); $commandenvvariable['plugin_fusioninventory_deploycommands_id'] = $command_newId; $commandenvvariables_obj->add($commandenvvariable); } } //create new action for this new order unset($action['id']); $action['plugin_fusioninventory_deployorders_id'] = $order_newId; $action['items_id'] = $action_subitem_newId; $action_obj->add($action); } } if ($new_package->getName() == NOT_AVAILABLE) { $new_package->fields['name'] = $new_package->getTypeName() . " : " . __('ID') . " " . $new_package->fields['id']; } $display = isset($this->input['_no_message_link']) ? $new_package->getNameID() : $new_package->getLink(); // Do not display quotes Session::addMessageAfterRedirect(__('Item successfully added', 'fusioninventory') . " : " . stripslashes($display)); unset($_SESSION['tmp_clone_package']); //exit; }
} elseif (isset($_POST['save_item'])) { $data = array_map(array('Toolbox', 'stripslashes_deep'), $_POST); PluginFusioninventoryDeployPackage::alter_json('save_item', $data); Html::back(); } elseif (isset($_POST['remove_item'])) { $data = array_map(array('Toolbox', 'stripslashes_deep'), $_POST); PluginFusioninventoryDeployPackage::alter_json('remove_item', $data); Html::back(); } //$data = Toolbox::stripslashes_deep($_POST); $data = $_POST; $package = new PluginFusioninventoryDeployPackage(); //general form if (isset($data["add"])) { Session::checkRight('plugin_fusioninventory_package', CREATE); $newID = $package->add($data); html::redirect(Toolbox::getItemTypeFormURL('PluginFusioninventoryDeployPackage') . "?id=" . $newID); } else { if (isset($data["update"])) { Session::checkRight('plugin_fusioninventory_package', UPDATE); $package->update($data); Html::back(); } else { if (isset($data["delete"])) { Session::checkRight('plugin_fusioninventory_package', PURGE); $package->delete($data); $package->redirectToList(); } } } Html::header(__('FusionInventory DEPLOY'), $_SERVER["PHP_SELF"], "plugins", "pluginfusioninventorymenu", "deploypackage");
/** * @test */ public function TaskWithPC() { $this->mark_incomplete(); global $DB; $_SESSION['glpiactiveentities_string'] = 0; $pfDeployGroup = new PluginFusioninventoryDeployGroup(); $pfDeployGroup_Dynamicdata = new PluginFusioninventoryDeployGroup_Dynamicdata(); $pfDeployPackage = new PluginFusioninventoryDeployPackage(); $pfTask = new PluginFusioninventoryTask(); $pfTaskJob = new PluginFusioninventoryTaskjob(); $input = array('name' => 'test', 'type' => 'DYNAMIC'); $pfDeployGroup->add($input); $input = array('groups_id' => 1, 'fields_array' => '{"entities_id":"0","name":"","field":["1"],"searchtype":["contains"],"contains":["^pc"],"plugin_fusioninventory_deploygroup_dynamicdatas_id":"1","id":"1","updaterule":"Update this rule","itemtype":"Computer"}'); $pfDeployGroup_Dynamicdata->add($input); $input = array('name' => 'ls', 'entities_id' => 0); $pfDeployPackage->add($input); $input = array('name' => 'deploy', 'is_active' => 1, 'communication' => 'pull'); $pfTask->add($input); $a_plugins = current(getAllDatasFromTable('glpi_plugins', '`directory`="fusioninventory"')); $input = array('plugin_fusioninventory_tasks_id' => 1, 'name' => 'deploy', 'plugins_id' => $a_plugins['id'], 'method' => 'deployinstall', 'action' => '[{"PluginFusioninventoryDeployGroup":"1"}]'); $pfTaskJob->add($input); $DB->query('UPDATE `glpi_plugin_fusioninventory_taskjobs` SET `definition`=\'[{"PluginFusioninventoryDeployPackage":"1"}]\' WHERE `id`="1"'); // Force task prepation $pfTaskJob->forceRunningTask(1); $a_jobstates = getAllDatasFromTable("glpi_plugin_fusioninventory_taskjobstates"); foreach ($a_jobstates as $num => $data) { unset($data['uniqid']); $a_jobstates[$num] = $data; } $a_reference = array(1 => array('id' => 1, 'plugin_fusioninventory_taskjobs_id' => 1, 'items_id' => 1, 'itemtype' => "PluginFusioninventoryDeployPackage", 'state' => 0, 'plugin_fusioninventory_agents_id' => 1, 'specificity' => '', 'execution_id' => '0'), 2 => array('id' => 2, 'plugin_fusioninventory_taskjobs_id' => 1, 'items_id' => 1, 'itemtype' => "PluginFusioninventoryDeployPackage", 'state' => 0, 'plugin_fusioninventory_agents_id' => 2, 'specificity' => '', 'execution_id' => '0'), 3 => array('id' => 3, 'plugin_fusioninventory_taskjobs_id' => 1, 'items_id' => 1, 'itemtype' => "PluginFusioninventoryDeployPackage", 'state' => 0, 'plugin_fusioninventory_agents_id' => 3, 'specificity' => '', 'execution_id' => '0'), 4 => array('id' => 4, 'plugin_fusioninventory_taskjobs_id' => 1, 'items_id' => 1, 'itemtype' => "PluginFusioninventoryDeployPackage", 'state' => 0, 'plugin_fusioninventory_agents_id' => 4, 'specificity' => '', 'execution_id' => '0'), 5 => array('id' => 5, 'plugin_fusioninventory_taskjobs_id' => 1, 'items_id' => 1, 'itemtype' => "PluginFusioninventoryDeployPackage", 'state' => 0, 'plugin_fusioninventory_agents_id' => 5, 'specificity' => '', 'execution_id' => '0'), 6 => array('id' => 6, 'plugin_fusioninventory_taskjobs_id' => 1, 'items_id' => 1, 'itemtype' => "PluginFusioninventoryDeployPackage", 'state' => 0, 'plugin_fusioninventory_agents_id' => 6, 'specificity' => '', 'execution_id' => '0'), 7 => array('id' => 7, 'plugin_fusioninventory_taskjobs_id' => 1, 'items_id' => 1, 'itemtype' => "PluginFusioninventoryDeployPackage", 'state' => 0, 'plugin_fusioninventory_agents_id' => 7, 'specificity' => '', 'execution_id' => '0'), 8 => array('id' => 8, 'plugin_fusioninventory_taskjobs_id' => 1, 'items_id' => 1, 'itemtype' => "PluginFusioninventoryDeployPackage", 'state' => 0, 'plugin_fusioninventory_agents_id' => 8, 'specificity' => '', 'execution_id' => '0'), 9 => array('id' => 9, 'plugin_fusioninventory_taskjobs_id' => 1, 'items_id' => 1, 'itemtype' => "PluginFusioninventoryDeployPackage", 'state' => 0, 'plugin_fusioninventory_agents_id' => 9, 'specificity' => '', 'execution_id' => '0'), 10 => array('id' => 10, 'plugin_fusioninventory_taskjobs_id' => 1, 'items_id' => 1, 'itemtype' => "PluginFusioninventoryDeployPackage", 'state' => 0, 'plugin_fusioninventory_agents_id' => 10, 'specificity' => '', 'execution_id' => '0'), 11 => array('id' => 11, 'plugin_fusioninventory_taskjobs_id' => 1, 'items_id' => 1, 'itemtype' => "PluginFusioninventoryDeployPackage", 'state' => 0, 'plugin_fusioninventory_agents_id' => 11, 'specificity' => '', 'execution_id' => '0'), 12 => array('id' => 12, 'plugin_fusioninventory_taskjobs_id' => 1, 'items_id' => 1, 'itemtype' => "PluginFusioninventoryDeployPackage", 'state' => 0, 'plugin_fusioninventory_agents_id' => 12, 'specificity' => '', 'execution_id' => '0'), 13 => array('id' => 13, 'plugin_fusioninventory_taskjobs_id' => 1, 'items_id' => 1, 'itemtype' => "PluginFusioninventoryDeployPackage", 'state' => 0, 'plugin_fusioninventory_agents_id' => 13, 'specificity' => '', 'execution_id' => '0')); $this->assertEquals($a_reference, $a_jobstates); }