You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

234 lines
12 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. -module(agMiscFun).
  2. -include("erlArango.hrl").
  3. -compile([export_all, nowarn_export_all]).
  4. %% doc_address:https://www.arangodb.com/docs/stable/http/miscellaneous-functions.html
  5. % 返回服务器版本号
  6. % GET /_api/version
  7. % 查询参数
  8. % details(可选):如果设置为true,则响应将包含一个details属性,其中包含有关所包含组件及其版本的附加信息。详细信息对象的属性名称和内部信息可能会因平台和ArangoDB版本而异。
  9. % 返回服务器名称和版本号。响应是具有以下属性的JSON对象:
  10. % 在所有情况下均返回HTTP 200。
  11. % 服务器:将始终包含arango
  12. % version:服务器版本字符串。该字符串的格式为“ major”。小的。子 ”。major和minor将是数字,sub 可能包含数字或文本版本。
  13. % details:一个可选的JSON对象,带有其他详细信息。仅当请求中的details查询参数设置为true时,才返回此值。
  14. % 体系结构:CPU体系结构,即64位
  15. % arm: false-这不在ARM cpu上运行
  16. % asan:是否已在asan地址清理器打开的情况下进行编译?(应该是错误的)
  17. % asm-crc32:我们有汇编程序实现的CRC函数吗?
  18. % 断言:我们是否有在(=>开发人员版本)中编译的断言
  19. % boost-version:我们绑定哪个boost版本
  20. % build-date:创建此二进制文件的日期
  21. % build-repository:引用从其编译的git-ID
  22. % 编译器:我们使用了哪个编译器
  23. % cplusplus:C ++标准版本
  24. % debug: 生产二进制文件为false
  25. % 字节序:目前仅支持很少
  26. % 故障测试: 对于生产二进制文件为false(禁用致命错误的功能)
  27. % fd-client-event-handler:我们使用哪种方法来处理fd-set,民意调查应该在linux上进行。
  28. % fd-setsize:如果不轮询,则fd setsize对于文件描述符的最大数目有效
  29. % full-version-string:完整版本字符串
  30. % icu-version:我们捆绑哪个版本的ICU
  31. % jemalloc: 如果我们使用jemalloc,则为true
  32. % maintenanceer-mode: 如果这是生产二进制文件,则为false
  33. % openssl-version:我们链接哪个openssl版本?
  34. % 平台:主机os- linux,windows或darwin
  35. % 反应堆类型: epoll TODO
  36. % rockdb-version:此发行版捆绑的rocksdb版本
  37. % server-version:ArangoDB发行版本
  38. % sizeof int:整数的字节数
  39. % sizeof void :* void指针的字节数
  40. % sse42:我们是否具有启用SSE 4.2的CPU?
  41. % unaligned-access:此系统是否支持未对齐的内存访问?
  42. % v8版本:捆绑的V8 JavaScript引擎版本
  43. % vpack-version:使用的velocypack实现的版本
  44. % zlib-version:捆绑的zlib的版本
  45. % 模式:我们作为-[ 服务器,控制台,脚本 ]中的一种运行的模式
  46. % host:主机ID
  47. getSrvVersion(PoolNameOrSocket) ->
  48. agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_api/version">>, [], undefined).
  49. getSrvVersion(PoolNameOrSocket, QueryPars) ->
  50. QueryBinary = agMiscUtils:spellQueryPars(QueryPars),
  51. Path = <<"/_api/version", QueryBinary/binary>>,
  52. agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, Path, [], undefined).
  53. % 返回运行服务器的引擎类型
  54. % GET /_api/engine
  55. % 返回服务器配置为使用的存储引擎。响应是具有以下属性的JSON对象:
  56. % 在所有情况下均返回HTTP 200。
  57. % 名称:将是mmfiles或rocksdb
  58. getSrvEngine(PoolNameOrSocket) ->
  59. agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_api/engine">>, [], undefined).
  60. % 将WAL同步到磁盘。
  61. % PUT /_admin/wal/flush
  62. % 查询参数
  63. % waitForSync(可选):在预写日志中尚未同步的数据同步到磁盘之前,是否应该阻塞该操作。
  64. % waitForCollector(可选):在预写日志垃圾收集器收集刷新日志中的数据之前,是否应阻塞该操作。请注意,如果存在长时间运行的事务并且将预写日志垃圾收集器无法完成垃圾收集,则将此选项设置为true可能会阻塞很长时间。
  65. % 刷新预写日志。通过刷新当前活动的预写日志文件,可以将其中的数据传输到收集日志和数据文件中。这对于确保收集的所有数据都存在于收集日志和数据文件中(例如,在转储收集的数据时)很有用。
  66. % 返回码
  67. % 200:操作成功返回。
  68. % 405:使用无效的HTTP方法时返回。
  69. flushWal(PoolNameOrSocket) ->
  70. agHttpCli:callAgency(PoolNameOrSocket, ?AgPut, <<"/_admin/wal/flush">>, [], undefined).
  71. % 检索预写日志的配置永久链接
  72. % 获取当前配置。
  73. % GET /_admin/wal/properties
  74. % 检索预写日志的配置。结果是具有以下属性的JSON对象:
  75. % allowOversizeEntries:是否可以执行和存储大于单个日志文件的操作
  76. % logfileSize:每个预写日志文件的大小
  77. % HistoricLogfiles:要保留的最大历史日志文件数
  78. % reserveLogfiles:ArangoDB在后台分配的最大保留日志文件数
  79. % syncInterval:尚未同步的预写日志数据的自动同步时间间隔(以毫秒为单位)
  80. % valveWait:如果发生写限制,则操作在中止之前将等待的最大等待时间(以毫秒为单位)
  81. % acceleratorWhenPending:达到该数量时将激活写限制的未处理垃圾收集操作的数量。值为 0表示将不触发写限制。
  82. % 返回码
  83. % 200:操作成功返回。
  84. % 405:使用无效的HTTP方法时返回。
  85. getWalProperties(PoolNameOrSocket) ->
  86. agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_admin/wal/properties">>, [], undefined).
  87. % 配置预写日志永久链接
  88. % 配置沃尔玛的参数
  89. % PUT /_admin/wal/properties
  90. % 配置预写日志的行为。请求的主体必须是具有以下属性的JSON对象:
  91. % allowOversizeEntries:是否可以执行和存储大于单个日志文件的操作
  92. % logfileSize:每个预写日志文件的大小
  93. % HistoricLogfiles:要保留的最大历史日志文件数
  94. % reserveLogfiles:ArangoDB在后台分配的最大保留日志文件数
  95. % valveWait:如果发生写限制,则操作在中止之前将等待的最大等待时间(以毫秒为单位)
  96. % acceleratorWhenPending:达到该数量时将激活写限制的未处理垃圾收集操作的数量。值为 0表示将不触发写限制。
  97. % 指定以上任何属性都是可选的。未指定的属性将被忽略,并且它们的配置也不会被修改。
  98. % 返回码
  99. % 200:操作成功返回。
  100. % 405:使用无效的HTTP方法时返回。
  101. setWalProperties(PoolNameOrSocket, MapData) ->
  102. BodyStr = jiffy:encode(MapData),
  103. agHttpCli:callAgency(PoolNameOrSocket, ?AgPut, <<"/_admin/wal/properties">>, BodyStr, undefined).
  104. % 关于当前运行的事务返回信息永久链接
  105. % 返回有关当前正在运行的事务的信息
  106. % GET /_admin/wal/transactions
  107. % 返回有关当前正在运行的事务的信息。结果是具有以下属性的JSON对象:
  108. % runningTransactions:当前正在运行的事务数
  109. % minLastCollected:最近收集的日志文件的最小ID(在每个正在运行的事务的开始处)。如果没有事务在运行,则为null。
  110. % minLastSealed:最后密封的日志文件的最小ID(在每个运行的事务的开始处)。如果没有事务在运行,则为null。
  111. % 返回码
  112. % 200:操作成功返回。
  113. % 405:使用无效的HTTP方法时返回。
  114. getTransactions(PoolNameOrSocket) ->
  115. agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_admin/wal/transactions">>, [], undefined).
  116. % 返回系统时间固定链接
  117. % 获取系统的当前时间
  118. % GET /_admin/time
  119. % 该调用返回一个属性为time的对象。它包含当前系统时间(以Unix时间戳为单位,精度为微秒)。
  120. % HTTP 200时间已成功返回。
  121. % error:布尔值标志,指示是否发生错误(在这种情况下为false)
  122. % code:HTTP状态码
  123. % time:当前系统时间(以Unix时间戳记为单位,服务器以微秒为单位)
  124. getDbTime(PoolNameOrSocket) ->
  125. agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_admin/time">>, [], undefined).
  126. % 发回所发送的内容,标题,帖子正文等。
  127. % POST /_admin/echo
  128. % 请求正文(对象)
  129. % 主体可以是任何类型,只需转发即可。
  130. % 调用返回一个带有服务器请求信息的对象
  131. % HTTP 200 Echo成功返回。
  132. % 授权:会话是否被授权
  133. % 用户:当前发送此请求的用户
  134. % database:执行此请求的数据库
  135. % url:原始请求URL
  136. % 协议:传输,['http','https','velocystream']之一
  137. % 服务器:
  138. % address:此请求发送到的端点的绑定地址
  139. % port:此请求发送到的端口
  140. % client:客户端连接的属性
  141. % 地址:客户端的IP地址
  142. % port:tcp连接的客户端端口
  143. % id:服务器生成的id
  144. % 内部:服务器内部结构的内容
  145. % prefix:数据库的前缀
  146. % headers:您发送的HTTP标头的列表
  147. % requestType:在这种情况下为POST,如果您使用其他HTTP-Verb,您会发现(获取/删除,...)
  148. % requestBody:我们发送的POST正文的字符串化版本
  149. % 参数:包含查询参数的对象
  150. % cookies:您发送的cookie列表
  151. % 后缀:
  152. % rawSuffix:
  153. % path:此请求的相对路径
  154. % rawRequestBody:已发送字符的数字列表
  155. echo(PoolNameOrSocket) ->
  156. agHttpCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_admin/echo">>, [], undefined).
  157. % 返回数据库的版本。
  158. % GET /_admin/database/target-version
  159. % 返回此服务器所需的数据库版本。版本将在结果的版本属性中返回。
  160. % 返回码
  161. % 200:在所有情况下均返回。
  162. getTargetVersion(PoolNameOrSocket) ->
  163. agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_admin/database/target-version">>, [], undefined).
  164. % 启动关机序列
  165. % DELETE /_admin/shutdown
  166. % 此调用将启动干净的关机序列。需要管理权限
  167. % 返回码
  168. % 200:在所有情况下OK都将返回,成功时将在结果缓冲区中返回。
  169. shutDown(PoolNameOrSocket) ->
  170. agHttpCli:callAgency(PoolNameOrSocket, ?AgDelete, <<"/_admin/shutdown">>, [], undefined).
  171. % 在服务器上执行脚本。
  172. % POST /_admin/execute
  173. % 请求正文(字符串)
  174. % 要执行的主体。
  175. % 将服务器主体中的javascript代码作为不带参数的函数主体执行。如果您有return语句,那么您产生的返回值将作为内容类型 application / json返回。如果参数returnAsJSON设置为 true,则结果将是一个直接描述返回值的JSON对象,否则将返回JSON.stringify生成的字符串。
  176. % 请注意,只有在使用option启动服务器时,此API端点才会存在--javascript.allow-admin-execute true。
  177. % 此选项的默认值为false,它禁用用户定义代码的执行并完全禁用此API端点。这也是建议的生产设置。
  178. % 返回码
  179. % 200:一切正常或发生超时时返回。在后一种情况下,将返回指示超时的application / json类型的主体。根据returnAsJSON的不同,这是一个json对象或纯字符串。
  180. % 403:如果ArangoDB不在集群模式下运行,则返回。
  181. % 404:如果未为群集操作编译ArangoDB,则返回404。
  182. execute(PoolNameOrSocket, MapData) ->
  183. BodyStr = jiffy:encode(MapData),
  184. agHttpCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_admin/execute">>, [], BodyStr).
  185. % 返回服务器的状态信息。
  186. % GET /_admin/status
  187. % 返回有关服务器的状态信息。
  188. % 这是供支持人员手动使用的,决不能用于监视或自动测试。结果如有更改,恕不另行通知。
  189. % 该调用返回具有以下属性的对象:
  190. % 服务器:总是arango。
  191. % 执照:社区或企业。
  192. % version:服务器版本,以字符串形式。
  193. % 模式:服务器或控制台。
  194. % host:主机名,请参阅ServerState。
  195. % serverInfo.role:单个,协调器,主要,代理。
  196. % serverInfo.writeOpsEnabled:布尔值,如果启用写入,则为true。
  197. % serverInfo.maintenance:布尔值,如果启用了维护模式,则为true。
  198. % agency.endpoints:可能的代理商端点的列表。
  199. % 代理商,协调员或主要代理商也将拥有
  200. % serverInfo.persistedId:保留的ide,例如“ CRDN-e427b441-5087-4a9a-9983-2fb1682f3e2a”。
  201. % 协调员或主要人员也将拥有
  202. % serverInfo.state:服务中
  203. % serverInfo.address:服务器的地址,例如tcp:// [:: 1]:8530。
  204. % serverInfo.serverId:服务器端,例如“ CRDN-e427b441-5087-4a9a-9983-2fb1682f3e2a”。
  205. % 协调员还将有
  206. % coordinator.foxxmaster:foxx主服务器的服务器ID。
  207. % coordinator.isFoxxmaster:布尔值,如果服务器是foxx主服务器,则为true。
  208. % 代理商也将拥有
  209. % agent.id:此代理的服务器ID。
  210. % agent.leaderId:领导者的服务器ID。
  211. % agent。Leading:布尔值,如果为领先则为 true。
  212. % agent.endpoint:此代理的端点。
  213. % agent.term:当前术语编号。
  214. % 返回码
  215. % 200:状态信息返回成功
  216. getDbStatus(PoolNameOrSocket) ->
  217. agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_admin/status">>, [], undefined).