Machine: Treiber-RPC-Schnittstellenspezifikation

Erstellt am 1. Jan. 2016  ·  7Kommentare  ·  Quelle: docker/machine

Gibt es ein Dokument/pr/Problem, das die RPC-Schnittstelle für Treiber-Plugins beschreibt? Ich habe ein paar verwandte Probleme Nr. 1626 und Nr. 1902 gefunden, aber ich habe Mühe, etwas Konkreteres zu finden. Gibt es in den Dokumenten nichts, was ich sehen kann?

driveall

Hilfreichster Kommentar

@prologic Es wurde mit https://golang.org/pkg/net/rpc/ erstellt und der Transportcodec ist gob , das native Go-Blob-Kodierungsformat. Es _möglich_ möglich, mit gob in anderen Sprachen zu kommunizieren (siehe zum Beispiel https://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOens), aber es könnte schwieriger sein als seinen Wert.

Um wirklich sprachunabhängig zu sein, müssten wir etwas wie JSON-RPC oder Protobufs verwenden, das speziell dafür entwickelt wurde. Es ist definitiv etwas, das ich für die Zukunft in Betracht ziehe, aber es würde einen Versions-Bump auf der Plugin-API erfordern (es wäre nicht abwärts- oder aufwärtskompatibel).

Alle 7 Kommentare

Hallo @prologic. Bisher keine formale Spezifikation (leider :( ), aber im Wesentlichen ist die Idee, dass Sie die Driver Schnittstelle implementieren und dann plugin.RegisterDriver() für Ihre Driver in der main Ihrer Plugin-Binärdatei aufrufen müssen

@nathanleclaire Danke für die Antwort! Ich habe mir verschiedene Drittanbieter angesehen (_nicht mit docker-machine _ verpackt), aber ich hatte aufgrund verschiedener Probleme und Pull-Requests den Eindruck, dass die Funktionsweise von Docker-Maschinentreiber-Plugins sprachunabhängig war? (_oder sollte es zumindest sein?_)

Ist dies nicht der Fall?

@prologic Nein, es ist ziemlich eng mit Golang net/rpc .

Aber es ist ein RPC und spricht über einen Socket nein? :) Was fehlt mir :P

@prologic Es wurde mit https://golang.org/pkg/net/rpc/ erstellt und der Transportcodec ist gob , das native Go-Blob-Kodierungsformat. Es _möglich_ möglich, mit gob in anderen Sprachen zu kommunizieren (siehe zum Beispiel https://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOens), aber es könnte schwieriger sein als seinen Wert.

Um wirklich sprachunabhängig zu sein, müssten wir etwas wie JSON-RPC oder Protobufs verwenden, das speziell dafür entwickelt wurde. Es ist definitiv etwas, das ich für die Zukunft in Betracht ziehe, aber es würde einen Versions-Bump auf der Plugin-API erfordern (es wäre nicht abwärts- oder aufwärtskompatibel).

FWIW; Ich _möchte_ einen Treiber für Proxmox VE schreiben und vorhandene Bibliotheken wiederverwenden, die bereits wissen, wie man mit den Proxmox VE API9s kommuniziert); zB: proxmoxer oder pyproxmox

Stoßen!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen