Implementar serviço de seleção de servidor no le-lab
Os serviços anunciados através do le-lab provocam a execução de um script nas máquinas clientes que decidem o que fazer com a informação. Atualmente, quando mais do que uma máquina anuncia um mesmo serviço, os clientes escolhem a última máquina como servidor (le-epoptes, le-parental-control).
Para implementação do apt-cacher (#291 (closed)) todas as máquinas são potenciais servidores. Porém, na prática somente uma delas deve ser, então precisamos de algum mecanismo de votação/seleção determinístico para que todas as máquinas escolham o mesmo servidor.
Em resumo: precisamos implementar no le-lab um mecanismo para facilitar a seleção de servidores através de algum critério de seleção.
O le-lab já possui:
- Uma função para listar quais computadores da rede estão oferecendo um determinado serviço;
- Uma função para consultar o valor de um atributo X em um computador Y;
O que precisa ser implementado:
- Uma função para consultar o valor de um atributo X em todos os computadores;
- Uma função para comparar atributos segundo algum critério;
Exemplo de atributo: timestamp do horário em que a máquina foi ligada. Exemplo de função de critério: máquina com timestamp mais antigo será o servidor.
Com a implementação básica das funções listadas acima os clientes já conseguiriam implementar a seleção de servidor com dois for
, um para descobrir os servidores e outro os atributos. Os clientes precisariam executar essa função com alguma frequência, visto que os servidores podem cair. Essa pode ser a primeira etapa dessa tarefa. Em um outro momento seria interessante transferir esse código para dentro do le-lab e ele avisaria os clientes quando algo mudou.