neutron client原始碼分析

2021-07-25 14:54:00 字數 2120 閱讀 9072

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...