dns_client.py 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  1. # !/usr/bin/env python
  2. # coding=UTF-8
  3. #
  4. # Copyright 2022 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 dns.
  16. """
  17. import json
  18. import logging
  19. from urllib.parse import quote
  20. from baidubce import bce_base_client
  21. from baidubce.services.dns.api.dns_api import dns_apis
  22. _logger = logging.getLogger(__name__)
  23. class DnsClient(bce_base_client.BceBaseClient):
  24. """
  25. dns base sdk client
  26. """
  27. def __init__(self, config=None):
  28. bce_base_client.BceBaseClient.__init__(self, config)
  29. def add_line_group(self, add_line_group_request=None, client_token=None):
  30. """
  31. :param add_line_group_request:
  32. :desc
  33. :type add_line_group_request: json
  34. :param client_token:
  35. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串。
  36. :type client_token: str
  37. :return:
  38. :rtype baidubce.bce_response.BceResponse
  39. """
  40. api_config = self._get_config(dns_apis, "add_line_group")
  41. self._add_query(api_config, "clientToken", client_token)
  42. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  43. api_config["queries"], json.dumps(add_line_group_request))
  44. def create_paid_zone(self, create_paid_zone_request=None, client_token=None):
  45. """
  46. :param create_paid_zone_request:
  47. :desc
  48. :type create_paid_zone_request: json
  49. :param client_token:
  50. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串。
  51. :type client_token: str
  52. :return:
  53. :rtype baidubce.bce_response.BceResponse
  54. """
  55. api_config = self._get_config(dns_apis, "create_paid_zone")
  56. self._add_query(api_config, "clientToken", client_token)
  57. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  58. api_config["queries"], json.dumps(create_paid_zone_request))
  59. def create_record(self, zone_name=None, create_record_request=None, client_token=None):
  60. """
  61. :param zone_name:
  62. :desc 域名名称。
  63. :type zone_name: str
  64. :param create_record_request:
  65. :desc
  66. :type create_record_request: json
  67. :param client_token:
  68. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串。
  69. :type client_token: str
  70. :return:
  71. :rtype baidubce.bce_response.BceResponse
  72. """
  73. api_config = self._get_config(dns_apis, "create_record")
  74. self._add_path_param(api_config, "zoneName", zone_name)
  75. self._add_query(api_config, "clientToken", client_token)
  76. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  77. api_config["queries"], json.dumps(create_record_request))
  78. def create_zone(self, create_zone_request=None, client_token=None):
  79. """
  80. :param create_zone_request:
  81. :desc
  82. :type create_zone_request: json
  83. :param client_token:
  84. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串
  85. :type client_token: str
  86. :return:
  87. :rtype baidubce.bce_response.BceResponse
  88. """
  89. api_config = self._get_config(dns_apis, "create_zone")
  90. self._add_query(api_config, "clientToken", client_token)
  91. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  92. api_config["queries"], json.dumps(create_zone_request))
  93. def delete_line_group(self, line_id=None, client_token=None):
  94. """
  95. :param line_id:
  96. :desc 线路组id。
  97. :type line_id: str
  98. :param client_token:
  99. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串。
  100. :type client_token: str
  101. :return:
  102. :rtype baidubce.bce_response.BceResponse
  103. """
  104. api_config = self._get_config(dns_apis, "delete_line_group")
  105. self._add_path_param(api_config, "lineId", line_id)
  106. self._add_query(api_config, "clientToken", client_token)
  107. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  108. api_config["queries"])
  109. def delete_record(self, zone_name=None, record_id=None, client_token=None):
  110. """
  111. :param zone_name:
  112. :desc 域名名称。
  113. :type zone_name: str
  114. :param record_id:
  115. :desc 解析记录id。
  116. :type record_id: str
  117. :param client_token:
  118. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串。
  119. :type client_token: str
  120. :return:
  121. :rtype baidubce.bce_response.BceResponse
  122. """
  123. api_config = self._get_config(dns_apis, "delete_record")
  124. self._add_path_param(api_config, "zoneName", zone_name)
  125. self._add_path_param(api_config, "recordId", record_id)
  126. self._add_query(api_config, "clientToken", client_token)
  127. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  128. api_config["queries"])
  129. def delete_zone(self, zone_name=None, delete_zone_request=None, client_token=None):
  130. """
  131. :param zone_name:
  132. :desc 域名的名称。
  133. :type zone_name: str
  134. :param delete_zone_request:
  135. :desc
  136. :type delete_zone_request: json
  137. :param client_token:
  138. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串。
  139. :type client_token: str
  140. :return:
  141. :rtype baidubce.bce_response.BceResponse
  142. """
  143. api_config = self._get_config(dns_apis, "delete_zone")
  144. self._add_path_param(api_config, "zoneName", zone_name)
  145. self._add_query(api_config, "clientToken", client_token)
  146. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  147. api_config["queries"], json.dumps(delete_zone_request))
  148. def list_line_group(self, list_line_group_request=None, marker=None, max_keys=None):
  149. """
  150. :param list_line_group_request:
  151. :desc
  152. :type list_line_group_request: json
  153. :param marker:
  154. :desc 批量获取列表的查询的起始位置,是一个由系统生成的字符串。
  155. :type marker: str
  156. :param max_keys:
  157. :desc 每页包含的最大数量,最大数量通常不超过1000,缺省值为1000。
  158. :type max_keys: int
  159. :return:
  160. :rtype baidubce.bce_response.BceResponse
  161. """
  162. api_config = self._get_config(dns_apis, "list_line_group")
  163. self._add_query(api_config, "marker", marker)
  164. self._add_query(api_config, "maxKeys", max_keys)
  165. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  166. api_config["queries"], json.dumps(list_line_group_request))
  167. def list_record(self, zone_name=None, list_record_request=None, rr=None, id=None, marker=None, max_keys=None):
  168. """
  169. :param zone_name:
  170. :desc 域名的名称。
  171. :type zone_name: str
  172. :param list_record_request:
  173. :desc
  174. :type list_record_request: json
  175. :param rr:
  176. :desc 主机记录,例如“www”。
  177. :type rr: str
  178. :param id:
  179. :desc 解析记录id。
  180. :type id: str
  181. :param marker:
  182. :desc 批量获取列表的查询的起始位置,是一个由系统生成的字符串。
  183. :type marker: str
  184. :param max_keys:
  185. :desc 每页包含的最大数量,最大数量通常不超过1000。缺省值为1000。
  186. :type max_keys: int
  187. :return:
  188. :rtype baidubce.bce_response.BceResponse
  189. """
  190. api_config = self._get_config(dns_apis, "list_record")
  191. self._add_path_param(api_config, "zoneName", zone_name)
  192. self._add_query(api_config, "rr", rr)
  193. self._add_query(api_config, "id", id)
  194. self._add_query(api_config, "marker", marker)
  195. self._add_query(api_config, "maxKeys", max_keys)
  196. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  197. api_config["queries"], json.dumps(list_record_request))
  198. def list_zone(self, list_zone_request=None, name=None, marker=None, max_keys=None):
  199. """
  200. :param list_zone_request:
  201. :desc
  202. :type list_zone_request: json
  203. :param name:
  204. :desc 域名的名称,支持模糊搜索。
  205. :type name: str
  206. :param marker:
  207. :desc 批量获取列表的查询的起始位置,是一个由系统生成的字符串
  208. :type marker: str
  209. :param max_keys:
  210. :desc 每页包含的最大数量,最大数量通常不超过1000。缺省值为1000
  211. :type max_keys: int
  212. :return:
  213. :rtype baidubce.bce_response.BceResponse
  214. """
  215. api_config = self._get_config(dns_apis, "list_zone")
  216. self._add_query(api_config, "name", name)
  217. self._add_query(api_config, "marker", marker)
  218. self._add_query(api_config, "maxKeys", max_keys)
  219. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  220. api_config["queries"], json.dumps(list_zone_request))
  221. def renew_zone(self, name=None, renew_zone_request=None, client_token=None):
  222. """
  223. :param name:
  224. :desc 续费的域名。
  225. :type name: str
  226. :param renew_zone_request:
  227. :desc
  228. :type renew_zone_request: json
  229. :param client_token:
  230. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串。
  231. :type client_token: str
  232. :return:
  233. :rtype baidubce.bce_response.BceResponse
  234. """
  235. api_config = self._get_config(dns_apis, "renew_zone")
  236. self._add_path_param(api_config, "name", name)
  237. self._add_query(api_config, "clientToken", client_token)
  238. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  239. api_config["queries"], json.dumps(renew_zone_request))
  240. def update_line_group(self, line_id=None, update_line_group_request=None, client_token=None):
  241. """
  242. :param line_id:
  243. :desc 线路组id。
  244. :type line_id: str
  245. :param update_line_group_request:
  246. :desc
  247. :type update_line_group_request: json
  248. :param client_token:
  249. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串。
  250. :type client_token: str
  251. :return:
  252. :rtype baidubce.bce_response.BceResponse
  253. """
  254. api_config = self._get_config(dns_apis, "update_line_group")
  255. self._add_path_param(api_config, "lineId", line_id)
  256. self._add_query(api_config, "clientToken", client_token)
  257. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  258. api_config["queries"], json.dumps(update_line_group_request))
  259. def update_record(self, zone_name=None, record_id=None, update_record_request=None, client_token=None):
  260. """
  261. :param zone_name:
  262. :desc 域名名称。
  263. :type zone_name: str
  264. :param record_id:
  265. :desc 解析记录id。
  266. :type record_id: str
  267. :param update_record_request:
  268. :desc
  269. :type update_record_request: json
  270. :param client_token:
  271. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串。
  272. :type client_token: str
  273. :return:
  274. :rtype baidubce.bce_response.BceResponse
  275. """
  276. api_config = self._get_config(dns_apis, "update_record")
  277. self._add_path_param(api_config, "zoneName", zone_name)
  278. self._add_path_param(api_config, "recordId", record_id)
  279. self._add_query(api_config, "clientToken", client_token)
  280. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  281. api_config["queries"], json.dumps(update_record_request))
  282. def update_record_disable(self, zone_name=None, record_id=None, client_token=None):
  283. """
  284. :param zone_name:
  285. :desc 域名名称。
  286. :type zone_name: str
  287. :param record_id:
  288. :desc 解析记录id。
  289. :type record_id: str
  290. :param client_token:
  291. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串。
  292. :type client_token: str
  293. :return:
  294. :rtype baidubce.bce_response.BceResponse
  295. """
  296. api_config = self._get_config(dns_apis, "update_record_disable")
  297. self._add_path_param(api_config, "zoneName", zone_name)
  298. self._add_path_param(api_config, "recordId", record_id)
  299. self._add_query(api_config, "clientToken", client_token)
  300. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  301. api_config["queries"])
  302. def update_record_enable(self, zone_name=None, record_id=None, client_token=None):
  303. """
  304. :param zone_name:
  305. :desc 域名名称。
  306. :type zone_name: str
  307. :param record_id:
  308. :desc 解析记录id。
  309. :type record_id: str
  310. :param client_token:
  311. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串。
  312. :type client_token: str
  313. :return:
  314. :rtype baidubce.bce_response.BceResponse
  315. """
  316. api_config = self._get_config(dns_apis, "update_record_enable")
  317. self._add_path_param(api_config, "zoneName", zone_name)
  318. self._add_path_param(api_config, "recordId", record_id)
  319. self._add_query(api_config, "clientToken", client_token)
  320. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  321. api_config["queries"])
  322. def upgrade_zone(self, upgrade_zone_request=None, client_token=None):
  323. """
  324. :param upgrade_zone_request:
  325. :desc
  326. :type upgrade_zone_request: json
  327. :param client_token:
  328. :desc 幂等性Token,是一个长度不超过64位的ASCII字符串。
  329. :type client_token: str
  330. :return:
  331. :rtype baidubce.bce_response.BceResponse
  332. """
  333. api_config = self._get_config(dns_apis, "upgrade_zone")
  334. self._add_query(api_config, "clientToken", client_token)
  335. return self._send_request(api_config["method"], quote(api_config["path"]).encode("utf8"), api_config["headers"],
  336. api_config["queries"], json.dumps(upgrade_zone_request))