Machine.class.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. /**
  3. * Define a Machine / Environnement
  4. * @author Administrateur PRINCIPAL
  5. * @category Plugin
  6. * @license MIT
  7. */
  8. class Machine extends Entity{
  9. public $id;
  10. public $label; //Libellé (Texte)
  11. public $manager; //Responsable (Utilisateur)
  12. public $ip; //IP Lan (Texte)
  13. public $client; //Client (int)
  14. public $os; //Système d'exploitation (Liste configurable)
  15. public $mac; //Adresse MAC (Texte)
  16. public $ram; //Mémoire Vive (RAM) (Décimal)
  17. public $cpu; //Nb Cœur CPU (Décimal)
  18. public $comment; //Commentaire (Texte enrichis)
  19. public $type; //Type (Liste classique)
  20. const TYPE_VM = 'virtual-machine';
  21. const TYPE_DOCKER = 'docker-container';
  22. protected $TABLE_NAME = 'host_machine';
  23. public $entityLabel = 'Machine / Environnement';
  24. public $fields = array(
  25. 'id' => array('type'=>'key', 'label' => 'Identifiant'),
  26. 'label' => array('type'=>'text', 'label' => 'Libellé'),
  27. 'manager' => array('type'=>'user', 'label' => 'Responsable'),
  28. 'ip' => array('type'=>'text', 'label' => 'IP Lan'),
  29. 'client' => array('type'=>'int', 'label' => 'Client'),
  30. 'os' => array('type'=>'dictionary', 'label' => 'Système d\'exploitation'),
  31. 'mac' => array('type'=>'text', 'label' => 'Adresse MAC'),
  32. 'ram' => array('type'=>'decimal', 'label' => 'Mémoire Vive (RAM)'),
  33. 'cpu' => array('type'=>'decimal', 'label' => 'Nb Cœur CPU'),
  34. 'comment' => array('type'=>'wysiwyg', 'label' => 'Commentaire'),
  35. 'type' => array('type'=>'list', 'label' => 'Type')
  36. );
  37. public $links = array(
  38. 'client' => 'Client',
  39. );
  40. //Colonnes indexées
  41. public $indexes = array();
  42. //liste des Type possibles
  43. public static function types($key=null){
  44. $items = array(
  45. self::TYPE_VM => array('label'=>'Machine virtuelle','icon'=>'fas fa-laptop'),
  46. self::TYPE_DOCKER => array('label'=>'Conteneur Docker','icon'=>'fab fa-docker'),
  47. );
  48. if(!isset($key)) return $items;
  49. return isset($items[$key]) ? $items[$key] : array('label'=>'Non définis');
  50. }
  51. //Vérifie un droit sur une machine
  52. public function can($right){
  53. global $myUser;
  54. return ($myUser->can('host','configure') || $myUser->can('host_sheet',$right,$this->id) || $myUser->login == $this->creator);
  55. }
  56. public function remove(){
  57. require_once(__DIR__.SLASH.'MachineApplication.class.php');
  58. foreach(MachineApplication::loadAll(array('machine'=>$this->id)) as $application){
  59. $application->remove();
  60. }
  61. History::delete(array('scope'=>'host_machine','uid'=>$this->id));
  62. Machine::deleteById($this->id);
  63. }
  64. }
  65. ?>