OpenResty Edge™ Python SDK 使用者手冊
歡迎查閱 OpenResty Edge™ Python SDK 的使用者手冊。
安裝
OpenResty Edge 的 Python SDK 依賴 Python3,請確保您已經安裝好 3.6 及以上版本的 Python3。 您可以像安裝其他 Python3 模組那樣安裝此 Python SDK:
- 開啟 Linux 終端或 Windows 命令提示符視窗 
- 輸入以下命令安裝 Python SDK: - pip3 install openresty-edge-sdk --index-url https://pypi.org/simple
如果您要安裝特定版本的 Python SDK,則可以在模組名稱後加上版本號:
pip3 install openresty-edge-sdk==1.2.39 --index-url https://pypi.org/simple
安裝命令執行成功後,您可以像下面這樣驗證是否已經正確安裝:
$ python3
>>> from edge2client import Edge2Client
>>> client = Edge2Client('https://EDGE_ADMIN_HOST:EDGE_ADMIN_PORT', 'USERNAME', 'PASSWORD')
>>> client.login()
True
>>> client.get_version()
{'waf': {'waf_version': '3.3.4-1' ...}
>>> exit()
鍵入在 client.login() 後,如果輸出 True,則表示已經正確安裝,如果您的 Edge Admin 使用的是自簽名證書(預設是自簽名證書),那麼你還需要在 client.login() 之前呼叫 client.set_ssl_verify(False)。
接著你還可以使用 client.get_version() 來檢視 OpenResty Edge 的版本資訊。
此外,你可以在這裡看到此 Python SDK 的變更日誌。
至此,安裝已經全部完成,您可以參考本文件中後續的內容,以實現更為複雜的功能。
概述
import sys
import time
from edge2client import Edge2Client
def get_client():
    client = Edge2Client(host, username, password)
    # 如果是自簽證書導致 SSL 校驗失敗,可以去掉下面的註釋
    # client.set_ssl_verify(False)
    ok = client.login()
    return client
if __name__ == '__main__':
    try:
        client = get_client()
    except Exception as e:
        print("failed to get client: ", str(e))
        sys.exit(1)
    try:
        app_ids = client.get_all_apps()
    except Exception as e:
        print("failed to get all apps: ", str(e))
        sys.exit(1)
    for app_id in app_ids:
        client.use_app(app_id)
        if client.pending_changes() > 0:
            ret = client.new_release()
            if ret:
                print('release ok app id: ' + str(app_id))
            else:
                print('release failed: ' + str(app_id))
            time.sleep(1)
方法列表
| 方法 | 描述 | 
|---|---|
| Edge2Client | 此方法用於初始化 SDK 客戶端。 | 
| set_ssl_verify | 設定訪問 Edge Admin 時,是否進行 SSL 驗證,預設會進行驗證。 | 
| login | 此方法用於登入 OpenResty Edge,以便進行後續操作。 | 
| use_app | 此方法用於指定當前例項操作的應用 ID。 | 
| new_app | 此方法用於新增 HTTP 應用。 | 
| put_app | 此方法用於修改 HTTP 應用的基本資訊。 | 
| get_app | 此方法用於獲取 HTTP 應用的相關資訊,包括域名、標籤以及所屬群組等。 | 
| put_app_config | 此方法用於修改 HTTP 應用的配置。 | 
| get_app_config | 此方法用於獲取指定 HTTP 應用的配置資訊。 | 
| del_app | 此方法根據提供的 app_id 刪除指定的 HTTP 應用。 | 
| search_app | 此方法用於根據指定域名搜尋 HTTP 應用。 | 
| search_http_app_by_keyword | 此方法用於根據域名或應用名稱搜尋 HTTP 應用。 | 
| search_upstream_by_ip | 此方法用於透過 IP 地址搜尋上游資訊。 | 
| search_k8s_upstream_by_ip | 這個方法用於根據 IP 搜尋 Kubernetes 上游。 | 
| search_upstream_by_name | 此方法用於根據名稱搜尋上游。 | 
| search_k8s_upstream_by_name | 此方法用於透過指定名稱搜尋 Kubernetes 上游。 | 
| search_k8s_upstream | 此方法允許使用者透過指定名稱空間,服務名稱和埠號來搜尋 Kubernetes 上游。 | 
| search_k8s_upstream_history | 此方法根據名稱空間、服務名稱和埠號搜尋 Kubernetes 上游歷史。 | 
| get_all_apps | 此方法用於獲取所有應用的資訊。 | 
| new_upstream | 此方法用於新增上游,返回值為新增上游的 id。 | 
| put_upstream | 此方法用於修改上游資訊。 | 
| get_upstream | 此方法用於獲取上游資訊。 | 
| del_upstream | 此方法用於刪除上游。 | 
| get_all_upstreams | 此方法用於獲取所有上游的詳細資訊。 | 
| new_k8s_upstream | 本函式用於新增全域性 Kubernetes 上游,將返回新建立的 k8s 上游的 ID。 | 
| copy_upstream_to_k8s_upstream | 此方法用於將一個常規上游複製為一個 Kubernetes 上游。 | 
| put_k8s_upstream | 此方法用於修改 Kubernetes 上游資訊。 | 
| get_k8s_upstream | 此方法用於獲取 k8s 上游的資訊。 | 
| del_k8s_upstream | 此方法用於刪除 k8s(Kubernetes)上游。 | 
| get_all_k8s_upstreams | 此方法用於獲取所有 Kubernetes 上游的資訊。 | 
| new_rule | 此方法用於新建頁面規則,包含各種規則型別,如:通用規則,代理規則,WAF 規則和快取規則。你也可以指定規則執行的前提條件。 | 
| put_rule | 此方法用於修改頁面規則。 | 
| get_rule | 此方法用於根據規則 ID 獲取頁面規則。 | 
| del_rule | 此方法用於刪除與 rule_id 對應的頁面規則。 | 
| get_all_rules | 此方法用於獲取指定應用 ID (app_id) 的所有頁面規則。 | 
| reorder_rules | 此方法用於調整規則的順序。 | 
| get_all_rules_by_app_domain | 此方法用於根據指定的應用域名獲取對應的頁面規則。 | 
| get_all_rules_by_upstream_ip | 此方法用於根據上游 IP 地址來檢索所有關聯的頁面規則。 | 
| get_all_waf_rules | 此方法用於根據特定的應用 id (app_id) 獲取對應的 WAF 規則。 | 
| get_global_actions_used_in_app | 此方法用以獲取與應用 ID (app_id) 相關聯的自定義規則 ID。 | 
| set_cert_key | 此方法用於新增 SSL 證書並提供手動上傳證書的選項。 | 
| set_le_cert | 此方法用於新增 Let’s Encrypt 證書。 | 
| put_cert_key | 此方法用於更新 SSL 證書(手動上傳方式)。 | 
| put_le_cert | 此方法用於更新 Let’s Encrypt 證書。 | 
| get_le_cert | 此方法用於獲取 Let’s Encrypt 證書的簽發狀態。 | 
| get_cert_key | 此方法用於獲取 SSL 證書內容。 | 
| get_all_cert_keys | 此方法用於獲取當前應用的全部證書資訊。 | 
| del_cert_key | 刪除與給定的 certificate_id 相關聯的證書資訊。 | 
| new_el | 此方法用於新增自定義的 edge 語言程式碼。 | 
| new_release | 此方法用於釋出當前應用的更新。 | 
| pending_changes | 此方法用於查詢待發布的更改數量。 | 
| sync_status | 釋出新更動到所有節點。 | 
| node_sync_status | 此方法用於獲取各節點的同步詳情。 | 
| get_healthcheck_status | 這段程式碼用於獲取各節點的健康檢查資訊。 | 
| add_app_user | 此方法用於新增應用級使用者。 | 
| update_app_user | 此方法用於更新應用級的使用者資訊。 | 
| get_app_user | 此方法用於獲取應用級別的使用者資訊,包括使用者名稱、許可權等。 | 
| del_app_user | 此方法用於刪除特定應用的使用者。 | 
| get_all_app_users | 此方法用於獲取所有當前應用級別的使用者,也可以透過指定 app_id 來獲取特定應用的使用者。 | 
| add_user_for_all_apps | 此方法用於為所有應用新增使用者。 | 
| add_all_users_for_app | 此方法用於將所有全域性使用者新增到指定應用。 | 
| new_cache_purge_task | 此方法用於新增條件重新整理任務。任務的觸發條件以陣列形式傳遞,支援設定多個觸發條件。只有當所有設定的條件同時滿足時,才會觸發對應的重新整理任務。 | 
| get_cache_purge_task | 此方法透過指定的重新整理任務 id 來查詢任務的詳細資訊。 | 
| get_all_cache_purge_tasks | 此方法用於獲取所有快取重新整理任務的詳細資訊。 | 
| del_cache_purge_task | 此方法用於刪除指定 ID 的重新整理任務。 | 
| new_waf_whitelist | 此方法用於新增 WAF 白名單規則。 | 
| update_waf_whitelist | 此方法用於更新 WAF 白名單規則。 | 
| get_waf_whitelist | 此方法用於獲取 WAF 的白名單規則。 | 
| del_waf_whitelist | 執行此操作會刪除指定的 WAF 白名單規則。 | 
| get_all_waf_whitelists | 此方法用於獲取所有的 WAF 白名單規則。 | 
| new_app_dymetrics | 建立新的應用動態指標。 | 
| put_app_dymetrics | 此方法用於修改應用的動態指標。 | 
| del_app_dymetrics | 此方法用於刪除指定應用的動態指標。 | 
| get_app_dymetrics | 此方法用於獲取指定應用的動態指標。 | 
| get_all_app_dymetrics | 此方法用於獲取指定應用的全部動態指標資訊。 | 
| get_app_dymetrics_data | 此方法用於獲取應用的動態指標資料,預設返回最近 30 分鐘的資料。 | 
| get_app_metrics | 此方法用於獲取應用的 HTTP 請求狀態指標和網路收發指標,預設情況下,它會獲取最近 30 分鐘的資料。 | 
| new_ip_list | 新增新的應用級 IP 列表。 | 
| put_ip_list | 此方法用於修改指定的 IP 列表。 | 
| del_ip_list | 此方法用於刪除指定的 IP 列表。 | 
| get_ip_list | 此方法用於檢視特定的 IP 列表。 | 
| append_to_ip_list | 此方法用於向特定的 IP 列表追加 IP。 | 
| remove_from_ip_list | 此方法用於從特定的 IP 列表移除指定 IP | 
| node_monitor | 此方法用於獲取網路節點的 CPU 和記憶體負載相關資訊。 | 
| new_global_dymetrics | 此方法用於建立全域性動態指標。 | 
| put_global_dymetrics | 此方法用於修改全域性動態指標。 | 
| del_global_dymetrics | 此方法用於刪除指定的全域性動態指標。 | 
| get_global_dymetrics | 此方法用於獲取指定的全域性動態指標。 | 
| get_all_global_dymetrics | 此方法用於獲取所有全域性動態指標。 | 
| get_global_dymetrics_data | 此方法用於獲取全域性動態指標資料,預設範圍為最近的 30 分鐘。 | 
| use_dns_app | 此方法用於切換當前例項所操作的 DNS 應用。 | 
| new_dns_app | 此方法用於建立新的 DNS 應用。 | 
| put_dns_app | 此方法用於修改 DNS 應用的相關資訊。 | 
| get_dns_app | 此方法用於獲取 DNS 應用的相關資訊。 | 
| del_dns_app | 此方法用於刪除指定的 DNS 應用。 | 
| new_dns_record | 此方法用於新增一個 DNS 記錄。 | 
| put_dns_record | 此方法用於修改一個 DNS 記錄。 | 
| get_dns_record | 此方法用於獲取一個 DNS 記錄。 | 
| del_dns_record | 此方法用於刪除一個 DNS 記錄。 | 
| get_dns_records | 此方法用於獲取指定 DNS 應用內的部分或全部 DNS 記錄。 | 
| new_global_upstream | 此方法用於新增上游,並返回新建立的全域性上游的 id。 | 
| update_global_upstream | 此方法用於更新全域性上游資訊。 | 
| get_global_upstream | 此方法用於獲取全域性上游資訊。 | 
| del_global_upstream | 此方法用於刪除全域性上游。 | 
| get_all_global_upstreams | 此方法用於獲取全部的上游資訊。 | 
| new_global_k8s_upstream | 此方法用於建立新的全域性 Kubernetes 上游,並返回新建立的上游的 ID。 | 
| put_global_k8s_upstream | 此方法用於修改全域性 Kubernetes 上游的資訊。 | 
| fetch_global_k8s_upstream | 此方法用於獲取全域性 Kubernetes 上游的資訊。 | 
| del_global_k8s_upstream | 此方法用於刪除全域性 k8s 上游。 | 
| get_all_global_k8s_upstreams | 此方法用於獲取所有的 Kubernetes 上游資訊。 | 
| set_global_cert_key | 用於新增全域性 SSL 證書。 | 
| put_global_cert_key | 此方法用於修改全域性 SSL 證書。 | 
| get_global_cert_key | 此方法用於獲取與 cert_id 相關聯的 SSL 證書資訊。 | 
| del_global_cert_key | 此方法用於刪除指定的全域性 SSL 證書。 | 
| add_global_user | 此方法用於新增全域性使用者。 | 
| search_global_user | 此方法用於根據使用者名稱搜尋全域性使用者資訊。 | 
| get_all_global_users | 本函式用於獲取所有全域性使用者的資訊。 | 
| new_global_rule | 此方法用於新增全域性規則。 | 
| put_global_rule | 此方法用於修改全域性規則。 | 
| get_global_rule | 此方法用於獲取全域性規則資訊。 | 
| get_global_action_by_name | 此方法用於根據給定的應用名來獲取相應的全域性自定義動作。 | 
| get_all_global_rules | 此方法用於獲取所有的全域性規則。 | 
| del_global_rule | 此方法用於刪除全域性規則。 | 
| new_global_var | 此方法用於新增全域性變數。 | 
| put_global_var | 此方法用於修改全域性變數。 | 
| get_global_var | 此方法用於獲取全域性變數。 | 
| get_all_global_vars | 此方法用於獲取所有全域性變數。 | 
| del_global_var | 此方法用於根據全域性變數的 ID 進行刪除操作。 | 
| get_global_ngx_config | 此方法用於獲取全域性的 nginx 配置資訊。 | 
| set_global_ngx_config | 此方法設定全域性的 nginx 配置資訊。 | 
| get_global_misc_config | 此方法用於獲取全域性的雜項配置資訊。 | 
| set_global_misc_config | 此方法用於設定全域性雜項配置資訊。 | 
| get_request_id_status | 此方法用於查詢請求 id 的狀態。 | 
| enable_request_id | 這個方法用於啟用請求 id 功能。 | 
| disable_request_id | 此方法用於禁用請求 ID 功能。 | 
| new_global_waf_rule | 此方法用於新增全域性 WAF 規則。 | 
| put_global_waf_rule | 此方法用於修改全域性 WAF 規則。 | 
| get_global_waf_rule | 此方法透過提供的規則集 ID(rule_id)來獲取全域性的 WAF 規則集。 | 
| del_global_waf_rule | 此方法用於刪除全域性 WAF 規則。 | 
| get_all_global_waf_rules | 此方法用於獲取所有全域性 WAF 規則。 | 
| new_global_action | 此方法用於新增新的全域性自定義動作。 | 
| put_global_action | 此方法用於修改全域性自定義動作。 | 
| get_global_action | 此方法用於獲取全域性自定義動作。 | 
| del_global_action | 此方法用於刪除指定的全域性自定義動作。 | 
| count_global_actions | 此方法用於獲取全域性自定義動作的總數。 | 
| get_all_global_actions | 此方法用於獲取所有全域性自定義動作。 | 
| upload_static_file | 此方法用於上傳靜態檔案。 | 
| get_static_file | 此方法用於獲取指定的靜態檔案配置。 | 
| del_static_file | 此方法用於刪除已上傳的靜態檔案。 | 
| new_cluster_group | 此方法用於新增新的叢集組。 | 
| put_cluster_group | 此方法用於修改叢集組資訊。 | 
| get_cluster_group | 此方法用於獲取叢集組的詳細資訊。 | 
| get_all_cluster_groups | 此方法用於獲取所有叢集組的資訊。 | 
| del_cluster_group | 此方法用於刪除叢集組資訊。 | 
| put_proxy_rule | 此方法用於修改上游代理規則。 | 
| new_global_k8s | 此方法用於新增新的 k8s 叢集連線引數。 | 
| put_global_k8s | 此方法用於修改 Kubernetes 叢集的連線引數。 | 
| get_global_k8s | 此方法用於獲取 Kubernetes 叢集的連線引數資訊。 | 
| get_k8s_service_detail | 此方法用於獲取 k8s 叢集中定義的服務相關資訊。 | 
| get_all_global_k8s | 此方法用於獲取所有全域性 Kubernetes 叢集的 id。 | 
| del_global_k8s | 此方法用於刪除 k8s 叢集的連線引數。 | 
| update_proxy_rule | 更新指定的上游代理規則。 | 
| new_global_ip_list | 此方法用於建立新的全域性 IP 列表。 | 
| put_global_ip_list | 此方法用於修改指定的全域性級別 IP 列表。 | 
| del_global_ip_list | 此方法用於刪除指定的全域性 IP 列表。 | 
| get_global_ip_list | 此方法用於獲取指定的全域性 IP 列表。 | 
| append_to_global_ip_list | 此方法用於向指定的全域性 IP 列表追加 IP。 | 
| remove_from_global_ip_list | 此方法用於從指定的全域性 IP 列表移除 IP。 | 
| new_user_var | 這是一個用於新增使用者級別變數的函式。 | 
| put_user_var | 此方法用於修改使用者級別的變數。 | 
| get_user_var | 此方法用於獲取使用者級別的變數。 | 
| del_user_var | 此方法用於刪除使用者級別的變數。 | 
| decode_request_id | 此方法用於解碼 request_id 以獲取諸如 app_id 等資訊。 | 
| search_waf_log | 此方法用於透過請求 id 獲取 WAF 日誌。 | 
| get_version | 此方法用於獲取 Admin、Admin DB、Log Server、Log Server DB 及 WAF 的版本資訊。 | 
| add_api_token | 此方法用於生成 API Token。 | 
| get_api_token | 此方法用於獲取 API 令牌。 | 
| del_api_token | 此方法用於刪除一個指定的 API Token。 | 
| get_all_gateway_tag | 此方法用於獲取所有閘道器叢集的標籤。 | 
| get_all_gateway | 此方法用於獲取所有閘道器叢集的資訊。 | 
| add_gateway | 此方法用於建立新的閘道器叢集。 | 
| del_gateway | 此方法用於刪除指定的閘道器叢集。 | 
| get_all_nodes | 此方法用於獲取所有的閘道器節點。 | 
| get_node | 此方法根據提供的節點 ID 獲取相應的節點資訊。 | 
| get_node_by_mac_address | 此方法用於根據節點的硬體 ID 來檢索節點的詳細資訊。 | 
| put_node | This method is used for updating node information. Parameters | 
| del_node | 此方法用於根據節點 ID 刪除指定節點。 | 
| lmdb_backup | 此方法用於觸發 LMDB 的備份。如果備份成功,方法將返回 True。如果備份失敗,則返回一個包含失敗 Node 節點的dict資訊,其中 key 是 Node ID,value 是失敗的原因。您可以透過呼叫node_sync_status介面來確認備份是否成功。如果該介面中節點的backup_time大於 lmdb_backup() 方法的呼叫時間,那麼可以認為該節點的備份已成功執行。 | 
| get_global_cert_referenced | 此方法用於獲取使用了指定全域性證書的應用列表。 | 
| get_all_partition_lua_module | 此方法用於獲取指定分割槽的所有 Lua 模組。 | 
| get_partition_lua_module | 此方法用於獲取指定分割槽中的指定 lua 模組。 | 
| new_partition_lua_module | 此方法用於向指定分割槽新增一個新的 Lua 模組。 | 
| put_partition_lua_module | 此方法用於編輯指定分割槽的特定 lua 模組。 | 
| del_partition_lua_module | 此方法用於刪除指定分割槽內的特定 lua 模組。 | 
| conv_crl_to_lua_module | 此方法用於將 CRL 檔案轉換為 Lua 模組。 | 
| get_all_candidate_node | 此方法用於獲取所有待批准的節點,隨後可以透過呼叫 approve_candidate_node 介面來將這些節點批准加入到指定的叢集。 | 
| approve_candidate_node | 此方法用於批准 MAC 地址為 mac_address 的節點加入到 ID 為 gateway_id 的閘道器叢集。 | 
| get_waf_logs | 此方法用於獲取指定應用的 WAF 日誌。 | 
| get_dos_logs | 此方法用於檢索指定應用的 CC 日誌。 | 
| get_global_page_template | 此方法用於獲取指定的全域性頁面模板。 | 
| get_all_global_page_templates | 此方法用於獲取所有的全域性頁面模板。 | 
| del_global_page_template | 此方法用於刪除指定的全域性頁面模板。 | 
| new_global_page_template | 此方法用於建立新的全域性頁面模板。 | 
| put_global_page_template | 此方法用於更新指定的全域性頁面模板。 | 
| get_app_basic_auth_user_group | 此方法用於獲取指定應用中指定的 Basic Auth 使用者組資訊。 | 
| get_all_app_basic_auth_user_groups | 此方法用於獲取指定應用中所有 Basic Auth 使用者組資訊。 | 
| del_app_basic_auth_user_group | 此方法用於刪除指定應用中指定的 Basic Auth 使用者組資訊。 | 
| new_app_basic_auth_user_group | 此方法用於在指定應用中建立 Basic Auth 使用者組。 | 
| put_app_basic_auth_user_group | 此方法用於更新指定應用中指定的 Basic Auth 使用者組資訊。 | 
| get_app_basic_auth_user | 此方法用於獲取指定應用的 Basic Auth 使用者組中指定的使用者資訊。 | 
| get_app_basic_auth_users_in_group | 此方法用於獲取指定應用的 Basic Auth 使用者組中所有使用者資訊。 | 
| del_app_basic_auth_user | 此方法用於刪除指定應用的 Basic Auth 使用者組中指定的使用者資訊。 | 
| new_app_basic_auth_user | 此方法用於在指定應用的 Basic Auth 使用者組中建立使用者。 | 
| put_app_basic_auth_user | 此方法用於更新指定應用的 Basic Auth 使用者組中指定的使用者資訊。 | 
| new_acme_provider | 此方法用於新增 ACME 提供商記錄,返回值為新增記錄的 id。 | 
| put_acme_provider | 此方法用於修改 ACME 提供商記錄。 | 
| get_acme_provider | 此方法用於獲取 ACME 提供商記錄。 | 
| get_all_acme_providers | 此方法用於獲取所有 ACME 提供商的記錄。 | 
| del_acme_provider | 此方法用於刪除 ACME 提供商記錄。 | 
| get_acme_logs | 此方法用於獲取指定 ACME 證書的日誌,最多 100 條。 | 
| get_node_error_logs | 此方法用於獲取 Edge Node 的錯誤日誌。 | 
| get_admin_error_logs | 此方法用於獲取 Edge Admin 的錯誤日誌。 | 
| get_log_server_error_logs | 此方法用於獲取 Edge Log Server 的錯誤日誌。 | 
| get_http_app_error_logs | 此方法用於獲取指定 HTTP 應用的錯誤日誌。 | 
| get_upstream_healthcheck_status | 此方法用於獲取指定 HTTP 應用上游的健康檢查狀態。 | 
| get_global_upstream_healthcheck_status | 此方法用於獲取指定全域性上游的健康檢查狀態。 | 
| get_el | 獲取頁面規則的前置和後置 Edgelang 程式碼塊配置。 | 
| new_el | 設定頁面規則的前置和後置 Edgelang 程式碼塊配置。 | 
方法詳情
Edge2Client
client = Edge2Client(host, username, password, api_token=None)
此方法用於初始化 SDK 客戶端。
引數
| 名稱 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| host | string | 是 | edge-admin 的地址,需要包含協議和埠 | 
| username | string | 是 | 用於登入 edge-admin 的使用者名稱 | 
| password | string | 是 | 用於登入 edge-admin 的密碼 | 
| api_token | string | 否 | 訪問令牌 | 
返回值
- 返回一個 edge2client.Edge2Client物件。
示例
- 當 Edge Admin 的地址為 - https://127.0.0.1:443,且使用使用者名稱- username和密碼- password初始化 Edge2Client 物件時:- from edge2client import Edge2Client client = Edge2Client('https://127.0.0.1:443', 'username', 'password')
- 使用 API Token - api_token來初始化 Edge2Client 物件時:- from edge2client import Edge2Client client = Edge2Client('https://127.0.0.1:443', None, None, "api_token")
set_ssl_verify
set_ssl_verify(verify)
設定訪問 Edge Admin 時,是否進行 SSL 驗證,預設會進行驗證。 當您的 Edge Admin 使用的是自簽名的證書時,那麼需要把 SSL 驗證關閉。
引數
| 名稱 | 資料型別 | 是否必選 | 描述資訊 | 
|---|---|---|---|
| verify | bool | 是 | 是非啟用 SSL 驗證 | 
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.set_ssl_verify(False)
ok = client.login()
login
ok = login()
此方法用於登入 OpenResty Edge,以便進行後續操作。
返回值
- True:表示登入成功。
- False:表示登入失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
ok = client.login()
use_app
ok = use_app(app_id)
此方法用於指定當前例項操作的應用 ID。
返回值
- True:應用 ID 指定成功。
- False:應用 ID 指定失敗。
示例
下面的示例演示如何將當前例項操作的應用 ID 更改為 10。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 10
client.use_app(app_id)
new_app
app_id = new_app(domains, label)
此方法用於新增 HTTP 應用。
引數
| 名稱 | 資料型別 | 是否必選 | 描述資訊 | 
|---|---|---|---|
| domains | list | 是 | 應用所需的域名 | 
| label | string | 是 | 應用的標識名稱 | 
| cluster_groups | list | 否 | 應用所處的叢集組 | 
返回值
- app_id:返回新建應用的 ID,其資料型別為 number。
示例
以下示例展示瞭如何建立一個域名為 orig.foo.com,標籤為 origin site for foo.com 的 HTTP 應用,且該應用所在的叢集組為 [1]。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = client.new_app(
    domains=['orig.foo.com'],
    label='origin site for foo.com',
    cluster_groups = [1])
put_app
ok = put_app(app_id, domains, label, cluster_groups=None, offline=None)
此方法用於修改 HTTP 應用的基本資訊。
引數
| 名稱 | 資料型別 | 必選 | 描述 | 
|---|---|---|---|
| app_id | number | 是 | 應用的唯一識別符號 | 
| domains | list | 是 | 應用的域名列表 | 
| label | string | 是 | 應用的名稱 | 
| cluster_groups | list | 否 | 應用所在的叢集組列表 | 
| offline | bool | 否 | 應用的線上/離線狀態,True 表示離線,False 表示線上 | 
返回值
- True:表示修改成功。
- False:表示修改失敗。
示例
以下示例展示瞭如何將已建立的應用(其域名為 orig.foo.com)的域名修改為 *.foo.com。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 10
client.use_app(app_id)
ok = client.put_app(app_id, domains=['*.foo.com'], label='foo.com')
get_app
data = get_app()
此方法用於獲取 HTTP 應用的相關資訊,包括域名、標籤以及所屬群組等。
返回值
- data:返回一個 dict型別的資料。
示例
以下示例演示瞭如何獲取 app_id 為 1 的應用資訊。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_app()
put_app_config
put_app_config(app_id, limiter)
此方法用於修改 HTTP 應用的配置。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| app_id | number | 是 | 應用的 id | 
| limiter | dict | 是 | 應用的 limiter 配置 | 
| enable_websocket | bool | 否 | 是否開啟 websocket | 
返回值
- True:配置修改成功。
- False:配置修改失敗。
示例
以下示例展示瞭如何修改 app_id 為 1 的應用配置。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
res = client.put_app_config(app_id=app_id,
                            limiter={
                                        'max_uri_args': 130,
                                        'max_post_args': 140,
                                        'max_req_headers': 150,
                                        'check_post_args_type': True
                                    },
                            enable_websocket=True)
get_app_config
data = get_app_config(app_id)
此方法用於獲取指定 HTTP 應用的配置資訊。
引數
| 名稱 | 資料型別 | 是否必填 | 描述 | 
|---|---|---|---|
| app_id | number | 是 | 待查詢應用的 id | 
返回值
- data:返回一個字典(dict)型別的資料。
示例
下例展示瞭如何獲取 id 為 1 的應用的配置資訊:
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
data = client.get_app_config(app_id)
del_app
success = del_app(app_id)
此方法根據提供的 app_id 刪除指定的 HTTP 應用。
引數
| 名稱 | 資料型別 | 是否必須 | 描述資訊 | 
|---|---|---|---|
| app_id | number | 是 | 待刪除應用的唯一 id | 
返回值
- True:表示應用刪除成功。
- False:表示應用刪除失敗。
示例
以下示例展示瞭如何刪除 app_id 為 1 的應用。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
success = client.del_app(app_id)
search_app
data = search_app(app_domain)
此方法用於根據指定域名搜尋 HTTP 應用。
引數
| 名稱 | 資料型別 | 是否必須 | 引數描述 | 
|---|---|---|---|
| app_domain | string | 是 | 需要搜尋的應用域名 | 
| page | number | 否 | 返回結果的頁碼,預設為 1 | 
| pagesize | number | 否 | 每頁返回的結果數量,預設為 20 | 
返回值
- data:返回一個 list型別的結果,其中每個元素都是應用的相關資訊。
示例
以下示例以 orig.foo.com 為域名來搜尋 HTTP 應用。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.search_app(app_domain='orig.foo.com')
search_http_app_by_keyword
data = search_http_app_by_keyword(keyword, page, pagesize)
此方法用於根據域名或應用名稱搜尋 HTTP 應用。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| keyword | string | 是 | 要搜尋的關鍵詞,將同時在域名和應用名稱中進行搜尋 | 
| page | number | 否 | 返回結果的頁碼序號,預設值為 1 | 
| pagesize | number | 否 | 每頁返回結果的條目數量,預設值為 20 | 
返回值
- data:此返回值為 list型別,每個元素包含應用的相關資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.search_http_app_by_keyword('orig.foo.com')
data = client.search_http_app_by_keyword('orig.foo.com', 1, 2)
data = client.search_http_app_by_keyword('origin')
search_upstream_by_ip
data = search_upstream_by_ip(ip, page=1, pagesize=20)
此方法用於透過 IP 地址搜尋上游資訊。
引數
| 引數名 | 資料型別 | 是否必要 | 描述 | 
|---|---|---|---|
| ip | string | 是 | 需要進行搜尋的 IP 地址 | 
| page | number | 否 | 期望獲取的結果頁碼,預設為第一頁 | 
| pagesize | number | 否 | 每頁返回的結果數量,預設為 20 條 | 
返回值
- data:返回一個list型別的資料,列表中的每一個元素代表一個上游的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.search_upstream_by_ip('1.1.1.1')
search_k8s_upstream_by_ip
data = search_k8s_upstream_by_ip(ip, page, pagesize)
這個方法用於根據 IP 搜尋 Kubernetes 上游。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| ip | string | 是 | 要搜尋的 IP | 
| page | number | 否 | 返回結果的頁碼,如果未指定,預設為 1 | 
| pagesize | number | 否 | 每頁返回結果的數量,如果未指定,預設為 20 | 
返回值
- data:一個list型別的變數,其中包含了 Kubernetes 上游的資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.search_k8s_upstream_by_ip('1.1.1.1')
search_upstream_by_name
data = search_upstream_by_name(name, page, pagesize)
此方法用於根據名稱搜尋上游。
引數
| 引數名 | 資料型別 | 是否必填 | 描述 | 
|---|---|---|---|
| name | string | 是 | 需要搜尋的上游名稱 | 
| page | number | 否 | 返回結果的頁碼,若未指定則預設為 1 | 
| pagesize | number | 否 | 返回結果的每頁條目數,若未指定則預設為 20 | 
返回值
- data:此為list型別,每個元素都代表了一條上游資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.search_upstream_by_name('test')
search_k8s_upstream_by_name
data = search_k8s_upstream_by_name(name, page, pagesize)
此方法用於透過指定名稱搜尋 Kubernetes 上游。
引數
| 引數 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| name | string | 是 | 需要搜尋的 Kubernetes 上游名稱 | 
| page | number | 否 | 返回搜尋結果的頁碼,預設值為 1 | 
| pagesize | number | 否 | 單頁返回的搜尋結果條目數,預設值為 20 | 
返回值
- data:此為 list型別,包含多個 Kubernetes 上游的資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.search_k8s_upstream_by_name('test')
search_k8s_upstream
data = search_k8s_upstream(namespace, service, port, page, pagesize, type_list)
此方法允許使用者透過指定名稱空間,服務名稱和埠號來搜尋 Kubernetes 上游。
引數
| 名稱 | 資料型別 | 必選 | 描述 | 
|---|---|---|---|
| namespace | string | no | 搜尋的名稱空間名稱 | 
| service | string | no | 搜尋的服務的名稱 | 
| port | number | no | 搜尋的服務的埠號 | 
| page | number | no | 返回結果的頁碼,預設值為 1 | 
| pagesize | number | no | 每一頁返回結果的條目數,預設值為 20 | 
| type_list | list | no | 搜尋的上游型別列表,包括 k8s_http 和 k8s_global,預設情況下搜尋所有型別 | 
返回值
- data:list型別,列表中每個元素都是 Kubernetes 上游的資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = self.client.search_k8s_upstream(port = 80, service = "test-hello", namespace = "default")
search_k8s_upstream_history
data = search_k8s_upstream_history(page, pagesize, start_time, end_time)
此方法根據名稱空間、服務名稱和埠號搜尋 Kubernetes 上游歷史。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| page | number | 否 | 返回結果的頁碼,若未指定,預設為 1 | 
| pagesize | number | 否 | 返回結果的條目數,若未指定,預設為 20 | 
| start_time | number | 否 | 搜尋的起始時間戳 | 
| end_time | number | 否 | 搜尋的結束時間戳 | 
返回值
- data:返回值為 list型別,每個元素代表一個 Kubernetes 上游的更新歷史操作。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.search_k8s_upstream_history(port = 80, service = "test-hello", namespace = "default")
get_all_apps
data = get_all_apps(detail)
此方法用於獲取所有應用的資訊。
引數
| 引數名 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| detail | bool | 否 | 是否需要返回每個應用的詳細資訊,預設為 False | 
返回值
- 當 detail引數為False時,函式返回一個包含所有的 app id 的list型別的 Python 物件,包含所有應用的基本資訊。
- 當 detail引數為True時,函式返回一個以 app id 作為鍵值的dict型別的 Python 物件,包含所有應用的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
# 獲取基本資訊
apps = client.get_all_apps()
# 獲取詳細資訊
apps = client.get_all_apps(detail=True)
new_upstream
up_id = new_upstream(**kwargs)
此方法用於新增上游,返回值為新增上游的 id。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| name | string | 是 | 上游的名稱 | 
| servers | list | 是 | 上游的資訊 | 
| ssl | bool | 否 | 是否採用 HTTPS 協議,預設值為 False | 
| health_checker | dict | 否 | 健康檢查的詳細配置,預設值為 None | 
| gid | array | 是 | 使用者組 id 列表,如 [1] | 
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| domain | string | 否 | 上游的域名 | 
| ip | string | 否 | 上游的 IP 地址。注意,引數 domain 和 IP 至少需要填寫一個 | 
| port | string | 是 | 上游的埠號 | 
| weight | number | 否 | 上游的權重,預設值為 1 | 
返回值
- up_id:表示建立成功的上游的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
up_id = client.new_upstream(
    name='origin-upstream',
    servers=[
        {'ip': '172.22.31.1', 'port': 80},
        {'ip': '172.22.31.2', 'port': 80, 'weight': 2}
    ])
put_upstream
ok = put_upstream(**kwargs)
此方法用於修改上游資訊。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| name | string | 是 | 定義上游的名稱 | 
| servers | list | 是 | 詳細定義上游資訊 | 
| ssl | bool | 否 | 是否啟用 HTTPS 協議,預設為 False | 
| health_checker | dict | 否 | 用於配置健康檢查的詳細資訊,預設為 None | 
| gid | array | 是 | 使用者組 id 列表,例如[1] | 
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
up_id = 1
ok = client.put_upstream(up_id,
    name='origin-upstream',
    servers=[
        {'domain': 'test.com', 'port': 8080},
        {'ip': '172.22.31.2', 'port': 8080, 'weight': 1}
    ],
    health_checker={
        'type': 'http',
        'http_req_uri': '/status',
        'http_req_host': 'test.com',
        'interval': 3,
        'interval_unit': 'sec',
        'timeout': 1,
        'fall': 3,
        'rise': 2,
        'valid_statuses': [200, 302],
        'report_interval': 3,
        'report_interval_unit': 'min'
    })
get_upstream
data = get_upstream(up_id)
此方法用於獲取上游資訊。
引數
| 引數名 | 資料型別 | 是否必須 | 引數描述 | 
|---|---|---|---|
| up_id | string | 否 | 上游的 ID | 
返回值
- data:返回型別為 dict的上游資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
up_id = 1
data = client.get_upstream(up_id)
del_upstream
del_upstream(up_id)
此方法用於刪除上游。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| up_id | string | 否 | 上游的唯一識別符號 | 
返回值
- 返回 True:表示上游刪除成功。
- 返回 False:表示上游刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
up_id = 1
ok = client.del_upstream(up_id)
在這個示例中,我們首先匯入了 Edge2Client,然後建立了一個 Edge2Client 物件,使用 host,username 和 password 進行登入。然後,我們嘗試用 del_upstream 方法刪除識別符號為 1 的上游。
get_all_upstreams
upstreams = client.get_all_upstreams()
此方法用於獲取所有上游的詳細資訊。
返回值
- upstreams:返回一組list型別的資料,包含所有上游資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
upstreams = client.get_all_upstreams()
new_k8s_upstream
up_id = new_k8s_upstream(**kwargs)
本函式用於新增全域性 Kubernetes 上游,將返回新建立的 k8s 上游的 ID。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| name | string | 是 | 上游名稱 | 
| k8s_services | list | 是 | 當上遊是 k8s 服務時所需的資訊 | 
| ssl | bool | 否 | 是否使用 HTTPS 協議,預設為 False | 
| health_checker | dict | 否 | 對健康檢查的詳細配置,預設為 None | 
| gid | array | 是 | 使用者組 ID 列表,例如:[1] | 
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| k8s | number | 是 | k8s 叢集 ID | 
| k8s_namespace | string | 是 | k8s 叢集名稱空間 | 
| k8s_service | string | 是 | k8s 叢集服務 | 
| k8s_service_port | number | 是 | k8s 叢集服務埠 | 
返回值
- up_id:新建立的 k8s 上游的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
k8s_up_id = client.new_k8s_upstream(
    name = 'k8s-upstream',
    k8s_services = [
        {
            'k8s' : 1,
            'k8s_namespace' : 'default',
            'k8s_service' : 'foo',
            'k8s_service_port' : 80,
        }
    ])
copy_upstream_to_k8s_upstream
k8s_up_id = copy_upstream_to_k8s_upstream(up_id, k8s_services, rules)
此方法用於將一個常規上游複製為一個 Kubernetes 上游。
引數
| 名稱 | 資料型別 | 是否必要 | 描述 | 
|---|---|---|---|
| up_id | string | 是 | 待複製的上游的 ID | 
| k8s_services | list | 是 | 當上遊是 Kubernetes 服務時的資訊 | 
| rules | array | 否 | 遍歷 rules 中的規則,使用原上游的規則將全部遷移到 Kubernetes 上游,如果不提供此引數,函式會預設查詢本 app 的所有規則進行遍歷。使用此引數可以防止函式多次自動查詢所有規則 | 
返回值
- up_id:新建立的 Kubernetes 上游的 ID。
示例
示例一:
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = client.new_app(domains = ['orig.foo.com'], label = 'origin site for foo.com')
up_id = client.new_upstream(name = 'origin-upstream',
                            servers = [
                                {'ip': '172.22.31.1', 'port': 80},
                                {'ip': '172.22.31.2', 'port': 80, 'weight': 2}
                            ])
k8s_up_id = client.copy_upstream_to_k8s_upstream(up_id,
                            k8s_services = [
                                {
                                    'k8s' : 1,
                                    'k8s_namespace' : 'default',
                                    'k8s_service' : 'foo',
                                    'k8s_service_port' : 80,
                                }
                            ])
示例二:
client.use_app(app_id)
rules = client.get_all_rules()
k8s_up_id = client.copy_upstream_to_k8s_upstream(up_id = up_id,
                            k8s_services = [
                                {
                                    'k8s' : 1,
                                    'k8s_namespace' : 'default',
                                    'k8s_service' : 'foo',
                                    'k8s_service_port' : 80,
                                }
                            ],
                            rules = rules)
put_k8s_upstream
ok = put_k8s_upstream(**kwargs)
此方法用於修改 Kubernetes 上游資訊。
引數
| 名稱 | 資料型別 | 是否必填 | 描述 | 
|---|---|---|---|
| name | string | 是 | 指定上游名稱 | 
| k8s_services | list | 是 | 當上遊是 k8s 服務時所需的詳細資訊 | 
| ssl | bool | 否 | 確定是否使用 HTTPS 協議,預設值為 False | 
| health_checker | dict | 否 | 配置健康檢查的具體引數,預設值為 None | 
| gid | array | 是 | 使用者組 ID 列表,例如[1] | 
返回值
- True:表示修改成功。
- False:表示修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
up_id = 1
ok = client.put_k8s_upstream(up_id,
    name='k8s-upstream',
    k8s_services = [
        {
            'k8s' : 1,
            'k8s_namespace' : 'default',
            'k8s_service' : 'foo',
            'k8s_service_port' : 80,
        }
    ],
    health_checker={
        'type': 'http',
        'http_req_uri': '/status',
        'http_req_host': 'test.com',
        'interval': 3,
        'interval_unit': 'sec',
        'timeout': 1,
        'fall': 3,
        'rise': 2,
        'valid_statuses': [200, 302],
        'report_interval': 3,
        'report_interval_unit': 'min'
    })
get_k8s_upstream
data = get_k8s_upstream(up_id)
此方法用於獲取 k8s 上游的資訊。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| up_id | string | 是 | 上游的 ID | 
返回值
- data:返回一個 dict型別的資料。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
up_id = 1
data = client.get_k8s_upstream(up_id)
del_k8s_upstream
success = del_k8s_upstream(upstream_id)
此方法用於刪除 k8s(Kubernetes)上游。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| upstream_id | string | 是 | 對應上游的唯一標識 ID | 
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
upstream_id = '1'
success = client.del_k8s_upstream(upstream_id)
get_all_k8s_upstreams
upstreams = client.get_all_k8s_upstreams()
此方法用於獲取所有 Kubernetes 上游的資訊。
返回值
- upstreams:返回一個 list型別的 Kubernetes 上游列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
upstreams = client.get_all_k8s_upstreams()
new_rule
rule_id = new_rule(**kwargs)
此方法用於新建頁面規則,包含各種規則型別,如:通用規則,代理規則,WAF 規則和快取規則。你也可以指定規則執行的前提條件。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| condition | list | 否 | 規則條件 | 
| conseq | dict 或 list | 否 | 規則行動 | 
| waf | list | 否 | WAF 規則 | 
| proxy | list | 否 | 代理規則 | 
| cache | list | 否 | 快取規則 | 
| content | list | 否 | 內容規則 | 
| top | number | 否 | 1:置頂規則,-1:置底規則 | 
| order | number | 否 | 規則順序,優先順序低於 top 引數 | 
| last | bool | 否 | 如果命中此條規則,則跳過所有餘下的頁面規則,預設為 False | 
| reorder | bool | 否 | 是否重建 order 的值,預設為 False | 
| enable | bool | 否 | 如果此選項被設為 False,則會禁用規則,預設為 True | 
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| var | string 或 array | 是 | 如果是 string型別,則填寫變數名name。如果是array型別則需要填寫變數名name和引數args。 | 
| op | string | 否 | 運算子,預設為 eq,即字串相等 (equal) | 
| val | string | 與 vals二選一 | string型別或者array型別,需要指定為正則或者通配型別時,傳[正規表示式, 'rx'],[通配表示式, 'wc'] | 
| vals | list | 與 val二選一 | val 的集合 | 
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| edge 語言內建函式 | string | 是 | edge 語言內建函式 | 
| edge 語言內建函式的引數 | list | 是 | edge 語言的內建函式引數 | 
conseq 可以是 dict 型別或者 list 型別,如下是一個 dict 型別的例子。
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| rule_sets | list | 否 | 全域性預設的使用者規則集,預設值為空列表 | 
| action | string | 是 | 可選 log,403 Forbidden,edge-captcha,redirect中的一個 | 
| threshold | string | 否 | 可選 high,medium,low、none中的一個,與 sensitivity 二選一,sensitivity 的優先順序更高,高敏感級別對應低閾值級別,低敏感級別對應高閾值級別 | 
| sensitivity | string | 否 | 可選 high,medium,low、none中的一個,與 threshold 二選一,sensitivity 的優先順序更高,高敏感級別對應低閾值級別,低敏感級別對應高閾值級別 | 
| clearance | number | 否 | captcha 觸發後的持續時間,預設值為 60 秒 | 
| redirect_url | string | 否 | 當動作為 redirect(重定向) 時,指定的 url | 
| cross_requests | bool | 否 | 當為 True 時,使用跨請求模式,預設為 True | 
| rule_sets_threshold | list | 否 | 單獨設定每個規則集的敏感分數 | 
| score | integer | 否 | 當 threshold 或 sensitivity 選擇 none時,可以自定義敏感分數 | 
proxy 陣列的描述如下:
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| upstreams | list | 是 | 上游資訊 | 
| backup_upstreams | list | 是 | 上游備份節點資訊 | 
| upstreams_el_code | str | 是 | Edgelang 設定上游 | 
| timeout | number | 否 | 代理超時時間,預設值為 3 秒 | 
| connect_timeout | number | 否 | 連線超時時間,預設值為 3 秒 | 
| read_timeout | number | 否 | 讀超時時間,預設值為 3 秒 | 
| send_timeout | number | 否 | 傳送超時時間,預設值為 3 秒 | 
| retries | number | 否 | 重試次數,預設值為 1 次 | 
| retry_condition | list | 否 | 重試條件,預設值為 [“error”, “timeout”, “invalid_header”, “http_500”, “http_502”, “http_504”]. 可選 http_503,http_403,http_404,http_429和non_valueempotent(即方法可以是 POST, LOCK, PATCH) | 
| balancer_algorithm | string | 否 | 負載均衡演算法,預設值為 roundrobin。支援的演算法還有hash和chash | 
| balancer_vars | list | 否 | 負載均衡演算法所依賴的變數,當負載均衡演算法選擇為 hash或chash時需要填寫該欄位 | 
| multi_tier | number | 否 | 多層網路策略 ID | 
upstreams 與 backup_upstreams 陣列的描述如下:
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| upstream | number | 是 | 上游的 ID | 
| global_upstream | number | 是 | 全域性上游的 ID | 
| k8s_upstream | number | 是 | k8s 上游的 ID | 
| global_k8s_upstream | number | 是 | 全域性 k8s 上游的 ID | 
| weight | number | 否 | 上游的權重,預設值為 1 | 
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| cache_key | list | 是 | 快取 key | 
| default_ttls | list | 否 | 是否啟用預設快取,預設值為 None | 
| browser_ttl | number | 否 | 是否啟用瀏覽器快取,預設值為 None | 
| browser_ttl_unit | string | 否 | 瀏覽器快取單位,只在 browser_ttl 設定後有效,預設值為 min | 
| enable_global | bool | 否 | 是否啟用跨域名快取,預設值為 False | 
| enforce_cache | bool | 否 | 是否啟用始終快取,預設值為 False | 
| cluster_hash | bool | 否 | 是否啟用叢集快取,預設值為 False | 
| disable_convert_head | bool | 否 | 是否將 HEAD 請求方法轉換為 GET,預設值為 True | 
返回值
- rule_id:新規則的 ID。
示例
示例一:使用 dict 型別的條件和動作來新建規則。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
condition = [
    {
        'var': 'host',
        'val': 'test.openresty.com'
    },
    {
        'var': ['req-header', 'Referer'],
        'vals': [
            'foo.com',
            ['foo\d+', 'rx'],
            ['foo*', 'wc']
        ]
    }
]
conseq = {
    'enable-websocket': {},
    'redirect': {'url': '/cn/2017/', 'code': 302}
}
rule_id = client.new_rule(condition=condition, conseq=conseq)
由於 dict 型別不能自行排序,並且不能設定重複名稱的動作,
所以推薦下面這種使用 list 型別代替 dict 型別的方式。
示例二:使用 list 型別的條件和動作來新建規則。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
condition = [
    {'var': 'host', 'val': 'test.openresty.com'},
    {'var': ['req-header', 'Referer'], 'vals': [['foo\d+', 'rx'], 'foo.com']}
]
conseq = [
    {'set-proxy-header': {
        'header': 'Foo',
        'value': 'default'
    }},
    {'set-proxy-header': {
        'header': 'Host',
        'value': "orig"
    }},
    {'print': {
        'msg': 'hello'
    }}
]
rule_id = client.new_rule(condition=condition, conseq=conseq)
示例三:啟用 WAF 規則。
建立自定義的 WAF 規則,並在應用中使用該規則。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
global_waf_rule_id = client.new_global_waf_rule(
    name='foo',
    code="uri-arg('foo') => waf-mark-risk(level: 'definite', msg: 'found foo');")
condition = [{'var': 'uri', 'op': 'prefix', 'val': '/foo'}]
waf_rule = {
    'rule_sets': [global_waf_rule_id],
    'action': '403 Forbidden', 'threshold': 'low'}
rule_id = client.new_rule(condition=condition, waf=waf_rule)
示例四:啟用代理規則。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
up_id = client.new_upstream(
    name='origin-upstream',
    servers=[
        {'ip': '172.22.31.1', 'port': 80},
        {'ip': '172.22.31.2', 'port': 80, 'weight': 2}
    ])
k8s_up_id = client.new_k8s_upstream(
    name='k8s-upstream',
    k8s_services = [
        {
            'k8s' : k8s_id,
            'k8s_namespace' : 'default',
            'k8s_service' : 'test-hello',
            'k8s_service_port' : 80,
        }
    ])
ok = client.put_upstream(up_id,
    name='origin-upstream',
    servers=[
      {'ip': '172.22.31.1', 'port': 8080},
      {'ip': '172.22.31.2', 'port': 8080, 'weight': 1}
    ])
backup_up_id = client.new_upstream(
    name='backup-upstream',
    servers=[
        {'ip': '172.22.31.3', 'port': 80},
        {'ip': '172.22.31.4', 'port': 80, 'weight': 3}
    ])
proxy_rule = {
    'upstreams': [{'upstream': up_id, 'weight': 2}],
    'backup_upstreams': [{'upstream': backup_up_id}],
    'upstream_el_code': '',
    'retries': 2,
    "retry_condition": ["invalid_header", "http_500"],
    "balancer_algorithm": "hash",
    "balancer_vars": [
        {"name":"uri"},
        {
            "name":"uri-arg",
            "args":"foo"
        }
    ]
}
rule_id = client.new_rule(proxy = proxy_rule)
k8s_proxy_rule = {
    'upstreams': [{'k8s_upstream': k8s_up_id, 'weight': 2}],
    'upstream_el_code': '',
    'retries': 2,
    "retry_condition": ["invalid_header", "http_500"],
    "balancer_algorithm": "hash",
    "balancer_vars": [
        {"name":"uri"},
        {
            "name":"uri-arg",
            "args":"foo"
        }
    ]
}
k8s_rule_id = client.new_rule(proxy = k8s_proxy_rule)
示例五:啟用快取。
在該示例中,當訪問來源的 IP 位於中國(CN)時,將會實施快取規則。具體的快取 key 包含 URL、查詢字串以及客戶端來源的城市。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
condition = [{'var': 'client-country', 'op': 'eq', 'val': 'CN'}]
# cache_key = ['uri', 'query-string', 'client-city']
# or
cache_key = [
    {'name': 'uri'},
    {'name':'query-string'},
    {'name': 'client-city', 'args': 'first-x-forwarded-addr'}
]
default_ttls = [
    {
        'ttl_unit': "min", 'status': 200, 'ttl': 1
    }, {
        'ttl_unit': "min", 'status': 301, 'ttl': 1
    }
]
cache_rule = {'cache_key': cache_key, 'default_ttls': default_ttls}
rule_id = client.new_rule(condition=condition, cache=cache_rule)
put_rule
ok = put_rule(**kwargs)
此方法用於修改頁面規則。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| condition | list | 否 | 定義規則的條件 | 
| conseq | dict or list | 否 | 定義規則的動作 | 
| waf | list | 否 | 定義 WAF 規則 | 
| proxy | list | 否 | 定義代理規則 | 
| cache | list | 否 | 定義快取規則 | 
| content | list | 否 | 定義內容規則 | 
| top | number | 否 | 用於設定規則的位置,1 表示置頂規則,-1 表示置底規則 | 
| order | number | 否 | 用於設定規則的順序,優先順序低於 top 引數 | 
| last | bool | 否 | 如果此選項被設為 True,且這條規則被命中,則會跳過所有剩餘的頁面規則,預設為 False | 
| enable | bool | 否 | 如果此選項被設為 False,則會禁用規則,預設為 True | 
返回值
- True:表示成功。
- False:表示失敗。
示例
from edge2client import Edge2Client
from edge2client.constants import OFF, ON
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
conseq = {
    'enable-websocket': {},
    'redirect': {'url': '/cn/2017/', 'code': 302},
    'user-code': {'el': 'true => say(\"hello\");'}
}
conseq['redirect']['url'] = '/cn/2018/'
ok = client.put_rule(rule_id=rule_id, condition=condition, conseq=conseq)
# 關閉頁面規則中的條件
ok = client.put_rule(rule_id=rule_id, condition=OFF, conseq=conseq)
get_rule
data = get_rule(rule_id)
此方法用於根據規則 ID 獲取頁面規則。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 頁面規則的 id | 
返回值
- data:返回一個 dict型別的頁面規則資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
rule_id = 1
data = client.get_rule(rule_id)
del_rule
success = del_rule(rule_id)
此方法用於刪除與 rule_id 對應的頁面規則。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 規則的唯一識別符號 | 
返回值
- True:表示頁面規則成功刪除。
- False:表示頁面規則刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
rule_id = 1
success = client.del_rule(rule_id)
get_all_rules
rules = get_all_rules(app_id)
此方法用於獲取指定應用 ID (app_id) 的所有頁面規則。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| app_id | number | 否 | 指定的應用 id,若未提供,預設為當前應用 id | 
返回值
- 返回一個規則列表,該列表中的每個元素的型別與 get_rule 函式的返回值型別一致。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_all_rules()
reorder_rules
ok = reorder_rules(orders)
此方法用於調整規則的順序。
引數
| 名稱 | 資料型別 | 必選 | 描述 | 
|---|---|---|---|
| orders | dict | 是 | 此字典中的 key-value 對定義了新的規則順序,其中 key 代表規則 ID,value 代表規則的順序 | 
返回值
- True:如果成功調整規則順序。
- False:如果調整規則順序失敗。
示例
以下示例展示瞭如何調換規則 ID 2 和 3 的順序。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
new_orders = {
    1: 1,
    2: 3,
    3: 2,
}
data = client.reorder_rules(new_orders)
get_all_rules_by_app_domain
rules = get_all_rules_by_app_domain(domain)
此方法用於根據指定的應用域名獲取對應的頁面規則。
引數
| 名稱 | 資料型別 | 必選 | 描述 | 
|---|---|---|---|
| domain | string | 是 | 應用的域名 | 
返回值
- rules:list型別的規則列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_all_rules_by_app_domain('orig.foo.com')
get_all_rules_by_upstream_ip
rules = get_all_rules_by_upstream_ip(upstream_ip)
此方法用於根據上游 IP 地址來檢索所有關聯的頁面規則。
引數
| 名稱 | 資料型別 | 是否必要 | 描述 | 
|---|---|---|---|
| upstream_ip | string | 是 | 用於指定上游的 IP 地址 | 
返回值
- rules:這是一個包含所有相關規則的 list型別列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
upstream_ip = '1.2.3.4'
data = client.get_all_rules_by_upstream_ip(upstream_ip)
for app_id, rules in data.items():
    print(app_id)
get_all_waf_rules
rules = get_all_waf_rules(app_id)
此方法用於根據特定的應用 id (app_id) 獲取對應的 WAF 規則。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| app_id | number | no | 應用的 id,如未指定,則預設為當前應用的 id | 
返回值
- rules:返回一種 list型別的規則列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_all_waf_rules()
get_global_actions_used_in_app
rule_ids = get_global_actions_used_in_app(app_id)
此方法用以獲取與應用 ID (app_id) 相關聯的自定義規則 ID。
引數
| 名稱 | 資料型別 | 必需性 | 描述 | 
|---|---|---|---|
| app_id | number | 否 | 應用的唯一識別符號 | 
返回值
- rule_ids:返回一個列表,其中元素為各自規則的唯一 ID。如果需要獲取規則的詳細資訊,可以依據這些規則 ID 進行進一步查詢,詳情請參閱 get_global_rule() 方法。
示例
以下示例展示瞭如何獲取所有全域性規則的 ID。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
rule_ids = client.get_global_actions_used_in_app(app_id)
set_cert_key
cert_id = set_cert_key(**kwargs)
此方法用於新增 SSL 證書並提供手動上傳證書的選項。
引數
| 名稱 | 資料型別 | 是否必選 | 描述資訊 | 
|---|---|---|---|
| key | string | 是 | 私鑰內容 | 
| cert | string | 否 | 證書內容 | 
| ca_chain | string | 否 | CA 鏈條內容 | 
| global_cert_id | number | 否 | 證書的全域性 ID | 
| gid | list | 否 | 使用者組 ID 列表 | 
返回值
- cert_id:返回新新增的證書的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
key_file = os.path.join('tests', 'key.pem')
cert_file = os.path.join('tests', 'cert.pem')
with open(key_file) as f:
    key = f.read()
with open(cert_file) as f:
    cert = f.read()
cert_id = client.set_cert_key(key=key, cert=cert)
set_le_cert
cert_id = set_le_cert(**kwargs)
此方法用於新增 Let’s Encrypt 證書或其他證書提供商(如 ZeroSSL)的證書。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| domains | string array | 是 | 需要自動獲取 LE 證書的域名 | 
| gid | list | 否 | 使用者組 ID 列表 | 
| resign | bool | 否 | 是否觸發重新簽發證書 | 
| acme_provider | integer | 否 | ACME Provider 的 ID | 
| acme_csr_type | string | 否 | 簽名演算法型別,可選 ec、rsa | 
| enabled | bool | 否 | 是否觸發重新簽發證書 | 
返回值
- cert_id:新建立的 Let’s Encrypt 證書的 ID
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
cert_id = client.set_le_cert(domains=["orig.foo.com"])
put_cert_key
ok = put_cert_key(**kwargs)
此方法用於更新 SSL 證書(手動上傳方式)。
引數
| 名稱 | 資料型別 | 是否必選 | 引數描述 | 
|---|---|---|---|
| cert_id | number | 是 | 證書的唯一識別符號 id | 
| key | string | 是 | 私鑰的詳細內容 | 
| cert | string | 否 | 伺服器端證書的詳細內容 | 
| ca_chain | string | 否 | CA 鏈的詳細內容 | 
| global_cert_id | number | 否 | 全域性證書的唯一識別符號 id | 
| gid | list | 否 | 使用者組 id 的列表形式 | 
返回值
- True:表示更新成功。
- False:表示更新失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
new_key_file = os.path.join('tests', 'new_key.pem')
new_cert_file = os.path.join('tests', 'new_cert.pem')
with open(new_key_file) as f:
    new_key = f.read()
with open(new_cert_file) as f:
    new_cert = f.read()
cert_id = 1
ok = client.put_cert_key(cert_id=cert_id, key=new_key, cert=new_cert)
put_le_cert
ok = put_le_cert(**kwargs)
此方法用於更新 Let’s Encrypt 證書或其他證書提供商(如 ZeroSSL)提供的證書。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| cert_id | integer | 否 | 整數的 ID | 
| domains | string array | 是 | 需要自動獲取 LE 證書的域名 | 
| gid | list | 否 | 使用者組 ID 列表 | 
| resign | bool | 否 | 是否觸發重新簽發證書 | 
| acme_provider | integer | 否 | ACME Provider 的 ID | 
| acme_csr_type | string | 否 | 簽名演算法型別,可選 ec、rsa | 
| enabled | bool | 否 | 是否觸發重新簽發證書 | 
返回值
- True:表示成功。
- False:表示失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
cert_id = 1
ok = client.put_le_cert(cert_id=cert_id, domains=["xx.foo.com"], resign=False)
get_le_cert
data = get_le_cert(cert_id)
此方法用於獲取 Let’s Encrypt 證書的簽發狀態。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| cert_id | number | 是 | 證書 ID | 
返回值
- data:返回一個 dict型別的資料,包含以下欄位:
| 欄位名稱 | 資料型別 | 描述 | 
|---|---|---|
| status | string | 描述證書的簽發狀態,可能的值包括:valid / pending / invalid | 
| expdate | number | 證書的過期時間,使用 Unix 時間戳表示 | 
| next_udpate | number | 證書的下次更新時間,使用 Unix 時間戳表示 | 
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
cert_id = 1
data = client.get_le_cert(cert_id)
get_cert_key
cert_data = get_cert_key(cert_id)
此方法用於獲取 SSL 證書內容。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| cert_id | number | 是 | 代表證書的 id | 
返回值
- 返回值為 cert_data,表示證書的內容,資料型別為 dict。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
cert_id = 1
data = client.get_cert_key(cert_id)
get_all_cert_keys
cert_data = get_all_cert_keys()
此方法用於獲取當前應用的全部證書資訊。
返回值
- cert_data:以 dict型別返回的證書資料。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_all_cert_keys()
del_cert_key
success = del_cert_key(certificate_id)
刪除與給定的 certificate_id 相關聯的證書資訊。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| certificate_id | number | 是 | 證書的唯一標誌 | 
返回值
- True:刪除成功。
- False:刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
application_id = 1
client.use_application(application_id)
certificate_id = 1
success = client.del_cert_key(certificate_id)
new_el
ok = new_el(**kwargs)
此方法用於新增自定義的 edge 語言程式碼。
引數
| 名稱 | 資料型別 | 必選 | 描述 | 
|---|---|---|---|
| phase | string | 是 | 用於定義 edge 語言執行的階段 | 
| code | string | 是 | 要執行的 edge 語言程式碼 | 
| post | bool | 是 | 如果設為 True,則該段程式碼將在選擇的階段後面執行,預設值為False | 
| pre | bool | 是 | 如果設為 True,則該段程式碼將在選擇的階段前面執行,預設值為False | 
返回值
- True:表示成功。
- False:表示失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
code = "true => print('hello, world');"
ok = client.new_el(phase='req-rewrite', code=code, pre=True)
new_release
ok = new_release()
此方法用於釋出當前應用的更新。
返回值
- True:表示更新成功。
- False:表示更新失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
ok = client.new_release()
此示例展示瞭如何使用 Edge2Client 的 new_release 方法來發布應用的更新。
pending_changes
changes = pending_changes()
此方法用於查詢待發布的更改數量。
返回值
- changes:這是一個整數,表示待發布的更改數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
changes = client.pending_changes()
在上述示例中,首先建立了一個 Edge2Client 例項並完成登入。隨後,將應用的 id 設定為 1,並透過 pending_changes 函式查詢待發布的更改數量。
sync_status
total, synced = sync_status()
查詢當前的同步狀態。
返回值
- total:Edge Node 伺服器的總數量。
- synced:已成功同步的 Edge Node 伺服器的數量。
示例
建立多個規則,並確認它們是否已成功釋出到全網。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
total, synced = client.sync_status()
if total == synced:
    print('新的釋出已同步到所有節點')
node_sync_status
data = node_sync_status()
此方法用於獲取各節點的同步詳情。
返回值
- data:dict型別,它返回每個節點的 node_id 以及該節點上一次釋出到現在的延遲時間。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.node_sync_status()
for node_id, delay in data.items():
    if delay > 0:
        print('警告:節點 id {}: 落後 {}'
        .format(str(node_id), str(delay)))
get_healthcheck_status
data = get_healthcheck_status(node_id, page=1, page_size=1000)
這段程式碼用於獲取各節點的健康檢查資訊。
返回值
- data:這是一個dict型別的資料,它返回每個節點的 node_id 以及對應節點的健康狀態。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.node_sync_status()
for node_id, node_info in data.items():
    node_id = int(node_id)
    data = client.get_healthcheck_status(node_id, 1, 1000)
add_app_user
user_id = add_app_user(name, read, write, release, dns_read, dns_write)
此方法用於新增應用級使用者。
引數
| 名稱 | 資料型別 | 必選 | 描述 | 
|---|---|---|---|
| name | string | 是 | 使用者名稱 | 
| read | bool | 否 | 是否擁有讀許可權,預設為 True | 
| write | bool | 否 | 是否擁有寫許可權,預設為 True | 
| release | bool | 否 | 是否擁有釋出更動的許可權,預設為 False | 
| dns_read | bool | 否 | 是否擁有讀取 DNS 的許可權,預設為 False | 
| dns_write | bool | 否 | 是否擁有修改 DNS 的許可權,預設為 False | 
返回值
- user_id:新新增使用者的 ID。
請注意:此處的 user_id 與全域性使用者的 user_id 不同。
示例
以下示例展示瞭如何新增一個應用級使用者,使用者名稱為 only_reader,並且沒有寫許可權和釋出更動許可權。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
user_id = client.add_app_user(name='only_reader', write=False, release=False)
update_app_user
success = update_app_user(id, name, read, write, release, dns_read, dns_write)
此方法用於更新應用級的使用者資訊。
引數
| 名稱 | 資料型別 | 是否必要 | 描述 | 
|---|---|---|---|
| id | list | yes | 使用者 id | 
| name | string | yes | 使用者名稱 | 
| read | bool | no | 使用者是否具有讀取許可權,預設值為 True | 
| write | bool | no | 使用者是否具有寫入許可權,預設值為 True | 
| release | bool | no | 使用者是否具有釋出更改的許可權,預設值為 False | 
| dns_read | bool | no | 使用者是否具有讀取 DNS 的許可權,預設值為 False | 
| dns_write | bool | no | 使用者是否具有寫入 DNS 的許可權,預設值為 False | 
返回值
- True:使用者資訊更新成功。
- False:使用者資訊更新失敗。
示例
以下示例展示瞭如何使用此方法更新 id 為 1 的使用者的許可權,將使用者名稱設定為 master,並賦予寫入和釋出更改的許可權。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
uid = 1
success = client.update_app_user(id=uid, name='master', write=True, release=True)
get_app_user
data = get_app_user(id=None, name=None, app_id=None, user_id=None)
此方法用於獲取應用級別的使用者資訊,包括使用者名稱、許可權等。
引數
| 引數名 | 資料型別 | 是否必填 | 描述 | 
|---|---|---|---|
| id | list | 否 | 使用者的 id | 
| name | string | 否 | 使用者名稱 | 
| app_id | number | 否 | 應用的 id,若未指定則預設為當前應用 id | 
| user_id | number | 否 | 全域性的使用者 id | 
返回值
- data:返回一個字典型別的資料,包含使用者名稱、許可權等使用者資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
username = 'only_reader'
data = client.get_app_user(name=username)
del_app_user
ok = del_app_user(id, name, app_id, user_id)
此方法用於刪除特定應用的使用者。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| id | list | 否 | 使用者 id | 
| name | string | 否 | 使用者名稱 | 
| app_id | number | 否 | 應用 id,若未指定,則預設為當前應用 | 
| user_id | number | 否 | 全域性使用者 id | 
返回值
- 如果操作成功,則返回 True。
- 如果操作失敗,則返回 False。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
username = 'only_reader'
ok = client.del_app_user(name=username)
在這個例子中,我們首先建立了一個 Edge2Client 例項並登入。然後,我們選擇了一個應用,最後我們透過傳入使用者名稱來刪除應用的使用者。
get_all_app_users
data = get_all_app_users(app_id)
此方法用於獲取所有當前應用級別的使用者,也可以透過指定 app_id 來獲取特定應用的使用者。
引數
| 名稱 | 資料型別 | 是否必選 | 引數 | 
|---|---|---|---|
| app_id | number | 否 | 應用 id,預設為當前應用 id | 
返回值
- data:返回值為list型別,列表中的每個元素都是 dict 型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_all_app_users()
add_user_for_all_apps
ok = add_user_for_all_apps(name, read, write, release, dns_read, dns_write)
此方法用於為所有應用新增使用者。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| name | string | 否 | 使用者名稱 | 
| read | bool | 否 | 使用者是否擁有讀許可權,預設為 True | 
| write | bool | 否 | 使用者是否擁有寫許可權,預設為 True | 
| release | bool | 否 | 使用者是否擁有釋出更改的許可權,預設為 False | 
| dns_read | bool | 否 | 使用者是否擁有讀取 DNS 的許可權,預設為 False | 
| dns_write | bool | 否 | 使用者是否擁有編輯 DNS 的許可權,預設為 False | 
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
# 利用 add_global_user() 函式建立名為 'write' 的使用者。
username='write'
data = client.add_user_for_all_apps(name=username)
add_all_users_for_app
ok = add_all_users_for_app(app_id, read, write, release, dns_read, dns_write)
此方法用於將所有全域性使用者新增到指定應用。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| app_id | number | 否 | 應用的 ID,若未指定,則預設為當前應用的 ID | 
| read | bool | 否 | 使用者是否擁有讀許可權,若未指定,則預設為 True | 
| write | bool | 否 | 使用者是否擁有寫許可權,若未指定,則預設為 True | 
| release | bool | 否 | 使用者是否擁有釋出更動的許可權,若未指定,則預設為 False | 
| dns_read | bool | 否 | 使用者是否有讀取 DNS 的許可權,若未指定,則預設為 False | 
| dns_write | bool | 否 | 使用者是否有寫入 DNS 的許可權,若未指定,則預設為 False | 
返回值
- True:表示新增成功。
- False:表示新增失敗。
示例
以下示例展示瞭如何為 ID 為 1 的應用新增使用者,其中所有全域性使用者都將新增在該應用下,且 release (釋出更動) 許可權為 True,其他許可權保持預設值。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.add_all_users_for_app(release=True)
new_cache_purge_task
task_id = client.new_cache_purge_task(condition=condition)
此方法用於新增條件重新整理任務。任務的觸發條件以陣列形式傳遞,支援設定多個觸發條件。只有當所有設定的條件同時滿足時,才會觸發對應的重新整理任務。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| condition | list | 否 | 觸發條件 | 
返回值
- task_id:返回已建立的重新整理任務的 ID,可透過此 ID 查詢重新整理任務的執行詳情。
示例
以下示例中,新建的條件重新整理任務的觸發條件設定為:“當訪問的 Host 為 con.foo.com,並且請求頭中 Referer 的值匹配到正規表示式 foo\d+ 時。”
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
condition = [
    {'var': 'host', 'val': 'con.foo.com'},
    {'var': ['req-header', 'Referer'], 'vals': [['foo\d+', 'rx'], 'foo.com']}
]
rule_id = client.new_cache_purge_task(condition=condition)
get_cache_purge_task
data = client.get_cache_purge_task(task_id)
此方法透過指定的重新整理任務 id 來查詢任務的詳細資訊。
引數
| 名稱 | 資料型別 | 是否必須 | 引數 | 
|---|---|---|---|
| task_id | number | 是 | 重新整理任務的唯一標識 id | 
返回值
- data:返回的是一個包含任務詳情的字典(dict)型別的資料。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
task_id = 1
data = client.get_cache_purge_task(task_id)
get_all_cache_purge_tasks
data = client.get_all_cache_purge_tasks()
此方法用於獲取所有快取重新整理任務的詳細資訊。
返回值
- data:返回一個包含所有重新整理任務的列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_all_cache_purge_tasks()
del_cache_purge_task
ok = client.del_cache_purge_task(task_id)
此方法用於刪除指定 ID 的重新整理任務。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| task_id | number | 是 | 需要刪除的重新整理任務的 ID | 
返回值
- True:表示成功刪除。
- False:表示刪除失敗。
示例
以下示例展示如何刪除 ID 為 1 的重新整理快取任務。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
task_id = 1
ok = client.del_cache_purge_task(task_id)
new_waf_whitelist
rule_id = new_waf_whitelist(**kwargs)
此方法用於新增 WAF 白名單規則。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| condition | list | 否 | 規則執行的條件 | 
| rule_sets | list | 是 | WAF 規則的 ID 列表 | 
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| var | string or array | 是 | Edge 語言內建的函式名。當資料型別為 array時,需在函式名後新增此方法所需的引數 | 
| op | string | 否 | 運算子,預設為 eq | 
| val | string | val/vals中的任選一項 | 值 | 
| vals | list | val/vals中的任選一項 | 一組值 (使用陣列) | 
返回值
- rule_id:新建立的 WAF 白名單規則的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
condition = [
    {'var': 'host', 'val': 'con.foo.com'},
    {'var': ['req-header', 'Referer'], 'vals': [['foo\d+', 'rx'], 'foo.com']}
]
id = client.new_waf_whitelist(condition=condition, rule_sets=[1, 2])
update_waf_whitelist
ok = update_waf_whitelist(**kwargs)
此方法用於更新 WAF 白名單規則。
引數
| 名稱 | 資料型別 | 是否必選 | 描述資訊 | 
|---|---|---|---|
| whitelist_id | number | 是 | 待更新的白名單 id | 
| condition | list | 否 | 規則執行的條件集合 | 
| rule_sets | list | 是 | 包含 waf id 的列表 | 
返回值
- 若成功,返回 True。
- 若失敗,返回 False。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
condition = [
    {'var': 'host', 'val': 'con.foo.com'},
    {'var': ['req-header', 'Referer'], 'vals': [['foo\d+', 'rx'], 'foo.com']}
]
waf_whitelist_id = 1
ok = client.update_waf_whitelist(
    whitelist_id=waf_whitelist_id, condition=condition, rule_sets=[1])
get_waf_whitelist
data = get_waf_whitelist(whitelist_id)
此方法用於獲取 WAF 的白名單規則。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| whitelist_id | number | 是 | 白名單規則的唯一識別符號 id | 
返回值
- data:返回一個 dict型別,包含 WAF 白名單的規則資料。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_waf_whitelist(waf_whitelist_id)
del_waf_whitelist
ok = del_waf_whitelist(whitelist_id)
執行此操作會刪除指定的 WAF 白名單規則。
引數
| 名稱 | 資料型別 | 是否必選 | 描述資訊 | 
|---|---|---|---|
| whitelist_id | number | 是 | 白名單規則的 ID | 
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
# 初始化客戶端並登入
client = Edge2Client(host, username, password)
client.login()
# 指定 APP ID
app_id = 1
client.use_app(app_id)
# 刪除特定 WAF 白名單規則
ok = client.del_waf_whitelist(waf_whitelist_id)
get_all_waf_whitelists
data = get_all_waf_whitelists()
此方法用於獲取所有的 WAF 白名單規則。
返回值
- data:返回一個 list型別的 WAF 白名單資料。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
# 選擇應用
app_id = 1
client.use_app(app_id)
# 獲取所有的 WAF 白名單
data = client.get_all_waf_whitelists()
new_app_dymetrics
id = new_app_dymetrics(app_id=None, name=None, note=None, interval=60, sql=None)
建立新的應用動態指標。如果想要開啟 OpenResty Edge 的內建動態指標,可以從此文件獲取內建動態指標的名稱及 SQL。
引數
| 引數 | 資料型別 | 必選 | 描述 | 
|---|---|---|---|
| app_id | number | 是 | 應用的唯一識別符號 id | 
| name | string | 是 | 用於標識動態指標的名稱 | 
| sql | string | 是 | 用於生成動態指標的 SQL 語句 | 
| note | string | 否 | 對動態指標的附加說明或備註 | 
| interval | number | 否 | 動態指標的重新整理時間間隔(以秒為單位) | 
返回值
- id:新建立的動態指標的唯一識別符號。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
sql = 'select status, count(*) from reqs group by status'
dymetrics_id = client.new_app_dymetrics(app_id=1, name='test', sql=sql)
put_app_dymetrics
ok = put_app_dymetrics(app_id=None, id=None, name=None, note=None, interval=60, sql=None)
此方法用於修改應用的動態指標。
引數
| 引數 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| id | number | 是 | 需要修改的動態指標的 id | 
| app_id | number | 是 | 應用的 id | 
| name | string | 是 | 指標的名稱 | 
| sql | string | 是 | 定義指標的 SQL 語句 | 
| note | string | 否 | 備註資訊 | 
| interval | number | 否 | 資料重新整理間隔,單位為秒 | 
返回值
- True:表示修改成功。
- False:表示修改失敗。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
id=1
sql = 'select status, count(*) from reqs group by status'
data = client.put_app_dymetrics(app_id=1, id=id, name='test', sql=sql)
del_app_dymetrics
ok = del_app_dymetrics(app_id, id)
此方法用於刪除指定應用的動態指標。
引數
| 引數 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| app_id | number | 是 | 指定的應用的 ID | 
| id | number | 是 | 要刪除的動態指標的 ID | 
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
ok = client.del_app_dymetrics(app_id, dymetrics_id)
get_app_dymetrics
data = get_app_dymetrics(app_id, id)
此方法用於獲取指定應用的動態指標。
引數
| 引數 | 資料型別 | 必選 | 描述 | 
|---|---|---|---|
| id | number | 是 | 動態指標的 id | 
| app_id | number | 是 | 應用的 id | 
返回值
- data:返回一個 dict型別的動態指標資料。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
data = client.get_app_dymetrics(app_id, dymetrics_id)
get_all_app_dymetrics
data = get_all_app_dymetrics(app_id)
此方法用於獲取指定應用的全部動態指標資訊。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| app_id | number | 是 | 表示應用的唯一標識 id | 
返回值
- data:返回的資料為一個包含所有動態指標資訊的 list型別列表。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_app_dymetrics(app_id)
get_app_dymetrics_data
data = get_app_dymetrics_data(app_id, id, chart_type='line', start_time=None, end_time=None, node_id=None)
此方法用於獲取應用的動態指標資料,預設返回最近 30 分鐘的資料。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| app_id | number | 是 | 應用的 id | 
| id | number | 是 | 動態指標的 id | 
| chart_type | number | 是 | 圖表型別 | 
| start_time | number | 是 | 資料開始時間 | 
| end_time | number | 是 | 資料結束時間 | 
| node_id | number | 是 | Edge Node 節點的 ID | 
返回資料
- data:返回的動態指標資料,其資料型別為list。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
app_id = 1
dymetrics_id = 1
data = client.get_app_dymetrics_data(app_id, dymetrics_id)
get_app_metrics
data = get_app_metrics(id, start_time=None, end_time=None)
此方法用於獲取應用的 HTTP 請求狀態指標和網路收發指標,預設情況下,它會獲取最近 30 分鐘的資料。
引數
| 引數 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| id | number | 是 | 指標的 id | 
| start_time | number | 是 | 指標獲取的開始時間 | 
| end_time | number | 是 | 指標獲取的結束時間 | 
返回值
- data:這是一個包含指標資料的 list型別。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
data = client.get_app_metrics(app_id)
new_ip_list
id = new_ip_list(name=None, type='ipv4', items=None)
新增新的應用級 IP 列表。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| name | string | 是 | IP 列表的名稱 | 
| type | string | 否 | IP 地址的型別,可以是 ipv4或即將支援的ipv6 | 
| items | array | 否 | IP 地址列表 | 
| 名稱 | 型別 | 是否必須 | 描述 | 
|---|---|---|---|
| ip | string | 是 | IP 地址 | 
| exptime | int | 否 | IP 有效期,傳 Unix 時間戳。如果不設定,則 IP 永久有效 | 
返回值
- id:新建立的 IP 列表的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
ok = client.new_ip_list(name = 'ip-list-1',
                        type = 'ipv4',
                        items = [
                            {'ip': '127.0.0.0/24'},
                            {'ip': '192.168.1.0/24'},
                            {'ip': '192.168.2.0/24', 'exptime': 1725000000},
                            {'ip': '192.168.3.0/24', 'exptime': 1735000000}
                        ])
put_ip_list
ok = put_ip_list(rule_id=None, name=None, type='ipv4', items=None)
此方法用於修改指定的 IP 列表。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 用於指定需要修改的 IP 列表的 ID | 
| name | string | 是 | 用於指定 IP 列表的名稱 | 
| type | string | 否 | 用於指定 IP 地址的型別,目前僅支援 ‘ipv4’ ,‘ipv6’將在未來推出 | 
| items | array | 否 | 用於指定 IP 地址列表 | 
返回值
- True:表示成功修改指定的 IP 列表。
- False:表示修改指定的 IP 列表失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
ok = client.put_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.2'} ])
del_ip_list
ok = del_ip_list(rule_id=None)
此方法用於刪除指定的 IP 列表。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 需要刪除的 IP 列表的 ID | 
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
ok = client.del_ip_list(rule_id=1)
在此示例中,我們首先使用 Edge2Client 的例項登陸,然後選擇應用程式,最後刪除指定 ID 的 IP 列表。
get_ip_list
data = get_ip_list(rule_id=None)
此方法用於檢視特定的 IP 列表。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 要檢視的 IP 列表的唯一識別符號 ID | 
返回值
- data:返回一個字典型別的 IP 列表資料。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_ip_list(rule_id=1)
append_to_ip_list
ok = append_to_ip_list(rule_id, items)
此方法用於向指定的 IP 列表追加 IP。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 用於指定需要修改的 IP 列表的 ID | 
| items | array | 是 | 用於指定 IP 地址列表 | 
| remove_expired | bool | 否 | 是否移除過期的 IP。預設為 False。如果設定為 True,會在追加新 IP 之前先移除已過期的 IP | 
返回值
- True:表示成功修改指定的 IP 列表。
- False:表示修改指定的 IP 列表失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
ok = client.append_to_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.3'} ])
ok = client.append_to_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.3'} ], remove_expired = True)
remove_from_ip_list
ok = remove_from_ip_list(rule_id, items)
此方法用於從指定的 IP 列表移除 IP。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 用於指定需要修改的 IP 列表的 ID | 
| items | array | 是 | 用於指定 IP 地址列表 | 
返回值
- True:表示成功修改指定的 IP 列表。
- False:表示修改指定的 IP 列表失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
ok = client.remove_from_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.3'} ])
node_monitor
data = node_monitor(node_id, start_time=None, end_time=None, step=60)
此方法用於獲取網路節點的 CPU 和記憶體負載相關資訊。
引數
| 引數名 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| node_id | 數值 | 是 | 閘道器節點的 ID | 
| start_time | 數值 | 否 | 資料開始時間 | 
| end_time | 數值 | 否 | 資料結束時間 | 
| step | 數值 | 否 | 資料獲取的時間間隔 | 
返回值
- data:返回一個包含監控資料的列表。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
node_id = 1
data = client.node_monitor(node_id)
new_global_dymetrics
id = new_global_dymetrics(name=None, note=None, interval=60, sql=None)
此方法用於建立全域性動態指標。
引數
| 名稱 | 資料型別 | 必選 | 描述 | 
|---|---|---|---|
| name | string | 是 | 待建立的全域性動態指標的名稱 | 
| note | string | 否 | 對該全域性動態指標的備註資訊 | 
| interval | number | 否 | 統計的時間間隔 | 
| sql | string | 是 | 用於收集指標的 SQL 語句 | 
返回值
- id:新建立的全域性動態指標的唯一識別符號 ID。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
sql = 'select status, count(*) from reqs group by status'
dymetrics_id = client.new_global_dymetrics(name='test', sql=sql)
put_global_dymetrics
ok = put_global_dymetrics(id=None, name=None, note=None, interval=60, sql=None)
此方法用於修改全域性動態指標。
引數
| 名稱 | 資料型別 | 必選 | 描述 | 
|---|---|---|---|
| id | number | 是 | 全域性動態指標的 ID | 
| name | string | 是 | 全域性動態指標的名稱 | 
| note | string | 否 | 備註資訊 | 
| interval | number | 否 | 資料收集的時間間隔 | 
| sql | string | 是 | 用於收集指標的 SQL 語句 | 
返回值
- True:表示成功。
- False:表示失敗。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
id=1
sql = 'select status, count(*) from reqs group by status'
data = client.put_global_dymetrics(id=id, name='test', sql=sql)
del_global_dymetrics
ok = del_global_dymetrics(id)
此方法用於刪除指定的全域性動態指標。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| id | number | 是 | 需要刪除的全域性動態指標的 ID | 
返回值
- True:表示成功刪除全域性動態指標。
- False:表示刪除全域性動態指標失敗。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
ok = client.del_global_dymetrics(dymetrics_id)
get_global_dymetrics
data = get_global_dymetrics(id)
此方法用於獲取指定的全域性動態指標。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| id | number | 是 | 全域性動態指標的 ID | 
返回值
- data:返回的是一個型別為 dict的全域性動態指標資訊。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
data = client.get_global_dymetrics(dymetrics_id)
get_all_global_dymetrics
data = get_all_global_dymetrics()
此方法用於獲取所有全域性動態指標。
返回值
- data:返回一個包含全域性動態指標資訊的 list型別資料。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_global_dymetrics()
get_global_dymetrics_data
data = get_global_dymetrics_data(id, chart_type='line', start_time=None, end_time=None, node_id=None)
此方法用於獲取全域性動態指標資料,預設範圍為最近的 30 分鐘。
引數
| 名稱 | 資料型別 | 是否必填 | 描述 | 
|---|---|---|---|
| id | number | 是 | 動態指標的 ID | 
| chart_type | string | 否 | 圖表型別,預設為 ’line’ | 
| start_time | number | 否 | 開始時間,預設為 None | 
| end_time | number | 否 | 結束時間,預設為 None | 
| node_id | number | 否 | Edge Node 節點的 ID,預設為 None | 
返回值
- data:返回值是一個列表,包含全域性動態指標資料。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
dymetrics_id = 1
data = client.get_global_dymetrics_data(dymetrics_id)
use_dns_app
ok = use_dns_app(dns_id)
此方法用於切換當前例項所操作的 DNS 應用。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| dns_id | number | 是 | 需要操作的 DNS 應用的 id | 
返回值
- True:表示切換成功。
- False:表示切換失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
client.use_dns_app(dns_id)
new_dns_app
dns_id = new_dns_app(**kwargs)
此方法用於建立新的 DNS 應用。
引數
| 名稱 | 資料型別 | 是否必選 | 引數描述 | 
|---|---|---|---|
| zone | string | 是 | 域名 | 
| authority | list | 是 | NS 記錄 | 
| soa_email | string | 否 | SOA EMAIL 記錄 | 
返回內容
- dns_id:返回新建立的 DNS 應用的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
authority = [
    {'domain': 'ns1.foo.com', 'ttl': '2 [hour]'},
    {'domain': 'ns2.foo.com', 'ttl': '1 [day]'}
]
soa_email = 'admin@foo.com'
dns_id = client.new_dns_app(
    authority=authority,
    soa_email=soa_email,
    zone='foo.com')
put_dns_app
ok = put_dns_app(**kwargs)
此方法用於修改 DNS 應用的相關資訊。
引數
| 名稱 | 資料型別 | 是否必填 | 描述資訊 | 
|---|---|---|---|
| dns_id | 數值型 | 是 | DNS 應用的唯一標識 id | 
| zone | 字串型 | 是 | DNS 的域名記錄 | 
| authority | 列表型 | 是 | DNS 的 NS 記錄 | 
| soa_email | 字串型 | 否 | DNS 的 SOA EMAIL 記錄 | 
返回值
- True:表示資訊修改成功。
- False:表示資訊修改失敗。
示例
以下示例展示如何修改 dns_id 為 1 的應用。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
authority = [
    {'domain': 'ns1.foo.com', 'ttl': '4 [hour]'},
    {'domain': 'ns2.foo.com', 'ttl': '1 [day]'}
]
ok = client.put_dns_app(
    dns_id=dns_id,
    authority=authority,
    soa_email=soa_email,
    zone='foo.com')
get_dns_app
data = get_dns_app(dns_id)
此方法用於獲取 DNS 應用的相關資訊。
引數
| 引數名 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| dns_id | number | 是 | 代表 DNS 應用的唯一 id | 
返回值描述
- data:一個 dict型別的資料,包含 DNS 應用的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
data = client.get_dns_app(dns_id)
del_dns_app
ok = del_dns_app(dns_id)
此方法用於刪除指定的 DNS 應用。
引數
下表列出了此方法所需的引數。
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| dns_id | number | 是 | 需要刪除的 DNS 應用的 id | 
返回值
- True:表示成功刪除了 DNS 應用。
- False:表示刪除 DNS 應用失敗。
示例
以下示例展示瞭如何刪除指定的 DNS 應用。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
data = client.del_dns_app(dns_id)
new_dns_record
record_id = new_dns_record(**kwargs)
此方法用於新增 DNS 記錄。
引數
| 名稱 | 資料型別 | 是否必填 | 描述 | 
|---|---|---|---|
| sub_domain | string | 是 | 子域名 | 
| line | string | 是 | 線路,參照同目錄下的 Line.txt 檔案 | 
| record_type | string | 是 | 記錄的型別,可選值為 [A, TXT, MX, CNAME, CAA] | 
| text | string | 否 | 當記錄型別為 [TXT, CAA] 時,需要填寫此欄位 | 
| ip | string | 否 | 當記錄型別為 IP 時,需填寫此欄位 | 
| gateway | number | 否 | 當記錄指向特定閘道器叢集時,需填寫此欄位 | 
| domain | string | 否 | 當記錄型別為域名時,需填寫此欄位 | 
| priority | number | 否 | 當記錄型別為 MX 時,需填寫此欄位 | 
返回值
- record_id:新增的 DNS 記錄的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
use_dns_app(dns_id)
record_id = client.new_dns_record(
    sub_domain='bar', record_type='TXT', text='text string')
client.new_dns_record(
    sub_domain='bar', record_type='A', ip='127.0.0.1')
client.new_dns_record(
    sub_domain='bar', record_type='CNAME', domain='test.com')
client.new_dns_record(
    sub_domain='bar', record_type='MX', domain='test.com', priority=3)
put_dns_record
ok = put_dns_record(**kwargs)
此方法用於修改 DNS 記錄。
引數
| 名稱 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| record_id | number | 是 | DNS 記錄的 id | 
| sub_domain | string | 是 | 子域名 | 
| line | string | 是 | 線路,參考同目錄下的 Line.txt 檔案 | 
| record_type | string | 是 | 記錄的型別,可選值包括 [A, TXT, MX, CNAME, CAA] | 
| text | string | 否 | 當記錄型別為 [TXT, CAA] 時,需填寫該欄位 | 
| ip | string | 否 | 當記錄型別為 IP 時,需填寫該欄位 | 
| domain | string | 否 | 當記錄型別為域名時,需填寫該欄位 | 
| priority | number | 否 | 當記錄型別為 MX 時,需填寫該欄位 | 
返回值
- True:表示成功。
- False:表示失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
use_dns_app(dns_id)
record_id = 1
ok = client.put_dns_record(
    record_id=record_id,
    sub_domain='a.bar',
    record_type='TXT',
    text='text string')
get_dns_record
data = get_dns_record(record_id)
此方法用於獲取 DNS 記錄。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| record_id | number | 是 | DNS 記錄的 id | 
返回值
- data:返回一個 dict型別的 DNS 記錄資訊。
示例
如需獲取 record_id 為 1 的 DNS 記錄資訊,可以參考以下步驟。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
use_dns_app(dns_id)
record_id = 1
data = client.get_dns_record(record_id)
del_dns_record
ok = del_dns_record(record_id)
此方法用於刪除 DNS 記錄。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| record_id | number | 是 | 表示 DNS 記錄的 id | 
返回值
- 若成功刪除,則返回 True。
- 若刪除失敗,則返回 False。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
use_dns_app(dns_id)
record_id = 1
ok = client.del_dns_record(record_id)
在該示例中,我們首先建立了一個 Edge2Client 客戶端,並用特定的主機,使用者名稱和密碼進行登入。然後,我們選擇使用具有特定 id 的 DNS 應用。最後,我們嘗試使用該客戶端刪除具有特定 id 的 DNS 記錄,並將結果儲存在 ok 中。
get_dns_records
data = get_dns_records(page=1, page_size=100)
此方法用於獲取 DNS 記錄。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| page | number | 否 | 返回結果的頁碼,若未指定,預設為 1 | 
| page_size | number | 否 | 返回結果的條目數,若未指定,預設為 100 | 
返回值
- data:返回一個 dict型別的 DNS 記錄資訊,包含具體的 DNS 記錄詳情以及總的 DNS 記錄的數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
use_dns_app(dns_id)
data = client.get_dns_records(page=1, page_size=200)
示例中獲取 ID 為 1 的 DNS 應用中的 DNS 記錄,對結果按每頁 200 條記錄進行分頁,獲取第 1 頁的內容。
new_global_upstream
up_id = new_global_upstream(**kwargs)
此方法用於新增上游,並返回新建立的全域性上游的 id。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| name | string | 是 | 上游的名稱 | 
| servers | list | 是 | 上游的詳細資訊 | 
| ssl | bool | 否 | 是否啟用 HTTPS 協議,預設為 False | 
| health_checker | dict | 否 | 健康檢查的詳細配置項,預設為 None | 
| gid | array | 是 | 使用者組的 id 列表,例如[1] | 
返回值
- up_id:新建上游的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
up_id = client.new_global_upstream(
    name='origin-upstream',
    servers=[
        {'ip': '172.22.31.1', 'port': 80},
        {'ip': '172.22.31.2', 'port': 80, 'weight': 2}
    ])
update_global_upstream
ok = update_global_upstream(**kwargs)
此方法用於更新全域性上游資訊。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| name | string | 是 | 上游名稱 | 
| servers | list | 是 | 上游資訊列表 | 
| ssl | bool | 否 | 是否使用 HTTPS 協議,預設值為 False | 
| health_checker | dict | 否 | 健康檢查的詳細配置,預設值為 None | 
| gid | array | 是 | 使用者組 id 列表,示例:[1] | 
返回值
- True:操作成功。
- False:操作失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
up_id = 1
ok = client.update_global_upstream(up_id,
    name='origin-upstream',
    servers=[
        {'domain': 'test.com', 'port': 8080},
        {'ip': '172.22.31.2', 'port': 8080, 'weight': 1}
    ],
    health_checker={
        'type': 'http',
        'http_req_uri': '/status',
        'http_req_host': 'test.com',
        'interval': 3,
        'interval_unit': 'sec',
        'timeout': 1,
        'fall': 3,
        'rise': 2,
        'valid_statuses': [200, 302],
        'report_interval': 3,
        'report_interval_unit': 'min'
    })
get_global_upstream
data = get_global_upstream(up_id)
此方法用於獲取全域性上游資訊。
引數
| 名稱 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| up_id | string | 否 | 上游的 ID | 
返回值
- True:當獲取資訊成功時。
- False:當獲取資訊失敗時。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
up_id = 1
data = client.get_global_upstream(up_id)
del_global_upstream
del_global_upstream(up_id)
此方法用於刪除全域性上游。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| up_id | string | 否 | 上游的唯一識別 ID | 
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
up_id = 1
operation_status = client.del_global_upstream(up_id)
get_all_global_upstreams
upstreams = client.get_all_global_upstreams()
此方法用於獲取全部的上游資訊。
返回值
- upstreams:返回一個包含所有全域性上游資訊的 list型別變數。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
upstreams = client.get_all_global_upstreams()
new_global_k8s_upstream
up_id = new_global_k8s_upstream(**kwargs)
此方法用於建立新的全域性 Kubernetes 上游,並返回新建立的上游的 ID。
引數
| 名稱 | 資料型別 | 是否必填 | 引數描述 | 
|---|---|---|---|
| name | string | 是 | 定義上游的名稱 | 
| k8s_services | list | 是 | 提供 k8s 服務的詳細資訊 | 
| ssl | bool | 否 | 定義是否使用 HTTPS 協議,預設值為 False | 
| health_checker | dict | 否 | 對上游的健康狀況進行檢查的詳細配置,預設值為 None | 
| gid | array | 是 | 使用者組 ID 列表,例如:[1] | 
返回值
- up_id: 新建立的 k8s 上游的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
k8s_up_id = client.new_global_k8s_upstream(
    name = 'k8s-upstream',
    k8s_services = [
        {
            'k8s' : 1,
            'k8s_namespace' : 'default',
            'k8s_service' : 'foo',
            'k8s_service_port' : 80,
        }
    ])
put_global_k8s_upstream
ok = put_global_k8s_upstream(**kwargs)
此方法用於修改全域性 Kubernetes 上游的資訊。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| name | string | 是 | 定義上游名稱 | 
| k8s_services | list | 是 | 當上遊是 Kubernetes 服務時的資訊 | 
| ssl | bool | 否 | 是否採用 HTTPS 協議,預設值為 False | 
| health_checker | dict | 否 | 對健康檢查的詳細配置,預設值為 None | 
| gid | array | 是 | 使用者組 id 列表,如 [1] | 
返回值
- True:表示修改成功。
- False:表示修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
up_id = 1
ok = client.put_global_k8s_upstream(up_id,
    name='k8s-upstream',
    k8s_services = [
        {
            'k8s' : 1,
            'k8s_namespace' : 'default',
            'k8s_service' : 'foo',
            'k8s_service_port' : 80,
        }
    ],
    health_checker={
        'type': 'http',
        'http_req_uri': '/status',
        'http_req_host': 'test.com',
        'interval': 3,
        'interval_unit': 'sec',
        'timeout': 1,
        'fall': 3,
        'rise': 2,
        'valid_statuses': [200, 302],
        'report_interval': 3,
        'report_interval_unit': 'min'
    })
fetch_global_k8s_upstream
data = fetch_global_k8s_upstream(up_id)
此方法用於獲取全域性 Kubernetes 上游的資訊。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| up_id | 字串 | 是 | 上游的唯一識別 ID | 
返回值
- data:返回一個包含 Kubernetes 上游資訊的字典型別值。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
up_id = '1'
data = client.fetch_global_k8s_upstream(up_id)
del_global_k8s_upstream
del_global_upstream(up_id)
此方法用於刪除全域性 k8s 上游。
引數
| 名稱 | 資料型別 | 是否必選 | 引數描述 | 
|---|---|---|---|
| up_id | string | 是 | 上游的唯一標識 ID | 
返回值
- 如果刪除成功,返回 True。
- 如果刪除失敗,返回 False。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
up_id = '1'
ok = client.del_global_k8s_upstream(up_id)
get_all_global_k8s_upstreams
upstreams = client.get_all_global_k8s_upstreams()
此方法用於獲取所有的 Kubernetes 上游資訊。
返回值
- upstreams:返回 Kubernetes 上游資訊的列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
upstreams = client.get_all_global_k8s_upstreams()
set_global_cert_key
cert_id = set_global_cert_key(**kwargs)
用於新增全域性 SSL 證書。
引數
| 引數名 | 型別 | 是否必需 | 描述 | 
|---|---|---|---|
| key | 字串 | 是 | 私鑰內容 | 
| cert | 字串 | 否 | 伺服器證書內容 | 
| ca_chain | 字串 | 否 | CA 鏈證書內容 | 
返回值
- cert_id:新建全域性證書的 ID。
示例
以下示例展示瞭如何上傳本地的 key.pem 和 cert.pem 檔案以建立全域性證書。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
key_file = os.path.join('tests', 'key.pem')
cert_file = os.path.join('tests', 'cert.pem')
with open(key_file) as f:
    key = f.read()
with open(cert_file) as f:
    cert = f.read()
cert_id = client.set_global_cert_key(key=key, cert=cert)
put_global_cert_key
ok = put_global_cert_key(**kwargs)
此方法用於修改全域性 SSL 證書。
引數
| 引數名 | 型別 | 是否必要 | 描述 | 
|---|---|---|---|
| cert_id | 數字 | 是 | 證書的 id | 
| key | 字串 | 是 | 私鑰的內容 | 
| cert | 字串 | 否 | 證書的內容 | 
| ca_chain | 字串 | 否 | CA 鏈的內容 | 
返回值
- True:表示成功。
- False:表示失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
cert_id = 1
new_key_file = os.path.join('tests', 'new_key.pem')
new_cert_file = os.path.join('tests', 'new_cert.pem')
with open(new_key_file) as f:
    new_key = f.read()
with open(new_cert_file) as f:
    new_cert = f.read()
ok = client.put_global_cert_key(cert_id=cert_id, key=new_key, cert=new_cert)
get_global_cert_key
data = get_global_cert_key(cert_id)
此方法用於獲取與 cert_id 相關聯的 SSL 證書資訊。
引數
| 名稱 | 型別 | 是否必需 | 描述 | 
|---|---|---|---|
| cert_id | number | 是 | 證書的唯一識別符號 id | 
返回值
- data:返回一個 dict型別資料,其中包含了全域性證書的所有資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
cert_id = 1
data = client.get_global_cert_key(cert_id)
del_global_cert_key
ok = del_global_cert_key(cert_id)
此方法用於刪除指定的全域性 SSL 證書。
引數
| 名稱 | 資料型別 | 是否必選 | 描述資訊 | 
|---|---|---|---|
| cert_id | number | 是 | 將被刪除的證書的 id | 
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
cert_id = 1
ok = client.del_global_cert_key(cert_id)
add_global_user
uid = add_global_user(name, pwd, gid)
此方法用於新增全域性使用者。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| name | string | 是 | 需要新增的全域性使用者名稱 | 
| pwd | string | 是 | 對應的全域性使用者密碼 | 
| gid | array | 是 | 包含使用者組 id 的列表,如 [1] | 
返回值
- uid:新增的全域性使用者的唯一識別 ID。
注意:全域性使用者的 ID 與應用級別的使用者 ID 需要區分。
示例
以下示例展示瞭如何建立一個名為 global_demo_user,具有建立新應用許可權,且其角色為普通使用者的全域性使用者。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
username='global_demo_user'
uid = client.add_global_user(name=username, pwd=pwd, gid=[1])
search_global_user
user_info = search_global_user(name)
此方法用於根據使用者名稱搜尋全域性使用者資訊。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| name | string | 是 | 全域性使用者的名稱 | 
返回值
- user_info:dict型別,包含搜尋到的使用者資訊及其相關許可權資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
username = 'global_demo_user'
data = client.search_global_user(username)
user_id = data.get('id')
get_all_global_users
data = get_all_global_users(detail)
本函式用於獲取所有全域性使用者的資訊。
引數
| 名稱 | 資料型別 | 是否必填 | 描述 | 
|---|---|---|---|
| detail | number | 否 | 取值為 0 或 1,用於指示是否返回使用者的詳細資訊 | 
返回值
- data:返回一個 list型別的資料,其每一個元素均為dict型別,包含對應全域性使用者的資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_global_users()
data = client.get_all_global_users(True)
new_global_rule
rule_id = new_global_rule(**kwargs)
此方法用於新增全域性規則。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| condition | 列表 | 否 | 規則觸發的條件 | 
| conseq | 字典 或 列表 | 否 | 規則所包含的動作 | 
| gid | 列表 | 否 | 使用者組的 ID 列表 | 
返回值
- rule_id:成功建立的全域性規則的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
condition = [
    {'var': 'host', 'val': 'con.' + APEX},
    {'var': ['req-header', 'Referer'], 'vals': [['foo\d+', 'rx'], 'foo.com']}
]
conseq = {
    'enable-websocket': {},
    'redirect': {'url': '/cn/2017/', 'code': 302}
}
rule_id = client.new_global_rule(condition=condition, conseq=conseq,gid=[1])
put_global_rule
ok = put_global_rule(**kwargs)
此方法用於修改全域性規則。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 規則的唯一標識 | 
| condition | list | 否 | 定義規則的條件 | 
| conseq | dict or list | 否 | 規定規則的行動 | 
| gid | list | 否 | 使用者組的 id 列表 | 
返回值
- True:表示成功。
- False:表示失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
rule_id = 1
conseq['redirect']['url'] = '/cn/2018/'
ok = client.put_global_rule(
    rule_id=rule_id, condition=condition, conseq=conseq)
get_global_rule
data = get_global_rule(rule_id)
此方法用於獲取全域性規則資訊。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 規則的唯一識別符號 id | 
返回值
- data:返回值是一個dict型別,包含全域性規則的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
rule_id = 1
data = client.get_global_rule(rule_id)
這個示例展示瞭如何使用 Edge2Client 的例項獲取特定 id 的全域性規則資訊。
get_global_action_by_name
rule_id = get_global_action_by_name(name)
此方法用於根據給定的應用名來獲取相應的全域性自定義動作。
引數
| 引數名 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| name | string | 是 | 規則名稱 | 
返回值
- data:返回一個包含全域性規則資訊的 dict型別資料。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
rule_name = 'test-actions'
rule_id = client.get_global_action_by_name(rule_name)
get_all_global_rules
data = get_all_global_rules()
此方法用於獲取所有的全域性規則。
返回值
- data:這是一個 list型別的全域性規則資訊列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_global_rules()
del_global_rule
ok = del_global_rule(rule_id)
此方法用於刪除全域性規則。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 規則的唯一識別符號 | 
返回值
- 返回 True:表示規則成功刪除。
- 返回 False:表示規則刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
rule_id = 1
ok = client.del_global_rule(rule_id)
此示例展示瞭如何使用 Edge2Client 物件的 del_global_rule 方法來刪除指定的全域性規則。
new_global_var
var_id = new_global_var(**kwargs)
此方法用於新增全域性變數。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| name | string | 是 | 定義的變數名稱 | 
| var_type | string | 是 | 指定的變數型別 | 
| default | string | 是 | 設定的預設值 | 
| gid | list | 否 | 使用者組 id 陣列 | 
返回值
- var_id:若建立成功,則返回新建變數的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = client.new_global_var(
    name='is-whitelist', var_type='string', default='no')
put_global_var
ok = put_global_var(**kwargs)
此方法用於修改全域性變數。
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| var_id | number | 是 | 變數的唯一識別符號 | 
| name | string | 是 | 變數的名稱 | 
| var_type | string | 是 | 變數的資料型別 | 
| default | string | 是 | 變數的預設值 | 
| gid | list | 否 | 使用者組的 ID 列表 | 
返回值
- True:表示全域性變數修改成功。
- False:表示全域性變數修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = 1
ok = client.put_global_var(
    var_id=var_id,
    name='is-whitelist',
    var_type='string',
    default='yes',
    gid=[1])
在此示例中,我們首先建立了一個 Edge2Client 物件並進行登入。然後,使用 put_global_var() 函式,透過指定對應的引數,修改 ID 為 1 的全域性變數名稱為’is-whitelist’,型別為’string’,預設值為’yes’,並將其關聯到 ID 為 1 的使用者組。
get_global_var
data = get_global_var(var_id)
此方法用於獲取全域性變數。
引數
| 引數名 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| var_id | number | 是 | 全域性變數 id | 
返回值
- data:返回值為一個 dict型別,包含全域性變數的資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = 1
data = client.get_global_var(var_id)
get_all_global_vars
data = get_all_global_vars()
此方法用於獲取所有全域性變數。
返回值
- data:此為一個 list 型別的物件,其中每一個元素都是一個 dict 型別,包含了全域性變數的相關資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password) # 建立一個 Edge2Client 例項
client.login() # 登陸
data = client.get_all_global_vars() # 獲取所有全域性變數
del_global_var
ok = del_global_var(var_id)
此方法用於根據全域性變數的 ID 進行刪除操作。
引數
| 名稱 | 資料型別 | 是否必須 | 描述資訊 | | var_id | number | 是 | 指定需要刪除的全域性變數的 ID |
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = 1
ok = client.del_global_var(var_id)
get_global_ngx_config
data = get_global_ngx_config()
此方法用於獲取全域性的 nginx 配置資訊。
返回值
- data:返回一個dict型別的全域性 ngx 配置資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_global_ngx_config()
set_global_ngx_config
data = set_global_ngx_config(opts)
此方法設定全域性的 nginx 配置資訊。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| access_log_buffer | number | 否 | 訪問日誌的緩衝區大小 | 
| access_log_buffer_unit | [‘k’, ’m’, ‘g’] | 否 | 訪問日誌緩衝區大小的單位 | 
| access_log_flush | number | 否 | 訪問日誌在記憶體中的最大保留時間 | 
| enable_access_log | bool | 否 | 是否啟用訪問日誌 | 
| access_log_formats | dict | 否 | 訪問日誌的格式 | 
| avoid_gen_error_log | bool | 否 | 是否避免生成錯誤日誌 | 
| client_body_timeout | number | 否 | 客戶端請求體的超時時間 | 
| client_body_timeout_unit | [’s’, ’m’] | 否 | 客戶端請求體超時時間的單位 | 
| client_header_timeout | number | 否 | 客戶端請求頭的超時時間 | 
| client_header_timeout_unit | [’s’, ’m’] | 否 | 客戶端請求頭超時時間的單位 | 
| client_max_body_size | number | 否 | 客戶端請求體的最大尺寸 | 
| client_max_body_size_unit | [‘k’, ’m’] | 否 | 客戶端請求體最大尺寸的單位 | 
| client_header_buffer_size | number | 否 | 客戶端請求頭緩衝區的大小 | 
| client_header_buffer_size_unit | [‘k’, ’m’] | 否 | 客戶端請求頭緩衝區大小的單位 | 
| max_client_request_line_size | number | 否 | 客戶端請求行的最大尺寸 | 
| max_client_request_header_size | [‘k’, ’m’] | 否 | 客戶端請求頭的最大尺寸 | 
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| default | bool | 否 | 設定該日誌格式是否為預設格式。注意:配置中至少需要一個預設的日誌格式 | 
| name | string | 是 | 該訪問日誌格式的名稱,需要全域性唯一 | 
| format | string | 是 | 該訪問日誌的格式,需按照 nginx log_format 指令設定 | 
返回值
- True:設定成功。
- False:設定失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
opts = {'keepalive_timeout': 10, 'enable_open_file_cache': False}
ok = client.set_global_ngx_config(opts)
get_global_misc_config
data = get_global_misc_config()
此方法用於獲取全域性的雜項配置資訊。
返回值
- data:返回一個 dict型別,其中包含了雜項的配置資訊。
示例
from edge2client import Edge2Client
# 建立客戶端並登陸
client = Edge2Client(host, username, password)
client.login()
# 獲取全域性雜項配置資訊
data = client.get_global_misc_config()
set_global_misc_config
ok = set_global_misc_config(opts)
此方法用於設定全域性雜項配置資訊。
引數
| 引數名 | 資料型別 | 是否必須 | 描述 | | opts | 字典型別(dict) | 否 | 雜項(misc)配置項 |
返回值
- True:表示設定成功。
- False:表示設定失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
opts = {'enabled_req_id': True}
ok = client.set_global_misc_config(opts)
get_request_id_status
status = get_request_id_status()
此方法用於查詢請求 id 的狀態。
返回值
- True:表示請求 id 已啟用。
- False:表示請求 id 已禁用。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
status = client.get_request_id_status()
enable_request_id
ok = enable_request_id()
這個方法用於啟用請求 id 功能。
返回值
- True:表示啟用成功。
- False:表示啟用失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.enable_request_id()
disable_request_id
ok = disable_request_id()
此方法用於禁用請求 ID 功能。
返回值
- True:表示請求 ID 功能成功被禁用。
- False:表示請求 ID 功能禁用失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.disable_request_id()
new_global_waf_rule
rule_id = new_global_waf_rule(**kwargs)
此方法用於新增全域性 WAF 規則。
引數
| 引數名 | 資料型別 | 是否必填 | 描述 | 
|---|---|---|---|
| name | string | 是 | 指定的規則名稱 | 
| code | string | 是 | 對應規則的 edge 語言程式碼 | 
返回值
- rule_id:返回新建立的全域性 WAF 規則集的唯一 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
waf_rule_id = client.new_global_waf_rule(
    name='foo',
    code="uri-arg('foo') => waf-mark-risk(level: 'definite', msg: 'found foo');")
在這個例子中,我們首先建立了一個 Edge2Client 例項,然後使用 new_global_waf_rule 方法建立了一個新的全域性 WAF 規則,並將其規則 ID 儲存在 waf_rule_id 中。規則名稱為 ‘foo’,edge 語言程式碼為 “uri-arg(‘foo’) => waf-mark-risk(level: ‘definite’, msg: ‘found foo’);"。
put_global_waf_rule
ok = put_global_waf_rule(**kwargs)
此方法用於修改全域性 WAF 規則。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 規則的唯一識別符號 id | 
| name | string | 是 | 規則的名稱 | 
| code | string | 是 | 規則的 edge 語言指令碼 | 
返回值
- True:表示修改成功。
- False:表示修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
waf_rule_id = 1
ok = client.put_global_waf_rule(
    rule_id=waf_rule_id,
    name='bar',
    code="uri-arg('bar') => waf-mark-risk(level: 'definite', msg: 'found bar');")
在此示例中,我們透過 put_global_waf_rule 函式修改了 id 為 1 的全域性 WAF 規則。
get_global_waf_rule
data = get_global_waf_rule(rule_id)
此方法透過提供的規則集 ID(rule_id)來獲取全域性的 WAF 規則集。
引數
| 名稱 | 資料型別 | 是否必選 | 描述資訊 | | rule_id | number | 是 | WAF 規則集的唯一識別符號 |
返回值
- data:返回一個包含 WAF 規則集詳細資訊的字典。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
waf_rule_id = 1
data = client.get_global_waf_rule(waf_rule_id)
del_global_waf_rule
ok = del_global_waf_rule(rule_id)
此方法用於刪除全域性 WAF 規則。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | | rule_id | number | 是 | 規則集的 ID |
返回值
- True:刪除成功。
- False:刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
waf_rule_id = 1
ok = client.del_global_waf_rule(waf_rule_id)
get_all_global_waf_rules
data = get_all_global_waf_rules(detail=False)
此方法用於獲取所有全域性 WAF 規則。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| detail | bool | 否 | 表示是否展示規則的詳細資訊,預設值為 False | 
返回值
- data:返回一個 list型別的 WAF 規則集資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_global_waf_rules()
new_global_action
rule_id = new_global_action(**kwargs)
此方法用於新增新的全域性自定義動作。
引數
| 名稱 | 資料型別 | 是否必填 | 描述 | 
|---|---|---|---|
| name | string | 是 | 自定義動作的名稱 | 
| condition | list | 否 | 自定義動作執行的條件 | 
| conseq | dict or list | 是 | 執行的自定義動作 | 
| gid | list | 否 | 使用者組的 id 列表 | 
返回值
- rule_id:返回新建立的全域性自定義動作的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
name = 'test'
condition = [
    {'var': 'req-method', 'vals': ['GET', 'POST', 'HEAD']}
]
conseq = [
    {
        'exit': {'code': 403}
    }
]
action_id = client.new_global_action(
    name=name, condition=condition, conseq=conseq, gid=[1, 2])
put_global_action
ok = put_global_action(**kwargs)
此方法用於修改全域性自定義動作。
引數
| 引數 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| action_id | number | 是 | 自定義動作的 id | 
| name | string | 否 | 自定義動作的名稱 | 
| condition | list | 否 | 自定義動作的執行條件 | 
| conseq | dict or list | 否 | 自定義動作的結果 | 
| gid | list | 否 | 使用者組 id 列表 | 
返回值
- True:代表操作成功。
- False:代表操作失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
action_id = 1
ok = client.put_global_action(
    name=name,
    action_id=action_id,
    condition=condition,
    conseq=conseq,
    gid=[1])
get_global_action
data = get_global_action(action_id)
此方法用於獲取全域性自定義動作。
引數
| 名稱 | 資料型別 | 是否必選 | 描述資訊 | 
|---|---|---|---|
| action_id | number | 是 | 自定義動作的 id | 
返回值
- data:返回的資料為字典型別,包含全域性自定義動作的相關資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
action_id = 1
data = client.get_global_action(action_id)
del_global_action
ok = del_global_action(action_id)
此方法用於刪除指定的全域性自定義動作。
引數
| 名稱 | 資料型別 | 是否必選 | 描述資訊 | 
|---|---|---|---|
| action_id | number | 是 | 自定義動作的 id | 
返回值
- 返回 True:表示刪除成功。
- 返回 False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
action_id = 1
ok = client.del_global_action(action_id)
count_global_actions
count = count_global_actions()
此方法用於獲取全域性自定義動作的總數。
返回值
- count:返回全域性自定義動作的總數。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
count = client.count_global_actions()
get_all_global_actions
data = get_all_global_actions()
此方法用於獲取所有全域性自定義動作。
引數
| 名稱 | 資料型別 | 是否必選 | 描述資訊 | 
|---|---|---|---|
| page | number | 否 | 表示頁數 | 
| pagesize | number | 否 | 表示每頁顯示的條目數量 | 
返回值
- data:返回一個包含所有全域性自定義動作資訊的列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_global_actions()
upload_static_file
file_id = upload_static_file(**kwargs)
此方法用於上傳靜態檔案。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| content | string | 是 | 靜態檔案的內容 | 
| label | string | 是 | 靜態檔案的標籤 | 
| file_type | string | 否 | 靜態檔案的型別 | 
| gid | list | 否 | 使用者組 id 列表 | 
返回值
- file_id:返回新上傳的靜態檔案的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
file_id = client.upload_static_file(content='test_content', label='500.html', gid=[1])
get_static_file
data = get_static_file(file_id)
此方法用於獲取指定的靜態檔案配置。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| file_id | number | 是 | 需要獲取的靜態檔案的 ID | 
返回值
- data:返回一個 dict型別的物件,包含所獲取的靜態檔案的資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
file_id = 1
data = client.get_static_file(file_id)
在這個示例中,我們首先從 edge2client 模組匯入了 Edge2Client 類,然後建立了一個 Edge2Client 物件並進行登入。之後,我們呼叫了其 get_static_file 方法,獲取了 ID 為 1 的靜態檔案的配置資訊,並將其儲存在 data 變數中。
del_static_file
ok = del_static_file(file_id)
此方法用於刪除已上傳的靜態檔案。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| file_id | number | yes | 待刪除的靜態檔案的 ID | 
返回值
- True:表示檔案刪除成功。
- False:表示檔案刪除失敗。
示例
from edge2client import Edge2Client
# 建立 Edge2Client 例項
client = Edge2Client(host, username, password)
# 登入
client.login()
# 設定要刪除的檔案 ID
file_id = 1
# 刪除指定 ID 的靜態檔案
ok = client.del_static_file(file_id)
new_cluster_group
group_id = new_cluster_group(group_name)
此方法用於新增新的叢集組。
引數
| 名稱 | 資料型別 | 是否必須 | 詳細描述 | 
|---|---|---|---|
| group_name | string | 是 | 新增叢集組的名稱 | 
返回值
- id:返回新建的叢集組的唯一識別符號 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
group_id = client.new_cluster_group('foo')
put_cluster_group
ok = put_cluster_group(**kwargs)
此方法用於修改叢集組資訊。
引數
| 引數名 | 資料型別 | 必選 | 描述 | 
|---|---|---|---|
| group_id | number | 是 | 叢集組的唯一識別符號 | 
| group_name | string | 是 | 需要更改的叢集組名稱 | 
返回值
- True:表示成功修改叢集組資訊。
- False:表示修改叢集組資訊失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
group_id = 1
ok = client.put_cluster_group(group_id=group_id, group_name='bar')
此示例演示瞭如何使用 put_cluster_group 函式來修改具有指定 group_id 的叢集組名稱為 ‘bar’。
get_cluster_group
data = get_cluster_group(group_id)
此方法用於獲取叢集組的詳細資訊。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| group_id | 數值型 | 是 | 叢集組的唯一識別符號 | 
返回值
- data:返回一個dict型別的叢集組詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
group_id = 1
data = client.get_cluster_group(group_id)
get_all_cluster_groups
data = get_all_cluster_groups()
此方法用於獲取所有叢集組的資訊。
返回值
- data:這是一個 list型別,包含了所有叢集組的資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_cluster_groups()
del_cluster_group
ok = del_cluster_group(group_id)
此方法用於刪除叢集組資訊。
引數
| 引數名 | 資料型別 | 是否必填 | 描述資訊 | 
|---|---|---|---|
| group_id | number | 是 | 需要刪除的叢集組的編號 | 
返回值
- 返回 True:表示叢集組資訊刪除成功。
- 返回 False:表示叢集組資訊刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
group_id = 1
ok = client.del_cluster_group(group_id)
在以上示例中,首先初始化一個 Edge2Client 物件並登陸,然後指定要刪除的叢集組的編號,並呼叫 del_cluster_group 方法進行刪除操作。
put_proxy_rule
ok = put_proxy_rule(**kwargs)
此方法用於修改上游代理規則。
引數
| 名稱 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 規則的唯一識別符號 | 
| proxy | list | 是 | 用於定義代理規則的列表 | 
返回值
- True:表示規則修改成功。
- False:表示規則修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
rule_id = 1
proxy_rule = []
ok = client.put_proxy_rule(rule_id=rule_id, proxy=proxy_rule)
new_global_k8s
k8s_id = new_global_k8s(name=None, host=None, port=None, ssl_verify=True, token=None)
此方法用於新增新的 k8s 叢集連線引數。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| name | string | 是 | k8s 叢集的名稱 | 
| host | string | 否 | k8s 叢集的地址 | 
| domain | string | 否 | k8s 叢集的域名,host 或 domain 兩者必填一項且只能填一項 | 
| port | number | 是 | k8s 叢集的埠 | 
| connect_timeout | number | 否 | k8s 叢集的連線超時時間,單位為秒,預設為 5 秒 | 
| read_timeout | number | 否 | k8s 叢集的讀取資料超時時間,單位為秒,預設為 5 秒 | 
| ssl_verify | bool | 否 | 是否需要進行 SSL 校驗 | 
| token | string | 是 | k8s 叢集的 api token | 
返回值
- k8s_id:新建立的 k8s 叢集的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
k8s_id = client.new_global_k8s(name = "k8s", host = "192.168.1.1", port = 443, token = "xxxxx")
put_global_k8s
ok = put_global_k8s(**kwargs)
此方法用於修改 Kubernetes 叢集的連線引數。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| k8s_id | number | 是 | Kubernetes 叢集的唯一識別符號 | 
| name | string | 否 | Kubernetes 叢集的名稱 | 
| host | string | 否 | Kubernetes 叢集的主機地址 | 
| domain | string | 否 | Kubernetes 叢集的域名,host 或 domain 中至少需要一個,且不能同時填寫 | 
| port | number | 否 | Kubernetes 叢集的連線埠 | 
| connect_timeout | number | 否 | Kubernetes 叢集的連線超時時間,單位為秒 | 
| read_timeout | number | 否 | Kubernetes 叢集的資料讀取超時時間,單位為秒 | 
| ssl_verify | bool | 否 | 是否需要進行 SSL 校驗 | 
| token | string | 否 | Kubernetes 叢集的 API 令牌 | 
返回值
- 返回 True:表示成功。
- 返回 False:表示失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.put_global_k8s(k8s_id = 1, name = "k8s", host = "192.168.1.1", port = 443, token = "xxxxx")
get_global_k8s
data = get_global_k8s(k8s_id)
此方法用於獲取 Kubernetes 叢集的連線引數資訊。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| k8s_id | number | 是 | Kubernetes 叢集的唯一識別符號 | 
返回值
- data:返回一個 dict型別的資料,包含 Kubernetes 叢集的詳細資訊。
示例
from edge2client import Edge2Client
# 建立一個 Edge2Client 例項
client = Edge2Client(host, username, password)
# 登入客戶端
client.login()
# 使用 get_global_k8s 方法獲取 Kubernetes 叢集資訊
data = client.get_global_k8s(k8s_id = 1)
get_k8s_service_detail
data = get_k8s_service_detail()
此方法用於獲取 k8s 叢集中定義的服務相關資訊。
引數
| 名稱 | 資料型別 | 是否必選 | 詳細描述 | 
|---|---|---|---|
| k8s_id | number | 是 | k8s 叢集的唯一識別符號 | 
返回值
- 返回一個 dict型別的資料,包含 k8s 叢集的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_k8s_service_detail(k8s_id = 1)
get_all_global_k8s
data = get_all_global_k8s()
此方法用於獲取所有全域性 Kubernetes 叢集的 id。
返回值
- data:返回一個 list型別的 Kubernetes 叢集資訊。
應用示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_k8s()
del_global_k8s
ok = del_global_k8s(k8s_id)
此方法用於刪除 k8s 叢集的連線引數。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| k8s_id | number | 是 | k8s 叢集的唯一識別符號 | 
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.del_global_k8s(k8s_id = 1)
以上程式碼展示瞭如何使用 Edge2Client 刪除特定的 k8s 叢集連線引數。
update_proxy_rule
result = update_proxy_rule(**kwargs)
更新指定的上游代理規則。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 規則的唯一識別符號 | 
| proxy | list | 是 | 代理規則的詳細資訊 | 
返回值
- True:代表成功更新代理規則。
- False:代表更新代理規則失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
rule_id = 1
proxy_rule = [...]
result = client.update_proxy_rule(rule_id=rule_id, proxy=proxy_rule)
此方法用於更新全域性級別的 IP 規則列表。
new_global_ip_list
data = new_global_ip_list(name=None, type='ipv4', items=None)
此方法用於建立新的全域性 IP 列表。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| name | string | 是 | 要建立的全域性 IP 列表的名稱 | 
| type | string | 否 | IP 地址的型別,當前支援 ipv4或ipv6(即將推出) | 
| items | array | 否 | 包含的 IP 地址列表 | 
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| ip | string | 是 | IP 地址 | 
| exptime | int | 否 | IP 有效期,傳 Unix 時間戳。如果不設定,則 IP 永久有效 | 
返回值
- id:新建立的全域性 IP 列表的唯一標識 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.new_global_ip_list(name = 'ip-list-1',
                               type = 'ipv4',
                               items = [
                                    {'ip': '127.0.0.0/24'},
                                    {'ip': '192.168.1.0/24'},
                                    {'ip': '192.168.2.0/24', 'exptime': 1725000000},
                                    {'ip': '192.168.3.0/24', 'exptime': 1735000000}
                               ])
put_global_ip_list
data = put_global_ip_list(rule_id=None, name=None, type='ipv4', items=None)
此方法用於修改指定的全域性級別 IP 列表。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 指定的全域性級別 IP 列表的 ID | 
| name | string | 是 | 需要修改的全域性級別 IP 列表的名稱 | 
| type | string | 否 | IP 地址的型別,目前支援 ‘ipv4’ 和即將支援的 ‘ipv6’ | 
| items | array | 否 | 待修改的 IP 地址列表 | 
返回值
- True:表明修改成功。
- False:表明修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.put_global_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.2'} ])
del_global_ip_list
ok = del_global_ip_list(rule_id=None)
此方法用於刪除指定的全域性 IP 列表。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 需要刪除的全域性 IP 列表的 ID | 
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.del_global_ip_list(rule_id=1)
get_global_ip_list
data = get_global_ip_list(rule_id=None)
此方法用於獲取指定的全域性 IP 列表。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 用於指定全域性級別 IP 列表的 ID | 
返回值
- data:返回一個dict型別的 IP 列表資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_global_ip_list(rule_id=1)
append_to_global_ip_list
ok = append_to_global_ip_list(rule_id, items)
此方法用於向指定的全域性 IP 列表追加 IP。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 指定的全域性級別 IP 列表的 ID | 
| items | array | 是 | 待修改的 IP 地址列表 | 
| remove_expired | bool | 否 | 是否移除過期的 IP。預設為 False。如果設定為 True,會在追加新 IP 之前先移除已過期的 IP | 
返回值
- True:表明修改成功。
- False:表明修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.append_to_global_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.3'} ])
ok = client.append_to_global_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.3'} ], remove_expired = True)
remove_from_global_ip_list
ok = remove_from_global_ip_list(rule_id, items)
此方法用於從指定的全域性 IP 列表移除 IP。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| rule_id | number | 是 | 指定的全域性級別 IP 列表的 ID | 
| items | array | 是 | 待修改的 IP 地址列表 | 
返回值
- True:表明修改成功。
- False:表明修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.remove_from_global_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.3'} ])
new_user_var
var_id = new_user_var(**kwargs)
這是一個用於新增使用者級別變數的函式。
引數
| 名稱 | 資料型別 | 是否必選 | 描述資訊 | 
|---|---|---|---|
| name | string | 是 | 變數的名稱 | 
| var_type | string | 是 | 變數的型別 | 
| default | string | 是 | 變數的預設值 | 
返回值
- id:返回新建的使用者級別變數的唯一 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = client.new_user_var(
    name='is-whitelist',
    var_type='string',
    default='no')
put_user_var
ok = put_user_var(**kwargs)
此方法用於修改使用者級別的變數。
引數
| 名稱 | 資料型別 | 是否必選 | 詳細描述 | 
|---|---|---|---|
| var_id | number | 是 | 表示變數的唯一標識 | 
| name | string | 是 | 代表變數的名稱 | 
| var_type | string | 是 | 描述變數的型別 | 
| default | string | 是 | 定義變數的預設值 | 
返回值
- True:表示成功修改使用者級別的變數。
- False:表示修改使用者級別的變數失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = 1
ok = client.put_user_var(var_id=var_id,
                         name='is-whitelist',
                         var_type='string',
                         default='yes')
請注意,此示例會將名為 ‘is-whitelist’ 的變數的值設定為 ‘yes’。
get_user_var
data = get_user_var(var_id)
此方法用於獲取使用者級別的變數。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| var_id | number | 是 | 變數的唯一識別符號 | 
返回值
- data:返回一個dict型別,包含使用者變數的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = 1
data = client.get_user_var(var_id)
del_user_var
ok = del_user_var(var_id)
此方法用於刪除使用者級別的變數。
引數
| 名稱 | 資料型別 | 是否必填 | 描述資訊 | 
|---|---|---|---|
| var_id | number | 是 | 要刪除的變數 id | 
返回值
- True:刪除變數成功。
- False:刪除變數失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = 1
ok = client.del_user_var(var_id)
在這個示例中,我們首先從 edge2client 模組匯入 Edge2Client。然後,我們建立一個 Edge2Client 例項,並用它登入。最後,我們試圖刪除 var_id 為 1 的使用者級別變數。
decode_request_id
data = decode_request_id(request_id)
此方法用於解碼 request_id 以獲取諸如 app_id 等資訊。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | | request_id | 字串 | 是 | 請求 ID |
返回值
- data:返回一個 字典型別的資料,其中包含處理請求的閘道器、應用等資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.decode_request_id('00000a00000c0826c9803222')
print(data)
search_waf_log
data = search_waf_log(request_id)
此方法用於透過請求 id 獲取 WAF 日誌。
引數
| 引數 | 資料型別 | 必選 | 描述 | 
|---|---|---|---|
| request_id | string | 是 | 請求的唯一識別符號 | 
返回值
- data:返回一個 dict型別的 WAF 日誌資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
request_id = "0000008000042c421ea80011"
data = client.search_waf_log(request_id)
這個示例展示瞭如何使用 Edge2Client 例項來呼叫 search_waf_log 函式並獲取 WAF 日誌。
get_version
data = get_version()
此方法用於獲取 Admin、Admin DB、Log Server、Log Server DB 及 WAF 的版本資訊。
返回值
- data:返回一個dict型別,包含了版本資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_version()
add_api_token
data = add_api_token(name=None, expire=0)
此方法用於生成 API Token。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| name | string | 否 | API Token 的名稱 | 
| expire | number | 否 | API Token 的過期時間 | 
返回值
- data:返回一個 dict型別,包含 API Token 的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.add_api_token("name", 0)
get_api_token
data = get_api_token(id=None, limit=20)
此方法用於獲取 API 令牌。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| id | number | 否 | API 令牌的標識 | 
| limit | number | 否 | 返回結果的數量限制 | 
返回值
- data:以 dict型別返回 API 令牌的資訊。
示例
from edge2client import Edge2Client
# 建立客戶端並登入
client = Edge2Client(host, username, password)
client.login()
# 獲取指定 id 的 API 令牌
data = client.get_api_token(id)
# 獲取數量限制在 100 以內的 API 令牌
data = client.get_api_token(None, 100)
del_api_token
ok = del_api_token(id)
此方法用於刪除一個指定的 API Token。
引數
| 引數 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| id | number | 否 | api token 的標識 | 
返回值
- 返回 True:表示 API Token 刪除成功。
- 返回 False:表示 API Token 刪除失敗。
示例
from edge2client import Edge2Client
# 建立 Edge2Client 例項
client = Edge2Client(host, username, password)
# 登入
client.login()
# 刪除指定的 API Token
data = client.del_api_token(id)
get_all_gateway_tag
tags = get_all_gateway_tag()
此方法用於獲取所有閘道器叢集的標籤。
返回值
- data:返回一個包含所有閘道器標籤資訊的 list型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
tags = client.get_all_gateway_tag()
for i, tag in enumerate(tags):
    print(i, tag)
get_all_gateway
gateways = get_all_gateway()
此方法用於獲取所有閘道器叢集的資訊。
返回值
- data:返回一個 list型別,包含所有閘道器的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)  # 建立並初始化 Edge2Client 例項
client.login()  # 登入到伺服器
gateways = client.get_all_gateway()  # 獲取所有閘道器叢集資訊
# 迴圈列印所有閘道器資訊
for i, gateway in enumerate(gateways):
    print(i, gateway)
add_gateway
id = add_gateway(name, partition_id, tag=None)
此方法用於建立新的閘道器叢集。
引數
| 引數 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| name | string | 是 | 閘道器叢集的名稱 | 
| partition_id | string | 是 | 所建立的閘道器叢集所屬的閘道器分割槽 ID | 
| tag | array | 否 | 用於標記所建立閘道器叢集的標籤 | 
返回值
- id:返回新建立的閘道器叢集的唯一 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
default_partition_id = 1
id = client.add_gateway('my-cluster', default_partition_id)
del_gateway
ok = del_gateway(gateway_id)
此方法用於刪除指定的閘道器叢集。
引數
| 引數 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| gateway_id | string | 是 | 要刪除的閘道器叢集的唯一識別符號 | 
返回值
- True:表示閘道器叢集刪除成功。
- False:表示閘道器叢集刪除失敗。
true
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
gateway_id = 1
ok = client.del_gateway(gateway_id)
在這個示例中,我們首先使用 Edge2Client 建立了一個客戶端,然後登入。接著,我們嘗試刪除 ID 為 1 的閘道器叢集,並將結果儲存在變數 ok 中。
get_all_nodes
nodes = get_all_nodes()
此方法用於獲取所有的閘道器節點。
返回值
- data:此返回值是一個list型別,包含了所有閘道器節點(伺服器)的相關資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
nodes = client.get_all_nodes()
for i, node in enumerate(nodes):
    print(i, node)
get_node
node = get_node(node_id, gateway_id=None)
此方法根據提供的節點 ID 獲取相應的節點資訊。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| node_id | number | 是 | 節點的唯一識別符號 (ID) | 
| gateway_id | number | 否 | 閘道器叢集的唯一識別符號 (ID),未指定時,將透過遍歷來查詢對應的節點 | 
返回值
- 返回值為 dict型別,包含了閘道器節點的相關資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
node = client.get_node(1)  # 獲取節點 ID 為 1 的節點資訊
node = client.get_node(1, gateway_id=1)  # 在閘道器叢集 ID 為 1 的範圍內,獲取節點 ID 為 1 的節點資訊
get_node_by_mac_address
node = get_node_by_mac_address(mac_address)
此方法用於根據節點的硬體 ID 來檢索節點的詳細資訊。
引數
| 引數名 | 資料型別 | 是否必選 | 描述內容 | 
|---|---|---|---|
| mac_address | string | 是 | 該節點的特定 MAC 地址 | 
返回值
- node:返回一個 dict型別的閘道器節點詳細資訊。
{
    "mac_address": "46:b1:5f:1d:fa:ea",
    "serial": "2655388572",
    "is_limited": false,
    "config": {
        "enable_qat": false
    },
    "name": "test-edge-node-75c5bf6969-65tgg\n",
    "id": 11,
    "external_ip": "172.20.0.2",
    "sync_status_utime": 0,
    "online_status": true,
    "internal_ip": "10.244.0.6",
    "hardware_id": "a11abe66fe25be7941bda81c3f358344",
    "is_healthy": true,
    "status": 1,
    "gateway_id": 14
}
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
node = client.get_node_by_mac_address("e2:d1:d9:e0:c4:6e")
put_node
ok = put_node(node_id, gateway_id=None, **kwargs)
This method is used for updating node information.
Parameters
| Name | Data Type | Required | Description | 
|---|---|---|---|
| node_id | number | Yes | ID of the node | 
| gateway_id | number | No | Cluster ID of the gateway. If not specified, the corresponding node will be located by traversing | 
| name | string | No | Name of the node | 
| is_gray | bool | No | Set/unset the node as a gray node | 
| status | number | No | 0: Disable DNS, enable cluster cache, 1: Enable DNS, enable cluster cache, 2: Disable DNS, disable cluster cache | 
| external_ip | string | No | Public IP address | 
| external_ipv6 | string | No | Public IPv6 address | 
| internal_ip | string | No | Internal IP address | 
Return Value
- True: If the operation is successful.
- False: If the operation fails.
Example
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
node_id=1
gateway_id=1
ok = self.client.put_node(node_id, \
    gateway_id=gateway_id, name='test', \
    is_gray=False, status=1, external_ip='127.0.0.1', \
    external_ipv6='::1', internal_ip='127.0.0.1')
del_node
node = del_node(node_id, gateway_id=None)
此方法用於根據節點 ID 刪除指定節點。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| node_id | number | 是 | 要刪除的節點的 ID | 
| gateway_id | number | 否 | 閘道器叢集的 ID。如果未指定,系統將遍歷查詢對應的節點 | 
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
true
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
success = client.del_node(1)
success = client.del_node(1, gateway_id=1)
lmdb_backup
ok = lmdb_backup()
此方法用於觸發 LMDB 的備份。如果備份成功,方法將返回 True。如果備份失敗,則返回一個包含失敗 Node 節點的 dict 資訊,其中 key 是 Node ID,value 是失敗的原因。
您可以透過呼叫 node_sync_status 介面來確認備份是否成功。如果該介面中節點的 backup_time 大於 lmdb_backup() 方法的呼叫時間,那麼可以認為該節點的備份已成功執行。
返回值
- True:表示備份成功。
- False:表示備份失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
result = self.client.lmdb_backup()
get_global_cert_referenced
result = get_global_cert_referenced(id)
此方法用於獲取使用了指定全域性證書的應用列表。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| id | number | 是 | 全域性證書 ID | 
返回值
- data:返回一個包含應用資訊的list型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
global_cert_id = 1
result = client.get_global_cert_referenced(global_cert_id)
get_all_partition_lua_module
data = get_all_partition_lua_module(partition_id)
此方法用於獲取指定分割槽的所有 Lua 模組。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| partition_id | number | 是 | 分割槽的唯一識別符號 ID | 
返回值
- data:返回一個列表(list),包含了所查詢分割槽的全部 Lua 模組資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
partition_id = 1
result = client.get_all_partition_lua_module(partition_id)
get_partition_lua_module
data = get_partition_lua_module(partition_id, module_id)
此方法用於獲取指定分割槽中的指定 lua 模組。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| partition_id | number | 是 | 分割槽 ID | 
| module_id | number | 是 | 模組 ID | 
返回值
- data:返回一個 dict型別的全域性 Lua 模組資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
partition_id = 1
module_id = 1
result = client.get_partition_lua_module(partition_id, module_id)
new_partition_lua_module
data = new_partition_lua_module(partition_id, name, code)
此方法用於向指定分割槽新增一個新的 Lua 模組。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| partition_id | number | 是 | 分割槽 ID | 
| name | string | 是 | 模組名稱 | 
| code | string | 是 | 模組程式碼 | 
返回值
- data:返回一個字典型別的資料,包含新建的 Lua 模組的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
partition_id = 1
name = "example"
code = """
local _M = {}
return _M
"""
result = client.new_partition_lua_module(partition_id, name, code)
put_partition_lua_module
ok = put_partition_lua_module(partition_id, module_id, name, code)
此方法用於編輯指定分割槽的特定 lua 模組。
引數
| 名稱 | 資料型別 | 是否必須 | 詳細描述 | 
|---|---|---|---|
| partition_id | number | 是 | 分割槽的 ID | 
| module_id | number | 是 | 模組的 ID | 
| name | string | 否 | 模組的名稱 | 
| code | string | 否 | 模組的程式碼 | 
返回值
- True:表示操作成功。
- False:表示操作失敗。
例如:
true
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
partition_id = 1
module_id = 1
name = "example"
code = """
local _M = {}
return _M
"""
result = self.client.put_partition_lua_module(partition_id, module_id, name, code)
del_partition_lua_module
result = del_partition_lua_module(partition_id, module_id)
此方法用於刪除指定分割槽內的特定 lua 模組。
引數
| 名稱 | 資料型別 | 是否必要 | 描述 | 
|---|---|---|---|
| partition_id | number | 是 | 分割槽 ID | 
| module_id | number | 是 | 模組 ID | 
返回值
- 若成功則返回 True。
- 若失敗則返回 False。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
partition_id = 1
module_id = 1
result = self.client.del_partition_lua_module(partition_id, module_id)
conv_crl_to_lua_module
code = conv_crl_to_lua_module(crl_files)
此方法用於將 CRL 檔案轉換為 Lua 模組。
引數
| 引數名 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| crl_files | array | 是 | CRL 檔案陣列 | 
返回值
- code:轉換完成後的 Lua 模組程式碼。
示例
import sys
from edge2client import Edge2Client
client = Edge2Client('https://your-admin-addr', 'your-admin-user', 'your-admin-password')
crl_files = ["~/test.crl"]
code = client. conv_crl_to_lua_module(crl_files)
client.login()
partition_id = 1
name = "crl_test.com"
result = client.new_partition_lua_module(partition_id, name, code)
mod_id = result["id"]
result = client.put_partition_lua_module(partition_id, mod_id, name, code)
print(result)
get_all_candidate_node
nodes = get_all_candidate_node()
此方法用於獲取所有待批准的節點,隨後可以透過呼叫 approve_candidate_node 介面來將這些節點批准加入到指定的叢集。
返回值
- nodes:返回的是一個 list型別,包含所有候選閘道器節點的詳細資訊。
例如:
[
    {
        "priv_hash": "0ab3a37cfea7d044c93a46712053a081",
        "external_ipv6": "",
        "external_ip": "172.20.0.2",
        "hostname": "test-edge-node-75c5bf6969-65tgg\n",
        "client_city": "/",
        "internal_ip": "10.244.0.3",
        "os": "Linux\n3.10.0-1127.19.1.el7.x86_64\n",
        "hardware_id": "3e20ff1b92ca06e03b2ab0d877687662",
        "mac_address": "9e:18:28:f5:1b:d5",
        "csr": "..."
    }
]
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
nodes = client.get_all_candidate_node()
approve_candidate_node
ok = approve_candidate_node(gateway_id, mac_address, internal_ip=None, external_ip=None, name=None, external_ipv6=None, status=1)
此方法用於批准 MAC 地址為 mac_address 的節點加入到 ID 為 gateway_id 的閘道器叢集。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| gateway_id | number | 是 | 閘道器叢集的 ID,未指定時將透過遍歷方式查詢對應節點 | 
| mac_address | string | 是 | 節點的 MAC 地址 | 
| internal_ip | string | 否 | 節點的內部 IPv4 地址 | 
| external_ip | string | 否 | 節點的外部 IPv4 地址 | 
| name | string | 否 | 節點的名稱,若未命名則預設使用主機名 | 
| external_ipv6 | string | 否 | 節點的外部 IPv6 地址 | 
| status | string | 否 | 節點狀態,0 代表禁用,1 代表啟用,2 代表斷開(禁用 DNS 和禁用叢集內快取共享) | 
返回值
- True:批准成功。
- False:批准失敗。
示例
以下示例說明如何批准主機名稱為 “new-edge-node” 的節點加入到 ID 為 1 的閘道器叢集。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
def first_address(addrs):
    return addrs.split(' ')[0]
gateway_id=1
nodes = client.get_all_candidate_node()
for i, node in enumerate(nodes):
    if nodes.get('hostname') == "new-edge-node":
        ok = client.approve_candidate_node(gateway_id, first_address(nodes.get('mac_address')))
        break
get_waf_logs
data, count = get_waf_logs(app_id, page=1, pagesize=20, request_id=None,
                  start_time=None, end_time=None, host=None, header=None,
                  rule_set_id=None, resp_status=None, action=None,
                  remote_addr=None, show_all=False)
此方法用於檢索指定應用的 WAF 日誌。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| app_id | number | 是 | HTTP 應用的 ID | 
| page | number | 否 | 指定要檢索的頁碼 | 
| pagesize | number | 否 | 指定每頁的日誌數量 | 
| request_id | string | 否 | 根據特定的請求 ID 檢索日誌 | 
| start_time | number | 否 | 根據特定的時間範圍檢索日誌,開始時間為 Unix 時間戳,單位是秒 | 
| end_time | number | 否 | 根據特定的時間範圍檢索日誌,結束時間為 Unix 時間戳,單位是秒 | 
| host | string | 否 | 根據特定的 host 檢索日誌 | 
| header | string | 否 | 根據特定的請求頭資訊檢索日誌 | 
| rule_set_id | number | 否 | 根據特定的規則集 ID 檢索日誌 | 
| resp_status | number | 否 | 根據特定的 HTTP 響應狀態碼檢索日誌 | 
| action | string | 否 | 根據特定的動作檢索日誌,取值 log, block, edge-captcha, hcaptcha, redirect, page-template, close-connection, redirect-validate, js-challenge | 
| remote_addr | string | 否 | 根據特定的客戶端地址檢索日誌 | 
| show_all | bool | 否 | 標識是否獲取所有日誌,當為 False 時,不返回未達到閾值的日誌,為 True 時,無論閾值大小均返回 | 
返回值
- data: 此次檢索到的日誌列表,list型別。
- count: 日誌的總數量,注意這不是此次檢索到的日誌數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
page = 1
while True:
    logs, count = get_waf_logs(app_id, page=page, pagesize=10,
                                start_time=1698888000,
                                end_time=1699988000)
    if logs is None:
        break
    if len(logs) <= 0:
        break
    for log in logs:
        print(log)
    page = page + 1
get_dos_logs
data, count = get_dos_logs(app_id, page=1, pagesize=20, request_id=None,
                     start_time=None, end_time=None, host=None, uri=None,
                     user_agent=None, action=None, remote_addr=None):
此方法用於檢索指定應用的 CC 日誌。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| app_id | number | 是 | HTTP 應用的 ID | 
| page | number | 否 | 指定要檢索的頁碼 | 
| pagesize | number | 否 | 指定每頁的日誌數量 | 
| request_id | string | 否 | 根據特定的請求 ID 檢索日誌 | 
| start_time | number | 否 | 根據特定的時間範圍檢索日誌,開始時間為 Unix 時間戳,單位是秒 | 
| end_time | number | 否 | 根據特定的時間範圍檢索日誌,結束時間為 Unix 時間戳,單位是秒 | 
| host | string | 否 | 根據特定的 host 檢索日誌 | 
| uri | string | 否 | 根據特定的 URI 資訊檢索日誌 | 
| user_agent | number | 否 | 根據特定的 User Agent 檢索日誌 | 
| action | string | 否 | 根據特定的動作檢索日誌,取值 close_connection, error_page, enable_hcaptcha, enable_edge_captcha, redirect_validate, js_challenge, delay | 
| remote_addr | string | 否 | 根據特定的客戶端地址檢索日誌 | 
返回值
- data: 此次檢索到的日誌列表,list型別。
- count: 日誌的總數量,注意這不是此次檢索到的日誌數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
page = 1
while True:
    logs, count = get_dos_logs(app_id, page=page, pagesize=10,
                                start_time=1698888000,
                                end_time=1699988000)
    if logs is None:
        break
    if len(logs) <= 0:
        break
    for log in logs:
        print(log)
    page = page + 1
get_global_page_template
data = get_global_page_template(id)
此方法用於獲取指定的全域性頁面模板。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| id | number | 是 | 全域性頁面模板的 ID | 
返回值
- data: 此次檢索到的全域性頁面模板,dict型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_global_page_template(id)
get_all_global_page_templates
data = get_all_global_page_templates()
此方法用於獲取所有的全域性頁面模板。
返回值
- data: 此次檢索到的全域性頁面模板列表,list型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
templates = client.get_all_global_page_templates()
for t in templates:
    print(t)
del_global_page_template
ok = del_global_page_template(id)
此方法用於刪除指定的全域性頁面模板。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| id | number | 是 | 全域性頁面模板的 ID | 
返回值
- True:刪除成功。
- False:刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.del_global_page_template(id)
new_global_page_template
id = new_global_page_template(name, content)
此方法用於建立新的全域性頁面模板。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| name | string | 是 | 全域性頁面模板的名稱 | 
| content | string | 是 | 全域性頁面模板的內容 | 
返回值
- id:返回新建的全域性頁面模板的唯一 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
name = "default"
content = """
<!doctype html>
<html>
<head>
  <title>404 NOT FOUND</title>
</head>
<body>
  ::CLIENT_IP::
</body>
</html>
"""
id = client.new_global_page_template(name=name, content=content)
put_global_page_template
ok = put_global_page_template(id, name=None, content=None)
此方法用於更新指定的全域性頁面模板。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| id | number | 是 | 全域性頁面模板的 ID | 
| name | string | 否 | 全域性頁面模板的名稱 | 
| content | string | 否 | 全域性頁面模板的內容 | 
至少需指定 name 與 content 的其中一個。
返回值
- True:更新成功。
- False:更新失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
name = "newname"
ok = client.put_global_page_template(name=name, content=content)
get_app_basic_auth_user_group
data = get_app_basic_auth_user_group(id, app_id=None)
此方法用於獲取指定應用中指定的 Basic Auth 使用者組資訊。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| id | number | 是 | Basic Auth 使用者組的 ID | 
| app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 | 
返回值
- data: 此次檢索到的 Basic Auth 使用者組資訊,dict型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
group_id = 1
data = client.get_app_basic_auth_user_group(group_id)
get_all_app_basic_auth_user_groups
data = get_all_app_basic_auth_user_groups(app_id=None)
此方法用於獲取指定應用中所有 Basic Auth 使用者組資訊。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 | 
返回值
- data: 此次檢索到的 Basic Auth 使用者組列表,list型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
# client.use_app(app_id)
groups = client.get_all_app_basic_auth_user_groups(app_id)
for g in groups:
    print(g)
del_app_basic_auth_user_group
ok = del_app_basic_auth_user_group(id, app_id=None)
此方法用於刪除指定應用中指定的 Basic Auth 使用者組資訊。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| id | number | 是 | Basic Auth 使用者組的 ID | 
| app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 | 
返回值
- True:刪除成功。
- False:刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
group_id = 1
ok = client.del_app_basic_auth_user_group(group_id)
new_app_basic_auth_user_group
id = new_app_basic_auth_user_group(name, label=None, app_id=None)
此方法用於在指定應用中建立 Basic Auth 使用者組。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| name | string | 是 | Basic Auth 使用者組的名稱 | 
| label | string | 否 | Basic Auth 使用者組的標籤 | 
| app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 | 
返回值
- id:返回新建的 Basic Auth 使用者組的唯一 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
name = "default"
label = "default label"
id = client.new_app_basic_auth_user_group(name, label)
put_app_basic_auth_user_group
ok = put_app_basic_auth_user_group(id, name=None, label=None, app_id=None)
此方法用於更新指定應用中指定的 Basic Auth 使用者組資訊。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| id | number | 是 | Basic Auth 使用者組的 ID | 
| name | string | 否 | Basic Auth 使用者組的名稱 | 
| label | string | 否 | Basic Auth 使用者組的標籤 | 
| app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 | 
至少需指定 name 與 label 的其中一個。
返回值
- True:更新成功。
- False:更新失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
group_id = 1
name = "new-name"
label = "new-label"
ok = client.put_app_basic_auth_user_group(group_id, name=name, label=label)
get_app_basic_auth_user
data = get_app_basic_auth_user(id, group_id, app_id=None)
此方法用於獲取指定應用的 Basic Auth 使用者組中的指定的使用者資訊。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| id | number | 是 | Basic Auth 使用者的 ID | 
| group_id | number | 是 | Basic Auth 使用者組的 ID | 
| app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 | 
返回值
- data: 此次檢索到的 Basic Auth 使用者組資訊,dict型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
user_id = 1
group_id = 1
data = client.get_app_basic_auth_user(user_id, group_id)
get_app_basic_auth_users_in_group
data = get_app_basic_auth_users_in_group(group_id, app_id=Nonee)
此方法用於獲取指定應用的 Basic Auth 使用者組中所有使用者資訊。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| group_id | number | 是 | Basic Auth 使用者組的 ID | 
| app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 | 
返回值
- data: 此次檢索到的 Basic Auth 使用者列表,list型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
group_id = 1
users = client.get_app_basic_auth_users_in_group(group_id)
for u in users:
    print(u)
del_app_basic_auth_user
ok = del_app_basic_auth_user(id, group_id, app_id=None)
此方法用於刪除指定應用的 Basic Auth 使用者組中指定的使用者資訊。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| id | number | 是 | Basic Auth 使用者的 ID | 
| group_id | number | 是 | Basic Auth 使用者組的 ID | 
| app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 | 
返回值
- True:刪除成功。
- False:刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
user_id = 1
group_id = 1
ok = client.del_app_basic_auth_user(user_id, group_id)
new_app_basic_auth_user
id = new_app_basic_auth_user(group_id, username, password, app_id=None)
此方法用於在指定應用的 Basic Auth 使用者組中建立使用者。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| group_id | number | 是 | Basic Auth 使用者所屬的使用者組的 ID | 
| username | string | 是 | Basic Auth 使用者的名稱 | 
| password | string | 是 | Basic Auth 使用者的密碼 | 
| app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 | 
返回值
- id:返回新建的 Basic Auth 使用者組的唯一 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
group_id = 1
username = "username1"
password = "password"
id = client.new_app_basic_auth_user(group_id, username, password)
put_app_basic_auth_user
ok = put_app_basic_auth_user(id, group_id, username, password, app_id=None)
此方法用於更新指定應用的 Basic Auth 使用者組中指定的使用者資訊。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| id | number | 是 | Basic Auth 使用者的 ID | 
| group_id | number | 是 | Basic Auth 使用者所屬的使用者組的 ID | 
| username | string | 是 | Basic Auth 使用者的名稱 | 
| password | string | 是 | Basic Auth 使用者的密碼 | 
| app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 | 
返回值
- True:更新成功。
- False:更新失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
user_id = 1
group_id = 1
username = "new-username"
password = "new-password"
ok = client.put_app_basic_auth_user(user_id, group_id, username, password)
new_acme_provider
provider_id = new_acme_provider(name=None, endpoint=None,
                                eab_hmac_key=None, eab_kid=None,
                                email=None)
此方法用於新增 ACME 提供商/頒發者。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| name | string | 是 | ACME 提供商的名稱 | 
| endpoint | string | 是 | 用於獲取 ACME 證書的端點資訊 | 
| eab_hmac_key | string | 否 | 與 ACME 提供商提供的賬戶繫結的 HMAC 金鑰 | 
| eab_kid | number | 否 | 與 ACME 提供商提供的賬戶繫結的金鑰識別符號 | 
| number | 否 | 與 ACME 提供商提供的賬戶繫結的郵箱 | 
返回值
- provider_id:新建立的 ACME 提供商資訊的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
endpoint = "https://acme.zerossl.com/v2/DV90"
email = "oredge-sdk@openresty.com"
eab_hmac_key = "abcdefghijklmnopqrstuvwxyz"
eab_kid = "_abcdefghijklmnopqrstuvwxyz_dL4"
provider_id = self.client.new_acme_provider(name="zerossl",
                                            endpoint=endpoint,
                                            eab_hmac_key=eab_hmac_key,
                                            eab_kid=eab_kid, email=email)
put_acme_provider
ok = put_acme_provider(**kwargs)
此方法用於修改 ACME 提供商的資訊。
引數
| 名稱 | 資料型別 | 是否必須 | 描述 | 
|---|---|---|---|
| id | integer | 是 | ACME 提供商的 ID | 
| name | string | 是 | ACME 提供商的名稱 | 
| endpoint | string | 是 | 用於獲取 ACME 證書的端點資訊 | 
| eab_hmac_key | string | 否 | 與 ACME 提供商提供的賬戶繫結的 HMAC 金鑰 | 
| eab_kid | number | 否 | 與 ACME 提供商提供的賬戶繫結的金鑰識別符號 | 
| number | 否 | 與 ACME 提供商提供的賬戶繫結的郵箱 | 
返回值
- 返回 True:表示成功。
- 返回 False:表示失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
new_endpoint = "https://acme.zerossl.com/v2/DV90new"
new_email = "oredge-sdk-new@openresty.com"
new_eab_hmac_key = "abcdefghijklmnopqrstuvwxyz-new"
new_eab_kid = "_abcdefghijklmnopqrstuvwxyz_dL4_new"
ok = self.client.put_acme_provider(id=provider_id,
                                    name=f"new_zerossl",
                                    endpoint=new_endpoint,
                                    eab_hmac_key=new_eab_hmac_key,
                                    eab_kid=new_eab_kid, email=new_email)
get_acme_provider
data = get_acme_provider(provider_id)
此方法用於獲取 ACME 提供商的資訊。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| id | number | 是 | ACME 提供商的唯一識別符號 | 
返回值
- data:返回一個 dict型別的資料,包含 ACME 提供商的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
provider_id = 1
data = client.get_acme_provider(provider_id)
get_all_acme_providers
data = get_all_acme_providers()
此方法用於獲取所有 ACME 提供商的資訊。
返回值
- data:返回一個 list型別的 ACME 提供商的資訊。
應用示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_acme_providers()
del_acme_provider
ok = del_acme_provider(id)
此方法用於刪除 ACME 提供商的資訊。
引數
| 引數名 | 資料型別 | 是否必選 | 描述 | 
|---|---|---|---|
| id | number | 是 | ACME 提供商記錄的唯一識別符號 | 
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
provider_id = 1
ok = client.del_acme_provider(provider_id)
以上程式碼展示瞭如何使用 Edge2Client 刪除特定的 ACME 提供商記錄。
get_acme_logs
data, count = client.get_acme_logs(cert_id)
此方法用於獲取指定 ACME 證書的簽發日誌,最多獲取 100 條
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| cert_id | number | 是 | ACME 證書的 ID | 
返回值
- data: 此次檢索到的日誌列表,list型別。
- count: 日誌的總數量,注意這不是此次檢索到的日誌數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
cert_id = 1
logs, count = client.get_acme_logs(cert_id)
get_node_error_logs
data, count = client.get_node_error_logs(page=1, page_size=10,
                       node_id=None, req_id=None, level=None,
                       start_time=None, end_time=None)
此方法用於獲取 Edge Node 的錯誤日誌。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| page | number | 否 | 指定要檢索的頁碼 | 
| page_size | number | 否 | 指定每頁的日誌數量 | 
| node_id | string | 否 | 僅檢索指定 一個或多個 Edge Node 的錯誤日誌 | 
| req_id | string | 否 | 僅檢索指定的請求的錯誤日誌 | 
| level | string | 否 | 僅檢索指定級別的錯誤日誌,日誌級別有:stderr, emerg, alert, crit, error, warn, notice, info, debug | 
| start_time | number | 否 | 根據特定的時間範圍檢索日誌,開始時間為 Unix 時間戳,單位是秒 | 
| end_time | number | 否 | 根據特定的時間範圍檢索日誌,結束時間為 Unix 時間戳,單位是秒 | 
返回值
- data: 此次檢索到的日誌列表,list型別。
- count: 日誌的總數量,注意這不是此次檢索到的日誌數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
logs, count = client.get_node_error_logs(page=1, page_size=10,
                            start_time=1698888000,
                            end_time=1699988000)
get_admin_error_logs
data, count = client.get_admin_error_logs(page=1, page_size=10, level=None,
                       start_time=None, end_time=None)
此方法用於獲取 Edge Admin 的錯誤日誌。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| page | number | 否 | 指定要檢索的頁碼 | 
| page_size | number | 否 | 指定每頁的日誌數量 | 
| level | string | 否 | 僅檢索指定級別的錯誤日誌,日誌級別有:stderr, emerg, alert, crit, error, warn, notice, info, debug | 
| start_time | number | 否 | 根據特定的時間範圍檢索日誌,開始時間為 Unix 時間戳,單位是秒 | 
| end_time | number | 否 | 根據特定的時間範圍檢索日誌,結束時間為 Unix 時間戳,單位是秒 | 
返回值
- data: 此次檢索到的日誌列表,list型別。
- count: 日誌的總數量,注意這不是此次檢索到的日誌數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
logs, count = client.get_admin_error_logs(page=1, page_size=10,
                            start_time=1698888000,
                            end_time=1699988000)
get_log_server_error_logs
data, count = client.get_log_server_error_logs(page=1, page_size=10, level=None,
                       start_time=None, end_time=None)
此方法用於獲取 Edge Log Server 的錯誤日誌。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| page | number | 否 | 指定要檢索的頁碼 | 
| page_size | number | 否 | 指定每頁的日誌數量 | 
| level | string | 否 | 僅檢索指定級別的錯誤日誌,日誌級別有:stderr, emerg, alert, crit, error, warn, notice, info, debug | 
| start_time | number | 否 | 根據特定的時間範圍檢索日誌,開始時間為 Unix 時間戳,單位是秒 | 
| end_time | number | 否 | 根據特定的時間範圍檢索日誌,結束時間為 Unix 時間戳,單位是秒 | 
返回值
- data: 此次檢索到的日誌列表,list型別。
- count: 日誌的總數量,注意這不是此次檢索到的日誌數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
logs, count = client.get_log_server_error_logs(page=1, page_size=10,
                            start_time=1698888000,
                            end_time=1699988000)
get_http_app_error_logs
data, count = client.get_http_app_error_logs(page=1, page_size=10, app_id=None,
                       node_id=None, req_id=None, level=None,
                       start_time=None, end_time=None)
此方法用於獲取指定 HTTP 應用的錯誤日誌。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| app_id | number | 否 | 僅檢索指定 HTTP 應用的錯誤日誌 | 
| page | number | 否 | 指定要檢索的頁碼 | 
| page_size | number | 否 | 指定每頁的日誌數量 | 
| node_id | string | 否 | 僅檢索指定一個或多個 Edge Node 的錯誤日誌 | 
| req_id | string | 否 | 僅檢索指定的請求的錯誤日誌 | 
| level | string | 否 | 僅檢索指定級別的錯誤日誌,日誌級別有:stderr, emerg, alert, crit, error, warn, notice, info, debug | 
| start_time | number | 否 | 根據特定的時間範圍檢索日誌,開始時間為 Unix 時間戳,單位是秒 | 
| end_time | number | 否 | 根據特定的時間範圍檢索日誌,結束時間為 Unix 時間戳,單位是秒 | 
返回值
- data: 此次檢索到的日誌列表,list型別。
- count: 日誌的總數量,注意這不是此次檢索到的日誌數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
logs, count = client.get_http_app_error_logs(app_id=app_id, page=1, page_size=10,
                            req_id="000028800bac65d7fed03afd",
                            start_time=1698888000,
                            end_time=1699988000)
get_upstream_healthcheck_status
data = client.get_upstream_healthcheck_status(app_id, upstream_id, app_type="http")
此方法用於獲取指定 HTTP 應用上游的健康檢查狀態。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| app_id | number | 否 | 僅檢索指定 HTTP 應用中的上游 | 
| upstream_id | number | 否 | 僅檢索指定上游的健康檢查狀態 | 
| app_type | number | 否 | 要檢索的應用型別,可選 http、stream、k8s_http、k8s_stream | 
返回值
- data: 此次檢索到的應用上游健康檢查資料。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
upstream_id = 1
data = self.client.get_upstream_healthcheck_status(app_id, upstream_id)
get_global_upstream_healthcheck_status
data = client.get_global_upstream_healthcheck_status(upstream_id, app_type="http")
此方法用於獲取指定全域性應用上游的健康檢查狀態。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| upstream_id | number | 否 | 僅檢索指定上游的健康檢查狀態 | 
| app_type | number | 否 | 要檢索的應用型別,可選 http、stream、k8s_http、k8s_stream | 
返回值
- data: 此次檢索到的全域性上游健康檢查資料。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
upstream_id = 1
data = self.client.get_global_upstream_healthcheck_status(upstream_id)
get_el
data = client.get_el()
獲取頁面規則的前置和後置 Edgelang 程式碼塊配置。
返回值
- before: 頁面規則前置執行的 Edgelang 程式碼塊
- after: 頁面規則後置執行的 Edgelang 程式碼塊
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_el()
print(f"Pre code: {data['before']}")
print(f"Post code: {data['after']}")
new_el
ok = client.new_el(phase, code, pre=False, post=False)
配置頁面規則的前置或後置 Edgelang 程式碼塊。
引數
| 引數名 | 資料型別 | 是否必需 | 描述 | 
|---|---|---|---|
| phase | string | 是 | 執行階段,當前僅支援:req-rewrite | 
| code | string | 是 | 要設定的 Edgelang 程式碼內容 | 
| pre | bool | 否 | 是否設定為前置程式碼塊(預設:False) | 
| post | bool | 否 | 是否設定為後置程式碼塊(預設:False) | 
返回值
- True:設定成功
- False:設定失敗
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
# 設定前置 Edgelang 程式碼
pre_code = """
true =>
    say("Page rule execution started"),
    done;
"""
ok = client.new_el("req-rewrite", pre_code, pre=True)
if ok:
    print("Pre code set successfully")
# 設定後置 Edgelang 程式碼
post_code = """
true =>
    say("Page rule execution completed"),
    done;
"""
ok = client.new_el("req-rewrite", post_code, post=True)
if ok:
    print("Post code set successfully")