Os comandos virsh Upstart falham na inicialização, mesmo com o libvirt-bin em execução

0

Eu tenho um job upstart configurado para executar um script único com alguns comandos virsh para importar e iniciar VMs. Esta tarefa está configurada para start on started libvirt-bin .

No entanto, estou encontrando um problema em que o serviço libvirt-bin é iniciado e os garfos, mas não são realmente utilizáveis até que ele comece a escutar em seu soquete. No entanto, uma vez que o processo bifurca, o Upstart considera o processo iniciado, e meus comandos virsh falham por causa da condição de corrida com o soquete libvirt-bin.

Existe uma maneira de resolver isso apenas com Upstart, ou eu preciso adicionar uma função para verificar o soquete do meu script para evitar que ele falhe? Eu tentei usar o upstart-socket-bridge e upstart-file-bridge, sem sucesso.

Isso está rodando no Ubuntu 14.04 com o Upstart 1.12.

    
por zymhan 16.03.2016 / 13:40

1 resposta

0

O mais fácil seria adicionar um tempo de espera estático de alguns segundos à inicialização do seu script. Isso pode não ser ideal por vários motivos, especialmente se você usar esse script de maneira mais geral, já que o sono não está diretamente vinculado à libvirt sendo ativada.

Pode ser melhor que o script verifique se o libvirt foi realmente iniciado. Você pode fazer isso usando o status de saída de virsh connect ou verificando se o libvirtd foi associado ao soquete (lsof).

    
por Dave 15.04.2016 / 16:49