Disparando um evento baseado na saída de um segundo comando

2

Estou programando uma implantação para fundição em nuvem usando o CF CLI e gostaria de capturar os logs relacionados ao novo aplicativo sendo iniciado para análise. Isso requer dois comandos diferentes normalmente, cf push [appname] -f [manifest.yml] e cf logs [appname] > [appname].log . O problema é que, até a metade do caminho do comando push, o aplicativo ainda não existirá e cf logs requer um aplicativo existente para ser executado com êxito.

Acho que meu script teria lido o fluxo de saída de cf push para procurar a linha informando que o serviço foi criado e, em seguida, disparar um comando cf logs em um segundo thread para capturar esses logs. Eu estou procurando um mecanismo pelo qual eu poderia inspecionar a saída de cf push e acionar esse segundo processo.

Duas perguntas

  • Isso é possível?
  • Como esse tipo de coisa pode ser chamado para que eu possa encontrar alguma documentação sobre uma abordagem sólida?
por tom.dietrich 19.04.2016 / 17:12

1 resposta

1

Dado que a sequência cf push completa apenas depois de ter iniciado o serviço (ou morreu tentando, suponho), você pode encadear um pipeline que diz (em inglês): "iniciar o push cf e procurar por um ' success 'message; caso veja, execute cf logs ".

Na sintaxe do shell, isso seria (com seus comandos de exemplo):

cf push [appname] -f [manifest.yml] | grep -q "service has been created" && \
 cf logs [appname] > [appname].log

Isso usa o pipeline do shell para conectar a saída de cf push com o comando grep . O comando grep (-q for quietly) procura a mensagem de sucesso (substitua a string que usei com o que cf push realmente produz). Se o grep encontrar a mensagem, sairá com um código de retorno bem-sucedido; Isso permitirá que o operador && execute o comando cf logs . Se grep não for bem-sucedido, o operador && não executará o comando cf logs . Usei uma barra invertida \ após o && apenas para incluir bem o código; os comandos podem estar todos em uma linha.

Para mais informações, consulte O que são os operadores de controle e redirecionamento do shell?

    
por 19.04.2016 / 20:53

Tags