csn_client.py 36 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094
  1. # !/usr/bin/env python
  2. # coding=UTF-8
  3. #
  4. # Copyright 2023 Baidu, Inc.
  5. #
  6. # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
  7. # the License. You may obtain a copy of the License at
  8. #
  9. # http://www.apache.org/licenses/LICENSE-2.0
  10. #
  11. # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
  12. # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
  13. # specific language governing permissions and limitations under the License.
  14. """
  15. This module provides a client class for csn.
  16. """
  17. import json
  18. import logging
  19. from urllib.parse import quote
  20. from baidubce import bce_base_client
  21. from baidubce.services.csn.csn_api import csn_apis
  22. _logger = logging.getLogger(__name__)
  23. class CsnClient(bce_base_client.BceBaseClient):
  24. """
  25. csn base sdk client
  26. """
  27. def __init__(self, config=None):
  28. bce_base_client.BceBaseClient.__init__(self, config)
  29. def attach_instance(self, csn_id, instance_type, instance_id, instance_region,
  30. instance_account_id=None, client_token=None):
  31. """
  32. ​将网络实例加载进云智能网。
  33. :param csn_id:
  34. :desc 云智能网的ID
  35. :type csn_id: str
  36. :param instance_type:
  37. :desc 实例类型
  38. :type instance_type: str
  39. :param instance_id:
  40. :desc 实例ID
  41. :type instance_id: str
  42. :param instance_region:
  43. :desc 实例所属的地域
  44. :type instance_region: str
  45. :param instance_account_id:
  46. :desc 实例所属的账号ID
  47. :type instance_account_id: str
  48. :param client_token:
  49. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串,详见ClientToken幂等性
  50. :type client_token: str
  51. :return:
  52. :rtype baidubce.bce_response.BceResponse
  53. """
  54. api_config = self._get_config(csn_apis, "attach_instance")
  55. self._add_path_param(api_config, "csnId", csn_id)
  56. self._add_query(api_config, "attach", '')
  57. self._add_query(api_config, "clientToken", client_token)
  58. body = {
  59. "instanceType": instance_type,
  60. "instanceId": instance_id,
  61. "instanceRegion": instance_region,
  62. "instanceAccountId": instance_account_id
  63. }
  64. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  65. api_config["queries"], json.dumps(body))
  66. def bind_csn_bp(self, csn_bp_id, csn_id, client_token=None):
  67. """
  68. 带宽包绑定云智能网。
  69. :param csn_bp_id:
  70. :desc 带宽包的ID
  71. :type csn_bp_id: str
  72. :param csn_id:
  73. :desc 云智能网ID
  74. :type csn_id
  75. :param client_token:
  76. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串
  77. :type client_token: str
  78. :return:
  79. :rtype baidubce.bce_response.BceResponse
  80. """
  81. api_config = self._get_config(csn_apis, "bind_csn_bp")
  82. self._add_path_param(api_config, "csnBpId", csn_bp_id)
  83. self._add_query(api_config, "bind", '')
  84. self._add_query(api_config, "clientToken", client_token)
  85. body = {
  86. "csnId": csn_id,
  87. }
  88. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  89. api_config["queries"], json.dumps(body))
  90. def create_association(self, csn_rt_id, attach_id, description=None, client_token=None):
  91. """
  92. ​创建路由表的关联关系。
  93. :param csn_rt_id:
  94. :desc 云智能网路由表的ID
  95. :type csn_rt_id: str
  96. :param attach_id:
  97. :desc 网络实例在云智能网中的身份ID
  98. :type attach_id: str
  99. :param description:
  100. :desc 路由表的关联关系的描述
  101. :type description: str
  102. :param client_token:
  103. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串,详见ClientToken幂等性
  104. :type client_token: str
  105. :return:
  106. :rtype baidubce.bce_response.BceResponse
  107. """
  108. api_config = self._get_config(csn_apis, "create_association")
  109. self._add_path_param(api_config, "csnRtId", csn_rt_id)
  110. self._add_query(api_config, "clientToken", client_token)
  111. body = {
  112. 'attachId': attach_id,
  113. 'description': description,
  114. }
  115. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  116. api_config["queries"], json.dumps(body))
  117. def create_csn(self, name, description=None, tags=None, client_token=None):
  118. """
  119. ​创建云智能网。
  120. :param name:
  121. :desc 云智能网的名称
  122. :type name: str
  123. :param description:
  124. :desc 云智能网的描述
  125. :type description: str
  126. :param tags:
  127. :desc 云智能网的标签列表
  128. :type tags: list[Tag]
  129. :param client_token:
  130. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串,详见ClientToken幂等性
  131. :type client_token: str
  132. :return:
  133. :rtype baidubce.bce_response.BceResponse
  134. """
  135. api_config = self._get_config(csn_apis, "create_csn")
  136. self._add_query(api_config, "clientToken", client_token)
  137. body = {
  138. 'name': name,
  139. 'description': description,
  140. }
  141. if tags is not None:
  142. tag_list = [tag.__dict__ for tag in tags]
  143. body['tags'] = tag_list
  144. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  145. api_config["queries"], json.dumps(body))
  146. def create_csn_bp(self, name, bandwidth, geographic_a, geographic_b, billing,
  147. interwork_type=None, tags=None, client_token=None):
  148. """
  149. ​创建云智能网共享带宽包。
  150. :param name:
  151. :desc 带宽包的名称
  152. :type name: str
  153. :param interwork_type:
  154. :desc 云智能网共享带宽包的互通类型,取值:
  155. :type interwork_type: str
  156. :param bandwidth:
  157. :desc 带宽包的带宽,单位Mbps
  158. :type bandwidth: int
  159. :param geographic_a:
  160. :desc 带宽包的A地
  161. :type geographic_a: str
  162. :param geographic_b:
  163. :desc 带宽包的B地
  164. :type geographic_b: str
  165. :param billing:
  166. :desc 带宽包的计费信息
  167. :type billing: Billing
  168. :param tags:
  169. :desc 带宽包的标签列表
  170. :type tags: list[Tag]
  171. :param client_token:
  172. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串
  173. :type client_token: str
  174. :return:
  175. :rtype baidubce.bce_response.BceResponse
  176. """
  177. api_config = self._get_config(csn_apis, "create_csn_bp")
  178. self._add_query(api_config, "clientToken", client_token)
  179. body = {
  180. 'name': name,
  181. 'interworkType': interwork_type,
  182. 'bandwidth': bandwidth,
  183. 'geographicA': geographic_a,
  184. 'geographicB': geographic_b,
  185. 'billing': billing.__dict__,
  186. }
  187. if tags is not None:
  188. tag_list = [tag.__dict__ for tag in tags]
  189. body['tags'] = tag_list
  190. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  191. api_config["queries"], json.dumps(body))
  192. def create_csn_bp_limit(self, csn_bp_id, local_region, peer_region, bandwidth, client_token=None):
  193. """
  194. 创建带宽包中两个地域间的地域带宽。
  195. :param csn_bp_id:
  196. :desc 带宽包的ID
  197. :type csn_bp_id: str
  198. :param local_region:
  199. :desc 地域带宽的本端region,云边互通场景中表示云端region
  200. :type local_region: str
  201. :param peer_region:
  202. :desc 地域带宽的对端region,云边互通场景中表示边缘region
  203. :type peer_region: str
  204. :param bandwidth:
  205. :desc 地域带宽的带宽值
  206. :type bandwidth: int
  207. :return:
  208. :rtype baidubce.bce_response.BceResponse
  209. """
  210. api_config = self._get_config(csn_apis, "create_csn_bp_limit")
  211. self._add_path_param(api_config, "csnBpId", csn_bp_id)
  212. self._add_query(api_config, "clientToken", client_token)
  213. body = {
  214. 'localRegion': local_region,
  215. 'peerRegion': peer_region,
  216. 'bandwidth': bandwidth,
  217. }
  218. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  219. api_config["queries"], json.dumps(body))
  220. def create_propagation(self, csn_rt_id, attach_id, description=None, client_token=None):
  221. """
  222. 创建路由表的学习关系。
  223. :param csn_rt_id:
  224. :desc 云智能网路由表的ID
  225. :type csn_rt_id: str
  226. :param attach_id:
  227. :desc 网络实例在云智能网中的身份的ID
  228. :type create_propagation_request: json
  229. :param client_token:
  230. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串,详见ClientToken幂等性
  231. :type client_token: str
  232. :return:
  233. :rtype baidubce.bce_response.BceResponse
  234. """
  235. api_config = self._get_config(csn_apis, "create_propagation")
  236. self._add_path_param(api_config, "csnRtId", csn_rt_id)
  237. self._add_query(api_config, "clientToken", client_token)
  238. body = {
  239. 'attachId': attach_id,
  240. 'description': description,
  241. }
  242. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  243. api_config["queries"], json.dumps(body))
  244. def create_route_rule(self, csn_rt_id, attach_id, destAddress, routeType="custom", client_token=None):
  245. """
  246. 添加云智能网路由表的路由条目。
  247. :param csn_rt_id:
  248. :desc 云智能网路由表的ID
  249. :type csn_rt_id: str
  250. :param attach_id:
  251. :desc 网络实例在云智能网中的身份的ID
  252. :type attach_id: str
  253. :param destAddress:
  254. :desc 目的地址
  255. :type destAddress: str
  256. :param routeType:
  257. :desc 路由类型,目前只支持"custom"
  258. :type routeType: str
  259. :param client_token:
  260. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串,详见ClientToken幂等性
  261. :type client_token: str
  262. :return:
  263. :rtype baidubce.bce_response.BceResponse
  264. """
  265. api_config = self._get_config(csn_apis, "create_route_rule")
  266. self._add_path_param(api_config, "csnRtId", csn_rt_id)
  267. self._add_query(api_config, "clientToken", client_token)
  268. body = {
  269. "attachId": attach_id,
  270. "destAddress": destAddress,
  271. "routeType": routeType,
  272. }
  273. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  274. api_config["queries"], json.dumps(body))
  275. def delete_association(self, csn_rt_id=None, attach_id=None, client_token=None):
  276. """
  277. 删除云智能网路由表的关联关系。
  278. :param csn_rt_id:
  279. :desc 路由表的ID
  280. :type csn_rt_id: str
  281. :param attach_id:
  282. :desc 网络实例在云智能网中的身份ID
  283. :type attach_id: str
  284. :param client_token:
  285. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串,详见ClientToken幂等性
  286. :type client_token: str
  287. :return:
  288. :rtype baidubce.bce_response.BceResponse
  289. """
  290. api_config = self._get_config(csn_apis, "delete_association")
  291. self._add_path_param(api_config, "csnRtId", csn_rt_id)
  292. self._add_path_param(api_config, "attachId", attach_id)
  293. self._add_query(api_config, "clientToken", client_token)
  294. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  295. api_config["queries"])
  296. def delete_csn(self, csn_id, client_token=None):
  297. """
  298. ​删除云智能网。 已经加载了网络实例的云智能网不能直接删除,必须先卸载实例。
  299. :param csn_id:
  300. :desc 云智能网的ID
  301. :type csn_id: str
  302. :param client_token:
  303. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串,详见ClientToken幂等性
  304. :type client_token: str
  305. :return:
  306. :rtype baidubce.bce_response.BceResponse
  307. """
  308. api_config = self._get_config(csn_apis, "delete_csn")
  309. self._add_path_param(api_config, "csnId", csn_id)
  310. self._add_query(api_config, "clientToken", client_token)
  311. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  312. api_config["queries"])
  313. def delete_csn_bp(self, csn_bp_id, client_token=None):
  314. """
  315. ​删除带宽包。
  316. :param csn_bp_id:
  317. :desc 带宽包的ID
  318. :type csn_bp_id: str
  319. :param client_token:
  320. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串
  321. :type client_token: str
  322. :return:
  323. :rtype baidubce.bce_response.BceResponse
  324. """
  325. api_config = self._get_config(csn_apis, "delete_csn_bp")
  326. self._add_path_param(api_config, "csnBpId", csn_bp_id)
  327. self._add_query(api_config, "clientToken", client_token)
  328. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  329. api_config["queries"])
  330. def delete_csn_bp_limit(self, csn_bp_id, local_region, peer_region, client_token=None):
  331. """
  332. ​删除带宽包中两个地域间的地域带宽。
  333. :param csn_bp_id:
  334. :desc 带宽包的ID
  335. :type csn_bp_id: str
  336. :param local_region:
  337. :desc 地域带宽的本端region,云边互通场景中表示云端region
  338. :type local_region: str
  339. :param peer_region:
  340. :desc 地域带宽的对端region,云边互通场景中表示边缘region
  341. :type peer_region: str
  342. :param client_token:
  343. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串
  344. :type client_token: str
  345. :return:
  346. :rtype baidubce.bce_response.BceResponse
  347. """
  348. api_config = self._get_config(csn_apis, "delete_csn_bp_limit")
  349. self._add_path_param(api_config, "csnBpId", csn_bp_id)
  350. self._add_query(api_config, "clientToken", client_token)
  351. body = {
  352. 'localRegion': local_region,
  353. 'peerRegion': peer_region,
  354. }
  355. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  356. api_config["queries"], json.dumps(body))
  357. def delete_propagation(self, csn_rt_id, attach_id, client_token=None):
  358. """
  359. ​删除云智能网路由表的学习关系。
  360. :param csn_rt_id:
  361. :desc 路由表的ID
  362. :type csn_rt_id: str
  363. :param attach_id:
  364. :desc 网络实例在云智能网中的身份ID
  365. :type attach_id: str
  366. :param client_token:
  367. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串,详见ClientToken幂等性
  368. :type client_token: str
  369. :return:
  370. :rtype baidubce.bce_response.BceResponse
  371. """
  372. api_config = self._get_config(csn_apis, "delete_propagation")
  373. self._add_path_param(api_config, "csnRtId", csn_rt_id)
  374. self._add_path_param(api_config, "attachId", attach_id)
  375. self._add_query(api_config, "clientToken", client_token)
  376. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  377. api_config["queries"])
  378. def delete_route_rule(self, csn_rt_id=None, csn_rt_rule_id=None, client_token=None):
  379. """
  380. ​删除云智能网路由表的指定路由条目。
  381. :param csn_rt_id:
  382. :desc 路由表的ID
  383. :type csn_rt_id: str
  384. :param csn_rt_rule_id:
  385. :desc 路由条目的ID
  386. :type csn_rt_rule_id: str
  387. :param client_token:
  388. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串,详见ClientToken幂等性
  389. :type client_token: str
  390. :return:
  391. :rtype baidubce.bce_response.BceResponse
  392. """
  393. api_config = self._get_config(csn_apis, "delete_route_rule")
  394. self._add_path_param(api_config, "csnRtId", csn_rt_id)
  395. self._add_path_param(api_config, "csnRtRuleId", csn_rt_rule_id)
  396. self._add_query(api_config, "clientToken", client_token)
  397. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  398. api_config["queries"])
  399. def detach_instance(self, csn_id, instance_type, instance_id, instance_region,
  400. instance_account_id=None, client_token=None):
  401. """
  402. ​从云智能网中移出指定的网络实例。
  403. :param csn_id:
  404. :desc 云智能网的ID
  405. :type csn_id: str
  406. :param instance_type:
  407. :desc 实例类型
  408. :type instance_type: str
  409. :param instance_id:
  410. :desc 实例ID
  411. :type instance_id: str
  412. :param instance_region:
  413. :desc 实例所属的地域
  414. :type instance_region: str
  415. :param instance_account_id:
  416. :desc 实例所属的账号ID
  417. :type instance_account_id: str
  418. :param client_token:
  419. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串,详见ClientToken幂等性
  420. :type client_token: str
  421. :return:
  422. :rtype baidubce.bce_response.BceResponse
  423. """
  424. api_config = self._get_config(csn_apis, "detach_instance")
  425. self._add_path_param(api_config, "csnId", csn_id)
  426. self._add_query(api_config, "detach", '')
  427. self._add_query(api_config, "clientToken", client_token)
  428. body = {
  429. "instanceType": instance_type,
  430. "instanceId": instance_id,
  431. "instanceRegion": instance_region,
  432. "instanceAccountId": instance_account_id
  433. }
  434. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  435. api_config["queries"], json.dumps(body))
  436. def get_csn(self, csn_id):
  437. """
  438. 查询云智能网详情。
  439. :param csn_id:
  440. :desc csnId
  441. :type csn_id: str
  442. :return:
  443. :rtype baidubce.bce_response.BceResponse
  444. """
  445. api_config = self._get_config(csn_apis, "get_csn")
  446. self._add_path_param(api_config, "csnId", csn_id)
  447. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  448. api_config["queries"])
  449. def get_csn_bp(self, csn_bp_id=None):
  450. """
  451. 查询指定云智能网带宽包详情。
  452. :param csn_bp_id:
  453. :desc 带宽包的ID
  454. :type csn_bp_id: str
  455. :return:
  456. :rtype baidubce.bce_response.BceResponse
  457. """
  458. api_config = self._get_config(csn_apis, "get_csn_bp")
  459. self._add_path_param(api_config, "csnBpId", csn_bp_id)
  460. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  461. api_config["queries"])
  462. def get_csn_bp_price(self, name, geographic_a, geographic_b, billing, bandwidth=None):
  463. """
  464. 带宽包询价。
  465. :param name:
  466. :desc 带宽包名称
  467. :type name: str
  468. :param geographic_a:
  469. :desc 网络实例所属的区域。取值 [ China | Asia-Pacific ],分别表示中国大陆、亚太区域
  470. :type geographic_a: str
  471. :param geographic_b:
  472. :desc 另一个网络实例所属的区域。取值 [ China | Asia-Pacific ],分别表示中国大陆、亚太区域
  473. :type geographic_b: str
  474. :param billing:
  475. :desc 计费信息
  476. :type billing: Billing
  477. :param bandwidth:
  478. :desc 带宽包的带宽值,单位:Mbps,后付费按流量不需要该值
  479. :type bandwidth: int
  480. :return:
  481. :rtype baidubce.bce_response.BceResponse
  482. """
  483. api_config = self._get_config(csn_apis, "get_csn_bp_price")
  484. body = {
  485. 'name': name,
  486. 'geographicA': geographic_a,
  487. 'geographicB': geographic_b,
  488. 'billing': billing.__dict__,
  489. }
  490. if bandwidth is not None:
  491. body['bandwidth'] = bandwidth
  492. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  493. api_config["queries"], json.dumps(body))
  494. def list_association(self, csn_rt_id=None):
  495. """
  496. 查询指定云智能网路由表的关联关系。
  497. :param csn_rt_id:
  498. :desc 云智能网路由表的ID
  499. :type csn_rt_id: str
  500. :return:
  501. :rtype baidubce.bce_response.BceResponse
  502. """
  503. api_config = self._get_config(csn_apis, "list_association")
  504. self._add_path_param(api_config, "csnRtId", csn_rt_id)
  505. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  506. api_config["queries"])
  507. def list_csn(self, marker=None, max_keys=None):
  508. """
  509. 查询云智能网列表。
  510. :param marker:
  511. :desc 批量获取列表的查询的起始位置
  512. :type marker: str
  513. :param max_keys:
  514. :desc 每页包含的最大数量,最大数量不超过1000,缺省值为1000
  515. :type max_keys: int
  516. :return:
  517. :rtype baidubce.bce_response.BceResponse
  518. """
  519. api_config = self._get_config(csn_apis, "list_csn")
  520. self._add_query(api_config, "marker", marker)
  521. self._add_query(api_config, "maxKeys", max_keys)
  522. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  523. api_config["queries"])
  524. def list_csn_bp(self, marker=None, max_keys=None):
  525. """
  526. 查询云智能网带宽包列表。
  527. :param marker:
  528. :desc 批量获取列表的查询的起始位置,是一个由系统生成的字符串
  529. :type marker: str
  530. :param max_keys:
  531. :desc 每页包含的最大数量,最大数量不超过1000,缺省值为1000
  532. :type max_keys: int
  533. :return:
  534. :rtype baidubce.bce_response.BceResponse
  535. """
  536. api_config = self._get_config(csn_apis, "list_csn_bp")
  537. self._add_query(api_config, "marker", marker)
  538. self._add_query(api_config, "maxKeys", max_keys)
  539. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  540. api_config["queries"])
  541. def list_csn_bp_limit(self, csn_bp_id=None):
  542. """
  543. 查询带宽包的地域带宽列表。
  544. :param csn_bp_id:
  545. :desc
  546. :type csn_bp_id: str
  547. :return:
  548. :rtype baidubce.bce_response.BceResponse
  549. """
  550. api_config = self._get_config(csn_apis, "list_csn_bp_limit")
  551. self._add_path_param(api_config, "csnBpId", csn_bp_id)
  552. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  553. api_config["queries"])
  554. def list_csn_bp_limit_by_csn_id(self, csn_id):
  555. """
  556. 查询云智能网的地域带宽列表。
  557. :param csn_id:
  558. :desc 云智能网的ID
  559. :type csn_id: str
  560. :return:
  561. :rtype baidubce.bce_response.BceResponse
  562. """
  563. api_config = self._get_config(csn_apis, "list_csn_bp_limit_by_csn_id")
  564. self._add_path_param(api_config, "csnId", csn_id)
  565. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  566. api_config["queries"])
  567. def list_instance(self, csn_id, marker=None, max_keys=None):
  568. """
  569. 查询指定云智能网下加载的网络实例信息。
  570. :param csn_id:
  571. :desc 云智能网的ID
  572. :type csn_id: str
  573. :param marker:
  574. :desc 批量获取列表的查询的起始位置
  575. :type marker: str
  576. :param max_keys:
  577. :desc 每页包含的最大数量,最大数量不超过1000,缺省值为1000
  578. :type max_keys: int
  579. :return:
  580. :rtype baidubce.bce_response.BceResponse
  581. """
  582. api_config = self._get_config(csn_apis, "list_instance")
  583. self._add_path_param(api_config, "csnId", csn_id)
  584. self._add_query(api_config, "marker", marker)
  585. self._add_query(api_config, "maxKeys", max_keys)
  586. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  587. api_config["queries"])
  588. def list_propagation(self, csn_rt_id):
  589. """
  590. 查询指定云智能网路由表的学习关系。
  591. :param csn_rt_id:
  592. :desc 云智能网路由表的ID
  593. :type csn_rt_id: str
  594. :return:
  595. :rtype baidubce.bce_response.BceResponse
  596. """
  597. api_config = self._get_config(csn_apis, "list_propagation")
  598. self._add_path_param(api_config, "csnRtId", csn_rt_id)
  599. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  600. api_config["queries"])
  601. def list_route_rule(self, csn_rt_id, marker=None, max_keys=None):
  602. """
  603. 查询指定云智能网路由表的路由条目。
  604. :param csn_rt_id:
  605. :desc 云智能网路由表的ID
  606. :type csn_rt_id: str
  607. :param marker:
  608. :desc 批量获取列表的查询的起始位置,是一个由系统生成的字符串
  609. :type marker: str
  610. :param max_keys:
  611. :desc 每页包含的最大数量,最大数量不超过1000。缺省值为1000
  612. :type max_keys: int
  613. :return:
  614. :rtype baidubce.bce_response.BceResponse
  615. """
  616. api_config = self._get_config(csn_apis, "list_route_rule")
  617. self._add_path_param(api_config, "csnRtId", csn_rt_id)
  618. self._add_query(api_config, "marker", marker)
  619. self._add_query(api_config, "maxKeys", max_keys)
  620. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  621. api_config["queries"])
  622. def list_route_table(self, csn_id, marker=None, max_keys=None):
  623. """
  624. 查询云智能网的路由表列表。
  625. :param csn_id:
  626. :desc 云智能网的ID
  627. :type csn_id: str
  628. :param marker:
  629. :desc 批量获取列表的查询的起始位置,是一个由系统生成的字符串
  630. :type marker: str
  631. :param max_keys:
  632. :desc 每页包含的最大数量,最大数量不超过1000,缺省值为1000
  633. :type max_keys: int
  634. :return:
  635. :rtype baidubce.bce_response.BceResponse
  636. """
  637. api_config = self._get_config(csn_apis, "list_route_table")
  638. self._add_path_param(api_config, "csnId", csn_id)
  639. self._add_query(api_config, "marker", marker)
  640. self._add_query(api_config, "maxKeys", max_keys)
  641. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  642. api_config["queries"])
  643. def list_tgw(self, csn_id=None, marker=None, max_keys=None):
  644. """
  645. 查询云智能网TGW列表。
  646. :param csn_id:
  647. :desc 云智能网的ID
  648. :type csn_id: str
  649. :param marker:
  650. :desc 批量获取列表的查询的起始位置,是一个由系统生成的字符串
  651. :type marker: str
  652. :param max_keys:
  653. :desc 每页包含的最大数量,最大数量不超过1000,缺省值为1000
  654. :type max_keys: int
  655. :return:
  656. :rtype baidubce.bce_response.BceResponse
  657. """
  658. api_config = self._get_config(csn_apis, "list_tgw")
  659. self._add_path_param(api_config, "csnId", csn_id)
  660. self._add_query(api_config, "marker", marker)
  661. self._add_query(api_config, "maxKeys", max_keys)
  662. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  663. api_config["queries"])
  664. def list_tgw_rule(self, csn_id=None, tgw_id=None, marker=None, max_keys=None):
  665. """
  666. 查询指定TGW的路由条目。
  667. :param csn_id:
  668. :desc 云智能网的ID
  669. :type csn_id: str
  670. :param tgw_id:
  671. :desc TGW的ID
  672. :type tgw_id: str
  673. :param marker:
  674. :desc 批量获取列表的查询的起始位置,是一个由系统生成的字符串
  675. :type marker: str
  676. :param max_keys:
  677. :desc 每页包含的最大数量,最大数量不超过1000,缺省值为1000
  678. :type max_keys: str
  679. :return:
  680. :rtype baidubce.bce_response.BceResponse
  681. """
  682. api_config = self._get_config(csn_apis, "list_tgw_rule")
  683. self._add_path_param(api_config, "csnId", csn_id)
  684. self._add_path_param(api_config, "tgwId", tgw_id)
  685. self._add_query(api_config, "marker", marker)
  686. self._add_query(api_config, "maxKeys", max_keys)
  687. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  688. api_config["queries"])
  689. def resize_csn_bp(self, csn_bp_id, bandwidth, client_token=None):
  690. """
  691. 带宽包的带宽升降级。
  692. :param csn_bp_id:
  693. :desc 带宽包的ID
  694. :type csn_bp_id: str
  695. :param bandwidth:
  696. :desc 升降级的带宽值,最大值为10000
  697. :type bandwidth: int
  698. :param client_token:
  699. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串
  700. :type client_token: str
  701. :return:
  702. :rtype baidubce.bce_response.BceResponse
  703. """
  704. api_config = self._get_config(csn_apis, "resize_csn_bp")
  705. self._add_path_param(api_config, "csnBpId", csn_bp_id)
  706. self._add_query(api_config, "resize", '')
  707. self._add_query(api_config, "clientToken", client_token)
  708. body = {
  709. 'bandwidth': bandwidth,
  710. }
  711. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  712. api_config["queries"], json.dumps(body))
  713. def unbind_csn_bp(self, csn_bp_id, csn_id, client_token=None):
  714. """
  715. 带宽包解绑云智能网。
  716. :param csn_bp_id:
  717. :desc 带宽包的ID
  718. :type csn_bp_id: str
  719. :param csn_id:
  720. :desc 云智能网ID
  721. :type csn_id
  722. :param client_token:
  723. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串
  724. :type client_token: str
  725. :return:
  726. :rtype baidubce.bce_response.BceResponse
  727. """
  728. api_config = self._get_config(csn_apis, "unbind_csn_bp")
  729. self._add_path_param(api_config, "csnBpId", csn_bp_id)
  730. self._add_query(api_config, "unbind", '')
  731. self._add_query(api_config, "clientToken", client_token)
  732. body = {
  733. 'csnId': csn_id,
  734. }
  735. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  736. api_config["queries"], json.dumps(body))
  737. def update_csn(self, csn_id, name=None, description=None, client_token=None):
  738. """
  739. ​更新云智能网。 更新云智能网的名称和描述。
  740. :param csn_id:
  741. :desc 云智能网ID
  742. :type csn_id: str
  743. :param name:
  744. :desc 云智能网的名称
  745. :type name: str
  746. :param description:
  747. :desc 云智能网的描述
  748. :type description: str
  749. :param client_token:
  750. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串,详见ClientToken幂等性
  751. :type client_token: str
  752. :return:
  753. :rtype baidubce.bce_response.BceResponse
  754. """
  755. api_config = self._get_config(csn_apis, "update_csn")
  756. self._add_path_param(api_config, "csnId", csn_id)
  757. self._add_query(api_config, "clientToken", client_token)
  758. body = {
  759. "name": name,
  760. "description": description
  761. }
  762. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  763. api_config["queries"], json.dumps(body))
  764. def update_csn_bp(self, csn_bp_id, name=None, client_token=None):
  765. """
  766. ​更新带宽包的名称信息。
  767. :param csn_bp_id:
  768. :desc 带宽包的ID
  769. :type csn_bp_id: str
  770. :param name:
  771. :desc 带宽包的名称
  772. :type name: str
  773. :param client_token:
  774. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串
  775. :type client_token: str
  776. :return:
  777. :rtype baidubce.bce_response.BceResponse
  778. """
  779. api_config = self._get_config(csn_apis, "update_csn_bp")
  780. self._add_path_param(api_config, "csnBpId", csn_bp_id)
  781. self._add_query(api_config, "clientToken", client_token)
  782. body = {
  783. "name": name
  784. }
  785. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  786. api_config["queries"], json.dumps(body))
  787. def update_csn_bp_limit(self, csn_bp_id, local_region, peer_region, bandwidth, client_token=None):
  788. """
  789. ​更新带宽包中两个地域间的地域带宽。
  790. :param csn_bp_id:
  791. :desc 带宽包的ID
  792. :type csn_bp_id: str
  793. :param local_region:
  794. :desc 地域带宽的本端region,云边互通场景中表示云端region
  795. :type local_region: str
  796. :param peer_region:
  797. :desc 地域带宽的对端region,云边互通场景中表示边缘region
  798. :type peer_region: str
  799. :param bandwidth:
  800. :desc 地域带宽的带宽值
  801. :type bandwidth: int
  802. :param client_token:
  803. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串
  804. :type client_token: str
  805. :return:
  806. :rtype baidubce.bce_response.BceResponse
  807. """
  808. api_config = self._get_config(csn_apis, "update_csn_bp_limit")
  809. self._add_path_param(api_config, "csnBpId", csn_bp_id)
  810. self._add_query(api_config, "clientToken", client_token)
  811. body = {
  812. 'localRegion': local_region,
  813. 'peerRegion': peer_region,
  814. 'bandwidth': bandwidth,
  815. }
  816. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  817. api_config["queries"], json.dumps(body))
  818. def update_tgw(self, csn_id=None, tgw_id=None, update_tgw_request=None):
  819. """
  820. 更新TGW的名称、描述。
  821. :param csn_id:
  822. :desc 云智能网的ID
  823. :type csn_id: str
  824. :param tgw_id:
  825. :desc TGW实例的ID
  826. :type tgw_id: str
  827. :param update_tgw_request:
  828. :desc
  829. :type update_tgw_request: json
  830. :return:
  831. :rtype baidubce.bce_response.BceResponse
  832. """
  833. api_config = self._get_config(csn_apis, "update_tgw")
  834. self._add_path_param(api_config, "csnId", csn_id)
  835. self._add_path_param(api_config, "tgwId", tgw_id)
  836. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  837. api_config["queries"], json.dumps(update_tgw_request))