日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ryu oslo学习总结

發布時間:2024/4/15 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ryu oslo学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

? ? 前段時間開始認真看了一下Ryu的源碼,發現oslo是一個非常方便的命令行解析庫,可以用于CLICONF的解析。osloOpenStack發起的項目,全稱為OpenStack?Common?Libraries,是OpenStack?Projects共享的基礎庫。

oslo

? ? 在RYU的目錄下可以找到cfg.py文件,這個文件中importoslo的相關模塊,以便調用時減少引用數目。從文件中可以發現oslo.config.cfg文件是關鍵文件,其在系統中的文件位置在:/usr/local/lib/python2.7/dist-packages/oslo/config/cfg.py。想查看源碼的讀者可以自行查看。在該cfg.py文件中?定義了ConfigOpts類,包含了_opts,?_groups等成員變量。該類完成了命令行和配置參數的解析。

如果要快速學習某一個知識,最好的辦法就是把它用起來。所以首先我會介紹一個入門的教程。如果你沒有看懂,可以去看原始的教程。

首先安裝python-virtualenv,此python庫可以用于創建一個虛擬的,與外界隔離的運行環境,聽起來和docker好像有點像。

然后修改app.conf。添加了兩個group:simplemorestuffsimple組中有一個BoolOpt:enablemorestuff組有StrOpt,?ListOpt,?DictOpt,?IntOpt,FloatOpt

修改app.py文件。首先定義兩個group,再對兩個groupoption進行定義。最后使用registergroupregisteropts函數來完成groupoption的注冊。

完成之后,運行app.py文件。可以查看到相關輸出。?

回到RYU中,之前一篇博客介紹了Ryumain函數。在ryu/ryu/cmd/manager.py文件中我們可以看到如下的代碼:

? ? 以上的注冊了三個Option,其中的app-listsapp參數是運行ryu-manager時的參數,即APP的名稱。在以下的main函數中,我們可以看到首先獲取了輸入的參數,若參數為空,則默認開啟ofp_handler應用。

? ? oslo模塊使用能夠使得整個工程的不同模塊可以使用同一個配置文件,從而減少了命令沖突的可能,此外,oslo提供的模板,可以讓命令解析更方便。oslo模塊以此優勢被廣泛應用與大型項目中,如openstack

Argparse

? ? oslo模塊中使用了argparseargparsepython標準庫中的模塊。以下以一個簡單例子介紹此模塊,更詳細的中文教程,可以查看《Python中的命令行解析工具介紹》。

argparse模塊中定義了ArgumentParser類。我們可以調用該類的add_argument函數添加參數。其函數說明如下:

從以上說明可以看出,add_argument函數可以添加action,?type,?choiceshelp等重要的屬性。具體參數解釋,引用自《Python中的命令行解析工具介紹》如下:

?■name?or?flags?-?參數的名字.

?■action?-?遇到參數時的動作,默認值是storestoreconst,表示賦值為constappend,將遇到的值存儲成列表,也就是如果參數重復則會保存多個值;?appendconst,將參數規范中定義的一個值保存到一個列表;

?■count,存儲遇到的次數;此外,也可以繼承argparse.Action自定義參數解析;

?■nargs?-?參數的個數,可以是具體的數字,或者是?號,當不指定值時對于Positional?argument使用default,對于Optional?argument使用const;或者是*號,表示0或多個參數;或者是+號表示1或多個參數.

?■const?-?actionnargs所需要的常量值.

?■default?-?不指定參數時的默認值.

?■type?-?參數的類型.

?■choices?-?參數允許的值.

?■required?-?可選參數是否可以省略(僅針對optionals).

?■help?-?參數的幫助信息,當指定為argparse.SUPPRESS時表示不顯示該參數的幫助信息.

?■metavar?-?usage說明中的參數名稱,對于必選參數默認就是參數名稱,對于可選參數默認是全大寫的參數名稱.

?■dest?-?解析后的參數名稱,默認情況下,對于可選參數選取最長的名稱,中劃線轉換為下劃線.

使用案例舉例如下:

可以通過一下命令運行prog.py去查看到相關信息:

總結

?每一個項目都會有自己的CLI或者配置文件,而使用oslo可以簡化命令解析的問題。比自己使用sys.argv手動寫解析要更高效且優雅。所以推薦大家在工程中使用oslo。后續會繼續推出Ryu學習系列文章,希望能在記錄自己學習過程的同時,給其他人提供更多的幫助。

本文來源于SDNLAB,可點擊此閱讀原文。如果您對本文感興趣,可參與以下互動方式與作者近距離交流。

(1)?微博(http://weibo.com/sdnlab/

(2)?微信(賬號SDNLAB)

(3)?QQ

? ? SDN研究群(214146842)

? ? OpenDaylight研究群(194240432)








轉載于:https://my.oschina.net/sdnlab/blog/360855

總結

以上是生活随笔為你收集整理的Ryu oslo学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。