You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#26 2020-02-14 12:49:47

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Re: Ajout d'un port réseau sur un device

J-Marc wrote:

Bonjour,

Je remonte un peu ce sujet...
Avez-vous réussi à mettre à jour l'adresse IP d'un équipement avec l'API ?

Je bloque également sur ce point depuis quelques temps maintenant.
La gestion réseau est quand même extrêmement complexe comparé au vielle version (multiple table,...).

J'arrive bien à ajouter une IP ou la mettre à jour dans la partie NetworkName mais impossible de faire la liaison avec un équipement...

Si vous avez réussi, je suis preneur de votre solution... (j'en suis au point de vouloir passer par des requêtes SQL, au moins on peut récupérer les infos via le mode debug).

Bonne soirée,

Oui, j'ai fini par y arriver.

Le truc, c'est de générer le port avec tous les détails du premier coup.
Tu essayes sur un équipement réseau ou sur un téléphone ?

Offline

#27 2020-02-14 22:25:35

J-Marc
Member
Registered: 2020-02-13
Posts: 2

Re: Ajout d'un port réseau sur un device

Bonsoir,

orthagh wrote:

Bonjour.

Comme indiqué en haut, la suite de tests unitaires de l'api contiennent un test concernant l'ajout de port réseaux à un ordinateur.
CF: github.com/glpi-project/glpi/blob/9.4.0/tests/APIBaseClass.php#L538-L565

Merci... j'ai bien vu le lien mais ai lu trop rapidement (je ne suis pas habitué au PHP).
Du coup j'ai bien réussi en "copiant" et adaptant le json.

Oui, j'ai fini par y arriver.

Jean-Christophe wrote:

Le truc, c'est de générer le port avec tous les détails du premier coup.
Tu essayes sur un équipement réseau ou sur un téléphone ?

Sur un équipement réseau. Avec le json des tests unitaires j'ai réussi à faire ce que je souhaitais (en trichant un peu) :
Je pars d'un CSV contenant numéro de série, adresse mac et adresse ip. Je parcours celui-ci et récupère l'id des équipements réseaux via une 1ère requête.
Avec une seconde requête, je récupère l'ensemble des networkport.

Si un équipement a déjà un networkport je le supprime et recréé. Si il n'existe pas il est créé directement (c'était plus rapide de faire comme cela dans mon cas).

Pour info, un curl en exemple :

curl -k -X POST 'glpi/apirest.php/NetworkPort/' \
-H 'Content-Type: application/json' \
-H 'Session-Token: montokensession' \
-H 'App-Token: monapptoken' \
--data-raw '{ "input": {"items_id": eqnet_id
        ,"instantiation_type": "NetworkPortEthernet"
        ,"itemtype": "NetworkEquipment"
        ,"logical_number": "0"
        ,"instantiation_type": "NetworkPortEthernet"
        ,"mac": eqnet_mac
        ,"NetworkName_name": "mgmt"
        ,"NetworkName_fqdns_id": "0"
        ,"_create_children": "true"
        ,"NetworkName__ipaddresses": {"-1": eqnet_ip, "_xmlrpc_fckng_fix": ""}
}}'

eqnet_id, eqnet_mac et eqnet_ip sont des variables.

Bonne soirée,

Offline

#28 2023-09-15 11:00:51

fledorze
Member
Registered: 2007-07-03
Posts: 69

Re: Ajout d'un port réseau sur un device

Hello
Je suis en GLPI 10.0.6 et l'IP n'est pas créé avec la solution ci-dessus. Le network port and name sont bien créés et associés à l'ordinateur.
Le JSON envoyé ci-dessous est pourtant conforme à https://github.com/glpi-project/glpi/bl … eClass.php.
Je ne sais plus quoi faire.
Quelqu'un voit une erreur ?
Merci d'avance

"input":
[
  {
    "name": "management",
   "items_id": "1230",
   "logical_number": 0,
   "itemtype": "Computer",
   "instantiation_type": "NetworkPortEthernet",
   "NetworkName_name": "mgmt",
   "NetworkName_fqdns_id": 0,
   "_create_children": true,
   "NetworkName__ipaddresses": [{"-1": "10.13.20.10"}, {"_xmlrpc_fckng_fix": ""}]
  }
]


GLPI 10.0.6 with GLPI Inventory 1.1.0 on Debian bullseye

Offline

#29 2024-03-01 23:58:25

stecj
Member
Registered: 2024-03-01
Posts: 1

Re: Ajout d'un port réseau sur un device

fledorze wrote:

Hello
Je suis en GLPI 10.0.6 et l'IP n'est pas créé avec la solution ci-dessus. Le network port and name sont bien créés et associés à l'ordinateur.
Le JSON envoyé ci-dessous est pourtant conforme à.
Je ne sais plus quoi faire.
Quelqu'un voit une erreur ?
Merci d'avance

"input":
[
  {
    "name": "management",
   "items_id": "1230",
   "logical_number": 0,
   "itemtype": "Computer",
   "instantiation_type": "NetworkPortEthernet",
   "NetworkName_name": "mgmt",
   "NetworkName_fqdns_id": 0,
   "_create_children": true,
   "NetworkName__ipaddresses": [{"-1": "10.13.20.10"}, {"_xmlrpc_fckng_fix": ""}]
  }
]


Hi there, I recently was digging through here to figure out how to do this same thing via REST API. I think your issue is the use of brackets [] around the ip address, its not actually a list but a dictionary. The PHP source code uses brackets as that's how you define a dictionary.

This is the JSON payload that finally worked for me, assumes the parent NetworkEquipment object exists with id 1234:

POST -> lighthouse.com/apirest.php/NetworkPort

{ "input": 
    {
        "items_id": "1234",
        "itemtype": "NetworkEquipment",
        "name": "TEST_PORT_API",
        "instantiation_type": "NetworkPortEthernet",
        "NetworkName_name":"myNetworkAPI",
        "NetworkName__ipaddresses":{
            "-1":"1.2.3.4"
        },
        "_create_children": "true"
    }
}

You can skip the "_xmlrpc_fckng_fix" since it doesn't apply to REST API.

Last edited by stecj (2024-03-02 00:08:11)

Offline

Board footer

Powered by FluxBB