日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

CloudStack API編程指引

系統 2099 0

原文地址: https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack+API+Coding+Guidelines

前言

本文闡述為CloudStack編寫新API或者更新已存在API時應遵循的約定和編程指引。

參考文檔

?(暫略)

介紹

當你需要為CS添加新的API時,需要創建一個Request類和Response類(或者在擴展CS API功能時它的API Responese已經定義的情況下重用已經存在的API Response類)。

編寫CS API Request類

1、request繼承自*Cmd抽象類

CUD(新增/更新/刪除 命令)

CloudStack API編程指引

R(讀取列表)命令

?

CloudStack API編程指引

重要- 從2.x開始,新的CUD API命令不再繼承自 BaseCmd 類,它們被看做是異步命令,繼承自 BaseAsyncCmd或者 BaseAsyncCreateCmd。

? ? ? ?擴展BaseAsyncCmd或者BaseAsyncCreateCmd,創建新的CS實體命令擴展BaseAsyncCreateCmd,UD命令擴展BaseAsyncCmd。

2、新添加的command類應以“*Cmd”結尾且標注 @ApiCommand。更多請閱參考文檔 ? Annotations use in the API 中的 @ parameters。

3、定義所有的請求參數,且所有的都用@Parameter標注。

4、為RUD命令實現execute()方法,為R命令實現 execute()/create()。

5、增加s_name--響應的名字,并且為小寫。

6、在為命令命名時,根據含義優先使用 create/delete/update/list,只有當這些前綴不能滿足你的邏輯時才考慮用你自己的(如assign)。

編寫CS API Response類

?1、讓你的類繼承自 BaseResponse。

?2、用 @EntityReference標注Response類,并設定關聯的CloudStack接口,它是你返回給API用戶的對象。比如 VolumeResponse 用 EntityReference 標注關聯Volume接口。

?3、將每個參數用 @SerializedName 和?@Param注解。?請閱在 Annotations use in the API 中關于這些注解的細節。

?4、參數名稱都是小寫。

?5、確保沒有將真實的DB id設置到id字段將其暴漏,請用 UUID值代替。

API位置和注冊

命令的位置取決于該命令將是可用/禁用插件或者CloudStack核心的一部分。

當命令是CS核心的一部分

  • 位置:Reque/Response代碼放在 cloud-api/cloud-engine-api下。
  • 訪問權限:命令的訪問控制權限(誰有能調用它)在 commands.properties.in里注冊。
  • 命令注冊:命令應添加到CS支持的所有的API列表中,該列表由 ManagementServerImpl.? getCommands()獲得

注意當命令調用完成時,它們關聯的只能是 cloud-api 或 cloud-util包里的接口

CloudStack API編程指引

?

當命令是插件/服務的一部分

  • 位置:Reque/Response代碼放在plugin包下。
  • 訪問權限:在Cmd文件里定義權限,使用 @APICommand 注解 "authorized"字段,如 authorized = {RoleType.Admin}) 。
  • 命令注冊:讓插件管理類繼承自 PluggableService 接口,增加到命令列表的命令由getCommands()返回。

定義在插件中的命令只關聯位于 cloud-api/cloud-utils/<your plugin>中的接口。

CloudStack API編程指引

?

修改已存在API的規則

1、對Request:不要將參數從可選改為必需的;

2、對Request:不要在已存在的命令里增加一個 required=true的參數;

3、對Request:不要降低command的權限,從對普通用戶可用降到只對管理員可用;

4、對Request/Response:不要重命名已有的參數;

5、對Request/Response:不要更改參數的類型(如從String改為Map)

6、對Response:不要刪除Response的參數,由于第三方軟件會依賴它。

其它規則:

1、當新增一個參數時,應該在它的 ?@Parameter 里標注 "since=release #" 字段;

2、如果你認為有些參數會在未來被刪除掉,請標注 @Deprecated,并確保在第n版本里記錄。當它發布后,客戶有機會去檢查/修改代碼以去掉這個參數。于是可以在第n+1個版本去除該參數。

?

CloudStack API編程指引


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 运城市| 永城市| 马龙县| 石泉县| 全州县| 寿宁县| 泉州市| 集贤县| 垣曲县| 综艺| 蒲城县| 宿松县| 宝山区| 克山县| 德钦县| 苍山县| 郸城县| 大姚县| 西昌市| 宁阳县| 元阳县| 砚山县| 江川县| 潮安县| 华池县| 山东省| 合山市| 达孜县| 鹰潭市| 莒南县| 泗洪县| 准格尔旗| 农安县| 景德镇市| 衡阳市| 乐清市| 道真| 库尔勒市| 佛山市| 锡林浩特市| 礼泉县|