You are not logged in.
Pages: 1
Bonjour,
Je cherche le moyen de modifier le système d'exploitation d'un ordinateur via une API. J'arrive à faire une "création", c'est à dire : si l'ordinateur n'a pas de système d'exploitation indiqué j'arrive à lui en attribué un.
Du coup je voie bien dans la table glpi_items_operatingsystems l'enregistrement correspondant.
Mais si par la suite je souhaite modifier je n'y arrive pas. Voici mon code (autoit) :
$Id_Pc = '17' ;<-C'est l'ID de mon ordinateur
$Id_Os = '2' ;<- C'est l'ID de mon système d'exploitation
$data = '{"input": {"items_id": "'& $Id_Pc &'","operatingsystems_id": "'& $Id_Os &'","itemtype": "Computer"}}'
Json_Dump($data)
$oHTTP.Open("PUT", $sDomain & "apirest.php/computer/"&$id_pc&"/Item_OperatingSystem/", False)
$oHTTP.SetRequestHeader('Session-Token',$session_token)
$oHTTP.SetRequestHeader('App-Token', $sAppToken)
$oHTTP.SetRequestHeader('cache-control','no-cache')
$oHTTP.SetRequestHeader('Content-Type','application/json')
$oHTTP.Send($data)
$oReceived = $oHTTP.ResponseText
$oStatusCode = $oHTTP.Status
j'ai également essaye avec :
$data = '{"input": {"operatingsystems_id": "'& $Id_Os &'"}}'
$oHTTP.Open("PUT", $sDomain & "apirest.php/computer/"&$id_pc&"/Item_OperatingSystem/", False
et :
$data = '{"input": {"items_id": "'& $Id_Pc &'","operatingsystems_id": "'& $Id_Os &'","itemtype": "Computer"}}'
$oHTTP.Open("PUT", $sDomain & "apirest.php/computer/Item_OperatingSystem/", False
et des dizaines de combinaison mais la je sèche.
J'ai essaye de regarder dans les logs du serveur Nginx lorsque je le fais via l'interface web mais je ne trouve rien de particulier qui peux m'aider.
Si quelqu'un a une idée ou la solution. Merci
Offline
ce que je fais en PHP :
GET sur $url="/Computer/".$Id_Pc."/Item_OperatingSystem/"; puis je récupère $Id_OS_PC : ça vous l'avez fait (mais attention l'id de la table pivot pas de l'OS)
ensuite
$url="/Item_OperatingSystem/".$Id_OS_PC; (mettre à jour le lien entre PC et OS)
$fields='{"input": { "items_id": ".$Id_pc.", "itemtype": "Computer","operatingsystems_id":".$idDeMonNouveauOs."}}';
ensuite un PUT (j'ai une fonction glpi_put qui m'ajoute les headers, l'url de base de glpir etc...
$obj=glpi_put($url,$fields);
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Bonjour LaDenrée,
Merci pour ta réponse. j'ai fais des tests mais je n'y arrive toujours pas. Je dois mal comprendre le truc du machin.
J'ai un Computer avec un ID 17 --> glpi_computers.id
J'ai un OS avec un ID 2 --> glpi_operatingsystems.id
J'ai une table de liaison avec un ID 4 --> glpi_items_operatingsystems.id
Si je comprends bien, il faut:
1) connaitre l'ID du PC, dans mon cas 17
2) connaitre l'ID de l'OS actuel, dans mon cas 0. J'ai remis à vide.
3) connaitre l'ID de l'OS futur, dans mon cas 2.
4) connaitre l'ID de la table de liaison, dans mon cas 4.
REQUETTE =
$url="/Item_OperatingSystem/4";
$fields='{"input": { "items_id": "17", "itemtype": "Computer","operatingsystems_id":"2"}}';
J'ai un retour 200 mais de message et pas de changement.
Ou alors c'est simplement une erreur d'écriture. Peux tu me valider la logique ?
Merci
Last edited by windrake_nc (2020-05-22 01:10:31)
Offline
voilà exactement ma requête
$url="/Item_OperatingSystem/74";
$fields='{"input": { "items_id": "31", "itemtype": "Computer","operatingsystems_id": "19"}}';
la logique me semble bonne mais j'ai un doute si l'os actuel est vide est il pertinent de faire un PUT ? j'aurais plutôt fait un post pour le creer puis un put pour le modifier.
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Bonjour,
Bon j'arrive a faire un GET et un POST ça c'est OK
En revanche je n'arrive pas à faire de PUT (maj).
J'ai donc naturellement contourner le problème avec un DEL puis un POST mais le DEL non plus ne fonctionne pas.
Je ne comprends vraiment pas.
J'ai vérifié, à la création d'un computer il n'y a pas d'OS.
Lorsque qu'il y a association d'un OS au Computer alors il y a un enregistrement dans la table de liaison glpi_items_operatingsystems.
Cette enregistrement existe toujours même si depuis l'interface web ont modifie l'OS avec '-----' soit vide.
Donc dans la majorité des cas juste un POST fonctionne c'est quand même rare de changer d'OS mais le problème est je suppose le même avec la version.
Si quelqu'un à un exemple de DEL et de PUT ou un exemple avec Postman par exemple.
Merci
Offline
Pages: 1