Machine: Especificação da interface RPC do driver

Criado em 1 jan. 2016  ·  7Comentários  ·  Fonte: docker/machine

Existe um documento / pr / problema que descreve a interface RPC para plug-ins de driver? Encontrei alguns problemas relacionados # 1626 e # 1902, mas estou lutando para encontrar algo mais "concreto; não há nada nos documentos que eu possa ver?

driveall

Comentários muito úteis

@prologic É construído usando https://golang.org/pkg/net/rpc/ e o codec de transporte é gob , que é o formato de codificação Go blob nativo. _Pode_ ser possível se comunicar usando gob em outros idiomas (consulte https://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOens por exemplo), mas pode ser mais problemático do que Vale a pena.

Para sermos realmente independentes de linguagem, teríamos que usar algo como JSON-RPC ou protobufs, que é projetado especificamente para isso. É definitivamente algo que estou levando em consideração para o futuro, mas exigiria um aumento de versão na API do plugin (não seria compatível com versões anteriores ou posteriores).

Todos 7 comentários

Ei @prologic. Nenhuma especificação formal até agora (infelizmente :(), mas essencialmente a ideia é que você precisa implementar a interface Driver e, em seguida, chamar plugin.RegisterDriver() para seu Driver no binário do plugin main Método

@nathanleclaire Obrigado por responder! Eu olhei para vários terceiros (_não empacotado com docker-machine _), no entanto, fiquei com a impressão de vários problemas e solicitações de pull que a maneira como os plug-ins do driver da máquina docker funcionavam era independente de linguagem. (_ou pelo menos pretendia ser? _)

Não é este o caso?

@prologic Não, está fortemente acoplado a Golang net/rpc .

Mas é um RPC e fala por um soquete não? :) O que estou perdendo: P

@prologic É construído usando https://golang.org/pkg/net/rpc/ e o codec de transporte é gob , que é o formato de codificação Go blob nativo. _Pode_ ser possível se comunicar usando gob em outros idiomas (consulte https://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOens por exemplo), mas pode ser mais problemático do que Vale a pena.

Para sermos realmente independentes de linguagem, teríamos que usar algo como JSON-RPC ou protobufs, que é projetado especificamente para isso. É definitivamente algo que estou levando em consideração para o futuro, mas exigiria um aumento de versão na API do plugin (não seria compatível com versões anteriores ou posteriores).

FWIW; _Quero_ escrever um driver para Proxmox VE e reutilizar bibliotecas existentes que já sabem como se comunicar com Proxmox VE API9s); por exemplo: proxmoxer ou pyproxmox

Ressalto!

Esta página foi útil?
0 / 5 - 0 avaliações