Machine: Spécification de l'interface RPC du pilote

Créé le 1 janv. 2016  ·  7Commentaires  ·  Source: docker/machine

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?

driveall

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 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).

Tous les 7 commentaires

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).

FWIW ; Je _veux_ écrire un pilote pour Proxmox VE et réutiliser les bibliothèques existantes qui savent déjà communiquer avec les API Proxmox VE9); ex : proxmoxer ou pyproxmox

Cogner!

Cette page vous a été utile?
0 / 5 - 0 notes