O Google está comprometido em promover a equidade racial para as comunidades negras. Veja como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

uso feliz

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

arquivos de estado

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

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

 happy-state

State Name:  happy 

estados paralelos

suportes felizes vários estados coexistindo paralelas. O estado actual é ditada pela HAPPY_STATE_ID variável ambiente. Se HAPPY_STATE_ID não existe no ambiente, o valor estado padrão happy é usado.

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

 export HAPPY_STATE_ID="sunny"

Agora verificando happy-state resulta em um estado diferente:

 happy-state

State Name:  sunny 

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

Desinstalar com estados paralelos

Se você usar estados felizes paralelas e que deseja desinstalar feliz, certifique-se de executar happy-state-delete com cada estado ativo. Isso garante que todos os namespaces de rede criadas por Happy são removidos do 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 

remover manualmente cada arquivo 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

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

Para exibir logs felizes, execute happy-state -l em um terminal separado. Quando você entra comandos felizes, os registros mostram os comandos shell questões felizes em segundo plano. Esta é uma boa maneira de entender como feliz funciona, se você estiver interessado em namespaces de rede Linux.

Por exemplo, happy-node-add node00 cria um nó feliz. A saída de 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 são os comandos shell que feliz chama. Considere cada linha no 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 exemplo estão incluídos em ambos os felizes e OpenWeave repositórios para testes. Também usá-los para aprender os comandos para construir topologias complexas.

Topologias estão em formato JSON e Shell Script.

JSON

Arquivos de topologia JSON são carregados usando o happy-state-load ou weave-state-load comandos. Se a topologia inclui Weave, você deve usar weave-state-load para carregar a topologia, caso contrário, os comandos específicos do Weave sã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 teste ), use happy-shell -s :

happy-shell -s my_topology.json

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

scripts shell

arquivos de script de topologia Shell conter o conjunto de feliz e comandos Weave para criar as topologias nos arquivos JSON correspondentes. Esses scripts por padrão não tem permissões executáveis. Eles podem ser executados duas maneiras:

Usando a bash comando:

bash thread_wifi_ap_internet.sh

Ao aplicar permissões executáveis:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

Configuração

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

Arquivo de configuração Descrição
~/.happy_conf.json variáveis ​​de configuração para o uso pessoal ou plug-in. Definir esses valores usando a happy-configuration comando.
<path-to-happy> /happy/conf/main_config.json variáveis ​​de configuração felizes primário.
<path-to-happy> /happy/conf/log_config.json configuração log.

Adicionar variáveis ​​de configuração

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

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

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

Lojas Happy configuração variáveis em ~/.happy_conf.json .

Processos nos gânglios

Feliz fornece comandos para iniciar e processos parar dentro de 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 feliz utiliza para gerir o processo. Use happy-process-wait para suspender a execução do processo e happy-process-stop para matar o processo.

Processo de saída é em /tmp . Por exemplo, depois de iniciar o processo ContinuousPing, verifique o /tmp diretório:

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

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

Uso de sudo

Feliz muda a configuração de rede, que é controlado pelo kernel do Linux. Uma vez que apenas root pode alterar a configuração do kernel, feliz pede que você digite o sudo senha durante a operação.

Feliz usa o $SUDO variável de ambiente sistema de chamada sudo . Se $SUDO não está definido, feliz faz um normais sudo chamada.

Python scripting

Após a instalação, pacotes feliz Python podem ser importados para um ambiente Python utilizando o seguinte import declaração:

import happy

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

import happy.HappyNodeAdd

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

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