Google se compromete a avanzar en la equidad racial para las comunidades negras. Ver cómo.
Esta página se ha traducido con Cloud Translation API.
Switch to English

Uso feliz

Utilice el -h , marca con cualquier happy-* comando para ver la ayuda y la lista de opciones para ese comando.

los archivos de estado

tiendas felices y cuidadosamente mantiene su estado de la topología en un archivo JSON con un solo registro. El uso de este archivo de estado, feliz puede ejecutar los comandos apropiados para crear o eliminar una topología.

El archivo de estado por defecto se encuentra en ~/.happy_state.json . El nombre del estado por defecto es happy , como se ve en el happy-state de salida:

 happy-state

State Name:  happy 

estados paralelos

Happy soportes múltiples estados que coexisten en paralelo. El estado actual es dictado por el HAPPY_STATE_ID variable de entorno. Si HAPPY_STATE_ID no existe en el medio ambiente, el valor por defecto de estado happy se utiliza.

HAPPY_STATE_ID no se crea durante la instalación feliz. Crear uno con un valor distinto de state para cambiar inmediatamente a otro estado feliz.

 export HAPPY_STATE_ID="sunny"

Ahora comprobar happy-state da lugar a un estado diferente:

 happy-state

State Name:  sunny 

Cada estado se mantiene en su propia ~/.${HAPPY_STATE_ID}_state.json archivo. Para cambiar entre los estados, ejecute el export HAPPY_STATE_ID=" <state-name> " comando de nuevo.

Desinstalación con estados paralelos

Si utiliza estados felices paralelas y que desea desinstalar feliz, asegúrese de ejecutar happy-state-delete con cada estado activo. Esto asegura que todos los espacios de nombres de red creados por Happy se quitan de su sistema sin afectar a la configuración de la red host Linux.

Por ejemplo, con dos estados de happy y sunny :

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

eliminar manualmente cada archivo de estado paralelo, según sea necesario:

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

registros

Feliz envía registros al syslog por defecto. Una segunda copia de seguridad del registro se envía a /tmp/${HAPPY_STATE_ID}_debug_log.txt .

Para ver los registros felices, ejecute happy-state -l en una ventana de terminal separada. Cuando se introduce comandos felices, los registros muestran los comandos de la shell cuestiones felices en el fondo. Esta es una buena manera de entender cómo funciona feliz, si usted está interesado en los espacios de nombres de red de Linux.

Por ejemplo, happy-node-add node00 crea un nodo feliz. La salida del registro de este comando es:

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

Todo Driver:CallCmd() líneas son los comandos de shell que llama feliz. Considere cada línea en el registro:

# 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

topologías de ejemplo

topologías de ejemplo se incluyen tanto en los repositorios feliz y OpenWeave para la prueba. También los utilizan para aprender los comandos para construir topologías complejas.

Topologías están en formato JSON y Shell Script.

JSON

Archivos de topología JSON se cargan mediante el happy-state-load o weave-state-load comandos. Si la topología incluye la armadura, debe utilizar weave-state-load para cargar la topología, de lo contrario los comandos de la armadura-específicos se omiten.

Por ejemplo, una topología sin armadura:

happy-state-load thread_wifi_ap_internet.json

Una topología con la armadura:

weave-state-load three_nodes_on_thread_weave.json

Para guardar la topología actual como un archivo JSON separado para su uso posterior (por ejemplo, un script de caso de prueba ), utilice happy-shell -s :

happy-shell -s my_topology.json

Esto guarda el archivo de estado de topología en el $HOME directorio.

scripts de shell

archivos de topología shell script contienen el conjunto de feliz y comandos de la armadura para crear las topologías en los archivos JSON correspondientes. Estas secuencias de comandos por defecto no tienen permisos de ejecución. Se pueden ejecutar dos maneras:

Mediante el uso de la bash comando:

bash thread_wifi_ap_internet.sh

Mediante la aplicación de permisos de ejecución:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

Configuración

Feliz tiene tres archivos de configuración:

Archivo de configuración Descripción
~/.happy_conf.json Las variables de configuración para el uso personal o plug-in. Establecer estos valores utilizando la happy-configuration de comandos.
<path-to-happy> /happy/conf/main_config.json variables de configuración felices primaria.
<path-to-happy> /happy/conf/log_config.json configuración Log.

Añadir variables de configuración

Le recomendamos que utilice la happy-configuration comando para establecer las variables personales o plug-in más allá de los valores por defecto de que la implementación específica de Happy necesita.

Por ejemplo, para dejar feliz sabe dónde encontrar la armadura de test-apps directorio de scripts de prueba, ajuste el weave_path variables:

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

Tiendas felices servicio de configuración variables en ~/.happy_conf.json .

Los procesos en los nodos

Feliz proporciona comandos para iniciar y detener procesos dentro de los nodos simulados.

Para iniciar un proceso de:

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

Por ejemplo, para ejecutar de forma continua un ping en un nodo denominado ThreadNode:

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

En el ejemplo anterior, ContinuousPing es el nombre definido por el usuario para el proceso que feliz utiliza para gestionar el proceso. Utilice happy-process-wait para suspender la ejecución de procesos y happy-process-stop para matar el proceso.

De salida de proceso está en /tmp . Por ejemplo, después de comenzar el proceso de ContinuousPing, compruebe el /tmp directorio:

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

Este .out archivo contiene la salida para el proceso ContinuousPing.

El uso de sudo

Feliz cambia la configuración de la red que está controlada por el núcleo Linux. Dado que sólo root puede cambiar la configuración del núcleo, feliz le solicita que introduzca el sudo contraseña durante la operación.

Feliz utiliza el $SUDO entorno de sistema variable para llamada sudo . Si $SUDO no está definido, feliz hace una normal de sudo llamada.

El lenguaje Python

Después de la instalación, paquetes feliz Python se pueden importar en un entorno Python usando la siguiente import declaración:

import happy

Módulos de control individuales que se encuentran en /happy se importan como sigue:

import happy.HappyNodeAdd

Para recuperar opciones del módulo, llamar a la option() función. Por ejemplo, para recuperar HappyNodeAdd opciones del módulo:

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