最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python開發(fā)云主機類型管理腳本分享

 更新時間:2023年02月01日 09:00:12   作者:cloudfeyn費冰  
這篇文章主要為大家詳細介紹了如何基于Python開發(fā)一個云主機類型管理腳本,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

開發(fā)flavor_manager.py程序,來完成云主機類型管理的相關操作。

該文件擁有以下功能:

  • 根據(jù)命令行參數(shù),創(chuàng)建一個云主機類型,返回response。
  • 查詢admin賬戶下所有的云主機類型
  • 查詢給定具體名稱的云主機類型
  • 支持刪除指定的id云主機類型

操作并不復雜,程序也相對較簡單,大致分為兩大部分

一,解析傳入的參數(shù),將參數(shù)轉化為程序使用的變量

二,通過openstacksdk,使用獲得的變量完成相應行為。

基礎

首先構建我們的程序主題,肯定是需要argparse模塊,那么我們先把argparse模塊添加進我們的程序。

 import argparse
 ?
 parse = argparse.ArgumentParser()
 args = parse.parse_args()

這做不了什么,也不能滿足題目的要求,所以我做出改變,既然我們需要讓程序擁有四種功能,那肯定要寫出四個相應的實現(xiàn)方法,而參數(shù)解析是必須的,那么我們需要這樣一個操作,當我們首先解析出需要的操作時,就進行反饋,將繼續(xù)的參數(shù)解析到相應的功能里,這樣就把四種功能分開,整個程序會變得很整潔。

創(chuàng)建解析對象

再回來看看題目,四種功能使用位置參數(shù)來分別區(qū)分,既然如此,我們第一個參數(shù)就設置為 option ,用來識別程序需要完成的功能,之后將帶入相應的解析中,并調取需要的程序來完成相應的行為。

整體思路就是這樣,可能你還沒跟上。那么讓我來演示第一步的解析:

 import argparse
 ?
 parse = argparse.ArgumentParser()
 parse.add_argument('option')
 ?
 if __name__ == '__main__':
     args = parse.parse_args()
     print(args.option)

可以預見,這一步后,程序中被添加進了一個必須的參數(shù),也就是我們需要的位置參數(shù),如果你輸入 create,那么程序中的args.option就設置為create,諸如此類,getall ,get,delete。也就很好區(qū)分了,接下來我們需要一個判斷,在不同的判斷中,我們讀入不同的參數(shù)。

解析位置參數(shù)

還是一步一步來吧,我們先以create為例:

 import argparse
 ?
 parse = argparse.ArgumentParser()
 parse.add_argument('option')
 parse.add_argument('-n', '--name', type=str, metavar='name', help='New flavor name')
 parse.add_argument('-m', '--ram', type=int, metavar='size-mb', default=256, help='Memory size in MB (DEFAULT 256M)')
 parse.add_argument('-v', '--vcpus', type=int, metavar='vcpus', default=1, help='Number of vcpus (default 1)')
 parse.add_argument('-d', '--disk', type=int, metavar='size-gb', default=0, help='Disk size in GB (default 0G)')
 parse.add_argument('-id', '--id', type=str, metavar='id', default='auto', help='Unique flavor ID')
 ?
 if __name__ == '__main__':
     args = parse.parse_args()
     if args.option == 'create':
         print("i will create new flavor")

可以看到,我已經(jīng)把create這個行為剝離開來,接下來想必你已經(jīng)知道我要做什么了。讓我們把四種功能補全看看。

解析可選參數(shù)

 import argparse
 ?
 parse = argparse.ArgumentParser()
 parse.add_argument('option')
 parse.add_argument('-n', '--name', type=str, metavar='name', help='New flavor name')
 parse.add_argument('-m', '--ram', type=int, metavar='size-mb', default=256, help='Memory size in MB (DEFAULT 256M)')
 parse.add_argument('-v', '--vcpus', type=int, metavar='vcpus', default=1, help='Number of vcpus (default 1)')
 parse.add_argument('-d', '--disk', type=int, metavar='size-gb', default=0, help='Disk size in GB (default 0G)')
 parse.add_argument('-id', '--id', type=str, metavar='id', default='auto', help='Unique flavor ID')
 ?
 if __name__ == '__main__':
     args = parse.parse_args()
     if args.option == 'create':
         print("i will create new flavor")
     if args.option == 'getall':
         print("i will inquire all flavor")
     if args.option == 'get':
         print("i will get flavor by id")
     if args.option == 'delete':
         print("i will delete flavor by id")

很顯然,我還沒有把具體實現(xiàn)填入,僅僅只是更改了輸出用以區(qū)分,檢查一下我們是否解析了所有的參數(shù)。

填入程序主體

因為接下來我要將實現(xiàn)填入了,這是程序中較為重要的一步。

  • -n指定flavor名稱,數(shù)據(jù)類型為字符串
  • -m指定內存大小,數(shù)據(jù)類型為int,單位M
  • -v指定虛擬cpu個數(shù),數(shù)據(jù)類型為int
  • -d指定磁盤大小,內存大小類型為int,單位G
  • -id指定id,類型為字符串

在程序中我們已經(jīng)做到了這些參數(shù)的解析,那么我們先填入create的實現(xiàn),程序變成了下面這樣。

 import argparse
 import opentack
 ?
 parse = argparse.ArgumentParser()
 parse.add_argument('option')
 parse.add_argument('-n', '--name', type=str, metavar='name', help='New flavor name')
 parse.add_argument('-m', '--ram', type=int, metavar='size-mb', default=256, help='Memory size in MB (DEFAULT 256M)')
 parse.add_argument('-v', '--vcpus', type=int, metavar='vcpus', default=1, help='Number of vcpus (default 1)')
 parse.add_argument('-d', '--disk', type=int, metavar='size-gb', default=0, help='Disk size in GB (default 0G)')
 parse.add_argument('-id', '--id', type=str, metavar='id', default='auto', help='Unique flavor ID')
 ?
 conn = opentack.connect(
     auth_url='http://192.168.10.25:5000',
     username='admin',
     password='passwordadmin',
     project_name='admin',
     project_domain_name='Default',
 )
 ?
 ?
 def create_flavor(name, ram, vcpus, disk, flavorid):
     response = conn.create_flavor(name, ram, vcpus, disk, flavorid=flavorid)
     return response
 ?
 ?
 if __name__ == '__main__':
     args = parse.parse_args()
     if args.option == 'create':
         print(create_flavor(name=args.name, ram=args.ram, vcpus=args.vcpus, disk=args.disk, flavorid=args.id))
     if args.option == 'getall':
         print("i will inquire all flavor")
     if args.option == 'get':
         print("i will get flavor by id")
     if args.option == 'delete':
         print("i will delete flavor by id")

我希望你還能看懂,在這一步,我導入了openstack這個包,我創(chuàng)建了一個連接對象conn,這樣我就能操作openstack,我寫入了一個方法create_flavor并指定了它可以傳入的參數(shù),當option讀入create時,將會調用這個方法,并傳入相應的參數(shù)。由方法中的連接對象調取create_flaovr方法來完成最后的創(chuàng)建,完成后,這個方法將response返回并打印到終端。

我將運行的結果貼在下方:

 (venv) PS D:\Python> python .\demo3.py create -n flavor_small -m 1024 -v 1 -d 10 -id 100000
 openstack.compute.v2.flavor.Flavor(disk=10, OS-FLV-EXT-DATA:ephemeral=0, id=100000, os-flavor-access:is_public=True, name=flavor_small, ram=1024, rxtx_factor=1.0, swap=, vcpus=1, description=None, OS-FLV-DISABLED:disabled=False, extra_specs={}, location=Munch({'cloud': 'zed', 'region_name': '', 'zone': None, 'project': Munch({'id': '80074c3b4d09419e87ba0b8c05ce5164', 'name': 'admin', 'domain_id': None, 'domain_name': 'Default'})}))

很明顯,這是一個正確的輸出,如此,我就不廢話了,將所有功能快速的填入,只需要根據(jù)功能創(chuàng)建剩余的三個方法即可。

 import argparse
 import openstack
 ?
 parse = argparse.ArgumentParser()
 parse.add_argument('option')
 parse.add_argument('-n', '--name', type=str, metavar='name', help='New flavor name')
 parse.add_argument('-m', '--ram', type=int, metavar='size-mb', default=256, help='Memory size in MB (DEFAULT 256M)')
 parse.add_argument('-v', '--vcpus', type=int, metavar='vcpus', default=1, help='Number of vcpus (default 1)')
 parse.add_argument('-d', '--disk', type=int, metavar='size-gb', default=0, help='Disk size in GB (default 0G)')
 parse.add_argument('-id', '--id', type=str, metavar='id', default='auto', help='Unique flavor ID')
 ?
 conn = openstack.connect(
     auth_url='http://192.168.10.25:5000',
     username='admin',
     password='passwordadmin',
     project_name='admin',
     project_domain_name='Default',
 )
 ?
 ?
 def create_flavor(name, ram, vcpus, disk, flavorid):
     response = conn.create_flavor(name, ram, vcpus, disk, flavorid=flavorid)
     return response
 ?
 def getall_flavor():
     response = conn.list_flavors()
     return response
 ?
 def get_flavor(id):
     response = conn.get_flavor_by_id(id)
     return response
 ?
 def delete_flavor(id):
     response = conn.delete_flavor(id)
     return response
 if __name__ == '__main__':
     args = parse.parse_args()
     if args.option == 'create':
         print(create_flavor(args.name, args.ram, args.vcpus, args.disk, args.id))
     if args.option == 'getall':
         print(getall_flavor())
     if args.option == 'get':
         print(get_flavor(args.id))
     if args.option == 'delete':
         print(delete_flavor(args.id))

總結

到這里整個命令行腳本就大體完成了,如果需要別的改動,只需要按照這個思路修改就可以了。更多的argparse模塊的使用可以參照官方文檔的解析,非常詳細,而且配有非常多的案例,當然,這太麻煩了,我找到了一個寫的很不錯的文檔推薦給大家,我自己寫的就太糟糕了。

以上就是基于Python開發(fā)云主機類型管理腳本分享的詳細內容,更多關于Python云主機管理腳本的資料請關注腳本之家其它相關文章!

相關文章

  • Python堆棧的具體使用

    Python堆棧的具體使用

    本文主要介紹了Python堆棧的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-11-11
  • 6個實用的Python自動化腳本詳解

    6個實用的Python自動化腳本詳解

    每天你都可能會執(zhí)行許多重復的任務,例如閱讀 pdf、播放音樂、查看天氣、打開書簽、清理文件夾等等,使用自動化腳本,就無需手動一次又一次地完成這些任務,非常方便。快跟隨小編一起試一試吧
    2022-01-01
  • 在python中使用with打開多個文件的方法

    在python中使用with打開多個文件的方法

    今天小編就為大家分享一篇在python中使用with打開多個文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 解決項目pycharm能運行,在終端卻無法運行的問題

    解決項目pycharm能運行,在終端卻無法運行的問題

    今天小編就為大家分享一篇解決項目pycharm能運行,在終端卻無法運行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python使用matplotlib庫生成隨機漫步圖

    python使用matplotlib庫生成隨機漫步圖

    這篇文章主要為大家詳細介紹了使用Python的matplotlib庫生成隨機漫步圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • python去除字符串中的空格、特殊字符和指定字符的三種方法

    python去除字符串中的空格、特殊字符和指定字符的三種方法

    本文主要介紹了python去除字符串中的空格、特殊字符和指定字符的三種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • 基于Python實現(xiàn)Word文檔與SVG格式的相互轉換

    基于Python實現(xiàn)Word文檔與SVG格式的相互轉換

    Word和SVG是兩種常見的文件格式,各自有不同的應用場景,在實際應用中,我們可能需要將Word文檔內容轉換為SVG圖形用于網(wǎng)頁展示,或者將 SVG圖形嵌入到Word文檔中進行編輯和排版,這篇博客將探討如何使用Python實現(xiàn)Word與SVG 格式的相互轉換,需要的朋友可以參考下
    2025-02-02
  • Pytorch使用卷積神經(jīng)網(wǎng)絡對CIFAR10圖片進行分類方式

    Pytorch使用卷積神經(jīng)網(wǎng)絡對CIFAR10圖片進行分類方式

    這篇文章主要介紹了Pytorch使用卷積神經(jīng)網(wǎng)絡對CIFAR10圖片進行分類方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python實現(xiàn)簡單飛機大戰(zhàn)小游戲

    python實現(xiàn)簡單飛機大戰(zhàn)小游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)簡單飛機大戰(zhàn)小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 在Pytorch中自定義dataset讀取數(shù)據(jù)的實現(xiàn)代碼

    在Pytorch中自定義dataset讀取數(shù)據(jù)的實現(xiàn)代碼

    這篇文章給大家介紹了如何在Pytorch中自定義dataset讀取數(shù)據(jù),文中給出了詳細的圖文介紹和代碼講解,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12

最新評論

都江堰市| 上犹县| 岢岚县| 响水县| 高阳县| 葫芦岛市| 商丘市| 阳谷县| 平安县| 琼海市| 双辽市| 永吉县| 泸州市| 枝江市| 尚义县| 周至县| 偃师市| 庆元县| 甘孜县| 富川| 苍溪县| 皋兰县| 库伦旗| 上栗县| 安达市| 浮梁县| 法库县| 禹城市| 云浮市| 湟中县| 仪陇县| 那曲县| 静乐县| 闽侯县| 嘉鱼县| 清原| 凉城县| 保定市| 诸城市| 南康市| 达孜县|