Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Selamat Menggunakan

Gunakan -h bendera dengan happy-* perintah untuk melihat bantuan dan daftar pilihan untuk perintah itu.

File negara

Selamat menyimpan dan dengan hati-hati mempertahankan status topologinya dalam file JSON dengan satu catatan. Dengan menggunakan file status ini, Happy dapat menjalankan perintah yang sesuai untuk membuat atau menghapus topologi.

File keadaan default terletak di ~/.happy_state.json . Nama negara default adalah happy , seperti yang terlihat di happy-state keluaran:

happy-state

State Name:  happy

Keadaan paralel

Happy mendukung beberapa keadaan paralel yang hidup berdampingan. Keadaan saat ditentukan oleh HAPPY_STATE_ID variabel lingkungan. Jika HAPPY_STATE_ID tidak ada dalam lingkungan, nilai keadaan default happy digunakan.

HAPPY_STATE_ID tidak diciptakan selama instalasi Selamat. Buat satu dengan nilai lain selain state untuk segera beralih ke Happy negara bagian lain.

export HAPPY_STATE_ID="sunny"

Sekarang memeriksa happy-state hasil dalam keadaan yang berbeda:

happy-state

State Name:  sunny

Setiap negara dipertahankan di sendiri ~/.${HAPPY_STATE_ID}_state.json berkas. Untuk beralih di antara negara-negara, menjalankan export HAPPY_STATE_ID=" <state-name> " perintah lagi.

Copot pemasangan dengan status paralel

Jika Anda menggunakan Selamat negara paralel dan Anda ingin meng-uninstall Happy, pastikan untuk menjalankan happy-state-delete dengan masing-masing keadaan aktif. Ini memastikan semua ruang nama jaringan yang dibuat oleh Happy dihapus dari sistem Anda tanpa memengaruhi konfigurasi jaringan host Linux.

Misalnya, dengan dua negara dari happy dan sunny :

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

Hapus secara manual setiap file status paralel sesuai kebutuhan:

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

Log

Senang mengirimkan log ke syslog secara default. Sebuah cadangan log kedua dikirim ke /tmp/${HAPPY_STATE_ID}_debug_log.txt .

Untuk melihat Bahagia log, menjalankan happy-state -l di jendela terminal terpisah. Saat Anda memasukkan perintah Happy, log menunjukkan perintah shell masalah Happy di latar belakang. Ini adalah cara yang baik untuk memahami cara kerja Happy, jika Anda tertarik dengan ruang nama jaringan Linux.

Sebagai contoh, happy-node-add node00 menciptakan simpul Selamat. Output log untuk perintah ini adalah:

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

Semua Driver:CallCmd() garis perintah shell yang Selamat panggilan. Pertimbangkan setiap baris dalam 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

Contoh topologi

Contoh topologi disertakan dalam repositori Happy dan OpenWeave untuk pengujian. Juga menggunakannya untuk mempelajari perintah untuk membangun topologi yang kompleks.

Topologi dalam format JSON dan Shell Script.

JSON

File topologi JSON dimuat menggunakan happy-state-load atau weave-state-load perintah. Jika topologi termasuk Weave, Anda harus menggunakan weave-state-load untuk memuat topologi, jika perintah Weave-spesifik dilewati.

Misalnya, topologi tanpa Weave:

happy-state-load thread_wifi_ap_internet.json

Topologi dengan Weave:

weave-state-load three_nodes_on_thread_weave.json

Untuk menyimpan topologi Anda saat ini sebagai file JSON terpisah untuk kemudian digunakan (misalnya, tes kasus naskah ), menggunakan happy-shell -s :

happy-shell -s my_topology.json

Ini menyimpan file negara topologi di $HOME direktori.

Skrip shell

File topologi skrip shell berisi kumpulan perintah Happy dan Weave untuk membuat topologi dalam file JSON yang sesuai. Skrip ini secara default tidak memiliki izin yang dapat dieksekusi. Mereka dapat dijalankan dengan dua cara:

Dengan menggunakan bash perintah:

bash thread_wifi_ap_internet.sh

Dengan menerapkan izin yang dapat dieksekusi:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

Konfigurasi

Happy memiliki tiga file konfigurasi:

File Konfigurasi Deskripsi
~/.happy_conf.json Variabel konfigurasi untuk penggunaan pribadi atau plug-in. Mengatur nilai-nilai ini menggunakan happy-configuration perintah.
<path-to-happy> /happy/conf/main_config.json Variabel konfigurasi Happy primer.
<path-to-happy> /happy/conf/log_config.json Konfigurasi log.

Tambahkan variabel konfigurasi

Kami sarankan Anda menggunakan happy-configuration perintah untuk mengatur variabel pribadi atau plug-in apapun di luar default yang penyebaran spesifik Anda Happy kebutuhan.

Misalnya, untuk membiarkan Selamat tahu di mana untuk menemukan Weave test-apps direktori untuk script tes, mengatur weave_path variabel:

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

Selamat toko konfigurasi variabel dalam ~/.happy_conf.json .

Proses dalam node

Happy menyediakan perintah untuk memulai dan menghentikan proses dalam node yang disimulasikan.

Untuk memulai proses:

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

Misalnya, untuk terus menjalankan ping di node bernama ThreadNode:

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

Dalam contoh di atas, ContinuousPing adalah nama yang ditentukan pengguna untuk proses yang digunakan Happy untuk mengelola proses. Gunakan happy-process-wait untuk menangguhkan eksekusi proses dan happy-process-stop untuk membunuh proses.

Proses output di /tmp . Sebagai contoh, setelah memulai proses ContinuousPing, periksa /tmp direktori:

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

Ini .out file berisi output untuk proses ContinuousPing.

Penggunaan sudo

Selamat mengubah konfigurasi jaringan yang dikendalikan oleh kernel Linux. Karena hanya root dapat mengubah konfigurasi kernel, Happy meminta Anda untuk memasukkan sudo sandi selama operasi.

Senang menggunakan $SUDO variabel lingkungan sistem panggilan sudo . Jika $SUDO tidak didefinisikan, Happy membuat normal sudo panggilan.

skrip python Python

Setelah instalasi, paket Selamat Python dapat diimpor ke lingkungan Python menggunakan berikut import pernyataan:

import happy

Modul perintah individu yang ditemukan di /happy diimpor sebagai berikut:

import happy.HappyNodeAdd

Untuk mengambil pilihan modul, memanggil option() fungsi. Misalnya, untuk mengambil HappyNodeAdd pilihan modul:

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