Existe-t-il un document/pr/issue qui décrit l'interface RPC pour les plug-ins de pilote ? J'ai trouvé quelques problèmes connexes #1626 et #1902, mais j'ai du mal à trouver quelque chose de plus "concret; il n'y a rien dans la documentation que je puisse voir?
Salut @prologic. Aucune spécification formelle jusqu'à présent (malheureusement :( ) mais essentiellement l'idée est que vous devez implémenter l'interface Driver
puis appeler plugin.RegisterDriver()
pour votre Driver
dans le binaire de votre plugin main
Méthode
@nathanleclaire Merci d'avoir répondu ! J'ai examiné divers tiers (_non emballés avec docker-machine
_), mais j'avais l'impression, à cause de divers problèmes et demandes d'extraction, que le fonctionnement des plugins de pilote docker-machine était indépendant de la langue ? (_ou du moins censé l'être ?_)
Ce n'est pas le cas?
@prologic Non, c'est assez étroitement lié au Golang net/rpc
.
Mais c'est un RPC et il parle sur un socket non ? :) Qu'est-ce que je manque :P
@prologic Il est construit à l'aide de https://golang.org/pkg/net/rpc/ et le codec de transport est gob
, qui est le format d'encodage natif de Go blob. Il _pourrait_ être possible de communiquer en utilisant gob
dans d'autres langues (voir https://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOens par exemple), mais cela pourrait être plus compliqué que il vaut la peine.
Afin d'être vraiment indépendant du langage, nous devrions utiliser quelque chose comme JSON-RPC ou protobufs qui est spécialement conçu pour cela. C'est certainement quelque chose que je prends en considération pour l'avenir, mais cela nécessiterait un changement de version sur l'API du plugin (ce ne serait pas compatible en amont ou en aval).
Cogner!
Commentaire le plus utile
@prologic Il est construit à l'aide de https://golang.org/pkg/net/rpc/ et le codec de transport est
gob
, qui est le format d'encodage natif de Go blob. Il _pourrait_ être possible de communiquer en utilisantgob
dans d'autres langues (voir https://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOens par exemple), mais cela pourrait être plus compliqué que il vaut la peine.Afin d'être vraiment indépendant du langage, nous devrions utiliser quelque chose comme JSON-RPC ou protobufs qui est spécialement conçu pour cela. C'est certainement quelque chose que je prends en considération pour l'avenir, mais cela nécessiterait un changement de version sur l'API du plugin (ce ne serait pas compatible en amont ou en aval).