亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

CloudStack API編程指引

系統 2184 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條評論
主站蜘蛛池模板: 四虎精品成人免费影视 | 精品亚洲永久免费精品 | 青青在线成人免费视频 | 精品国产精品国产偷麻豆 | 国产成人经典三级在线观看 | 99久久免费视频在线观看 | 久久乐国产综合亚洲精品 | 97久久精品人人做人人爽 | 久久这里只有精品66re99 | 奇米影视久久 | 亚洲视频网站在线观看 | 欧美第一页在线观看 | 国产特级毛片aaaaaa高清 | 久久黄色免费 | 青青热在线观看视频精品 | 久久性生活| 亚洲一级毛片免费观看 | 伊人久久国产精品 | 欧美另类69xxxxx视频 | 国产全黄一级毛片 | 亚洲伦理视频 | 欧美亚洲另类色国产综合 | 国产精品深夜福利免费观看 | 国产精品欧美亚洲区 | 日本精品一区二区三区视频 | 亚洲精品国产综合一线久久 | 免费日韩精品 | 狠狠色噜噜噜噜狠狠狠狠狠狠奇米 | 精品久久亚洲 | 四虎永久影院 | 欧美韩日在线 | 4hu影院永久在线播放 | 日韩免费视频一区二区 | 91正在播放极品白嫩在线观看 | 国产免费69成人精品视频 | 日产国语一区二区三区在线看 | 亚洲国产成人资源在线软件 | a毛片久久免费观看 | 狠狠色噜噜狠狠狠888奇米 | 国产综合日韩伦理 | 亚洲国产成人久久一区久久 |