Machine: Especificación de la interfaz del controlador RPC

Creado en 1 ene. 2016  ·  7Comentarios  ·  Fuente: docker/machine

¿Hay algún documento / pr / problema que describa la interfaz RPC para complementos de controladores? Encontré algunos problemas relacionados # 1626 y # 1902, pero estoy luchando por encontrar algo más "concreto; ¿no hay nada en los documentos que pueda ver?"

driveall

Comentario más útil

@prologic Está construido usando https://golang.org/pkg/net/rpc/ y el códec de transporte es gob , que es el formato de codificación de blob nativo de Go. _Podría_ ser posible comunicarse usando gob en otros idiomas (consulte https://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOens, por ejemplo), pero podría ser más problemático que merece la pena.

Para ser verdaderamente independientes del lenguaje, tendríamos que usar algo como JSON-RPC o protobufs que está diseñado específicamente para eso. Definitivamente es algo que estoy tomando en consideración para el futuro, pero requeriría un cambio de versión en la API del complemento (no sería compatible con versiones anteriores o posteriores).

Todos 7 comentarios

Hola @prologic. No hay especificaciones formales hasta ahora (desafortunadamente :() pero esencialmente la idea es que necesita implementar la interfaz Driver y luego llamar a plugin.RegisterDriver() para su Driver en el binario de su complemento main método. ¿Ha mirado algunos de los complementos de terceros vinculados?

@nathanleclaire ¡ Gracias por responder! He visto varios terceros (_no empaquetados con docker-machine _), sin embargo, tenía la impresión de varios problemas y solicitudes de extracción de que la forma en que funcionaban los complementos del controlador de la máquina acoplable era independiente del idioma. (_o al menos destinado a ser? _)

¿No es este el caso?

@prologic No, está bastante acoplado a Golang net/rpc .

Pero es un RPC y habla por un socket, ¿no? :) ¿Qué me estoy perdiendo: P

@prologic Está construido usando https://golang.org/pkg/net/rpc/ y el códec de transporte es gob , que es el formato de codificación de blob nativo de Go. _Podría_ ser posible comunicarse usando gob en otros idiomas (consulte https://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOens, por ejemplo), pero podría ser más problemático que merece la pena.

Para ser verdaderamente independientes del lenguaje, tendríamos que usar algo como JSON-RPC o protobufs que está diseñado específicamente para eso. Definitivamente es algo que estoy tomando en consideración para el futuro, pero requeriría un cambio de versión en la API del complemento (no sería compatible con versiones anteriores o posteriores).

FWIW; _Quiero_ escribir un controlador para Proxmox VE y reutilizar las bibliotecas existentes que ya saben cómo comunicarse con las API de Proxmox VE); por ejemplo: proxmoxer o pyproxmox

¡Protuberancia!

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

jrz picture jrz  ·  5Comentarios

pschultz picture pschultz  ·  3Comentarios

perj picture perj  ·  5Comentarios

diver-sity picture diver-sity  ·  4Comentarios

iongion picture iongion  ·  4Comentarios