Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    Fehler in JSON RPC Schnittstelle - idoit v1.03

    Scheduled Pinned Locked Moved Entwicklung
    11 Posts 3 Posters 2.9k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • A Offline
      alex123
      last edited by

      Wenn ein Update auf ein nicht vorhandenes Objekt durchgeführt wird, gibt es immer eine Erfolgsmeldung in der Antwort.

      request:

      {"id":2,"method":"cmdb.object.update","params":{"id":1929,"title":"Title","apikey":"xxx"},"jsonrpc":"2.0"}
      

      response

      {"message":"Object title was successfully updated","success":true}
      
      1 Reply Last reply Reply Quote 0
      • A Offline
        alex123
        last edited by

        Die JSON RPC Antwort gibt immer noch ein "result" und "error" Objekt zurück.

        Dieser Fehler wurde in v1.03 nun teilweise behoben:

        [API] Response should not contain "error"-key on success

        Umgekehrt darf aber auch kein "result" key vorhanden sein, wenn der "error" key ausgefüllt ist.

        Ausserdem fehlt noch der Versions key "jsonrpc" in der Antwort.

        –> http://de.wikipedia.org/wiki/JSON-RPC

        1 Reply Last reply Reply Quote 0
        • S Offline
          senycorp
          last edited by

          @alex123:

          Wenn ein Update auf ein nicht vorhandenes Objekt durchgeführt wird, gibt es immer eine Erfolgsmeldung in der Antwort.

          request:

          {"id":2,"method":"cmdb.object.update","params":{"id":1929,"title":"Title","apikey":"xxx"},"jsonrpc":"2.0"}
          

          response

          {"message":"Object title was successfully updated","success":true}
          

          Hi Alex,

          um SQL-Queries zu sparen verzichtet die API auf einen Check bezüglich der Existenz eines Objektes mit der angegeben ID. Dies wird an einigen anderen Stellen ähnlich gehandhabt. Es wird blind ein UPDATE-Statement abgeschickt. Das Response bezieht sich dabei also eher auf die erfolgreiche Ausführung der Query. Eventuell könnte per "affected_rows" die Response-Meldung gesetzt werden.

          Stört es dich denn sehr?

          VG

          Selcuk

          1 Reply Last reply Reply Quote 0
          • S Offline
            senycorp
            last edited by

            @alex123:

            Die JSON RPC Antwort gibt immer noch ein "result" und "error" Objekt zurück.

            Dieser Fehler wurde in v1.03 nun teilweise behoben:

            [API] Response should not contain "error"-key on success

            Umgekehrt darf aber auch kein "result" key vorhanden sein, wenn der "error" key ausgefüllt ist.

            Ausserdem fehlt noch der Versions key "jsonrpc" in der Antwort.

            –> http://de.wikipedia.org/wiki/JSON-RPC

            Hi Alex,

            natürlich hast du Recht. Wir werden das im nächsten Minor liefern :).

            Vielen Dank für deine ausführlichen BugReports!

            Selcuk

            1 Reply Last reply Reply Quote 0
            • A Offline
              alex123
              last edited by

              @skekec:

              @alex123:

              Wenn ein Update auf ein nicht vorhandenes Objekt durchgeführt wird, gibt es immer eine Erfolgsmeldung in der Antwort.

              request:

              {"id":2,"method":"cmdb.object.update","params":{"id":1929,"title":"Title","apikey":"xxx"},"jsonrpc":"2.0"}
              

              response

              {"message":"Object title was successfully updated","success":true}
              

              Hi Alex,

              um SQL-Queries zu sparen verzichtet die API auf einen Check bezüglich der Existenz eines Objektes mit der angegeben ID. Dies wird an einigen anderen Stellen ähnlich gehandhabt. Es wird blind ein UPDATE-Statement abgeschickt. Das Response bezieht sich dabei also eher auf die erfolgreiche Ausführung der Query. Eventuell könnte per "affected_rows" die Response-Meldung gesetzt werden.

              Stört es dich denn sehr?

              VG

              Selcuk

              Das müsste dann wenigstens in der Dokumentation stehen wie sich die aufgerufenen Methoden verhalten. Aus meiner Sicht würde es aber mehr Sinn machen einen Fehler, also "success : false" als Ergebnis zurückzuliefern wenn keine Objekte geupdated wurden.

              wenn affected_rows > 0 dann "success:true" sonst "success:false". Das würde reichen.

              1 Reply Last reply Reply Quote 0
              • A Offline
                alex123
                last edited by

                In der Beschreibung für die Methode cmdb.impact.read steht, dass alle Beziehungen eines Objekts ausgelesen werden können. Wenn ich jedoch den Parameter relation_type weglasse, also mich nicht auf eine bestimmte Beziehungsart beschränken möchte, dann funktioniert diese Abfrage nicht.

                1 Reply Last reply Reply Quote 0
                • A Offline
                  alex123
                  last edited by

                  Ich möchte über die Methode cmdb.category.update die spezifische Kategorie Raum updaten.
                  Laut JSON-RPC Handbuch kann ich auch den Raumtyp ändern.

                  Leider kann ich über JSON-RPC die id für den Raumtyp weder auslesen, noch kann ich neue Raumtypen eintragen. Hier wäre es praktikabler, wenn man einen Text anstatt einer ID übergibt. Wird beim XML Import auch so gehandhabt. Falls notwendig wird dann ein neuer Eintrag für das Dialog-Plus Feld "Raumtyp" erstellt.

                  Ich muss als Notlösung zusätzlich über JDBC auf die Datenbank zugreifen und die entsprechende Tabelle auslesen bzw befüllen. Die JSON-RPC Schnittstelle sollte in dieser Hinsicht unabhängiger sein.

                  1 Reply Last reply Reply Quote 0
                  • S Offline
                    senycorp
                    last edited by

                    Hallo alex123,

                    vielen Dank für deine ausführlichen Bug-Reports. Wir werden versuchen diese Fehler schnellstmöglich zu beheben.

                    VG

                    1 Reply Last reply Reply Quote 0
                    • A Offline
                      alex123
                      last edited by

                      Bei einem Update auf die Kategorie Port (C__CMDB__SUBCAT__NETWORK_PORT), wird das Feld für das Layer2 Netzwerk willkürlich beleget, falls das Feld für das Update nicht ausgefüllt war. Ausserdem wird ein Kabelobjekt angelegt.

                      1 Reply Last reply Reply Quote 0
                      • A Offline
                        alex123
                        last edited by

                        Ich kann mit der Methode "cmdb.category.delete" keine normalen Kategorieren (zb Raum, Standort) löschen. Gibt im JSON-RPC Handbuch leider keine Beschreibung dazu. Wie lösche ich alle Einträge aus einer Kategorie?

                        Bei Multivalue Kategorien konnte ich mit cmdb.category.delete"  einzelne Einträge löschen.

                        1 Reply Last reply Reply Quote 0
                        • dsD Offline
                          ds
                          last edited by

                          Hi Alex, die normalen Single Value Kategorien kann man leider nicht löschen. Man müsste den Inhalt mit der cmdb.category.update Methode leeren.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post