Mức sử dụng mong muốn

Sử dụng cờ -h với bất kỳ lệnh happy-* nào để xem trợ giúp và danh sách các tùy chọn cho lệnh đó.

Tệp tiểu bang

Chúc bạn lưu trữ và duy trì cẩn thận trạng thái cấu trúc liên kết trong tệp JSON bằng một bản ghi duy nhất. Khi dùng tệp trạng thái này, Happy có thể chạy các lệnh thích hợp để tạo hoặc xóa cấu trúc liên kết.

Tệp trạng thái mặc định nằm tại ~/.happy_state.json. Tên trạng thái mặc định là happy, như hiển thị trong kết quả happy-state:

happy-state

State Name:  happy

Trạng thái song song

Happy hỗ trợ nhiều trạng thái song song cùng tồn tại. Trạng thái hiện tại dựa trên biến môi trường HAPPY_STATE_ID. Nếu HAPPY_STATE_ID không tồn tại trong môi trường, thì giá trị trạng thái mặc định của happy sẽ được sử dụng.

HAPPY_STATE_ID không được tạo trong quá trình cài đặt Chúc mừng. Hãy tạo một thẻ có giá trị khác state để chuyển ngay sang trạng thái Chúc mừng khác.

export HAPPY_STATE_ID="sunny"

Hiện đang kiểm tra kết quả happy-state ở trạng thái khác:

happy-state

State Name:  sunny

Mỗi tiểu bang sẽ được lưu trong tệp ~/.${HAPPY_STATE_ID}_state.json riêng. Để chuyển đổi giữa các trạng thái, hãy chạy lại lệnh export HAPPY_STATE_ID="<state-name>".

Gỡ cài đặt với trạng thái song song

Nếu bạn sử dụng các trạng thái Hạnh phúc song song và muốn gỡ cài đặt Trạng thái vui vẻ, hãy đảm bảo chạy happy-state-delete với mỗi trạng thái là đang hoạt động. Thao tác này đảm bảo tất cả vùng chứa tên mạng do Happy tạo ra sẽ bị xóa khỏi hệ thống của bạn mà không ảnh hưởng đến cấu hình mạng máy chủ Linux.

Ví dụ: với hai trạng thái của happysunny:

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

Xóa thủ công từng tệp trạng thái song song khi cần:

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

Nhật ký

Tính năng nhật ký sẽ gửi nhật ký đến syslog theo mặc định. Bản sao lưu nhật ký thứ hai sẽ được gửi đến /tmp/${HAPPY_STATE_ID}_debug_log.txt.

Để xem Nhật ký vui vẻ, hãy chạy happy-state -l trong một cửa sổ dòng lệnh riêng biệt. Khi bạn nhập lệnh Happy, nhật ký sẽ hiển thị các lệnh shell Vấn đề vui trong nền. Nếu bạn quan tâm đến vùng chứa tên mạng Linux, thì đây là cách hay để hiểu cách hoạt động của tính năng này.

Ví dụ: happy-node-add node00 sẽ tạo nút Chúc mừng. Đầu ra nhật ký cho lệnh này là:

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

Tất cả Driver:CallCmd() dòng là các lệnh shell mà Happy gọi. Xem xét từng dòng trong nhật ký:

# 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

Mẫu vật tổ chức

Các vị trí chung mẫu sẽ được đưa vào cả kho lưu trữ Happy và OpenWeave để thử nghiệm. Ngoài ra, hãy dùng các mã này để tìm hiểu các lệnh tạo cấu trúc tổ chức phức tạp.

Các thành phần ở định dạng JSON và Shell Script.

JSON

Các tệp cấu trúc liên kết JSON được tải bằng cách dùng các lệnh happy-state-load hoặc weave-state-load. Nếu cấu trúc liên kết bao gồm Weave, bạn phải sử dụng weave-state-load để tải cấu trúc liên kết, nếu không, các lệnh dành riêng cho Weave sẽ bị bỏ qua.

Ví dụ: một cấu trúc liên kết không có Weave:

happy-state-load thread_wifi_ap_internet.json

Cấu trúc liên kết với Weave:

weave-state-load three_nodes_on_thread_weave.json

Để lưu cấu trúc liên kết hiện tại của bạn dưới dạng tệp JSON riêng để sử dụng sau này (ví dụ: tập lệnh trường hợp thử nghiệm), hãy sử dụng happy-shell -s:

happy-shell -s my_topology.json

Thao tác này sẽ lưu tệp trạng thái cấu trúc liên kết trong thư mục $HOME.

Vỏ tập lệnh

Tệp cấu trúc liên kết tập lệnh shell chứa tập hợp các lệnh Happy và Weave để tạo các cấu trúc liên kết trong các tệp JSON tương ứng. Theo mặc định, các tập lệnh này không có quyền thực thi. Bạn có thể chạy quảng cáo theo hai cách:

Bằng cách sử dụng lệnh bash:

bash thread_wifi_ap_internet.sh

Bằng cách áp dụng các quyền thực thi:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

Cấu hình

Chúc mừng bạn có 3 tệp cấu hình:

Tệp cấu hìnhMô tả
~/.happy_conf.jsonCác biến cấu hình cho mục đích cá nhân hoặc trình bổ trợ. Đặt các giá trị này bằng lệnh happy-configuration.
<path-to-happy>/happy/conf/main_config.jsonCác biến cấu hình Chúc mừng chính.
<path-to-happy>/happy/conf/log_config.jsonCấu hình nhật ký.

Thêm các biến cấu hình

Bạn nên dùng lệnh happy-configuration để đặt mọi biến cá nhân hoặc trình bổ trợ ngoài các chế độ mặc định mà nhu cầu triển khai cụ thể của bạn là cần có.

Ví dụ: để cho Happy biết nơi tìm thư mục Weave test-apps cho các tập lệnh thử nghiệm, hãy đặt biến weave_path:

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

Happy lưu trữ các biến cấu hình trong ~/.happy_conf.json.

Các quá trình theo nút

Happy cung cấp các lệnh để bắt đầu và dừng các quy trình trong các nút mô phỏng.

Để bắt đầu một quy trình, hãy làm như sau:

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

Ví dụ: để liên tục chạy một ping trong một nút có tên ThreadNode:

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

Trong ví dụ trên, ConstantPing là tên do người dùng xác định cho quá trình mà Happy sử dụng để quản lý quy trình. Sử dụng happy-process-wait để tạm ngưng thực thi quy trình và happy-process-stop để loại bỏ quá trình.

Kết quả xử lý nằm trong /tmp. Ví dụ: sau khi bắt đầu quy trình ConstantPing, hãy kiểm tra thư mục /tmp:

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

Tệp .out này chứa dữ liệu đầu ra của quy trình ConstantPing.

Mức sử dụng sudo

Chúc mừng bạn đã thay đổi cấu hình mạng do hạt nhân Linux kiểm soát. Vì chỉ có root mới có thể thay đổi cấu hình hạt nhân, vui lòng nhắc bạn nhập mật khẩu sudo trong quá trình hoạt động.

Happy sử dụng biến môi trường hệ thống $SUDO để gọi sudo. Nếu bạn không xác định $SUDO, Happy sẽ thực hiện cuộc gọi sudo như bình thường.

Tập lệnh Python

Sau khi cài đặt, bạn có thể nhập các gói Happy Python vào môi trường Python bằng cách sử dụng câu lệnh import sau:

import happy

Các mô-đun lệnh riêng lẻ tìm thấy trong /happy được nhập như sau:

import happy.HappyNodeAdd

Để truy xuất các tùy chọn mô-đun, hãy gọi hàm option(). Ví dụ: để truy xuất các tùy chọn mô-đun HappyNodeAdd:

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