1.首先什麼是neutronclient
neutronclient就是我們的命令列客戶端**
上圖是所有的neutron的可執行python指令碼,neutron就是今天我們要分析的neutron-client,我們可以從指令碼中看出
2. 分析neutronclient原始碼
2.1首先我們分析一下原始碼的目錄結構
2.2 **流程
(1).首先從shell.py的main函式進入生成neutronshell類,然後啟動neutronshell的run函式,因為我們是在命令列中使用neutron說叫neutronshell
(2).neutronshell中的run函式會呼叫run_subcommand函式,執行某一條命令
(3).run_subcommand函式通過解析命令呼叫run_command函式執行命令
(4).然後會到某一條命令下執行run,這裡我們舉例執行disassociatefloatingip命令的run函式
(5).run函式中主要是呼叫要生成neutronclient我們看一下過程截圖
(5.2).呼叫基類neutroncommand中的get_client函式
(5.3).client_manager是在shell.py的authenticate_user函式中被賦予,主要是clientmanager類
(5.4).clientmanager主要是在common模組中,從(5.2)的get_client函式中可以看出主要是返回client_manager的neutron引數作為neutronclient
可以看出主要是乙個clientcache物件
引數make_client見下面
(5.5)make_client主要是在neutronclient下neutron的client.py檔案下
通過get_client_class函式和上面的api_versions可以看出主要生成的客戶端是
在'neutronclient.v2_0.client.client 這個模組下
(5.6).這個client在他的基類clienbase中需要有底層基於通訊的client
這個httpclient就是neutronclient下面client.py檔案下的
總結從上面可以看出client端的生成是從**目錄中由里向外調的
3.再介紹一下command類
這裡使用了cliff框架,所有的命令類都繼承自command.command,它的子類是openstackcommand,openstackcommand的子類是neutroncommand,然後主要把neutorn中的命令分為create,update,delete,list和show5種,所以在neutroncommand命令有5個子類,然後對於每一種網路資源,比如network可就是繼承上面的5個類生產network的5個資源
AbstractCollection原始碼分析
abstractcollection抽象類提供了collection的骨架實現,collection分析請看 這裡直接看它的 是如何實現的.public abstract iterator iterator 該方法沒有實現.public abstract int size 該方法沒有實現.publi...
ThreadPoolExecutor原始碼閱讀
執行緒池解決兩個問題 一是復用執行緒,減少建立銷毀執行緒帶來系統開銷 二是限定系統資源使用邊界,避免大量執行緒消耗盡系統記憶體 適用於互不依賴,執行時間短,不需要對執行緒控制操作的執行緒 新增任務時,1.若執行緒數量小於corepoolsize,則新增執行緒執行任務 2.若執行緒數量大於等於core...
OrangePi One Android 原始碼編譯
一 系統環境搭建參照 二 lichee原始碼編譯 1.檢視help build.sh h2.配置核心 cd linux 3.4 make arch arm menuconfig 進入配置頁面,上下移動列表,空格是選擇列表,左右移動選擇退出選項 3.首次編譯執行清除 在 lichee linux3.4...