O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Happy Usage

Use o sinalizador -h com qualquer comando happy-* para visualizar a ajuda e a lista de opções para esse comando.

Arquivos de estado

Happy armazena e mantém cuidadosamente seu estado de topologia em um arquivo JSON com um único registro. Usando este arquivo de estado, Happy pode executar os comandos apropriados para criar ou remover uma topologia.

O arquivo de estado padrão está localizado em ~/.happy_state.json . O nome do estado padrão é happy , conforme visto na saída happy-state :

happy-state

State Name:  happy

Estados paralelos

Happy oferece suporte a vários estados paralelos coexistentes. O estado atual é ditado pela variável de ambiente HAPPY_STATE_ID . Se HAPPY_STATE_ID não existir no ambiente, o valor de estado padrão happy será usado.

HAPPY_STATE_ID não é criado durante a instalação feliz. Crie um com um valor diferente de state para alternar imediatamente para outro estado Happy.

export HAPPY_STATE_ID="sunny"

Agora, verificando happy-state resultados de happy-state em um estado diferente:

happy-state

State Name:  sunny

Cada estado é mantido em seu próprio ~/.${HAPPY_STATE_ID}_state.json . Para alternar entre os estados, execute o export HAPPY_STATE_ID=" <state-name> " novamente.

Desinstalar com estados paralelos

Se você usa Happy states paralelos e deseja desinstalar Happy, certifique-se de executar happy-state-delete com cada estado ativo. Isso garante que todos os namespaces de rede criados por Happy sejam removidos de seu sistema sem afetar a configuração de rede do host Linux.

Por exemplo, com dois estados de happy e sunny :

export HAPPY_STATE_ID="sunny"
happy-state-delete
export HAPPY_STATE_ID="happy"
happy-state-delete

Remova manualmente cada arquivo de estado paralelo conforme necessário:

rm -f ~/.sunny_state.json
rm -f ~/.sunny_state.json.lock
rm -f ~/.happy_state.json
rm -f ~/.happy_state.json.lock

Histórico

Happy envia logs para o syslog por padrão. Um segundo backup de log é enviado para /tmp/${HAPPY_STATE_ID}_debug_log.txt .

Para ver os logs do Happy, execute happy-state -l em uma janela de terminal separada. Quando você insere comandos Happy, os logs mostram os comandos do shell Happy Issues em segundo plano. Esta é uma boa maneira de entender como Happy funciona, se você estiver interessado em namespaces de rede Linux.

Por exemplo, happy-node-add node00 cria um nó Happy. A saída do log para este comando é:

DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 does not exist
DEBUG [Driver:writeState():365] Happy: writing Happy state to file
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns add happy000
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 exists
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ifconfig lo up

Todos os Driver:CallCmd() linhas Driver:CallCmd() são os comandos do shell que Happy chama. Considere cada linha do log:

# Check to see if the target namespace (happy000) exists
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 does not exist

# Write the link between node00 and happy000 in ~/.happy_state.json
DEBUG [Driver:writeState():365] Happy: writing Happy state to file

# Create the network namespace for the node
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns add happy000

# Check to see if the target namespace (happy000) exists
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 exists

# Bring up the loopback interface within the happy000 namespace
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ifconfig lo up

Topologias de amostra

Topologias de amostra estão incluídas nos repositórios Happy e OpenWeave para teste. Use-os também para aprender os comandos para construir topologias complexas.

As topologias estão no formato JSON e Shell Script.

JSON

Os arquivos de topologia JSON são carregados usando os comandos happy-state-load ou weave-state-load . Se a topologia incluir Weave, você deve usar weave-state-load para carregar a topologia, caso contrário, os comandos específicos do Weave serão ignorados.

Por exemplo, uma topologia sem Weave:

happy-state-load thread_wifi_ap_internet.json

Uma topologia com Weave:

weave-state-load three_nodes_on_thread_weave.json

Para salvar sua topologia atual como um arquivo JSON separado para uso posterior (por exemplo, um script de caso de teste ), use happy-shell -s :

happy-shell -s my_topology.json

Isso salva o arquivo de estado da topologia no diretório $HOME .

Scripts de shell

Os arquivos de topologia de script de shell contêm o conjunto de comandos Happy e Weave para criar as topologias nos arquivos JSON correspondentes. Esses scripts, por padrão, não têm permissões executáveis. Eles podem ser executados de duas maneiras:

Usando o comando bash :

bash thread_wifi_ap_internet.sh

Aplicando permissões executáveis:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

Configuração

Happy tem três arquivos de configuração:

Arquivo de configuração Descrição
~/.happy_conf.json Variáveis ​​de configuração para uso pessoal ou plug-in. Defina esses valores usando o comando happy-configuration .
<path-to-happy> /happy/conf/main_config.json Variáveis ​​de configuração primárias da Happy.
<path-to-happy> /happy/conf/log_config.json Configuração de log.

Adicionar variáveis ​​de configuração

Recomendamos que você use o comando happy-configuration para definir quaisquer variáveis ​​pessoais ou de plug-in além dos padrões que sua implantação específica do Happy precisa.

Por exemplo, para deixar Happy saber onde encontrar o diretório Weave test-apps para scripts de teste, defina a variável weave_path :

happy-configuration weave_path <path-to-openweave-core>/build/x86_64-unknown-linux-gnu/src/test-apps

Happy armazena variáveis ​​de configuração em ~/.happy_conf.json .

Processos em nós

Happy fornece comandos para iniciar e parar processos em nós simulados.

Para iniciar um processo:

happy-process-start <node-name> <custom-process-name> <command>

Por exemplo, para executar continuamente um ping em um nó chamado ThreadNode:

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

No exemplo acima, ContinuousPing é o nome definido pelo usuário para o processo que Happy usa para gerenciar o processo. Use happy-process-wait para suspender a execução do processo e happy-process-stop para happy-process-stop o processo.

A saída do processo está em /tmp . Por exemplo, após iniciar o processo ContinuousPing, verifique o /tmp :

ls /tmp/happy*
/tmp/happy_018691_1524087014.192197_ContinuousPing.out

Este arquivo .out contém a saída para o processo ContinuousPing.

Uso de sudo

Happy muda a configuração de rede que é controlada pelo kernel Linux. Visto que apenas o root pode mudar a configuração do kernel, Happy pede que você insira a senha do sudo durante a operação.

Happy usa a variável de ambiente do sistema $SUDO para chamar sudo . Se $SUDO não for definido, Happy fará uma chamada de sudo normal.

Script Python

Após a instalação, os pacotes Happy Python podem ser importados para um ambiente Python usando a seguinte instrução de import :

import happy

Módulos de comando individuais encontrados em /happy são importados da seguinte forma:

import happy.HappyNodeAdd

Para recuperar as opções do módulo, chame a função option() . Por exemplo, para recuperar HappyNodeAdd opções do módulo HappyNodeAdd :

module options
import happy.HappyNodeAdd
options = happy.HappyNodeAdd.option()