i2up-python-sdk 9.1.3.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1472) hide show
  1. examples/OracleRule.py +39 -0
  2. examples/__init__.py +0 -0
  3. examples/nodeList.py +42 -0
  4. examples/repBackupList.py +30 -0
  5. i2up_python_sdk-9.1.3.1.dist-info/LICENSE +201 -0
  6. i2up_python_sdk-9.1.3.1.dist-info/METADATA +23 -0
  7. i2up_python_sdk-9.1.3.1.dist-info/RECORD +1472 -0
  8. i2up_python_sdk-9.1.3.1.dist-info/WHEEL +5 -0
  9. i2up_python_sdk-9.1.3.1.dist-info/top_level.txt +2 -0
  10. info2soft/ContainerCls/__init__.py +0 -0
  11. info2soft/ContainerCls/v20240819/ContainerCls.py +261 -0
  12. info2soft/ContainerCls/v20240819/__init__.py +2 -0
  13. info2soft/ContainerCls/v20250123/ContainerCls.py +261 -0
  14. info2soft/ContainerCls/v20250123/__init__.py +2 -0
  15. info2soft/ContainerCls/v20250630/ContainerCls.py +261 -0
  16. info2soft/ContainerCls/v20250630/__init__.py +2 -0
  17. info2soft/TapeCopy/__init__.py +0 -0
  18. info2soft/TapeCopy/v20240819/TapeCopy.py +74 -0
  19. info2soft/TapeCopy/v20240819/__init__.py +2 -0
  20. info2soft/TapeCopy/v20250123/TapeCopy.py +74 -0
  21. info2soft/TapeCopy/v20250123/__init__.py +2 -0
  22. info2soft/TapeCopy/v20250630/TapeCopy.py +74 -0
  23. info2soft/TapeCopy/v20250630/__init__.py +2 -0
  24. info2soft/__init__.py +85 -0
  25. info2soft/active/__init__.py +3 -0
  26. info2soft/active/test/__init__.py +0 -0
  27. info2soft/active/test/v20200720/DataChkTest.py +269 -0
  28. info2soft/active/test/v20200720/Db2Test.py +546 -0
  29. info2soft/active/test/v20200720/DmTest.py +285 -0
  30. info2soft/active/test/v20200720/GaussTest.py +339 -0
  31. info2soft/active/test/v20200720/HeteroTest.py +416 -0
  32. info2soft/active/test/v20200720/InfomixTest.py +193 -0
  33. info2soft/active/test/v20200720/LogTest.py +69 -0
  34. info2soft/active/test/v20200720/MaskTest.py +690 -0
  35. info2soft/active/test/v20200720/MongoDBTest.py +202 -0
  36. info2soft/active/test/v20200720/MysqlTest.py +1058 -0
  37. info2soft/active/test/v20200720/NodeTest.py +200 -0
  38. info2soft/active/test/v20200720/NotificationsTest.py +52 -0
  39. info2soft/active/test/v20200720/OceanbaseTest.py +316 -0
  40. info2soft/active/test/v20200720/OracleRuleTest.py +1588 -0
  41. info2soft/active/test/v20200720/PostgresTest.py +238 -0
  42. info2soft/active/test/v20200720/QianBaseSyncTest.py +404 -0
  43. info2soft/active/test/v20200720/QianBasexTPTest.py +174 -0
  44. info2soft/active/test/v20200720/ScriptMaskTest.py +255 -0
  45. info2soft/active/test/v20200720/SqlserverTest.py +505 -0
  46. info2soft/active/test/v20200720/SummaryTest.py +76 -0
  47. info2soft/active/test/v20200720/SyncRulesTest.py +1295 -0
  48. info2soft/active/test/v20200720/TidbTest.py +444 -0
  49. info2soft/active/test/v20200720/__init__.py +0 -0
  50. info2soft/active/test/v20220622/DataChkTest.py +269 -0
  51. info2soft/active/test/v20220622/Db2Test.py +546 -0
  52. info2soft/active/test/v20220622/DmTest.py +285 -0
  53. info2soft/active/test/v20220622/GaussTest.py +339 -0
  54. info2soft/active/test/v20220622/HeteroTest.py +416 -0
  55. info2soft/active/test/v20220622/InfomixTest.py +193 -0
  56. info2soft/active/test/v20220622/LogTest.py +69 -0
  57. info2soft/active/test/v20220622/MaskTest.py +690 -0
  58. info2soft/active/test/v20220622/MongoDBTest.py +202 -0
  59. info2soft/active/test/v20220622/MysqlTest.py +1058 -0
  60. info2soft/active/test/v20220622/NodeTest.py +200 -0
  61. info2soft/active/test/v20220622/NotificationsTest.py +52 -0
  62. info2soft/active/test/v20220622/OceanbaseTest.py +316 -0
  63. info2soft/active/test/v20220622/OracleRuleTest.py +1588 -0
  64. info2soft/active/test/v20220622/PostgresTest.py +238 -0
  65. info2soft/active/test/v20220622/QianBaseSyncTest.py +404 -0
  66. info2soft/active/test/v20220622/QianBasexTPTest.py +174 -0
  67. info2soft/active/test/v20220622/ScriptMaskTest.py +255 -0
  68. info2soft/active/test/v20220622/SqlserverTest.py +505 -0
  69. info2soft/active/test/v20220622/SummaryTest.py +76 -0
  70. info2soft/active/test/v20220622/SyncRulesTest.py +1295 -0
  71. info2soft/active/test/v20220622/TidbTest.py +444 -0
  72. info2soft/active/test/v20220622/__init__.py +0 -0
  73. info2soft/active/v20200720/DataChk.py +192 -0
  74. info2soft/active/v20200720/Db2.py +495 -0
  75. info2soft/active/v20200720/Dm.py +226 -0
  76. info2soft/active/v20200720/Gauss.py +184 -0
  77. info2soft/active/v20200720/Hetero.py +320 -0
  78. info2soft/active/v20200720/Infomix.py +98 -0
  79. info2soft/active/v20200720/Log.py +35 -0
  80. info2soft/active/v20200720/Mask.py +475 -0
  81. info2soft/active/v20200720/MongoDB.py +158 -0
  82. info2soft/active/v20200720/Mysql.py +936 -0
  83. info2soft/active/v20200720/Node.py +126 -0
  84. info2soft/active/v20200720/Notifications.py +21 -0
  85. info2soft/active/v20200720/Oceanbase.py +257 -0
  86. info2soft/active/v20200720/OracleRule.py +1360 -0
  87. info2soft/active/v20200720/Postgres.py +196 -0
  88. info2soft/active/v20200720/QianBaseSync.py +330 -0
  89. info2soft/active/v20200720/QianBasexTP.py +86 -0
  90. info2soft/active/v20200720/ScriptMask.py +193 -0
  91. info2soft/active/v20200720/Sqlserver.py +430 -0
  92. info2soft/active/v20200720/Summary.py +46 -0
  93. info2soft/active/v20200720/SyncRules.py +1079 -0
  94. info2soft/active/v20200720/Tidb.py +304 -0
  95. info2soft/active/v20200720/__init__.py +6 -0
  96. info2soft/active/v20220622/DataChk.py +192 -0
  97. info2soft/active/v20220622/Db2.py +495 -0
  98. info2soft/active/v20220622/Dm.py +226 -0
  99. info2soft/active/v20220622/Gauss.py +184 -0
  100. info2soft/active/v20220622/Hetero.py +320 -0
  101. info2soft/active/v20220622/Infomix.py +98 -0
  102. info2soft/active/v20220622/Log.py +35 -0
  103. info2soft/active/v20220622/Mask.py +475 -0
  104. info2soft/active/v20220622/MongoDB.py +158 -0
  105. info2soft/active/v20220622/Mysql.py +936 -0
  106. info2soft/active/v20220622/Node.py +126 -0
  107. info2soft/active/v20220622/Notifications.py +21 -0
  108. info2soft/active/v20220622/Oceanbase.py +257 -0
  109. info2soft/active/v20220622/OracleRule.py +1360 -0
  110. info2soft/active/v20220622/Postgres.py +196 -0
  111. info2soft/active/v20220622/QianBaseSync.py +330 -0
  112. info2soft/active/v20220622/QianBasexTP.py +86 -0
  113. info2soft/active/v20220622/ScriptMask.py +193 -0
  114. info2soft/active/v20220622/Sqlserver.py +430 -0
  115. info2soft/active/v20220622/Summary.py +46 -0
  116. info2soft/active/v20220622/SyncRules.py +1079 -0
  117. info2soft/active/v20220622/Tidb.py +304 -0
  118. info2soft/active/v20220622/__init__.py +22 -0
  119. info2soft/active/v20230227/DataChk.py +302 -0
  120. info2soft/active/v20230227/Db2.py +282 -0
  121. info2soft/active/v20230227/Dm.py +98 -0
  122. info2soft/active/v20230227/Gauss.py +140 -0
  123. info2soft/active/v20230227/Hetero.py +296 -0
  124. info2soft/active/v20230227/Infomix.py +73 -0
  125. info2soft/active/v20230227/Log.py +47 -0
  126. info2soft/active/v20230227/Mask.py +488 -0
  127. info2soft/active/v20230227/MongoDB.py +111 -0
  128. info2soft/active/v20230227/Mysql.py +936 -0
  129. info2soft/active/v20230227/Notifications.py +21 -0
  130. info2soft/active/v20230227/Oceanbase.py +124 -0
  131. info2soft/active/v20230227/OfflineRule.py +100 -0
  132. info2soft/active/v20230227/OracleRule.py +490 -0
  133. info2soft/active/v20230227/Postgres.py +114 -0
  134. info2soft/active/v20230227/QianBaseSync.py +259 -0
  135. info2soft/active/v20230227/QianBasexTP.py +86 -0
  136. info2soft/active/v20230227/Redis.py +111 -0
  137. info2soft/active/v20230227/ScriptMask.py +170 -0
  138. info2soft/active/v20230227/Sqlserver.py +323 -0
  139. info2soft/active/v20230227/Summary.py +45 -0
  140. info2soft/active/v20230227/Tidb.py +114 -0
  141. info2soft/active/v20230227/__init__.py +44 -0
  142. info2soft/active/v20240228/DataChk.py +428 -0
  143. info2soft/active/v20240228/Db2.py +370 -0
  144. info2soft/active/v20240228/Dm.py +142 -0
  145. info2soft/active/v20240228/Gauss.py +140 -0
  146. info2soft/active/v20240228/HBase.py +75 -0
  147. info2soft/active/v20240228/Hetero.py +296 -0
  148. info2soft/active/v20240228/Infomix.py +136 -0
  149. info2soft/active/v20240228/Log.py +47 -0
  150. info2soft/active/v20240228/Mask.py +503 -0
  151. info2soft/active/v20240228/MongoDB.py +155 -0
  152. info2soft/active/v20240228/Mysql.py +949 -0
  153. info2soft/active/v20240228/Notifications.py +21 -0
  154. info2soft/active/v20240228/Oceanbase.py +244 -0
  155. info2soft/active/v20240228/OfflineRule.py +100 -0
  156. info2soft/active/v20240228/OracleRule.py +1683 -0
  157. info2soft/active/v20240228/Postgres.py +177 -0
  158. info2soft/active/v20240228/QianBaseSync.py +303 -0
  159. info2soft/active/v20240228/QianBasexTP.py +86 -0
  160. info2soft/active/v20240228/Redis.py +155 -0
  161. info2soft/active/v20240228/ScriptMask.py +170 -0
  162. info2soft/active/v20240228/Sqlserver.py +468 -0
  163. info2soft/active/v20240228/Summary.py +45 -0
  164. info2soft/active/v20240228/Tidb.py +291 -0
  165. info2soft/active/v20240228/__init__.py +44 -0
  166. info2soft/active/v20240819/DataChk.py +380 -0
  167. info2soft/active/v20240819/Db2.py +164 -0
  168. info2soft/active/v20240819/Dm.py +111 -0
  169. info2soft/active/v20240819/HBase.py +75 -0
  170. info2soft/active/v20240819/Hetero.py +231 -0
  171. info2soft/active/v20240819/Informix.py +112 -0
  172. info2soft/active/v20240819/Mask.py +493 -0
  173. info2soft/active/v20240819/MongoDB.py +115 -0
  174. info2soft/active/v20240819/Mysql.py +270 -0
  175. info2soft/active/v20240819/Notifications.py +21 -0
  176. info2soft/active/v20240819/Oceanbase.py +202 -0
  177. info2soft/active/v20240819/OfflineRule.py +207 -0
  178. info2soft/active/v20240819/OracleRule.py +1397 -0
  179. info2soft/active/v20240819/Postgres.py +140 -0
  180. info2soft/active/v20240819/QianBaseSync.py +140 -0
  181. info2soft/active/v20240819/Rabbitmq.py +111 -0
  182. info2soft/active/v20240819/Redis.py +115 -0
  183. info2soft/active/v20240819/ScriptMask.py +210 -0
  184. info2soft/active/v20240819/Sqlserver.py +230 -0
  185. info2soft/active/v20240819/Summary.py +34 -0
  186. info2soft/active/v20240819/Tidb.py +205 -0
  187. info2soft/active/v20240819/__init__.py +42 -0
  188. info2soft/active/v20250123/DataChk.py +380 -0
  189. info2soft/active/v20250123/Db2.py +163 -0
  190. info2soft/active/v20250123/Dm.py +111 -0
  191. info2soft/active/v20250123/HBase.py +75 -0
  192. info2soft/active/v20250123/Hetero.py +244 -0
  193. info2soft/active/v20250123/HeteroConsumer.py +114 -0
  194. info2soft/active/v20250123/Informix.py +112 -0
  195. info2soft/active/v20250123/Mask.py +493 -0
  196. info2soft/active/v20250123/MongoDB.py +115 -0
  197. info2soft/active/v20250123/Mysql.py +270 -0
  198. info2soft/active/v20250123/MysqlRule.py +125 -0
  199. info2soft/active/v20250123/Notifications.py +21 -0
  200. info2soft/active/v20250123/Oceanbase.py +202 -0
  201. info2soft/active/v20250123/OfflineRule.py +207 -0
  202. info2soft/active/v20250123/OracleRule.py +1397 -0
  203. info2soft/active/v20250123/Postgres.py +140 -0
  204. info2soft/active/v20250123/QianBaseSync.py +140 -0
  205. info2soft/active/v20250123/Rabbitmq.py +111 -0
  206. info2soft/active/v20250123/Redis.py +115 -0
  207. info2soft/active/v20250123/ScriptMask.py +210 -0
  208. info2soft/active/v20250123/SqlServerRule.py +125 -0
  209. info2soft/active/v20250123/Sqlserver.py +230 -0
  210. info2soft/active/v20250123/Summary.py +34 -0
  211. info2soft/active/v20250123/Tidb.py +205 -0
  212. info2soft/active/v20250123/__init__.py +48 -0
  213. info2soft/active/v20250630/DataChk.py +380 -0
  214. info2soft/active/v20250630/Db2.py +163 -0
  215. info2soft/active/v20250630/Dm.py +111 -0
  216. info2soft/active/v20250630/HBase.py +75 -0
  217. info2soft/active/v20250630/Hetero.py +244 -0
  218. info2soft/active/v20250630/HeteroConsumer.py +140 -0
  219. info2soft/active/v20250630/Informix.py +112 -0
  220. info2soft/active/v20250630/Mask.py +493 -0
  221. info2soft/active/v20250630/MongoDB.py +115 -0
  222. info2soft/active/v20250630/Mysql.py +270 -0
  223. info2soft/active/v20250630/MysqlRule.py +125 -0
  224. info2soft/active/v20250630/Notifications.py +21 -0
  225. info2soft/active/v20250630/Oceanbase.py +202 -0
  226. info2soft/active/v20250630/OfflineRule.py +207 -0
  227. info2soft/active/v20250630/OracleRule.py +1397 -0
  228. info2soft/active/v20250630/Postgres.py +140 -0
  229. info2soft/active/v20250630/QianBaseSync.py +140 -0
  230. info2soft/active/v20250630/Rabbitmq.py +111 -0
  231. info2soft/active/v20250630/Redis.py +115 -0
  232. info2soft/active/v20250630/RocketMq.py +114 -0
  233. info2soft/active/v20250630/RoutingRule.py +163 -0
  234. info2soft/active/v20250630/ScriptMask.py +210 -0
  235. info2soft/active/v20250630/SqlServerRule.py +125 -0
  236. info2soft/active/v20250630/Sqlserver.py +230 -0
  237. info2soft/active/v20250630/Summary.py +34 -0
  238. info2soft/active/v20250630/Tidb.py +205 -0
  239. info2soft/active/v20250630/__init__.py +52 -0
  240. info2soft/appContinuity/__init__.py +0 -0
  241. info2soft/appContinuity/v20240819/AppContinuity.py +180 -0
  242. info2soft/appContinuity/v20240819/__init__.py +2 -0
  243. info2soft/appContinuity/v20250123/AppContinuity.py +180 -0
  244. info2soft/appContinuity/v20250123/__init__.py +2 -0
  245. info2soft/appContinuity/v20250630/AppContinuity.py +219 -0
  246. info2soft/appContinuity/v20250630/__init__.py +2 -0
  247. info2soft/authorization/__init__.py +0 -0
  248. info2soft/authorization/v20240819/Authorization.py +99 -0
  249. info2soft/authorization/v20240819/__init__.py +2 -0
  250. info2soft/authorization/v20250123/Authorization.py +99 -0
  251. info2soft/authorization/v20250123/__init__.py +2 -0
  252. info2soft/authorization/v20250630/Authorization.py +99 -0
  253. info2soft/authorization/v20250630/__init__.py +2 -0
  254. info2soft/backupDomain/__init__.py +0 -0
  255. info2soft/backupDomain/v20250630/BackupDomain.py +115 -0
  256. info2soft/backupDomain/v20250630/__init__.py +2 -0
  257. info2soft/backupRule/__init__.py +0 -0
  258. info2soft/backupRule/v20240228/BackupRule.py +178 -0
  259. info2soft/backupRule/v20240228/__init__.py +2 -0
  260. info2soft/backupRule/v20240819/BackupRule.py +167 -0
  261. info2soft/backupRule/v20240819/__init__.py +2 -0
  262. info2soft/backupRule/v20250123/BackupRule.py +193 -0
  263. info2soft/backupRule/v20250123/__init__.py +2 -0
  264. info2soft/backupRule/v20250630/BackupRule.py +232 -0
  265. info2soft/backupRule/v20250630/__init__.py +2 -0
  266. info2soft/backupSet/__init__.py +0 -0
  267. info2soft/backupSet/v20240228/BackupSet.py +208 -0
  268. info2soft/backupSet/v20240228/__init__.py +2 -0
  269. info2soft/backupSet/v20240819/BackupSet.py +242 -0
  270. info2soft/backupSet/v20240819/__init__.py +2 -0
  271. info2soft/backupSet/v20250123/BackupSet.py +294 -0
  272. info2soft/backupSet/v20250123/__init__.py +2 -0
  273. info2soft/backupSet/v20250630/BackupSet.py +294 -0
  274. info2soft/backupSet/v20250630/__init__.py +2 -0
  275. info2soft/backupSetRulePolicy/__init__.py +0 -0
  276. info2soft/backupSetRulePolicy/v20240228/BackupSetRulePolicy.py +76 -0
  277. info2soft/backupSetRulePolicy/v20240228/__init__.py +2 -0
  278. info2soft/backupSetRulePolicy/v20240819/BackupSetRulePolicy.py +76 -0
  279. info2soft/backupSetRulePolicy/v20240819/__init__.py +2 -0
  280. info2soft/backupSetRulePolicy/v20250123/BackupSetRulePolicy.py +76 -0
  281. info2soft/backupSetRulePolicy/v20250123/__init__.py +2 -0
  282. info2soft/backupSetRulePolicy/v20250630/BackupSetRulePolicy.py +76 -0
  283. info2soft/backupSetRulePolicy/v20250630/__init__.py +2 -0
  284. info2soft/backupWork/__init__.py +0 -0
  285. info2soft/backupWork/v20240228/BackupWork.py +152 -0
  286. info2soft/backupWork/v20240228/__init__.py +2 -0
  287. info2soft/backupWork/v20240819/BackupWork.py +183 -0
  288. info2soft/backupWork/v20240819/__init__.py +2 -0
  289. info2soft/backupWork/v20250123/BackupWork.py +183 -0
  290. info2soft/backupWork/v20250123/__init__.py +2 -0
  291. info2soft/backupWork/v20250630/BackupWork.py +183 -0
  292. info2soft/backupWork/v20250630/__init__.py +2 -0
  293. info2soft/bigdata/__init__.py +2 -0
  294. info2soft/bigdata/v20200724/Backup.py +130 -0
  295. info2soft/bigdata/v20200724/Recovery.py +164 -0
  296. info2soft/bigdata/v20200724/__init__.py +3 -0
  297. info2soft/bigdata/v20220622/Backup.py +130 -0
  298. info2soft/bigdata/v20220622/Recovery.py +164 -0
  299. info2soft/bigdata/v20220622/__init__.py +3 -0
  300. info2soft/bigdata/v20230227/Backup.py +218 -0
  301. info2soft/bigdata/v20230227/__init__.py +2 -0
  302. info2soft/bigdata/v20240228/Backup.py +257 -0
  303. info2soft/bigdata/v20240228/__init__.py +2 -0
  304. info2soft/bigdata/v20240819/Backup.py +243 -0
  305. info2soft/bigdata/v20240819/Recovery.py +152 -0
  306. info2soft/bigdata/v20240819/__init__.py +4 -0
  307. info2soft/bigdata/v20250123/Backup.py +243 -0
  308. info2soft/bigdata/v20250123/Recovery.py +152 -0
  309. info2soft/bigdata/v20250123/__init__.py +4 -0
  310. info2soft/bigdata/v20250630/Backup.py +243 -0
  311. info2soft/bigdata/v20250630/Recovery.py +152 -0
  312. info2soft/bigdata/v20250630/__init__.py +4 -0
  313. info2soft/bigdataBackupRule/__init__.py +0 -0
  314. info2soft/bigdataBackupRule/v20240819/BigdataBackupRule.py +152 -0
  315. info2soft/bigdataBackupRule/v20240819/__init__.py +2 -0
  316. info2soft/bigdataBackupRule/v20250123/BigdataBackupRule.py +152 -0
  317. info2soft/bigdataBackupRule/v20250123/__init__.py +2 -0
  318. info2soft/bigdataBackupRule/v20250630/BigdataBackupRule.py +152 -0
  319. info2soft/bigdataBackupRule/v20250630/__init__.py +2 -0
  320. info2soft/bigdataRecoveryRule/__init__.py +0 -0
  321. info2soft/bigdataRecoveryRule/v20240819/BigdataRecoveryRule.py +76 -0
  322. info2soft/bigdataRecoveryRule/v20240819/__init__.py +2 -0
  323. info2soft/bigdataRecoveryRule/v20250123/BigdataRecoveryRule.py +76 -0
  324. info2soft/bigdataRecoveryRule/v20250123/__init__.py +2 -0
  325. info2soft/bigdataRecoveryRule/v20250630/BigdataRecoveryRule.py +76 -0
  326. info2soft/bigdataRecoveryRule/v20250630/__init__.py +2 -0
  327. info2soft/cdm/__init__.py +1 -0
  328. info2soft/cdm/v20200729/Cdm.py +688 -0
  329. info2soft/cdm/v20200729/__init__.py +2 -0
  330. info2soft/cdm/v20220622/Cdm.py +688 -0
  331. info2soft/cdm/v20220622/__init__.py +2 -0
  332. info2soft/cdm/v20230227/Cdm.py +602 -0
  333. info2soft/cdm/v20230227/__init__.py +2 -0
  334. info2soft/cdm/v20240228/Cdm.py +640 -0
  335. info2soft/cdm/v20240228/__init__.py +2 -0
  336. info2soft/cdm/v20240819/Cdm.py +232 -0
  337. info2soft/cdm/v20240819/CdmRecovery.py +99 -0
  338. info2soft/cdm/v20240819/CdmRule.py +113 -0
  339. info2soft/cdm/v20240819/Drill.py +127 -0
  340. info2soft/cdm/v20240819/FfoMount.py +89 -0
  341. info2soft/cdm/v20240819/RemoteCoopy.py +178 -0
  342. info2soft/cdm/v20240819/__init__.py +12 -0
  343. info2soft/cdm/v20250123/Cdm.py +232 -0
  344. info2soft/cdm/v20250123/CdmRecovery.py +99 -0
  345. info2soft/cdm/v20250123/CdmRule.py +113 -0
  346. info2soft/cdm/v20250123/Drill.py +127 -0
  347. info2soft/cdm/v20250123/FfoMount.py +89 -0
  348. info2soft/cdm/v20250123/RemoteCoopy.py +178 -0
  349. info2soft/cdm/v20250123/__init__.py +12 -0
  350. info2soft/cdm/v20250630/Cdm.py +232 -0
  351. info2soft/cdm/v20250630/CdmRecovery.py +99 -0
  352. info2soft/cdm/v20250630/CdmRule.py +113 -0
  353. info2soft/cdm/v20250630/Drill.py +127 -0
  354. info2soft/cdm/v20250630/FfoMount.py +89 -0
  355. info2soft/cdm/v20250630/RemoteCoopy.py +178 -0
  356. info2soft/cdm/v20250630/__init__.py +12 -0
  357. info2soft/cfs/__init__.py +0 -0
  358. info2soft/cfs/v20240228/CfsBackup.py +218 -0
  359. info2soft/cfs/v20240228/__init__.py +2 -0
  360. info2soft/cfs/v20240819/CfsBackup.py +193 -0
  361. info2soft/cfs/v20240819/__init__.py +2 -0
  362. info2soft/cfs/v20250123/CfsBackup.py +193 -0
  363. info2soft/cfs/v20250123/__init__.py +2 -0
  364. info2soft/cfs/v20250630/CfsBackup.py +232 -0
  365. info2soft/cfs/v20250630/__init__.py +2 -0
  366. info2soft/cloud/__init__.py +1 -0
  367. info2soft/cloud/v20200727/CloudBackup.py +170 -0
  368. info2soft/cloud/v20200727/CloudEcs.py +237 -0
  369. info2soft/cloud/v20200727/CloudPlatform.py +191 -0
  370. info2soft/cloud/v20200727/CloudRehearse.py +438 -0
  371. info2soft/cloud/v20200727/CloudVolume.py +123 -0
  372. info2soft/cloud/v20200727/__init__.py +6 -0
  373. info2soft/cloud/v20220622/CloudBackup.py +170 -0
  374. info2soft/cloud/v20220622/CloudEcs.py +237 -0
  375. info2soft/cloud/v20220622/CloudPlatform.py +191 -0
  376. info2soft/cloud/v20220622/CloudRehearse.py +438 -0
  377. info2soft/cloud/v20220622/CloudVolume.py +123 -0
  378. info2soft/cloud/v20220622/__init__.py +6 -0
  379. info2soft/cloud/v20230227/CloudBackup.py +1028 -0
  380. info2soft/cloud/v20230227/__init__.py +2 -0
  381. info2soft/cloud/v20240228/CloudBackup.py +1098 -0
  382. info2soft/cloud/v20240228/__init__.py +2 -0
  383. info2soft/cloud/v20240819/CloudBackendStorage.py +76 -0
  384. info2soft/cloud/v20240819/CloudBackup.py +153 -0
  385. info2soft/cloud/v20240819/CloudEcs.py +256 -0
  386. info2soft/cloud/v20240819/CloudPlatform.py +193 -0
  387. info2soft/cloud/v20240819/CloudRehearse.py +438 -0
  388. info2soft/cloud/v20240819/CloudVolume.py +124 -0
  389. info2soft/cloud/v20240819/__init__.py +12 -0
  390. info2soft/cloud/v20250123/CloudBackendStorage.py +76 -0
  391. info2soft/cloud/v20250123/CloudBackup.py +153 -0
  392. info2soft/cloud/v20250123/CloudEcs.py +256 -0
  393. info2soft/cloud/v20250123/CloudPlatform.py +193 -0
  394. info2soft/cloud/v20250123/CloudRehearse.py +438 -0
  395. info2soft/cloud/v20250123/CloudVolume.py +124 -0
  396. info2soft/cloud/v20250123/__init__.py +12 -0
  397. info2soft/cloud/v20250630/CloudBackendStorage.py +76 -0
  398. info2soft/cloud/v20250630/CloudBackup.py +153 -0
  399. info2soft/cloud/v20250630/CloudEcs.py +256 -0
  400. info2soft/cloud/v20250630/CloudPlatform.py +193 -0
  401. info2soft/cloud/v20250630/CloudRehearse.py +438 -0
  402. info2soft/cloud/v20250630/CloudVolume.py +124 -0
  403. info2soft/cloud/v20250630/__init__.py +12 -0
  404. info2soft/common/Auth.py +215 -0
  405. info2soft/common/BackupMigrate.py +111 -0
  406. info2soft/common/Cache.py +93 -0
  407. info2soft/common/CcMonitor.py +33 -0
  408. info2soft/common/Client.py +101 -0
  409. info2soft/common/CompareResult.py +78 -0
  410. info2soft/common/Credential.py +102 -0
  411. info2soft/common/DataBaseBackup.py +68 -0
  412. info2soft/common/DbConvert.py +46 -0
  413. info2soft/common/Diagnose.py +47 -0
  414. info2soft/common/Dir.py +112 -0
  415. info2soft/common/FindPassword.py +60 -0
  416. info2soft/common/GTS.py +83 -0
  417. info2soft/common/GeneralInterface.py +256 -0
  418. info2soft/common/Lic.py +215 -0
  419. info2soft/common/Logs.py +85 -0
  420. info2soft/common/Menu.py +20 -0
  421. info2soft/common/Notifications.py +177 -0
  422. info2soft/common/OpLogs.py +72 -0
  423. info2soft/common/Permission.py +32 -0
  424. info2soft/common/Qr.py +99 -0
  425. info2soft/common/RestrpcServer.py +114 -0
  426. info2soft/common/Rsa.py +67 -0
  427. info2soft/common/Settings.py +448 -0
  428. info2soft/common/Statistics.py +101 -0
  429. info2soft/common/Storage.py +978 -0
  430. info2soft/common/Tenant.py +62 -0
  431. info2soft/common/Wechat.py +45 -0
  432. info2soft/common/__init__.py +0 -0
  433. info2soft/common/test/__init__.py +0 -0
  434. info2soft/common/test/v20190104/AuthTest.py +124 -0
  435. info2soft/common/test/v20190104/BackupMigrateTest.py +149 -0
  436. info2soft/common/test/v20190104/CcMonitorTest.py +63 -0
  437. info2soft/common/test/v20190104/ClientTest.py +153 -0
  438. info2soft/common/test/v20190104/CompareResultTest.py +102 -0
  439. info2soft/common/test/v20190104/CredentialTest.py +129 -0
  440. info2soft/common/test/v20190104/DataBaseBackupTest.py +75 -0
  441. info2soft/common/test/v20190104/DbConvertTest.py +73 -0
  442. info2soft/common/test/v20190104/DiagnoseTest.py +79 -0
  443. info2soft/common/test/v20190104/DirTest.py +158 -0
  444. info2soft/common/test/v20190104/FindPasswordTest.py +92 -0
  445. info2soft/common/test/v20190104/GTSTest.py +117 -0
  446. info2soft/common/test/v20190104/GeneralInterfaceTest.py +285 -0
  447. info2soft/common/test/v20190104/LicTest.py +265 -0
  448. info2soft/common/test/v20190104/LogsTest.py +153 -0
  449. info2soft/common/test/v20190104/MenuTest.py +48 -0
  450. info2soft/common/test/v20190104/NotificationsTest.py +256 -0
  451. info2soft/common/test/v20190104/OpLogsTest.py +125 -0
  452. info2soft/common/test/v20190104/PermissionTest.py +55 -0
  453. info2soft/common/test/v20190104/QrTest.py +117 -0
  454. info2soft/common/test/v20190104/RestrpcServerTest.py +159 -0
  455. info2soft/common/test/v20190104/SettingsTest.py +518 -0
  456. info2soft/common/test/v20190104/StatisticsTest.py +210 -0
  457. info2soft/common/test/v20190104/StorageTest.py +48 -0
  458. info2soft/common/test/v20190104/TenantTest.py +100 -0
  459. info2soft/common/test/v20190104/WechatTest.py +72 -0
  460. info2soft/common/test/v20190104/__init__.py +0 -0
  461. info2soft/common/test/v20190805/MonitorTest.py +45 -0
  462. info2soft/common/test/v20190805/PermissionTest.py +45 -0
  463. info2soft/common/test/v20190805/StorageTest.py +1058 -0
  464. info2soft/common/test/v20190805/__init__.py +0 -0
  465. info2soft/common/test/v20220622/AuthTest.py +124 -0
  466. info2soft/common/test/v20220622/BackupMigrateTest.py +149 -0
  467. info2soft/common/test/v20220622/CcMonitorTest.py +63 -0
  468. info2soft/common/test/v20220622/ClientTest.py +153 -0
  469. info2soft/common/test/v20220622/CompareResultTest.py +102 -0
  470. info2soft/common/test/v20220622/CredentialTest.py +129 -0
  471. info2soft/common/test/v20220622/DataBaseBackupTest.py +75 -0
  472. info2soft/common/test/v20220622/DbConvertTest.py +73 -0
  473. info2soft/common/test/v20220622/DiagnoseTest.py +79 -0
  474. info2soft/common/test/v20220622/DirTest.py +158 -0
  475. info2soft/common/test/v20220622/FindPasswordTest.py +92 -0
  476. info2soft/common/test/v20220622/GTSTest.py +117 -0
  477. info2soft/common/test/v20220622/GeneralInterfaceTest.py +285 -0
  478. info2soft/common/test/v20220622/LicTest.py +265 -0
  479. info2soft/common/test/v20220622/LogsTest.py +153 -0
  480. info2soft/common/test/v20220622/MenuTest.py +48 -0
  481. info2soft/common/test/v20220622/NotificationsTest.py +256 -0
  482. info2soft/common/test/v20220622/OpLogsTest.py +125 -0
  483. info2soft/common/test/v20220622/PermissionTest.py +55 -0
  484. info2soft/common/test/v20220622/QrTest.py +117 -0
  485. info2soft/common/test/v20220622/RestrpcServerTest.py +159 -0
  486. info2soft/common/test/v20220622/SettingsTest.py +518 -0
  487. info2soft/common/test/v20220622/StatisticsTest.py +210 -0
  488. info2soft/common/test/v20220622/StorageTest.py +48 -0
  489. info2soft/common/test/v20220622/TenantTest.py +100 -0
  490. info2soft/common/test/v20220622/WechatTest.py +72 -0
  491. info2soft/common/test/v20220622/__init__.py +0 -0
  492. info2soft/common/utils.py +168 -0
  493. info2soft/common/v20230227/Auth.py +218 -0
  494. info2soft/common/v20230227/BackupMigrate.py +111 -0
  495. info2soft/common/v20230227/BigScreen.py +192 -0
  496. info2soft/common/v20230227/CcMonitor.py +33 -0
  497. info2soft/common/v20230227/Client.py +112 -0
  498. info2soft/common/v20230227/CommonTemplate.py +77 -0
  499. info2soft/common/v20230227/CompareResult.py +76 -0
  500. info2soft/common/v20230227/Credential.py +115 -0
  501. info2soft/common/v20230227/DataBaseBackup.py +69 -0
  502. info2soft/common/v20230227/DbConvert.py +46 -0
  503. info2soft/common/v20230227/Diagnose.py +59 -0
  504. info2soft/common/v20230227/Dir.py +112 -0
  505. info2soft/common/v20230227/FindPassword.py +60 -0
  506. info2soft/common/v20230227/GTS.py +83 -0
  507. info2soft/common/v20230227/GeneralInterface.py +295 -0
  508. info2soft/common/v20230227/Lic.py +239 -0
  509. info2soft/common/v20230227/Logs.py +85 -0
  510. info2soft/common/v20230227/Menu.py +20 -0
  511. info2soft/common/v20230227/Notifications.py +203 -0
  512. info2soft/common/v20230227/OpLogs.py +72 -0
  513. info2soft/common/v20230227/Permission.py +45 -0
  514. info2soft/common/v20230227/Qr.py +73 -0
  515. info2soft/common/v20230227/RestrpcServer.py +112 -0
  516. info2soft/common/v20230227/Settings.py +487 -0
  517. info2soft/common/v20230227/Statistics.py +112 -0
  518. info2soft/common/v20230227/Tenant.py +60 -0
  519. info2soft/common/v20230227/Webhook.py +130 -0
  520. info2soft/common/v20230227/Wechat.py +45 -0
  521. info2soft/common/v20230227/__init__.py +60 -0
  522. info2soft/common/v20240228/Auth.py +218 -0
  523. info2soft/common/v20240228/BackupMigrate.py +111 -0
  524. info2soft/common/v20240228/BigScreen.py +192 -0
  525. info2soft/common/v20240228/CcMonitor.py +161 -0
  526. info2soft/common/v20240228/Client.py +242 -0
  527. info2soft/common/v20240228/CommonTemplate.py +77 -0
  528. info2soft/common/v20240228/CompareResult.py +76 -0
  529. info2soft/common/v20240228/Credential.py +115 -0
  530. info2soft/common/v20240228/DataBaseBackup.py +69 -0
  531. info2soft/common/v20240228/DbConvert.py +46 -0
  532. info2soft/common/v20240228/Diagnose.py +59 -0
  533. info2soft/common/v20240228/Dir.py +125 -0
  534. info2soft/common/v20240228/FindPassword.py +60 -0
  535. info2soft/common/v20240228/GTS.py +83 -0
  536. info2soft/common/v20240228/GeneralInterface.py +333 -0
  537. info2soft/common/v20240228/GuardData.py +114 -0
  538. info2soft/common/v20240228/Lic.py +280 -0
  539. info2soft/common/v20240228/Logs.py +85 -0
  540. info2soft/common/v20240228/Menu.py +20 -0
  541. info2soft/common/v20240228/Notifications.py +203 -0
  542. info2soft/common/v20240228/OpLogs.py +72 -0
  543. info2soft/common/v20240228/Permission.py +45 -0
  544. info2soft/common/v20240228/Qr.py +73 -0
  545. info2soft/common/v20240228/RestrpcServer.py +112 -0
  546. info2soft/common/v20240228/Settings.py +550 -0
  547. info2soft/common/v20240228/Statistics.py +125 -0
  548. info2soft/common/v20240228/Tenant.py +60 -0
  549. info2soft/common/v20240228/Webhook.py +130 -0
  550. info2soft/common/v20240228/Wechat.py +45 -0
  551. info2soft/common/v20240228/__init__.py +60 -0
  552. info2soft/common/v20240819/Auth.py +122 -0
  553. info2soft/common/v20240819/BackupMigrate.py +111 -0
  554. info2soft/common/v20240819/BigScreen.py +192 -0
  555. info2soft/common/v20240819/CcMonitor.py +137 -0
  556. info2soft/common/v20240819/Client.py +254 -0
  557. info2soft/common/v20240819/CommonTemplate.py +77 -0
  558. info2soft/common/v20240819/CompareResult.py +76 -0
  559. info2soft/common/v20240819/Credential.py +115 -0
  560. info2soft/common/v20240819/DbConvert.py +46 -0
  561. info2soft/common/v20240819/Diagnose.py +59 -0
  562. info2soft/common/v20240819/Dir.py +125 -0
  563. info2soft/common/v20240819/FindPassword.py +60 -0
  564. info2soft/common/v20240819/GeneralInterface.py +419 -0
  565. info2soft/common/v20240819/Lic.py +149 -0
  566. info2soft/common/v20240819/Logs.py +85 -0
  567. info2soft/common/v20240819/Menu.py +20 -0
  568. info2soft/common/v20240819/Notifications.py +216 -0
  569. info2soft/common/v20240819/OpLogs.py +59 -0
  570. info2soft/common/v20240819/Permission.py +58 -0
  571. info2soft/common/v20240819/Qr.py +99 -0
  572. info2soft/common/v20240819/Settings.py +729 -0
  573. info2soft/common/v20240819/Statistics.py +138 -0
  574. info2soft/common/v20240819/Tenant.py +62 -0
  575. info2soft/common/v20240819/Webhook.py +130 -0
  576. info2soft/common/v20240819/Wechat.py +45 -0
  577. info2soft/common/v20240819/__init__.py +50 -0
  578. info2soft/common/v20250123/Auth.py +148 -0
  579. info2soft/common/v20250123/BackupMigrate.py +111 -0
  580. info2soft/common/v20250123/BigScreen.py +192 -0
  581. info2soft/common/v20250123/CcMonitor.py +137 -0
  582. info2soft/common/v20250123/Client.py +254 -0
  583. info2soft/common/v20250123/CommonTemplate.py +77 -0
  584. info2soft/common/v20250123/CompareResult.py +76 -0
  585. info2soft/common/v20250123/Credential.py +115 -0
  586. info2soft/common/v20250123/DbConvert.py +46 -0
  587. info2soft/common/v20250123/Diagnose.py +59 -0
  588. info2soft/common/v20250123/Dir.py +125 -0
  589. info2soft/common/v20250123/FindPassword.py +60 -0
  590. info2soft/common/v20250123/GeneralInterface.py +419 -0
  591. info2soft/common/v20250123/GeneralSettings.py +84 -0
  592. info2soft/common/v20250123/Lic.py +149 -0
  593. info2soft/common/v20250123/LicQuota.py +102 -0
  594. info2soft/common/v20250123/Logs.py +85 -0
  595. info2soft/common/v20250123/Menu.py +20 -0
  596. info2soft/common/v20250123/Notifications.py +216 -0
  597. info2soft/common/v20250123/OpLogs.py +59 -0
  598. info2soft/common/v20250123/Permission.py +58 -0
  599. info2soft/common/v20250123/Qr.py +99 -0
  600. info2soft/common/v20250123/Settings.py +537 -0
  601. info2soft/common/v20250123/Statistics.py +163 -0
  602. info2soft/common/v20250123/Tenant.py +62 -0
  603. info2soft/common/v20250123/UserSettings.py +173 -0
  604. info2soft/common/v20250123/Webhook.py +130 -0
  605. info2soft/common/v20250123/Wechat.py +45 -0
  606. info2soft/common/v20250123/__init__.py +56 -0
  607. info2soft/common/v20250630/BackupMigrate.py +111 -0
  608. info2soft/common/v20250630/BigScreen.py +192 -0
  609. info2soft/common/v20250630/CcMonitor.py +137 -0
  610. info2soft/common/v20250630/Client.py +254 -0
  611. info2soft/common/v20250630/CommonTemplate.py +77 -0
  612. info2soft/common/v20250630/CompareResult.py +76 -0
  613. info2soft/common/v20250630/Credential.py +115 -0
  614. info2soft/common/v20250630/DbConvert.py +46 -0
  615. info2soft/common/v20250630/Diagnose.py +59 -0
  616. info2soft/common/v20250630/Dir.py +125 -0
  617. info2soft/common/v20250630/FindPassword.py +60 -0
  618. info2soft/common/v20250630/GeneralInterface.py +419 -0
  619. info2soft/common/v20250630/GeneralSettings.py +84 -0
  620. info2soft/common/v20250630/Lic.py +161 -0
  621. info2soft/common/v20250630/LicQuota.py +102 -0
  622. info2soft/common/v20250630/Logs.py +85 -0
  623. info2soft/common/v20250630/Menu.py +20 -0
  624. info2soft/common/v20250630/Notifications.py +216 -0
  625. info2soft/common/v20250630/OpLogs.py +59 -0
  626. info2soft/common/v20250630/Permission.py +58 -0
  627. info2soft/common/v20250630/Qr.py +99 -0
  628. info2soft/common/v20250630/Settings.py +537 -0
  629. info2soft/common/v20250630/Statistics.py +163 -0
  630. info2soft/common/v20250630/Tenant.py +62 -0
  631. info2soft/common/v20250630/UserSettings.py +173 -0
  632. info2soft/common/v20250630/Webhook.py +130 -0
  633. info2soft/common/v20250630/Wechat.py +45 -0
  634. info2soft/common/v20250630/__init__.py +54 -0
  635. info2soft/compat.py +76 -0
  636. info2soft/config.py +33 -0
  637. info2soft/container_cls/__init__.py +0 -0
  638. info2soft/container_cls/v20230227/ContainerCls.py +209 -0
  639. info2soft/container_cls/v20230227/__init__.py +2 -0
  640. info2soft/container_cls/v20240228/ContainerCls.py +247 -0
  641. info2soft/container_cls/v20240228/__init__.py +2 -0
  642. info2soft/dashboard/__init__.py +0 -0
  643. info2soft/dashboard/test/__init__.py +0 -0
  644. info2soft/dashboard/test/v20190104/DashboardTest.py +100 -0
  645. info2soft/dashboard/test/v20190104/__init__.py +0 -0
  646. info2soft/dashboard/test/v20220622/DashboardTest.py +100 -0
  647. info2soft/dashboard/test/v20220622/__init__.py +0 -0
  648. info2soft/dashboard/v20181227/Dashboard.py +73 -0
  649. info2soft/dashboard/v20181227/__init__.py +0 -0
  650. info2soft/dashboard/v20220622/Dashboard.py +73 -0
  651. info2soft/dashboard/v20220622/__init__.py +1 -0
  652. info2soft/dashboard/v20240819/Dashboard.py +120 -0
  653. info2soft/dashboard/v20240819/__init__.py +2 -0
  654. info2soft/dashboard/v20250123/Dashboard.py +120 -0
  655. info2soft/dashboard/v20250123/__init__.py +2 -0
  656. info2soft/dashboard/v20250630/Dashboard.py +120 -0
  657. info2soft/dashboard/v20250630/__init__.py +2 -0
  658. info2soft/dbInstance/__init__.py +0 -0
  659. info2soft/dbInstance/v20240819/DbInstance.py +140 -0
  660. info2soft/dbInstance/v20240819/__init__.py +2 -0
  661. info2soft/dbInstance/v20250123/DbInstance.py +140 -0
  662. info2soft/dbInstance/v20250123/__init__.py +2 -0
  663. info2soft/dbInstance/v20250630/DbInstance.py +140 -0
  664. info2soft/dbInstance/v20250630/__init__.py +2 -0
  665. info2soft/dedupeStorage/__init__.py +0 -0
  666. info2soft/dedupeStorage/v20240819/DedupeStorage.py +115 -0
  667. info2soft/dedupeStorage/v20240819/__init__.py +2 -0
  668. info2soft/dedupeStorage/v20250123/DedupeStorage.py +115 -0
  669. info2soft/dedupeStorage/v20250123/__init__.py +2 -0
  670. info2soft/dedupeStorage/v20250630/DedupeStorage.py +115 -0
  671. info2soft/dedupeStorage/v20250630/__init__.py +2 -0
  672. info2soft/distributor/__init__.py +1 -0
  673. info2soft/distributor/v20200727/DistributorSystem.py +216 -0
  674. info2soft/distributor/v20200727/Group.py +150 -0
  675. info2soft/distributor/v20200727/Node.py +176 -0
  676. info2soft/distributor/v20200727/__init__.py +6 -0
  677. info2soft/distributor/v20220622/DistributorSystem.py +216 -0
  678. info2soft/distributor/v20220622/Group.py +150 -0
  679. info2soft/distributor/v20220622/Node.py +176 -0
  680. info2soft/distributor/v20220622/__init__.py +6 -0
  681. info2soft/dto/Dto.py +221 -0
  682. info2soft/dto/__init__.py +0 -0
  683. info2soft/dto/v20220622/Dto.py +221 -0
  684. info2soft/dto/v20220622/__init__.py +1 -0
  685. info2soft/dto/v20230227/Dto.py +158 -0
  686. info2soft/dto/v20230227/__init__.py +2 -0
  687. info2soft/dto/v20240228/Dto.py +158 -0
  688. info2soft/dto/v20240228/__init__.py +2 -0
  689. info2soft/dto/v20240819/Dto.py +249 -0
  690. info2soft/dto/v20240819/DtoArchive.py +164 -0
  691. info2soft/dto/v20240819/__init__.py +4 -0
  692. info2soft/dto/v20250123/Dto.py +249 -0
  693. info2soft/dto/v20250123/DtoArchive.py +164 -0
  694. info2soft/dto/v20250123/__init__.py +4 -0
  695. info2soft/dto/v20250630/Dto.py +262 -0
  696. info2soft/dto/v20250630/DtoArchive.py +164 -0
  697. info2soft/dto/v20250630/__init__.py +4 -0
  698. info2soft/dtrack/Dtrack.py +809 -0
  699. info2soft/dtrack/__init__.py +2 -0
  700. info2soft/dtrack/v20220622/Dtrack.py +809 -0
  701. info2soft/dtrack/v20220622/__init__.py +2 -0
  702. info2soft/dtrack/v20230227/Dtrack.py +862 -0
  703. info2soft/dtrack/v20230227/__init__.py +2 -0
  704. info2soft/examineApprove/__init__.py +0 -0
  705. info2soft/examineApprove/v20240819/ExamineApprove.py +137 -0
  706. info2soft/examineApprove/v20240819/__init__.py +2 -0
  707. info2soft/examineApprove/v20250123/ExamineApprove.py +137 -0
  708. info2soft/examineApprove/v20250123/__init__.py +2 -0
  709. info2soft/examineApprove/v20250630/ExamineApprove.py +137 -0
  710. info2soft/examineApprove/v20250630/__init__.py +2 -0
  711. info2soft/fileWriter.py +16 -0
  712. info2soft/fingerprintDomain/__init__.py +0 -0
  713. info2soft/fingerprintDomain/v20240819/FingerprintDomain.py +89 -0
  714. info2soft/fingerprintDomain/v20240819/__init__.py +2 -0
  715. info2soft/fingerprintDomain/v20250123/FingerprintDomain.py +89 -0
  716. info2soft/fingerprintDomain/v20250123/__init__.py +2 -0
  717. info2soft/fingerprintDomain/v20250630/FingerprintDomain.py +102 -0
  718. info2soft/fingerprintDomain/v20250630/__init__.py +2 -0
  719. info2soft/fsp/FspBackup.py +228 -0
  720. info2soft/fsp/FspMove.py +233 -0
  721. info2soft/fsp/FspRecovery.py +253 -0
  722. info2soft/fsp/__init__.py +0 -0
  723. info2soft/fsp/test/FspBackupTest.py +426 -0
  724. info2soft/fsp/test/FspMoveTest.py +450 -0
  725. info2soft/fsp/test/FspRecoveryTest.py +393 -0
  726. info2soft/fsp/test/__init__.py +0 -0
  727. info2soft/fsp/test/v20220622/FspBackupTest.py +427 -0
  728. info2soft/fsp/test/v20220622/FspMoveTest.py +451 -0
  729. info2soft/fsp/test/v20220622/FspRecoveryTest.py +394 -0
  730. info2soft/fsp/test/v20220622/__init__.py +0 -0
  731. info2soft/fsp/v20220622/FspBackup.py +228 -0
  732. info2soft/fsp/v20220622/FspMove.py +233 -0
  733. info2soft/fsp/v20220622/FspRecovery.py +253 -0
  734. info2soft/fsp/v20220622/__init__.py +3 -0
  735. info2soft/fsp/v20230227/FspBackup.py +601 -0
  736. info2soft/fsp/v20230227/__init__.py +2 -0
  737. info2soft/fsp/v20240228/FspBackup.py +614 -0
  738. info2soft/fsp/v20240228/__init__.py +2 -0
  739. info2soft/fsp/v20240819/FspBackup.py +271 -0
  740. info2soft/fsp/v20240819/FspMove.py +232 -0
  741. info2soft/fsp/v20240819/FspRecovery.py +257 -0
  742. info2soft/fsp/v20240819/__init__.py +2 -0
  743. info2soft/fsp/v20250123/FspBackup.py +271 -0
  744. info2soft/fsp/v20250123/FspMove.py +232 -0
  745. info2soft/fsp/v20250123/FspRecovery.py +257 -0
  746. info2soft/fsp/v20250123/__init__.py +6 -0
  747. info2soft/fsp/v20250630/FspBackup.py +271 -0
  748. info2soft/fsp/v20250630/FspMove.py +232 -0
  749. info2soft/fsp/v20250630/FspRecovery.py +257 -0
  750. info2soft/fsp/v20250630/__init__.py +6 -0
  751. info2soft/fspBackupRule/__init__.py +0 -0
  752. info2soft/fspBackupRule/v20240819/FspBackupRule.py +154 -0
  753. info2soft/fspBackupRule/v20240819/__init__.py +2 -0
  754. info2soft/fspBackupRule/v20250123/FspBackupRule.py +154 -0
  755. info2soft/fspBackupRule/v20250123/__init__.py +2 -0
  756. info2soft/fspBackupRule/v20250630/FspBackupRule.py +154 -0
  757. info2soft/fspBackupRule/v20250630/__init__.py +2 -0
  758. info2soft/fspRecoveryRule/__init__.py +0 -0
  759. info2soft/fspRecoveryRule/v20240819/FspRecoveryRule.py +153 -0
  760. info2soft/fspRecoveryRule/v20240819/__init__.py +2 -0
  761. info2soft/fspRecoveryRule/v20250123/FspRecoveryRule.py +153 -0
  762. info2soft/fspRecoveryRule/v20250123/__init__.py +2 -0
  763. info2soft/fspRecoveryRule/v20250630/FspRecoveryRule.py +179 -0
  764. info2soft/fspRecoveryRule/v20250630/__init__.py +2 -0
  765. info2soft/fullMachineCopy/__init__.py +0 -0
  766. info2soft/fullMachineCopy/v20240819/FullMachineCopy.py +115 -0
  767. info2soft/fullMachineCopy/v20240819/__init__.py +2 -0
  768. info2soft/fullMachineCopy/v20250123/FullMachineCopy.py +115 -0
  769. info2soft/fullMachineCopy/v20250123/__init__.py +2 -0
  770. info2soft/fullMachineCopy/v20250630/FullMachineCopy.py +115 -0
  771. info2soft/fullMachineCopy/v20250630/__init__.py +2 -0
  772. info2soft/gts/__init__.py +0 -0
  773. info2soft/gts/test/GTS.py +157 -0
  774. info2soft/gts/test/__init__.py +0 -0
  775. info2soft/gts/test/v20220622/GTS.py +157 -0
  776. info2soft/gts/test/v20220622/__init__.py +0 -0
  777. info2soft/gts/v20190805/GTS.py +123 -0
  778. info2soft/gts/v20190805/__init__.py +0 -0
  779. info2soft/gts/v20220622/GTS.py +123 -0
  780. info2soft/gts/v20220622/__init__.py +1 -0
  781. info2soft/guardData/__init__.py +0 -0
  782. info2soft/guardData/v20240819/GuardData.py +114 -0
  783. info2soft/guardData/v20240819/__init__.py +2 -0
  784. info2soft/guardData/v20250123/GuardData.py +114 -0
  785. info2soft/guardData/v20250123/__init__.py +2 -0
  786. info2soft/guardData/v20250630/GuardData.py +114 -0
  787. info2soft/guardData/v20250630/__init__.py +2 -0
  788. info2soft/ha/__init__.py +1 -0
  789. info2soft/ha/test/__init__.py +0 -0
  790. info2soft/ha/test/v20190104/AppHighAvailabilityTest.py +383 -0
  791. info2soft/ha/test/v20190104/__init__.py +0 -0
  792. info2soft/ha/test/v20190806/AppHighAvailabilityTest.py +246 -0
  793. info2soft/ha/test/v20190806/__init__.py +0 -0
  794. info2soft/ha/test/v20200727/ClusterTest.py +330 -0
  795. info2soft/ha/test/v20200727/__init__.py +0 -0
  796. info2soft/ha/test/v20220622/AppHighAvailabilityTest.py +246 -0
  797. info2soft/ha/test/v20220622/ClusterTest.py +330 -0
  798. info2soft/ha/test/v20220622/__init__.py +0 -0
  799. info2soft/ha/v20181227/AppHighAvailability.py +335 -0
  800. info2soft/ha/v20181227/__init__.py +0 -0
  801. info2soft/ha/v20200724/Cluster.py +270 -0
  802. info2soft/ha/v20200724/__init__.py +2 -0
  803. info2soft/ha/v20220622/AppHighAvailability.py +335 -0
  804. info2soft/ha/v20220622/Cluster.py +270 -0
  805. info2soft/ha/v20220622/__init__.py +3 -0
  806. info2soft/ha/v20230227/AppHighAvailability.py +302 -0
  807. info2soft/ha/v20230227/Cluster.py +232 -0
  808. info2soft/ha/v20230227/__init__.py +4 -0
  809. info2soft/ha/v20240228/AppHighAvailability.py +302 -0
  810. info2soft/ha/v20240228/Cluster.py +232 -0
  811. info2soft/ha/v20240228/__init__.py +4 -0
  812. info2soft/ha/v20240819/AppHighAvailability.py +318 -0
  813. info2soft/ha/v20240819/Cluster.py +204 -0
  814. info2soft/ha/v20240819/Label.py +62 -0
  815. info2soft/ha/v20240819/__init__.py +6 -0
  816. info2soft/ha/v20250123/AppHighAvailability.py +318 -0
  817. info2soft/ha/v20250123/Cluster.py +192 -0
  818. info2soft/ha/v20250123/Label.py +62 -0
  819. info2soft/ha/v20250123/__init__.py +6 -0
  820. info2soft/ha/v20250630/AppHighAvailability.py +318 -0
  821. info2soft/ha/v20250630/Cluster.py +192 -0
  822. info2soft/ha/v20250630/Label.py +62 -0
  823. info2soft/ha/v20250630/__init__.py +6 -0
  824. info2soft/hdfs/Hdfs.py +112 -0
  825. info2soft/hdfs/__init__.py +2 -0
  826. info2soft/hdfs/v20220622/Hdfs.py +112 -0
  827. info2soft/hdfs/v20220622/__init__.py +2 -0
  828. info2soft/hdfs/v20230227/Hdfs.py +89 -0
  829. info2soft/hdfs/v20230227/__init__.py +2 -0
  830. info2soft/hdfs/v20240228/Hdfs.py +89 -0
  831. info2soft/hdfs/v20240228/__init__.py +2 -0
  832. info2soft/hdfs/v20240819/Hdfs.py +300 -0
  833. info2soft/hdfs/v20240819/__init__.py +2 -0
  834. info2soft/hdfs/v20250123/Hdfs.py +300 -0
  835. info2soft/hdfs/v20250123/__init__.py +2 -0
  836. info2soft/hdfs/v20250630/Hdfs.py +300 -0
  837. info2soft/hdfs/v20250630/__init__.py +2 -0
  838. info2soft/https.py +422 -0
  839. info2soft/hw/__init__.py +0 -0
  840. info2soft/hw/v20240819/GTS.py +87 -0
  841. info2soft/hw/v20240819/HDR.py +58 -0
  842. info2soft/hw/v20240819/__init__.py +4 -0
  843. info2soft/hw/v20250123/GTS.py +87 -0
  844. info2soft/hw/v20250123/HDR.py +58 -0
  845. info2soft/hw/v20250123/__init__.py +4 -0
  846. info2soft/hw/v20250630/CBG.py +21 -0
  847. info2soft/hw/v20250630/GTS.py +87 -0
  848. info2soft/hw/v20250630/HDR.py +121 -0
  849. info2soft/hw/v20250630/__init__.py +6 -0
  850. info2soft/mountTask/__init__.py +0 -0
  851. info2soft/mountTask/v20240819/MountTask.py +139 -0
  852. info2soft/mountTask/v20240819/__init__.py +2 -0
  853. info2soft/mountTask/v20250123/MountTask.py +139 -0
  854. info2soft/mountTask/v20250123/__init__.py +2 -0
  855. info2soft/mountTask/v20250630/MountTask.py +139 -0
  856. info2soft/mountTask/v20250630/__init__.py +2 -0
  857. info2soft/nas/__init__.py +0 -0
  858. info2soft/nas/test/NASTest.py +111 -0
  859. info2soft/nas/test/__init__.py +0 -0
  860. info2soft/nas/test/v20190104/NASTest.py +173 -0
  861. info2soft/nas/test/v20190104/__init__.py +0 -0
  862. info2soft/nas/test/v20220622/NASTest.py +175 -0
  863. info2soft/nas/test/v20220622/__init__.py +0 -0
  864. info2soft/nas/v20190102/NAS.py +119 -0
  865. info2soft/nas/v20190102/__init__.py +0 -0
  866. info2soft/nas/v20220622/NAS.py +119 -0
  867. info2soft/nas/v20220622/__init__.py +1 -0
  868. info2soft/nas/v20230227/NAS.py +102 -0
  869. info2soft/nas/v20230227/__init__.py +2 -0
  870. info2soft/nas/v20240228/NAS.py +102 -0
  871. info2soft/nas/v20240228/__init__.py +2 -0
  872. info2soft/nas/v20240819/Nas.py +115 -0
  873. info2soft/nas/v20240819/__init__.py +2 -0
  874. info2soft/nas/v20250123/Nas.py +115 -0
  875. info2soft/nas/v20250123/__init__.py +2 -0
  876. info2soft/nas/v20250630/Nas.py +115 -0
  877. info2soft/nas/v20250630/__init__.py +2 -0
  878. info2soft/nbuBackupSet/__init__.py +0 -0
  879. info2soft/nbuBackupSet/v20250630/NbuBackupSet.py +34 -0
  880. info2soft/nbuBackupSet/v20250630/__init__.py +2 -0
  881. info2soft/notifications/__init__.py +0 -0
  882. info2soft/notifications/test/NotificationsTest.py +90 -0
  883. info2soft/notifications/test/__init__.py +0 -0
  884. info2soft/notifications/test/v20190104/NotificationsTest.py +192 -0
  885. info2soft/notifications/test/v20190104/__init__.py +0 -0
  886. info2soft/notifications/test/v20190806/NotificationsTest.py +63 -0
  887. info2soft/notifications/test/v20190806/__init__.py +0 -0
  888. info2soft/notifications/v20181227/Notifications.py +142 -0
  889. info2soft/notifications/v20181227/__init__.py +0 -0
  890. info2soft/recovery/__init__.py +0 -0
  891. info2soft/recovery/v20240819/Recovery.py +34 -0
  892. info2soft/recovery/v20240819/__init__.py +2 -0
  893. info2soft/recovery/v20250123/Recovery.py +34 -0
  894. info2soft/recovery/v20250123/__init__.py +2 -0
  895. info2soft/recovery/v20250630/Recovery.py +34 -0
  896. info2soft/recovery/v20250630/__init__.py +2 -0
  897. info2soft/recoveryRule/__init__.py +0 -0
  898. info2soft/recoveryRule/v20240228/RecoveryRule.py +212 -0
  899. info2soft/recoveryRule/v20240228/__init__.py +2 -0
  900. info2soft/recoveryRule/v20240819/RecoveryRule.py +207 -0
  901. info2soft/recoveryRule/v20240819/__init__.py +2 -0
  902. info2soft/recoveryRule/v20250123/RecoveryRule.py +207 -0
  903. info2soft/recoveryRule/v20250123/__init__.py +2 -0
  904. info2soft/recoveryRule/v20250630/BatchRecoveryRule.py +154 -0
  905. info2soft/recoveryRule/v20250630/RecoveryRule.py +220 -0
  906. info2soft/recoveryRule/v20250630/__init__.py +4 -0
  907. info2soft/recycleBin/__init__.py +0 -0
  908. info2soft/recycleBin/v20240819/RecycleBin.py +35 -0
  909. info2soft/recycleBin/v20240819/__init__.py +2 -0
  910. info2soft/recycleBin/v20250123/RecycleBin.py +35 -0
  911. info2soft/recycleBin/v20250123/__init__.py +2 -0
  912. info2soft/recycleBin/v20250630/RecycleBin.py +35 -0
  913. info2soft/recycleBin/v20250630/__init__.py +2 -0
  914. info2soft/remoteRep/__init__.py +0 -0
  915. info2soft/remoteRep/v20240819/RemoteRep.py +206 -0
  916. info2soft/remoteRep/v20240819/__init__.py +2 -0
  917. info2soft/remoteRep/v20250123/RemoteRep.py +206 -0
  918. info2soft/remoteRep/v20250123/__init__.py +2 -0
  919. info2soft/remoteRep/v20250630/RemoteRep.py +206 -0
  920. info2soft/remoteRep/v20250630/__init__.py +2 -0
  921. info2soft/remote_rep/__init__.py +0 -0
  922. info2soft/remote_rep/v20230227/RemoteRep.py +167 -0
  923. info2soft/remote_rep/v20230227/__init__.py +2 -0
  924. info2soft/remote_rep/v20240228/RemoteRep.py +211 -0
  925. info2soft/remote_rep/v20240228/__init__.py +2 -0
  926. info2soft/rep/__init__.py +0 -0
  927. info2soft/rep/test/__init__.py +0 -0
  928. info2soft/rep/test/v20190104/RepBackupTest.py +513 -0
  929. info2soft/rep/test/v20190104/RepRecoveryTest.py +279 -0
  930. info2soft/rep/test/v20190104/__init__.py +0 -0
  931. info2soft/rep/test/v20220622/RepBackupTest.py +513 -0
  932. info2soft/rep/test/v20220622/RepRecoveryTest.py +279 -0
  933. info2soft/rep/test/v20220622/__init__.py +0 -0
  934. info2soft/rep/v20181227/RepBackup.py +325 -0
  935. info2soft/rep/v20181227/RepRecovery.py +203 -0
  936. info2soft/rep/v20181227/__init__.py +0 -0
  937. info2soft/rep/v20220622/RepBackup.py +325 -0
  938. info2soft/rep/v20220622/RepRecovery.py +203 -0
  939. info2soft/rep/v20220622/__init__.py +2 -0
  940. info2soft/rep/v20230227/RepBackup.py +308 -0
  941. info2soft/rep/v20230227/RepRecovery.py +156 -0
  942. info2soft/rep/v20230227/__init__.py +4 -0
  943. info2soft/rep/v20240228/RepBackup.py +308 -0
  944. info2soft/rep/v20240228/RepRecovery.py +156 -0
  945. info2soft/rep/v20240228/__init__.py +4 -0
  946. info2soft/rep/v20240819/RepBackup.py +360 -0
  947. info2soft/rep/v20240819/RepRecovery.py +195 -0
  948. info2soft/rep/v20240819/__init__.py +4 -0
  949. info2soft/rep/v20250123/RepBackup.py +360 -0
  950. info2soft/rep/v20250123/RepRecovery.py +195 -0
  951. info2soft/rep/v20250123/__init__.py +4 -0
  952. info2soft/rep/v20250630/RepBackup.py +360 -0
  953. info2soft/rep/v20250630/RepRecovery.py +195 -0
  954. info2soft/rep/v20250630/__init__.py +4 -0
  955. info2soft/replica/__init__.py +0 -0
  956. info2soft/replica/v20240819/First.py +115 -0
  957. info2soft/replica/v20240819/Second.py +139 -0
  958. info2soft/replica/v20240819/__init__.py +4 -0
  959. info2soft/replica/v20250123/First.py +115 -0
  960. info2soft/replica/v20250123/Second.py +139 -0
  961. info2soft/replica/v20250123/__init__.py +4 -0
  962. info2soft/replica/v20250630/First.py +115 -0
  963. info2soft/replica/v20250630/Second.py +139 -0
  964. info2soft/replica/v20250630/__init__.py +4 -0
  965. info2soft/resource/__init__.py +2 -0
  966. info2soft/resource/test/__init__.py +0 -0
  967. info2soft/resource/test/v20190104/BizGroupTest.py +143 -0
  968. info2soft/resource/test/v20190104/ClusterTest.py +219 -0
  969. info2soft/resource/test/v20190104/NodeTest.py +575 -0
  970. info2soft/resource/test/v20190104/__init__.py +0 -0
  971. info2soft/resource/test/v20200727/BoxVmTest.py +139 -0
  972. info2soft/resource/test/v20200727/__init__.py +0 -0
  973. info2soft/resource/test/v20200930/ActiveNodeTest.py +479 -0
  974. info2soft/resource/test/v20200930/AppTypeTest.py +98 -0
  975. info2soft/resource/test/v20200930/AuthorizationTest.py +140 -0
  976. info2soft/resource/test/v20200930/CopyVolume.py +155 -0
  977. info2soft/resource/test/v20200930/DedupePoolTest.py +151 -0
  978. info2soft/resource/test/v20200930/DtoHostTest.py +266 -0
  979. info2soft/resource/test/v20200930/DtoLifeManagementTest.py +140 -0
  980. info2soft/resource/test/v20200930/DtoStorageTest.py +144 -0
  981. info2soft/resource/test/v20200930/HdfsPlatformTest.py +167 -0
  982. info2soft/resource/test/v20200930/MonitorTest.py +109 -0
  983. info2soft/resource/test/v20200930/NodeDbConfigTest.py +82 -0
  984. info2soft/resource/test/v20200930/NodeProxyTest.py +100 -0
  985. info2soft/resource/test/v20200930/ReCyleTest.py +76 -0
  986. info2soft/resource/test/v20200930/ServiceClusterTest.py +151 -0
  987. info2soft/resource/test/v20200930/StoragePool.py +200 -0
  988. info2soft/resource/test/v20200930/StorageTest.py +1734 -0
  989. info2soft/resource/test/v20200930/VirtualizationSupportTest.py +536 -0
  990. info2soft/resource/test/v20200930/__init__.py +0 -0
  991. info2soft/resource/test/v20220622/ActiveNodeTest.py +479 -0
  992. info2soft/resource/test/v20220622/AppTypeTest.py +98 -0
  993. info2soft/resource/test/v20220622/AuthorizationTest.py +140 -0
  994. info2soft/resource/test/v20220622/CopyVolume.py +155 -0
  995. info2soft/resource/test/v20220622/DedupePoolTest.py +151 -0
  996. info2soft/resource/test/v20220622/DtoHostTest.py +266 -0
  997. info2soft/resource/test/v20220622/DtoLifeManagementTest.py +140 -0
  998. info2soft/resource/test/v20220622/DtoStorageTest.py +144 -0
  999. info2soft/resource/test/v20220622/HdfsPlatformTest.py +167 -0
  1000. info2soft/resource/test/v20220622/MonitorTest.py +109 -0
  1001. info2soft/resource/test/v20220622/NodeDbConfigTest.py +82 -0
  1002. info2soft/resource/test/v20220622/NodeProxyTest.py +100 -0
  1003. info2soft/resource/test/v20220622/ReCyleTest.py +76 -0
  1004. info2soft/resource/test/v20220622/ServiceClusterTest.py +151 -0
  1005. info2soft/resource/test/v20220622/StoragePool.py +200 -0
  1006. info2soft/resource/test/v20220622/StorageTest.py +1734 -0
  1007. info2soft/resource/test/v20220622/VirtualizationSupportTest.py +536 -0
  1008. info2soft/resource/test/v20220622/__init__.py +0 -0
  1009. info2soft/resource/v20181227/BizGroup.py +106 -0
  1010. info2soft/resource/v20181227/Cluster.py +190 -0
  1011. info2soft/resource/v20181227/Node.py +463 -0
  1012. info2soft/resource/v20181227/__init__.py +6 -0
  1013. info2soft/resource/v20200727/BoxVm.py +106 -0
  1014. info2soft/resource/v20200727/__init__.py +2 -0
  1015. info2soft/resource/v20200729/AppSystem.py +364 -0
  1016. info2soft/resource/v20200729/__init__.py +2 -0
  1017. info2soft/resource/v20200930/ActiveNode.py +297 -0
  1018. info2soft/resource/v20200930/AppType.py +75 -0
  1019. info2soft/resource/v20200930/Authorization.py +99 -0
  1020. info2soft/resource/v20200930/CopyVolume.py +129 -0
  1021. info2soft/resource/v20200930/DedupePool.py +126 -0
  1022. info2soft/resource/v20200930/DtoHost.py +242 -0
  1023. info2soft/resource/v20200930/DtoLifeManagement.py +91 -0
  1024. info2soft/resource/v20200930/DtoStorage.py +102 -0
  1025. info2soft/resource/v20200930/HdfsPlatform.py +102 -0
  1026. info2soft/resource/v20200930/Monitor.py +99 -0
  1027. info2soft/resource/v20200930/NodeDbConfig.py +47 -0
  1028. info2soft/resource/v20200930/NodeProxy.py +76 -0
  1029. info2soft/resource/v20200930/ReCyle.py +47 -0
  1030. info2soft/resource/v20200930/ServiceCluster.py +100 -0
  1031. info2soft/resource/v20200930/Storage.py +1443 -0
  1032. info2soft/resource/v20200930/StoragePool.py +166 -0
  1033. info2soft/resource/v20200930/VirtualizationSupport.py +464 -0
  1034. info2soft/resource/v20200930/__init__.py +17 -0
  1035. info2soft/resource/v20220622/ActiveNode.py +297 -0
  1036. info2soft/resource/v20220622/AppType.py +75 -0
  1037. info2soft/resource/v20220622/Authorization.py +99 -0
  1038. info2soft/resource/v20220622/CopyVolume.py +129 -0
  1039. info2soft/resource/v20220622/DedupePool.py +126 -0
  1040. info2soft/resource/v20220622/DtoHost.py +242 -0
  1041. info2soft/resource/v20220622/DtoLifeManagement.py +91 -0
  1042. info2soft/resource/v20220622/DtoStorage.py +102 -0
  1043. info2soft/resource/v20220622/HdfsPlatform.py +102 -0
  1044. info2soft/resource/v20220622/Monitor.py +99 -0
  1045. info2soft/resource/v20220622/NodeDbConfig.py +47 -0
  1046. info2soft/resource/v20220622/NodeProxy.py +76 -0
  1047. info2soft/resource/v20220622/ReCyle.py +47 -0
  1048. info2soft/resource/v20220622/ServiceCluster.py +100 -0
  1049. info2soft/resource/v20220622/Storage.py +1443 -0
  1050. info2soft/resource/v20220622/StoragePool.py +166 -0
  1051. info2soft/resource/v20220622/VirtualizationSupport.py +464 -0
  1052. info2soft/resource/v20220622/__init__.py +25 -0
  1053. info2soft/resource/v20230227/ActiveNode.py +361 -0
  1054. info2soft/resource/v20230227/AppSystem.py +307 -0
  1055. info2soft/resource/v20230227/AppType.py +75 -0
  1056. info2soft/resource/v20230227/Authorization.py +86 -0
  1057. info2soft/resource/v20230227/BizGroup.py +118 -0
  1058. info2soft/resource/v20230227/BoxVm.py +100 -0
  1059. info2soft/resource/v20230227/Cluster.py +180 -0
  1060. info2soft/resource/v20230227/ContainerCluster.py +313 -0
  1061. info2soft/resource/v20230227/CopyVolume.py +130 -0
  1062. info2soft/resource/v20230227/DedupePool.py +101 -0
  1063. info2soft/resource/v20230227/DtoHost.py +218 -0
  1064. info2soft/resource/v20230227/DtoLifeManagement.py +91 -0
  1065. info2soft/resource/v20230227/DtoStorage.py +128 -0
  1066. info2soft/resource/v20230227/HdfsPlatform.py +102 -0
  1067. info2soft/resource/v20230227/Monitor.py +92 -0
  1068. info2soft/resource/v20230227/Node.py +518 -0
  1069. info2soft/resource/v20230227/NodeDbConfig.py +47 -0
  1070. info2soft/resource/v20230227/NodeProxy.py +76 -0
  1071. info2soft/resource/v20230227/Npsvr.py +126 -0
  1072. info2soft/resource/v20230227/ReCyle.py +60 -0
  1073. info2soft/resource/v20230227/ServiceCluster.py +139 -0
  1074. info2soft/resource/v20230227/Storage.py +1374 -0
  1075. info2soft/resource/v20230227/StoragePool.py +180 -0
  1076. info2soft/resource/v20230227/Ukey.py +153 -0
  1077. info2soft/resource/v20230227/VirtualizationSupport.py +604 -0
  1078. info2soft/resource/v20230227/__init__.py +46 -0
  1079. info2soft/resource/v20240228/ActiveDbType.py +99 -0
  1080. info2soft/resource/v20240228/ActiveNode.py +387 -0
  1081. info2soft/resource/v20240228/AppSystem.py +1221 -0
  1082. info2soft/resource/v20240228/AppType.py +80 -0
  1083. info2soft/resource/v20240228/Authorization.py +86 -0
  1084. info2soft/resource/v20240228/BizGroup.py +118 -0
  1085. info2soft/resource/v20240228/BoxVm.py +119 -0
  1086. info2soft/resource/v20240228/Cfs.py +133 -0
  1087. info2soft/resource/v20240228/Cluster.py +206 -0
  1088. info2soft/resource/v20240228/ContainerCluster.py +313 -0
  1089. info2soft/resource/v20240228/CopyVolume.py +139 -0
  1090. info2soft/resource/v20240228/DedupePool.py +126 -0
  1091. info2soft/resource/v20240228/DtoHost.py +254 -0
  1092. info2soft/resource/v20240228/DtoLifeManagement.py +96 -0
  1093. info2soft/resource/v20240228/DtoStorage.py +128 -0
  1094. info2soft/resource/v20240228/Filesystem.py +114 -0
  1095. info2soft/resource/v20240228/HdfsPlatform.py +288 -0
  1096. info2soft/resource/v20240228/LanfreeChannel.py +101 -0
  1097. info2soft/resource/v20240228/Monitor.py +92 -0
  1098. info2soft/resource/v20240228/Node.py +544 -0
  1099. info2soft/resource/v20240228/NodeDbConfig.py +47 -0
  1100. info2soft/resource/v20240228/NodeProxy.py +76 -0
  1101. info2soft/resource/v20240228/Npsvr.py +164 -0
  1102. info2soft/resource/v20240228/ReCyle.py +60 -0
  1103. info2soft/resource/v20240228/ServiceCluster.py +140 -0
  1104. info2soft/resource/v20240228/Storage.py +1452 -0
  1105. info2soft/resource/v20240228/StoragePool.py +253 -0
  1106. info2soft/resource/v20240228/StorageUnit.py +196 -0
  1107. info2soft/resource/v20240228/Tape.py +487 -0
  1108. info2soft/resource/v20240228/Ukey.py +248 -0
  1109. info2soft/resource/v20240228/VirtualizationSupport.py +620 -0
  1110. info2soft/resource/v20240228/__init__.py +52 -0
  1111. info2soft/resource/v20240819/ActiveDbType.py +113 -0
  1112. info2soft/resource/v20240819/ActiveNode.py +375 -0
  1113. info2soft/resource/v20240819/ActiveNodeCluster.py +141 -0
  1114. info2soft/resource/v20240819/ActiveNodeV3.py +348 -0
  1115. info2soft/resource/v20240819/AppSystem.py +181 -0
  1116. info2soft/resource/v20240819/AppType.py +75 -0
  1117. info2soft/resource/v20240819/BigdataPlatform.py +194 -0
  1118. info2soft/resource/v20240819/BizGroup.py +118 -0
  1119. info2soft/resource/v20240819/BoxVm.py +100 -0
  1120. info2soft/resource/v20240819/Cfs.py +128 -0
  1121. info2soft/resource/v20240819/Cluster.py +206 -0
  1122. info2soft/resource/v20240819/ContainerCluster.py +326 -0
  1123. info2soft/resource/v20240819/CopyVolume.py +156 -0
  1124. info2soft/resource/v20240819/DedupePool.py +114 -0
  1125. info2soft/resource/v20240819/DiskPool.py +89 -0
  1126. info2soft/resource/v20240819/DtoHost.py +270 -0
  1127. info2soft/resource/v20240819/DtoLifeManagement.py +60 -0
  1128. info2soft/resource/v20240819/DtoStorage.py +128 -0
  1129. info2soft/resource/v20240819/DtoStorageBucket.py +74 -0
  1130. info2soft/resource/v20240819/Filesystem.py +114 -0
  1131. info2soft/resource/v20240819/HdfsPlatform.py +141 -0
  1132. info2soft/resource/v20240819/LanfreeChannel.py +114 -0
  1133. info2soft/resource/v20240819/Monitor.py +92 -0
  1134. info2soft/resource/v20240819/Node.py +611 -0
  1135. info2soft/resource/v20240819/NodeDbConfig.py +47 -0
  1136. info2soft/resource/v20240819/NodeProxy.py +76 -0
  1137. info2soft/resource/v20240819/Npsvr.py +130 -0
  1138. info2soft/resource/v20240819/ReCyle.py +47 -0
  1139. info2soft/resource/v20240819/ServiceCluster.py +139 -0
  1140. info2soft/resource/v20240819/Storage.py +1530 -0
  1141. info2soft/resource/v20240819/StoragePool.py +206 -0
  1142. info2soft/resource/v20240819/StorageUnit.py +209 -0
  1143. info2soft/resource/v20240819/Tape.py +505 -0
  1144. info2soft/resource/v20240819/Ukey.py +218 -0
  1145. info2soft/resource/v20240819/VirtualizationSupport.py +741 -0
  1146. info2soft/resource/v20240819/__init__.py +70 -0
  1147. info2soft/resource/v20250123/ActiveDbType.py +113 -0
  1148. info2soft/resource/v20250123/ActiveNode.py +375 -0
  1149. info2soft/resource/v20250123/ActiveNodeCluster.py +141 -0
  1150. info2soft/resource/v20250123/ActiveNodeV3.py +348 -0
  1151. info2soft/resource/v20250123/AppSystem.py +181 -0
  1152. info2soft/resource/v20250123/AppType.py +75 -0
  1153. info2soft/resource/v20250123/BigdataPlatform.py +194 -0
  1154. info2soft/resource/v20250123/BizGroup.py +118 -0
  1155. info2soft/resource/v20250123/BoxVm.py +100 -0
  1156. info2soft/resource/v20250123/Cfs.py +128 -0
  1157. info2soft/resource/v20250123/Cluster.py +245 -0
  1158. info2soft/resource/v20250123/ContainerCluster.py +326 -0
  1159. info2soft/resource/v20250123/CopyVolume.py +156 -0
  1160. info2soft/resource/v20250123/DedupePool.py +114 -0
  1161. info2soft/resource/v20250123/DiskPool.py +89 -0
  1162. info2soft/resource/v20250123/DtoGateway.py +116 -0
  1163. info2soft/resource/v20250123/DtoHost.py +270 -0
  1164. info2soft/resource/v20250123/DtoLifeManagement.py +60 -0
  1165. info2soft/resource/v20250123/DtoStorage.py +128 -0
  1166. info2soft/resource/v20250123/DtoStorageBucket.py +89 -0
  1167. info2soft/resource/v20250123/Filesystem.py +114 -0
  1168. info2soft/resource/v20250123/HdfsPlatform.py +141 -0
  1169. info2soft/resource/v20250123/LanfreeChannel.py +114 -0
  1170. info2soft/resource/v20250123/Monitor.py +92 -0
  1171. info2soft/resource/v20250123/Node.py +611 -0
  1172. info2soft/resource/v20250123/NodeDbConfig.py +47 -0
  1173. info2soft/resource/v20250123/NodeProxy.py +76 -0
  1174. info2soft/resource/v20250123/Npsvr.py +130 -0
  1175. info2soft/resource/v20250123/ReCyle.py +47 -0
  1176. info2soft/resource/v20250123/ServiceCluster.py +139 -0
  1177. info2soft/resource/v20250123/Storage.py +1530 -0
  1178. info2soft/resource/v20250123/StoragePool.py +206 -0
  1179. info2soft/resource/v20250123/StorageUnit.py +209 -0
  1180. info2soft/resource/v20250123/Tape.py +505 -0
  1181. info2soft/resource/v20250123/Ukey.py +218 -0
  1182. info2soft/resource/v20250123/VirtualizationSupport.py +756 -0
  1183. info2soft/resource/v20250123/__init__.py +72 -0
  1184. info2soft/resource/v20250630/ActiveDbType.py +113 -0
  1185. info2soft/resource/v20250630/ActiveNode.py +375 -0
  1186. info2soft/resource/v20250630/ActiveNodeCluster.py +141 -0
  1187. info2soft/resource/v20250630/ActiveNodeClusterV3.py +141 -0
  1188. info2soft/resource/v20250630/ActiveNodeV3.py +361 -0
  1189. info2soft/resource/v20250630/AppSystem.py +181 -0
  1190. info2soft/resource/v20250630/AppType.py +75 -0
  1191. info2soft/resource/v20250630/BigdataPlatform.py +194 -0
  1192. info2soft/resource/v20250630/BizGroup.py +118 -0
  1193. info2soft/resource/v20250630/BoxVm.py +100 -0
  1194. info2soft/resource/v20250630/Cfs.py +128 -0
  1195. info2soft/resource/v20250630/Cluster.py +335 -0
  1196. info2soft/resource/v20250630/ContainerCluster.py +325 -0
  1197. info2soft/resource/v20250630/CopyVolume.py +156 -0
  1198. info2soft/resource/v20250630/DedupePool.py +114 -0
  1199. info2soft/resource/v20250630/DiskPool.py +89 -0
  1200. info2soft/resource/v20250630/DtoGateway.py +155 -0
  1201. info2soft/resource/v20250630/DtoHost.py +270 -0
  1202. info2soft/resource/v20250630/DtoLifeManagement.py +60 -0
  1203. info2soft/resource/v20250630/DtoStorage.py +128 -0
  1204. info2soft/resource/v20250630/DtoStorageBucket.py +89 -0
  1205. info2soft/resource/v20250630/Filesystem.py +114 -0
  1206. info2soft/resource/v20250630/HdfsPlatform.py +141 -0
  1207. info2soft/resource/v20250630/LanfreeChannel.py +114 -0
  1208. info2soft/resource/v20250630/Monitor.py +92 -0
  1209. info2soft/resource/v20250630/Node.py +624 -0
  1210. info2soft/resource/v20250630/NodeDbConfig.py +47 -0
  1211. info2soft/resource/v20250630/NodeProxy.py +76 -0
  1212. info2soft/resource/v20250630/NodeV3.py +663 -0
  1213. info2soft/resource/v20250630/Npsvr.py +130 -0
  1214. info2soft/resource/v20250630/ReCyle.py +47 -0
  1215. info2soft/resource/v20250630/ServiceCluster.py +139 -0
  1216. info2soft/resource/v20250630/Storage.py +1531 -0
  1217. info2soft/resource/v20250630/StoragePool.py +206 -0
  1218. info2soft/resource/v20250630/StorageUnit.py +209 -0
  1219. info2soft/resource/v20250630/Tape.py +505 -0
  1220. info2soft/resource/v20250630/Ukey.py +218 -0
  1221. info2soft/resource/v20250630/VirtualizationSupport.py +756 -0
  1222. info2soft/resource/v20250630/__init__.py +76 -0
  1223. info2soft/retentionPolicy/__init__.py +0 -0
  1224. info2soft/retentionPolicy/v20240228/RetentionPolicy.py +33 -0
  1225. info2soft/retentionPolicy/v20240228/__init__.py +2 -0
  1226. info2soft/retentionPolicy/v20240819/RetentionPolicy.py +33 -0
  1227. info2soft/retentionPolicy/v20240819/__init__.py +2 -0
  1228. info2soft/retentionPolicy/v20250123/RetentionPolicy.py +33 -0
  1229. info2soft/retentionPolicy/v20250123/__init__.py +2 -0
  1230. info2soft/retentionPolicy/v20250630/RetentionPolicy.py +33 -0
  1231. info2soft/retentionPolicy/v20250630/__init__.py +2 -0
  1232. info2soft/ruleVersion/__init__.py +0 -0
  1233. info2soft/ruleVersion/v20240228/RuleVersion.py +34 -0
  1234. info2soft/ruleVersion/v20240228/__init__.py +2 -0
  1235. info2soft/ruleVersion/v20240819/RuleVersion.py +47 -0
  1236. info2soft/ruleVersion/v20240819/__init__.py +2 -0
  1237. info2soft/ruleVersion/v20250123/RuleVersion.py +47 -0
  1238. info2soft/ruleVersion/v20250123/__init__.py +2 -0
  1239. info2soft/ruleVersion/v20250630/RuleVersion.py +47 -0
  1240. info2soft/ruleVersion/v20250630/__init__.py +2 -0
  1241. info2soft/snapshotTask/__init__.py +0 -0
  1242. info2soft/snapshotTask/v20240819/SnapshotTask.py +157 -0
  1243. info2soft/snapshotTask/v20240819/__init__.py +2 -0
  1244. info2soft/snapshotTask/v20250123/SnapshotTask.py +157 -0
  1245. info2soft/snapshotTask/v20250123/__init__.py +2 -0
  1246. info2soft/snapshotTask/v20250630/SnapshotTask.py +157 -0
  1247. info2soft/snapshotTask/v20250630/__init__.py +2 -0
  1248. info2soft/stoCluster/__init__.py +0 -0
  1249. info2soft/stoCluster/v20250630/StoCluster.py +89 -0
  1250. info2soft/stoCluster/v20250630/__init__.py +2 -0
  1251. info2soft/storage_cdm/FfoMount.py +76 -0
  1252. info2soft/storage_cdm/MountTask.py +151 -0
  1253. info2soft/storage_cdm/SnapshotTask.py +173 -0
  1254. info2soft/storage_cdm/__init__.py +6 -0
  1255. info2soft/storage_cdm/v20220622/FfoMount.py +76 -0
  1256. info2soft/storage_cdm/v20220622/MountTask.py +151 -0
  1257. info2soft/storage_cdm/v20220622/SnapshotTask.py +173 -0
  1258. info2soft/storage_cdm/v20220622/__init__.py +6 -0
  1259. info2soft/storage_cdm/v20230227/MountTask.py +113 -0
  1260. info2soft/storage_cdm/v20230227/SnapshotTask.py +118 -0
  1261. info2soft/storage_cdm/v20230227/__init__.py +3 -0
  1262. info2soft/storage_cdm/v20240228/MountTask.py +151 -0
  1263. info2soft/storage_cdm/v20240228/SnapshotTask.py +175 -0
  1264. info2soft/storage_cdm/v20240228/__init__.py +3 -0
  1265. info2soft/stream/__init__.py +0 -0
  1266. info2soft/stream/v20240228/ObjCmp.py +21 -0
  1267. info2soft/stream/v20240228/OracleBkTakeover.py +74 -0
  1268. info2soft/stream/v20240228/OracleReverse.py +21 -0
  1269. info2soft/stream/v20240228/SyncRule.py +331 -0
  1270. info2soft/stream/v20240228/TbCmp.py +97 -0
  1271. info2soft/stream/v20240228/__init__.py +10 -0
  1272. info2soft/stream/v20240819/ObjCmp.py +99 -0
  1273. info2soft/stream/v20240819/OracleBkTakeover.py +47 -0
  1274. info2soft/stream/v20240819/OracleReverse.py +21 -0
  1275. info2soft/stream/v20240819/RuleMonitor.py +137 -0
  1276. info2soft/stream/v20240819/SyncRule.py +322 -0
  1277. info2soft/stream/v20240819/TbCmp.py +125 -0
  1278. info2soft/stream/v20240819/TrafficReport.py +47 -0
  1279. info2soft/stream/v20240819/__init__.py +14 -0
  1280. info2soft/stream/v20250123/ObjCmp.py +99 -0
  1281. info2soft/stream/v20250123/OracleBkTakeover.py +47 -0
  1282. info2soft/stream/v20250123/OracleReverse.py +21 -0
  1283. info2soft/stream/v20250123/RuleMonitor.py +137 -0
  1284. info2soft/stream/v20250123/SyncRule.py +322 -0
  1285. info2soft/stream/v20250123/TbCmp.py +125 -0
  1286. info2soft/stream/v20250123/TrafficReport.py +47 -0
  1287. info2soft/stream/v20250123/__init__.py +14 -0
  1288. info2soft/stream/v20250630/MaskAlgo.py +61 -0
  1289. info2soft/stream/v20250630/MaskRule.py +140 -0
  1290. info2soft/stream/v20250630/MaskSensType.py +50 -0
  1291. info2soft/stream/v20250630/ObjCmp.py +112 -0
  1292. info2soft/stream/v20250630/OracleBkTakeover.py +85 -0
  1293. info2soft/stream/v20250630/OracleReverse.py +21 -0
  1294. info2soft/stream/v20250630/RuleMonitor.py +137 -0
  1295. info2soft/stream/v20250630/Script.py +89 -0
  1296. info2soft/stream/v20250630/ScriptRule.py +115 -0
  1297. info2soft/stream/v20250630/SensCheck.py +143 -0
  1298. info2soft/stream/v20250630/SensMap.py +129 -0
  1299. info2soft/stream/v20250630/SyncRule.py +698 -0
  1300. info2soft/stream/v20250630/TbCmp.py +151 -0
  1301. info2soft/stream/v20250630/TrafficReport.py +47 -0
  1302. info2soft/stream/v20250630/__init__.py +28 -0
  1303. info2soft/system/__init__.py +1 -0
  1304. info2soft/system/test/__init__.py +0 -0
  1305. info2soft/system/test/v20190104/LicTest.py +215 -0
  1306. info2soft/system/test/v20190104/UserTest.py +152 -0
  1307. info2soft/system/test/v20190104/__init__.py +0 -0
  1308. info2soft/system/test/v20190806/UserTest.py +92 -0
  1309. info2soft/system/test/v20190806/__init__.py +0 -0
  1310. info2soft/system/test/v20220622/CredentialTest.py +129 -0
  1311. info2soft/system/test/v20220622/LicTest.py +215 -0
  1312. info2soft/system/test/v20220622/UserTest.py +92 -0
  1313. info2soft/system/test/v20220622/__init__.py +0 -0
  1314. info2soft/system/v20181227/Lic.py +204 -0
  1315. info2soft/system/v20181227/User.py +203 -0
  1316. info2soft/system/v20181227/__init__.py +0 -0
  1317. info2soft/system/v20200729/Credential.py +102 -0
  1318. info2soft/system/v20200729/__init__.py +2 -0
  1319. info2soft/system/v20220622/Credential.py +102 -0
  1320. info2soft/system/v20220622/Lic.py +204 -0
  1321. info2soft/system/v20220622/User.py +203 -0
  1322. info2soft/system/v20220622/__init__.py +5 -0
  1323. info2soft/system/v20240819/Lic.py +189 -0
  1324. info2soft/system/v20240819/__init__.py +2 -0
  1325. info2soft/system/v20250123/Lic.py +189 -0
  1326. info2soft/system/v20250123/__init__.py +2 -0
  1327. info2soft/system/v20250630/Lic.py +189 -0
  1328. info2soft/system/v20250630/__init__.py +2 -0
  1329. info2soft/tape/Tape.py +74 -0
  1330. info2soft/tape/__init__.py +2 -0
  1331. info2soft/tape/v20220622/Tape.py +74 -0
  1332. info2soft/tape/v20220622/__init__.py +2 -0
  1333. info2soft/tape/v20230227/Tape.py +74 -0
  1334. info2soft/tape/v20230227/__init__.py +2 -0
  1335. info2soft/tape/v20240228/Tape.py +74 -0
  1336. info2soft/tape/v20240228/__init__.py +2 -0
  1337. info2soft/tape/v20240819/TapeRecovery.py +74 -0
  1338. info2soft/tape/v20240819/__init__.py +2 -0
  1339. info2soft/tape/v20250123/TapeRecovery.py +74 -0
  1340. info2soft/tape/v20250123/__init__.py +2 -0
  1341. info2soft/tape/v20250630/TapeRecovery.py +74 -0
  1342. info2soft/tape/v20250630/__init__.py +2 -0
  1343. info2soft/tape_copy/__init__.py +0 -0
  1344. info2soft/tape_copy/v20230227/TapeCopy.py +74 -0
  1345. info2soft/tape_copy/v20230227/__init__.py +2 -0
  1346. info2soft/tape_copy/v20240228/TapeCopy.py +74 -0
  1347. info2soft/tape_copy/v20240228/__init__.py +2 -0
  1348. info2soft/taskCenter/__init__.py +0 -0
  1349. info2soft/taskCenter/v20240819/BatchTask.py +73 -0
  1350. info2soft/taskCenter/v20240819/__init__.py +2 -0
  1351. info2soft/taskCenter/v20250123/BatchTask.py +73 -0
  1352. info2soft/taskCenter/v20250123/__init__.py +2 -0
  1353. info2soft/taskCenter/v20250630/BatchTask.py +73 -0
  1354. info2soft/taskCenter/v20250630/__init__.py +2 -0
  1355. info2soft/thirdParty/__init__.py +0 -0
  1356. info2soft/thirdParty/v20240819/ThirdParty.py +21 -0
  1357. info2soft/thirdParty/v20240819/__init__.py +2 -0
  1358. info2soft/thirdParty/v20250123/ThirdParty.py +21 -0
  1359. info2soft/thirdParty/v20250123/__init__.py +2 -0
  1360. info2soft/thirdParty/v20250630/ThirdParty.py +21 -0
  1361. info2soft/thirdParty/v20250630/__init__.py +2 -0
  1362. info2soft/timing/TimingBackup.py +239 -0
  1363. info2soft/timing/TimingRecovery.py +369 -0
  1364. info2soft/timing/__init__.py +0 -0
  1365. info2soft/timing/test/TimingBackupTest.py +451 -0
  1366. info2soft/timing/test/TimingRecoveryTest.py +478 -0
  1367. info2soft/timing/test/__init__.py +0 -0
  1368. info2soft/timing/test/v20220622/TimingBackupTest.py +451 -0
  1369. info2soft/timing/test/v20220622/TimingRecoveryTest.py +478 -0
  1370. info2soft/timing/test/v20220622/__init__.py +0 -0
  1371. info2soft/timing/v20220622/TimingBackup.py +239 -0
  1372. info2soft/timing/v20220622/TimingRecovery.py +369 -0
  1373. info2soft/timing/v20220622/__init__.py +2 -0
  1374. info2soft/timing/v20230227/TimingBackup.py +626 -0
  1375. info2soft/timing/v20230227/__init__.py +2 -0
  1376. info2soft/timing/v20240228/TimingBackup.py +664 -0
  1377. info2soft/timing/v20240228/__init__.py +2 -0
  1378. info2soft/timing/v20240819/TimingBackup.py +361 -0
  1379. info2soft/timing/v20240819/TimingRecovery.py +376 -0
  1380. info2soft/timing/v20240819/__init__.py +4 -0
  1381. info2soft/timing/v20250123/TimingBackup.py +361 -0
  1382. info2soft/timing/v20250123/TimingRecovery.py +376 -0
  1383. info2soft/timing/v20250123/__init__.py +4 -0
  1384. info2soft/timing/v20250630/TimingBackup.py +361 -0
  1385. info2soft/timing/v20250630/TimingRecovery.py +376 -0
  1386. info2soft/timing/v20250630/__init__.py +4 -0
  1387. info2soft/tools/__init__.py +0 -0
  1388. info2soft/tools/test/DiagnoseTest.py +62 -0
  1389. info2soft/tools/test/__init__.py +0 -0
  1390. info2soft/tools/test/v20190104/CompareTest.py +241 -0
  1391. info2soft/tools/test/v20190104/DiagnoseTest.py +73 -0
  1392. info2soft/tools/test/v20190104/__init__.py +0 -0
  1393. info2soft/tools/test/v20220622/CompareTest.py +241 -0
  1394. info2soft/tools/test/v20220622/DiagnoseTest.py +62 -0
  1395. info2soft/tools/test/v20220622/__init__.py +0 -0
  1396. info2soft/tools/v20181227/Compare.py +177 -0
  1397. info2soft/tools/v20181227/Diagnose.py +60 -0
  1398. info2soft/tools/v20181227/__init__.py +0 -0
  1399. info2soft/tools/v20220622/Compare.py +177 -0
  1400. info2soft/tools/v20220622/Diagnose.py +60 -0
  1401. info2soft/tools/v20220622/__init__.py +2 -0
  1402. info2soft/tools/v20230227/Compare.py +129 -0
  1403. info2soft/tools/v20230227/__init__.py +2 -0
  1404. info2soft/tools/v20240228/Compare.py +129 -0
  1405. info2soft/tools/v20240228/__init__.py +2 -0
  1406. info2soft/tools/v20240819/Compare.py +156 -0
  1407. info2soft/tools/v20240819/__init__.py +2 -0
  1408. info2soft/tools/v20250123/Compare.py +156 -0
  1409. info2soft/tools/v20250123/__init__.py +2 -0
  1410. info2soft/tools/v20250630/Compare.py +156 -0
  1411. info2soft/tools/v20250630/__init__.py +2 -0
  1412. info2soft/upmonitor/__init__.py +0 -0
  1413. info2soft/upmonitor/test/UpMonitor.py +153 -0
  1414. info2soft/upmonitor/test/__init__.py +0 -0
  1415. info2soft/upmonitor/test/v20220622/UpMonitor.py +153 -0
  1416. info2soft/upmonitor/test/v20220622/__init__.py +0 -0
  1417. info2soft/upmonitor/v20190805/UpMonitor.py +134 -0
  1418. info2soft/upmonitor/v20190805/__init__.py +0 -0
  1419. info2soft/upmonitor/v20220622/UpMonitor.py +134 -0
  1420. info2soft/upmonitor/v20220622/__init__.py +1 -0
  1421. info2soft/upmonitor/v20230227/UpMonitor.py +128 -0
  1422. info2soft/upmonitor/v20230227/__init__.py +2 -0
  1423. info2soft/upmonitor/v20240228/UpMonitor.py +128 -0
  1424. info2soft/upmonitor/v20240228/__init__.py +2 -0
  1425. info2soft/upmonitor/v20240819/UpMonitor.py +245 -0
  1426. info2soft/upmonitor/v20240819/__init__.py +2 -0
  1427. info2soft/upmonitor/v20250123/UpMonitor.py +245 -0
  1428. info2soft/upmonitor/v20250123/__init__.py +2 -0
  1429. info2soft/upmonitor/v20250630/UpMonitor.py +245 -0
  1430. info2soft/upmonitor/v20250630/__init__.py +2 -0
  1431. info2soft/vmClone/__init__.py +0 -0
  1432. info2soft/vmClone/v20240819/VmCloneRule.py +100 -0
  1433. info2soft/vmClone/v20240819/VmCloneVm.py +102 -0
  1434. info2soft/vmClone/v20240819/__init__.py +4 -0
  1435. info2soft/vmClone/v20250123/VmCloneRule.py +100 -0
  1436. info2soft/vmClone/v20250123/VmCloneVm.py +102 -0
  1437. info2soft/vmClone/v20250123/__init__.py +4 -0
  1438. info2soft/vmClone/v20250630/VmCloneRule.py +100 -0
  1439. info2soft/vmClone/v20250630/VmCloneVm.py +102 -0
  1440. info2soft/vmClone/v20250630/__init__.py +4 -0
  1441. info2soft/vp/VirtualizationSupport.py +1066 -0
  1442. info2soft/vp/__init__.py +0 -0
  1443. info2soft/vp/test/VirtualizationSupportTest.py +1341 -0
  1444. info2soft/vp/test/__init__.py +0 -0
  1445. info2soft/vp/test/v20220622/VirtualizationSupportTest.py +1341 -0
  1446. info2soft/vp/test/v20220622/__init__.py +0 -0
  1447. info2soft/vp/v20220622/VirtualizationSupport.py +1066 -0
  1448. info2soft/vp/v20220622/__init__.py +1 -0
  1449. info2soft/vp/v20230227/VirtualizationSupport.py +570 -0
  1450. info2soft/vp/v20230227/__init__.py +2 -0
  1451. info2soft/vp/v20240228/VirtualizationSupport.py +570 -0
  1452. info2soft/vp/v20240228/__init__.py +2 -0
  1453. info2soft/vp/v20240819/VirtualizationSupport.py +876 -0
  1454. info2soft/vp/v20240819/__init__.py +2 -0
  1455. info2soft/vp/v20250123/VirtualizationSupport.py +876 -0
  1456. info2soft/vp/v20250123/__init__.py +2 -0
  1457. info2soft/vp/v20250630/VirtualizationSupport.py +876 -0
  1458. info2soft/vp/v20250630/__init__.py +2 -0
  1459. info2soft/vpBackupRule/__init__.py +0 -0
  1460. info2soft/vpBackupRule/v20240819/VpBackupRule.py +115 -0
  1461. info2soft/vpBackupRule/v20240819/__init__.py +2 -0
  1462. info2soft/vpBackupRule/v20250123/VpBackupRule.py +115 -0
  1463. info2soft/vpBackupRule/v20250123/__init__.py +2 -0
  1464. info2soft/vpBackupRule/v20250630/VpBackupRule.py +127 -0
  1465. info2soft/vpBackupRule/v20250630/__init__.py +2 -0
  1466. info2soft/vpRecoveryRule/__init__.py +0 -0
  1467. info2soft/vpRecoveryRule/v20240819/VpRecoveryRule.py +102 -0
  1468. info2soft/vpRecoveryRule/v20240819/__init__.py +2 -0
  1469. info2soft/vpRecoveryRule/v20250123/VpRecoveryRule.py +102 -0
  1470. info2soft/vpRecoveryRule/v20250123/__init__.py +2 -0
  1471. info2soft/vpRecoveryRule/v20250630/VpRecoveryRule.py +102 -0
  1472. info2soft/vpRecoveryRule/v20250630/__init__.py +2 -0
@@ -0,0 +1,1295 @@
1
+
2
+ # -*- coding: utf-8 -*-
3
+ # flake8: noqa
4
+ import sys
5
+ sys.path.append(r'/Users/chengl/Desktop/sdk/python-sdk/')
6
+
7
+ import unittest
8
+ from info2soft.active.v20220622.SyncRules import SyncRules
9
+ from info2soft import Auth
10
+ from info2soft.fileWriter import write
11
+ from info2soft.compat import is_py2, is_py3
12
+
13
+ if is_py2:
14
+ import sys
15
+ import StringIO
16
+ import urllib
17
+
18
+ # reload(sys)
19
+ sys.setdefaultencoding('utf-8')
20
+ StringIO = StringIO.StringIO
21
+ urlopen = urllib.urlopen
22
+ if is_py3:
23
+ import io
24
+ import urllib
25
+
26
+ StringIO = io.StringIO
27
+ urlopen = urllib.request.urlopen
28
+
29
+ username = 'admin'
30
+ pwd = 'Info1234'
31
+
32
+
33
+ class SyncRulesTestCase(unittest.TestCase):
34
+
35
+ def testDescribeSyncRulesObjInfo(self):
36
+ a = Auth(username, pwd)
37
+ body = {
38
+ 'offset': 0,
39
+ 'limit': 10,
40
+ 'rule_uuid': 'c3FBc77A-aA76-A8E2-8ACe-6d763dfdA255',
41
+ 'usr': '',
42
+ 'sort': '',
43
+ 'sort_order': '',
44
+ 'search': '',
45
+ }
46
+
47
+ syncRules = SyncRules(a)
48
+ r = syncRules.describeSyncRulesObjInfo(body)
49
+ print(r[0])
50
+ assert r[0]['ret'] == 200
51
+ write(r[0], 'SyncRules', 'describeSyncRulesObjInfo', body)
52
+
53
+ def testDescribeSyncRulesDML(self):
54
+ a = Auth(username, pwd)
55
+ body = {
56
+ 'offset': 0,
57
+ 'limit': '10',
58
+ 'usr': '',
59
+ 'rule_uuid': '166b9eed-CE78-1ef9-9545-09FdB6Cbe2ac',
60
+ 'sort_order': 'asc',
61
+ 'search': '',
62
+ 'sort': '',
63
+ }
64
+
65
+ syncRules = SyncRules(a)
66
+ r = syncRules.describeSyncRulesDML(body)
67
+ print(r[0])
68
+ assert r[0]['ret'] == 200
69
+ write(r[0], 'SyncRules', 'describeSyncRulesDML', body)
70
+
71
+ def testDescribeSyncRulesProxyStatus(self):
72
+ a = Auth(username, pwd)
73
+ body = {
74
+ }
75
+
76
+ syncRules = SyncRules(a)
77
+ r = syncRules.describeSyncRulesProxyStatus(body)
78
+ print(r[0])
79
+ assert r[0]['ret'] == 200
80
+ write(r[0], 'SyncRules', 'describeSyncRulesProxyStatus', body)
81
+
82
+ def testCreateSyncRules(self):
83
+ a = Auth(username, pwd)
84
+ body = {
85
+ 'rule_name': 'ctt->ctt',
86
+ 'src_db_uuid': ' 1B1153F6-DAD9-BC39-888A-A743FCC208E5',
87
+ 'tgt_db_uuid': ' D42BF707-C971-EEA9-521F-BB0F3F7A92FC',
88
+ 'tgt_type': 'oracle',
89
+ 'db_user_map': {
90
+ 'CTT': 'CTT',},
91
+ 'row_map_mode': 'rowid',
92
+ 'map_type': 'user',
93
+ 'table_map': [{},],
94
+ 'dbmap_topic': '',
95
+ 'sync_mode': 1,
96
+ 'start_scn': 1,
97
+ 'full_sync_settings': {
98
+ 'keep_exist_table': 0,
99
+ 'keep_table': 0,
100
+ 'load_mode': 'direct',
101
+ 'ld_dir_opt': 0,
102
+ 'his_thread': 1,
103
+ 'try_split_part_table': 0,
104
+ 'concurrent_table': [
105
+ 'hello.world',],},
106
+ 'full_sync_obj_filter': {
107
+ 'full_sync_obj_data': [
108
+ 'PROCEDURE',
109
+ 'PACKAGE',
110
+ 'PACKAGE BODY',
111
+ 'DATABASE LINK',
112
+ 'OLD JOB',
113
+ 'JOB',
114
+ 'PRIVS',
115
+ 'CONSTRAINT',
116
+ 'JAVA RESOURCE',
117
+ 'JAVA SOURCE',],},
118
+ 'inc_sync_ddl_filter': {
119
+ 'inc_sync_ddl_data': [
120
+ 'INDEX',
121
+ 'VIEW',
122
+ 'FUNCTION',],},
123
+ 'filter_table_settings': {
124
+ 'exclude_table': [
125
+ 'hh.ww',],},
126
+ 'etl_settings': {
127
+ 'etl_table': [{
128
+ 'oprType': 'IRP',
129
+ 'table': '',
130
+ 'user': '',
131
+ 'process': 'SKIP',
132
+ 'addInfo': '',},],},
133
+ 'start_rule_now': 0,
134
+ 'storage_settings': {
135
+ 'src_max_mem': 512,
136
+ 'src_max_disk': 5000,
137
+ 'txn_max_mem': 10000,
138
+ 'tf_max_size': 100,
139
+ 'tgt_extern_table': '',},
140
+ 'error_handling': {
141
+ 'load_err_set': 'continue',
142
+ 'drp': 'ignore',
143
+ 'irp': 'irpafterdel',
144
+ 'urp': 'toirp',},
145
+ 'table_space_map': {
146
+ 'tgt_table_space': '',
147
+ 'table_mapping_way': 'ptop',
148
+ 'table_path_map': {
149
+ 'ddd': 'sss',
150
+ 'ddd1': 'sss1',},
151
+ 'table_space_name': {
152
+ 'qq': 'ss',},},
153
+ 'other_settings': {
154
+ 'keep_dyn_data': 0,
155
+ 'dyn_thread': 1,
156
+ 'dly_constraint_load': 0,
157
+ 'zip_level': 0,
158
+ 'ddl_cv': 0,
159
+ 'keep_bad_act': 0,
160
+ 'keep_usr_pwd': 1,
161
+ 'convert_urp_of_key': 0,
162
+ 'ignore_foreign_key': 0,},
163
+ 'bw_settings': {
164
+ 'bw_limit': '"12*00:00-13:00*40M,3*00:00-13:00*40M"',},
165
+ 'biz_grp_list': [],
166
+ 'kafka_time_out': '!4Hce[pBcYtQ#]RrJcUB2iRSeC99g)3ql4kCrA(%j*NQaA^5eE$CJU^VNXujipcyjiG#JykHw$DoMg7zThxviQRx&sxmKZr4(@n8)[cSp]0$&YIOwHUWdBEnjq[*[8C$HL@wf@[!ywEluSr4IG!AgKq8XuXo(Zworua&AAE[G4j9$nf*bNrhl%XjSEUz!^TKP(6G$2bl7#ZSzq4#R^RXCSS8wit#Cu2l*Pix^ZIg#xE%Ce!&yV)QoWtgc)7kTJqM%g6gxiRP3m(XMLIx6xt0KpOk%ydFQ%5YW)%y*BE1!%NBdIStbk0])g!&xVwvy9i%O%G26f$Ik#F5(tK1%Ne0k7*M3&uJRENIh3Hw^zw#JWD%y^ens6lWRJ]LqhIE0)Vrg7iF0WWY14@lwk$2)*zp$Y(GWAkaBOA*peSStro[Os(@fkpMIy4gf3m1j4]#ti^J&pgOD@%NoXiK!tF6hqAxDu8kz29Oca1HtVuTV5y@F4^!lggz*dsIZ[5Ou(bUoE[#R1G2l7nFR(cyqRys35IKoZ)z#Qn2cG8T@9GFW4[skx1PthJGo2Rr*eyzHRosrd(PC0qHE6SwD[s&Cq4&Tj&GN&OG1vWGeqU7fxlQOBS(D%]K)MraDkwHEGDmWpK)bhfzuOaJf)p5ZsU7M@O4f!#4BHXTHtMgs%^8mqcItR!17$DTXZJuE9ZN2Scrq&qpfwB804POb%5c#6DKjd^6Tsc^cdtwH#n**B^uDQ9&zWqiXO2QyLbqZ9VdVN&a*53N)F8Zr*Q08TC@0m[CPk0Nt@*VpFN&B!w(sn^lRfX2rg94n!5heHm4VotZVI!rhU9EJZ5p7*eAdyr)NC[ZvMa9)]1*oFiWsl%z@!8qHm7&GIfL]*3EyAnHMjGCh^RT6nBuq61NCOFT)]@uJfe[lNlG)K7t6(M6&!(Wv6s6VwJXp0pTLBj3qhw4yrKfOa*k[l1Cp4@EltdxB8wonKc3cJdkd^koq5IjUkL*SzeF5ZWfJ^e&QDKG6EP2YgEuWBqviDTy(BCS[WhsG^(S0ES@DXiD3@kaGLhX4Mk7tC((MKM^7G[Wygd8FCuD%krKPLuTz*bnXwj#LSiMqarCshod)ekFl%P!BOFq^##Bc%S4PVFi^NZzi98CbDq&D7ijV&M)4TIG1M#9Mf%t9h#G9zc])8SnzqMygU)u9S2zsgnX9B8KJ^RgsZ84My*s49QjYCSxZJK9lUCfDh)!SRdSN5owBzHBMBX#5APkySV7f#XD$e!X&IY3nLBKIkb2$GwMgx]KYeN#Zp*1%EEOIb9QVB3wE8Iwr2E1VC7uTAxqci@4fDr@bKk2RwMIFGPnNp()4@l7tvf]yzGmN*Pi)GYA&F$l[GWNmpskE2(B24@smPP^@IL)4^KKneZM!edoxoXVcV5yA1w6mm#R9xTcf4f5L454BoURRiaLaT)H0bP3#KKrW@ST5^pGP79BkjV!8AZTX!lkJ8Ih6vj)0RLS)vVZspZ!fM)p&M6Mjs)7i4@yWGdF[5ju5Euq^0F[R8fb0Ckio(5%($[)P7^7x8xn&Ks!Wzq8iC8NFNsOOtTedgCewgzG^Q0%YJrh!c*mwRFc#1J39wIxi7oJ(Gy3ejW6WN0$U%oCYd(FKnOZA0PU)[zDfbzj2lMrdFeHB8R%T8G8OC9P5^h4H0Zo2*[^%n2dZx(7BIE9X(9]Xl&A7i#(Vek1wNXAMQ5Y94npDJOT%q^*1xet!Qj5j&VXVciLFbyaA7^q*l&P!p0SgF6Hx!NHFgtNb4qQ@x[Cpk3B0Ka*U7JL[Sr@m9X7oB8pI$RYKTXtKzCr&88403#5uAcv3&c6bXxaAL!7qv9dWnJy7uSqc4wPs$gGxYEOIT9(u3Cln#HZs#@&yu*A6Z6elH62&wi^IhWY^V)X!skN6A@fv7mx&%N2Ty%D0qMCEDW!8fUxyvspZHPPMhgcOZ&A&cJ6p$*YnIf8cyAsVdCwghV6KOGBlSqFXA#I4g42buN61s1CRuzmz8xzeLpCxsXxdTq0QywS4kck0yc9m^zCYX5GdgFUjE(OkvMeXD!pJ[SxQBR4wgvs@1aCMJdgY&n)m!N2BXZQ4mDreL1o4U*9o(1Oy4V$!PT[YBfc&HuCfImA(kyud(NRxlhIX3Gs7MU!b0y5YP)sjmUit7wlunj[IOdKneyUIchy!dhhRTyDxfGoZKRgxyGEyQ0WOoIzwVIYD)nNFKhv&BkHvDZ[s*LOsS3!sL)nWu*jR$ZOH2v5OezM4QvuKebFF]RK*V$oeTUSxcIUNUe&K1IJnrxVyLdfQkaNw#KxHvS6EJ]FFEpg#SL8RSyif0nzsTFlZmRT#ZX@lU$kdlEALGbs$Lo6V4Euq%gQ^AcLZJ)^R%vx)[Pv)B3%FaLZu&ylwM32F%2RA4Cjg%1O%@Qfyp8Ryd$@%s5!NOKfiy^H7m2DvkWT7d]Z4B^z$QHnw@oP8(vpUj@xVJ!pf#Jzj9!RJeXT0qK%P20P)hhv@5gDq%FOTUl)YU&Zn&wOs07LrHfLCK8u9pD)SDYn&@qwwN])43o3mI17dtQz2c$ELGKTRwzLkTQ&h%xD9hsUnep!MxxgFSuAkEnsO$(Ja!3O8RAKv2r2L63dx5IbaokhoNDNt*6DZ7C8OoWhc1m&HnV0Y3%lfvu(MF4P[^hS7NF!l9KiGQ8p7ooA@4$ny3twFV#&K])dl)3zJxh^CWdMPfrw!8quej8TdTc&#y)LYqM*o@p)JicPuLaYg1!!3Hu[gL0X#QpGXy0bHb8[1*$)sein#90noEW(PkqYWSNJfL2^Enzk#(GVAQZcqLqQP&QY4[UD8MiMGI&y8asIXZDUB$6a3NQxz^wM$z6s)1z1euNlzDRFP)DKHzkeT#WzTw1Yc1MVBd(9Fepoox%SobfLCDf08I9m3Uub@XGn(f4&)OMs)R^bcm(3hY3K4Z4OhFq)Wjnvx&f0j8Fmt2vNOAV!77xsB0dpQYKAD%uidKVYqbxl1$KRGl7n#ENsp$y!r$f3Js2FIcl7IfI68QqmV2tgH1QM)&KfmulN7YUlgTGfp[TnV$$N68]i$MID&AvcYmVuTd3vz)7HLAP5BnU9zqKOBYx*g@NRTworr&Ahe))4E[O!#1*W7ej#Gr!kfGIDRkVRXS^[XnUJ9ZmSt6!NP2NPPet^sEGtszckEyr29DYhB2qjtK$nmgZv@(cYOU@itKqqdy!qVhXMklWFqIospjRjaISbf*yW^)u438*]54HXLsmrDZr9[hmjax^Z$WVRvH!7vFPceyqE^!1AJLe4SPDw(YR7TqJUD2[$ZBuO*H0C%0dh@Ciu&T9LeQZFfs9CF^4TyBlKpoX$MyD3PRqq9*M@PS9$!Q%p2Ouzf1XVtb!O4vr%PlMZ)s!Li9Shwsz&gX3[CSykTHQAVmE2il!SrZk7%j]HyBpM6D@6Oo2ftNh#(Q*h!4[dBWsP1C7T]STfgtqHsIR5YMu1NDGeZUonH6tKBdi$ZfQCrZeDEZfAWFeN$^&Ol*pxDr#h6op@g*LGq5vw]4DL$JZ2*5#cCR*!w9pZ3su3dAwJrYm067!I#FzFCvx9@j[bYi8C2jMug@@fmYc6*pIpCC5Wco^]cjdk1PJ1e##3HDjA4rC)ZBpVhf2E[fuyErpFmTndw2g7d#UhTj3vlQEDWEVz&dKnc#6l64%JTHBgEn4NST[lnn^ll]cvJ!o*Z##%!Skxb#QuDs#Zy$H7)%BiuyZcIW)WpAs4(Fm3Y[r6QlN1aMdK18Zb6dRsy(C!GLceK(fvtleqeVEZw]tLZ*h@*%2DkH)e6IdcrX6qddOXvnqSM1!!S&zPDW^5KlJkCycHWZjepuQ$P*I[lfw%E7V9aW&pKNX9E(G5(VezY!Jf)U^Zj5]FUlJ46Vnz6$U5mMlMi#3p[ksB#Mzs5IoV5PTgzTw)^5%1Is[HyWa0AsNZVt5f@mtWr(Df1V&md4S$[(MSP9Uj)3OGuX8j^kw%tnS$&9%r*IloQZVTUsOY^L8Ra#w7Ve6StW(L64d#845IkLbuloeM2oq[34Zczoa7WUh$Sdxj^GliCG)V4cca&lsAkoO^&NB*Xc0FMg@Aw!#SUp($vmwA^K[dQA3dL5te0LE@jsM&!xZ1#vMZZ&J#61t@u$)F74@(1v2nc3EJdobEL)W%sB6]vmcy5ZQhWv(GRsh0e1cC^b6BC23tgYFR@(NBKE8N[EAA#xY!Pk6JQzS$@xTdqZn5&wsj$&DxZ$]JK4Ntpn6bRCLPtKFiPTdTiWv^^N5kqfDcq9RYuLVRE%K#F@PTzP@coAcjMkyi5*G^FAJ5Uf6jDTP@MWoNYhK[0[*ZJp7rpeU&xk3)7&RnNBBgMq(OniU63)!Q4izxxHDlEd[6K!o8MYF(VZdg7KSp(gyNMv%8gSXUrAnVcf8Q4MVHZpX)n@l[KRqm*eNR4H7EjRhhdEd8eJSj@G2[3ubTHel&chcMQMIUE1TcQ2HHcRw38l)#hli85PAobT@H$IV!9CJeO@QZZx3BxbxQMOw79)(U5Kil1bVvC8fh!qAiI*O$8jc#EIFA%fC$c4PICX](vvs@(LkQLRU#zOSQOQn5JnnHLyq[K7LlXz3a[5egr@yBgMUcT$wz*vJbjV7!VK8VV0bllVfwfIIgDR18u7UR&^!^wvUmj#xJQOUpCl#)OH(suhEuxdS2ilSK54%$tk43hnP^T859yX3Z(GdnRsTWYZrsIcuprEHSHHo2UjD1tv@rF*P2jE)4xRU2UB@6kGx([40xH$w0#JygYkFXiRk3Pw#2hSEE#X)qh[z[69dwQiCG&fp4iJYLfYJF]6GJ*kOBlGW!(qb#x9dE)]S^1m*#^zL#WE9X)&tnr5%SC7jtSVtQ6I]kcQo8dusrN(9KaJF)Tj*K6eXM&gQijBN7zpt(#Z3DQ3Ll3XBo8T%pK2O@3YuvsP*o7vM&ovtzri*SRiJSRqnElC9*CtqNxXlnR()PKbyx4RxiBsam7LCGXw&Ki8vt&0GOVDIL(4KZTHo%[Fvj2H2WcLoszUcB1CHAkxDQCuUbGE]Q%3P#$eN4t9hvK4OCOwNe*8keFfBn*X[gRKd]9rP7&kWlLNGxPnfhj8hKw3cy0Y1jlDjoc@lo@vFpF$@uCQZO&zbUHgD^Jo)Ln6C*yjgklKwk)%!)ZxGr*oj*BDSOKNEVis[&ylVH8moU^dvTBtlUG[)boQ7!Gmg)WOTbx7cjdDx%@F18BXHACJ&JTFx)NtuoV0([L5&)BFhLmT*XS]pCConhwwLjFNVefFKAuHUzPN#53#6@A^OvL$jsmzuU(HZ%#oO!tO@H03NK4kjo@FP%[js@4I&1VT4T#qnS#zKFSx$yfof&QJCkN5zU#lFLAn*yTM2EGXYRGu3FU$)nU*EjsynW&ov(4k)4TPjakxMvRiW[7Y$L@uhuw%(D[cVToT0z0V@ZU2Ox)hoQ0hoOJGBO$8x1RbP@88XKeZC]Y@&%MSYiBj@M176lHxE0v@BfHDZEj2w!$o#CK$79yEz]NP$x[6)r^D1axlPG9fnG56HZk74eaUn#cpT6DDisgmx#RTI9jQ9MZkevGbdyqwJ1zsK7TIl&E92(hl*ZCnxIBcA9$wjLtP@8ZwoIfQ&E)xv)Yqw6BGUZkJiX#N1B!iM&!WlmMe4gRMYytWQIV#TXL(SsGbW91Oq983qdDIlbfdkVGEVHlTxNOPDw$teFY3qATE4QjsxW!2gOMUhUif*xYtxoRlCEc@lGMh(^(403oYv0OqxuF%W93yTe@G[#ltr3AJUBozCE0qC2yKn2L97osp04QoXA%WAxb9htKlRtC90QgCGW8sa4Yy3N&NJXRz4&93&JCUS3z[R$ZQwDFGJVW)Ic8SIBb4JgU%33B!9OH1vumV]M$H%iZswEmnDY^x6D9N97oFO@cR1Vrw&XIXig&!G3qAPN#3en(EWKQF!*z&U3ceCGTsjL1$&Wfo]!oS6Z%vm96O9R#67ww%1uwr[ZfA!OuYnedQ3pYE$PA^e0#$QZ49*jeHCQr7w7ZPt#BJGi)EMcTK62rJz1h2TC$$ZVdJeel(YfOh%X5M*Dk*2oCz5@Bc)*u2kUbwrl!@e$$u4Tn99gT3DWISe8lkS(@Rhn8cDAHZf)MZZAN@rN0oCC5jEHhTL4UTzP%QgGtGXL7oqgkVEXmA6Db0jZKii8gOMTlhKaecmzBDwgKU#VW&dsIadm7iCg5JyHnOHiY5ULrkkAh*zeTQzsxIcvo%GjbsQmiUw4[PjTeTFgj%$qFvLT$ebhhWKI1tQ%6vitvFG&xP)niL!GA@[f2J*2*szPJTpVYOWD)i$*)m[PC7!^YOvIlpS!!85teiKHiBLyYm%V@9hhk9eQzDl5LfF^yWJWRD7hKe1TnFH)9TyNwYZZZI!XZL1bF@U@6%!IGysBO^poI@^ArzfkEyZrrro2s$1W@LrZ1YKuCr0Qz%Qjd*6B^H4R[WPsGm#k&Vo3Y)8(&56]f^FBCMU9DTfI7fbUdSMiuFl(%AtfD4NebDlzXMLlPGZdilH@^UbW^utHGBju6#[mI9l2$Xek5I5)ChPGo#WTlg%hN1Rw@tw4#U$nldhM%Y&m!EC99a2jlb%3zn4eNQ$2!s%W)%^r^w)]5DoNp9#g[TTAlSqSSVtIDKe80TGq1GuTFc4OU[u*u17aIPk*QPJkGthV@sYWzlUKKQx&aCjW7^PH%6&NuMlorCo)0*3cFP#Ej6Yn%jgH)7zV&o1eqx)7xosDJ^uDB3KRV5vzYqI5NmP5&ohxinU#x5f%^E8Hy4WFELF%b$w!DLB9Fy8f5aCLfrNUY37l$DoAEVqK2(@]tB&L&4^wYA1!pFUXK[EPYfHZxqq5pP9M0Ir*9eAj#8ur%9ejjIoJTppwg%1qRac8PTT)@44uTFLTW5u4htncfz]#Q9Za(OSVpqvm@TU!(f1t^vg5coQ88OJ)kBV^J0cJhb0CMVWUP0%t!xI4!ABAg8Kp@xVZ[boj%$[OUkIfcBb#ro$DqI$Qwv%O[]lr3k!wCkaGqh1AHMA)WPr6grHwlQild$wSS$@BW#1(Gx8!tT29$W*Ky&W$#)@G[#2*d9Lx)M3]GGz[R%blslFoftDbSNfB*Q^1eGX#$eP5dS[d*qpXr4PZXRvt%*WZ270pYB^M2cUCUouH5d6xKDDUywY4grHZJxk4T%9NX8h1LSfKgzNLVTSTtPu1[7w9Qsf$zRMYBK&KMQk@Q]AR%W4*1h)LP9N79HI7Z!x[l*8Ghl@@b)0g*$vys3Nn#TRsWBE2UtR9lnYumJl!mfM4BBiylxCwGGQzoKAcPId[*nVrsgx!uZo8i2)UufS$(sJn4NKU^$Pd$H@LD3@ayJgD18v7yRuYZSDHulFJ]n5$0hFAQsIeZu*na1oQlS&)MOtnUef5c5%95Uwi6RUiRhCP)N@4@]*tW)3*PI@rOLZCszws6%gbJd32Pb*#(sMh1!HKGhpT1blIKrELqIKw8wg[moTJ[X8CPBb5!)%J8s(l)UpRoV]*2XS5isDInCAOc(F#49rn7%)N@c$P(V4TXbCN46QUesbToAnrqgIlUojwyQpRpYvBuQz9jQkS4EznxfZc*Bx)265IUL*xJ1A$LOkImlKbZ[*D5duF1yOYlQVnDSoU7)XZU7M!@BPGX8$^r7tPnk7cJl$8Q(#JwY[GZz(ffhTp3fTe)kFJLkPt5V*(u#fpz76@$4CT9p[H[43e^z!52PT8hs)EBYyP@qjSY*dJO[4hpHjBX#KVdsHj1BxV3@4e22wT*65US^1$&9ptL(T!dgTMe@KtFeNO]eHqK86Wl0fuH[SM7KZ1mg8xA$GJ$!qV*lfA86TqE9%@d7T4$YnM7qN^W6cVZap$QWGT2607W7df[Vr5cInzygG8W4kQT@eLlX8ydZvn7CNVu9!47*eqc$$jy*OVp&D1t&S2rT#vRkGShrNS)2B9VL3vK@N]q7HfJ[vH5CpLbGqtXSmYjbF[7n1SUzoI9R$2RWs5Ce5ARK9PP3$5&u3QBBg8DMRoT8*KBzj2cLieS3AH(8H[PiS%UfqMmSiCzsz]G0aq06z)#FgL*td$l)STdNUYSuNs5UZ1gFbUErQtgfVGesYnfnJ&3znAHbAws[udje5ol(GkED!7Af9Ql$^It*WO%B^UjZ(gwsXPP!0s4k20fkwaQDm$8qvR56jYsu%gcNB@8sLVpOn2NR%KeQU2Sw)M%bSYWnyq9V09HXk^D0[8M1aji5kJB2BtM*IIAvF8b0DSFV0oGx[(^4%mqJmV2$3xjJFhKcv@zFURy[ieRSK%Y#wbkM)v*JukE[2uwIo!pPbNe02grtWXCJ@QN@pM[!@$PP2f[tL[ZYsAGSzHH]JKsHI8$[2gTb6j*DSQjQhNpLnMnh6zyiXinZQPsg4iZwI)d^gE4%uZBpMUbzo2c[ZOzJKWJmL9kp$T&Zdp&4gf)fdbh%9r!q7t6R46UW7l3%Me^m#Ycz8K^lxRg@8Nv#[9m#qj*FvP8(Tz7QIUrU8@k3qW3x[[#[c6EmvEh@h7sOhs%$@]XF0U1xyvw%boqvFT3SIvwz)KUp2USjGnDW%iBSspMNh(]PCByE3)3j*ylRNkcU9Y[MEmMO]NS[[he^M3ENFz[0[H[SEdN&4E*qFwxkRQ$V[0G)@g8JK(AR@20wH#N[7o#K0e1GFwhiZi[D@Cwox)WxSgkp$UbM(L]UVZ6gbGX^K2rk3qDt$gjT3hDE@fJD%^6UtgBd6E#gm!(NR&&D$jDHmjk2NytaRCaLfToKmdXxFs23@bF)9iLi$PkkNm7A^^L5[^MhA#Xw6*0(Vwp@@RRM3x6FU$lGmAmzJSEBWq(BFhY#VKqV]DxH^vQs0oLTXyB1ecG3JdIJdX*WMYRAIJsy6arMp8qp^C&rObl(M]%!d]Z[IcBIo7PZLSNJ1%*zimbu[PUzcZ)Bwm97#ul3*f52[hHmowAROb@UHT9bL23I7x6k#K0D(IL601Kn9$x5JUk#YtL80z7OD3W&cv8#CDZ2)&n[*hmAeAsZt@X$%&Or$PHGX[8XF3LW^xNdJdRQp$4ABE3kTe)S0HrkRqfnuQEkm1uDswFxH&7v7CIsVxIzRufmBdZLKk1We5!#6DRIj7D&SQinV^3tv)^AeM4^rLt)%6OYhm$C)8kQRSsT@g2rS17j#D[gWru!oa4p%fzcW69yPkB@p^[EZzFcirb1aZ50Q2fR$m9rTI9UJpv)IDR3pyQkrVgeAA6E$Pq#Ob]06$p)rDbf@TIlGRggM1fBQGf2wM5Q)my&fidg%JjQbgSXE4(Zl)rIMqXc#A2lYtYhAGGrA^1t$B46D2&OGk0vnG2%Hhtwv&JYUT8DcOudGVaBvy&d[o9cvJkEz!nJU*5^YS!P$kON0D1MPWvudv&L3d#u@[@S0DYtRQ]v]LPN7YqvRAdZzzKO5h9n2QUXDCr2T7jnzbq*wDPC9RsD2bK$LnWjZ@v7rqh$*INbYa]FqHXFx$IAzme^!W*Iy#*8e*rjcgVC)KpliizHm(PNENyUR0L%SKYJCXFmcllBH#IfJ&sTpbosBP7d1LDVgB#Kn*PCpQ2g9DghxICdPO2[B#KApYgw4dpQs5@SjFSM86KrsP0OOons6#RWGJ3gQX8N22ACzI5s8tv9PDO)EofRZxq8QM7F1CqTxL[X[^L6qE*ylrnZD(7S5zMQz5u5jUOz0*HBxVzddFsNKGQI80]84Cu23U1QpPEJuJfHQ2vl3uw&ojhbsK1Dy$*pVjn@W3z3a(dhF#wzg7vSdt6OHWyqnCUa1y(3f8^pf(K@uV6iunv(Jcxr!gAOcF[&sIBy6XnSu%jtHLvvFNt)Xumdz8B*[O$MdoNcekSBJhsdNO8KX*2G6IpfzgB*jEskSnavIeT*cHee^VMB0&MLxPnuBn[a(zf4xS^Y2hl)h[QfEJSuKZuWdPuWIr)N$ab7irhngnStp%AiIR2(lTO@L038xMqX5J70S5(mrWgmN79n0lPqsjQib51^S%6k3$%*&s[1hr(5KYi@PbWnFWtvIANR[Cknqf^M2U%j22ZDruD5JyCxLvR]5)hmPzLKf(B]xG!9JPHl8n[F8ZIU^ajy&I7E$!2sP9cr8VFVdSmBr7UHmhlaOWJ@FdX)C^ff18EN%RqWo7Lvv1tNHSpwRxkx4w(G0KXm^5uWK9Q%dLNJzY8lABc[fD1t67G6ziW^&2h5ZXPN3g#LnI4(KDgNx^XK#A!S(zQPw2SbXlSnnSd*H3@@(pqEC4g))gg$o9NjcBx*uYEBG1qJ!y1PeI5dPAqQNIt1a*]m!)9vL2GyvpjPAPIH$uRwrV*M5fs1#jHXos$GhOCrHnvCirpLj9*opbjUx)y*WNsFv3AYnhOCsc4@bwnMm6ysI1Y9)X(Hh!^c$zp^zu35p0YvpP^CN$]OZhO(tdtvD0^5II)I$dtmFDIIc^$[2hY)[2N8V8O%g@kh6ZoKuqSB1&YjGnwxO8f(b@u%HnX83se!WKme6zON6!7cT%qlxS@oq^zpju4KK2eS$kiSuZlZ5lvdlt@cvujl1$*XfLxu]oQhpTvw]!0ZLAx95Xx#uw&(MeF([iyh*&q$UDL5J7bSu(B*%8S2yMu(rSV%CgUWPnY]n(^XSHbxqeD!vWdk(wMqh1YR4g0MxlbG[ULF36NCJX03*Rkr7#$PzGWt17lk4b*BW*Z%XQ@PyOoMwzLUiCCLjzjS*kH1Mb0ZX4jJ%4cM)4qHlw72sGq#bQ3dM558#rjSo5i15S9Rmzsc)Q04WlE4xQixImvF85Sh5Z(H4*S8%6T%fLHX9O)cGaZs9o[xs3PDDTf6r!TWU@cGDK0]fm!mq%syhGN$wfd#r]1fWg4Ky&O[7Gz1434zME%xl1tiC0xsKI82p8$RY0gXsceMGQmNKz0NubNwpo7jF7(nxxpSUWm7OVGuCwYxRGz!drw@E6h([Q58SxvzTK%CJR3HZS&Eo4M9moLf1KOzqDL(lNkT&LEiZ!QzAaO8oY#[qupD6bo78Q8TvxB%s[n49VompW^FC66rS$NdkAHvp!kG*U(725qlx$PReQPOJPJpljdxfvvDcIl44F#42Uwb#dIvfk2Fr4&J^s1mkTsif6bvUZ6OU)kr2!rQxgOX1Mn6K0xp6#ctR4sq@B3IC4WkBotwm4@I71pBOS1KtZV4YSm[7izV#3qQh(pOjhRBLF$z70dYAyO!5Y1B($Cx0Lw24&k2fpz[OHj6iAdaDhEK%[GS]doNa4jNGIw*!ujHHpY7*w@gmgTQEBaDk0Qvi6UdAAwhNW)iS2[r$*Tjj%(xrqK6xHtP0SSys9#7@9@1ao)twY%@2b3yPN8k)@*iI6zfPbC9Li6PFC!Eq$x@XI%mMPKimP[W%itxJG&2pBXJ*J$@0r1Uqb5qt[1OyoXA54#3hEGHjgo7ZwEw5a@r#IdnBAB^c3e)Pww*dMfCgR9P&)x4o2yLwRcYv4&*QS%BCi9Bb81bZoC]*KTy%8nF0l(7PK[%pqDdnelbrsGbz]sy6A)1cKC5ocCuwu4l04M!])FwG!R1&!rsl68^AxH#dcw0q4@bI([z[AodfmW34*[h*U*2wvQ6Zoxp3HEeNGI*X!&WKfjqJnVw^qHWd9Uj0dJIVeG&FL!z0ktSd&lB6wBnY#znNHP3()rg!FusT9On!@5W22Y7a#9sGOC@Ff$D^DhIQ3J9HaFGIVgYVMFWkIWV2*Ik[c*zWLAe#kRuqnDTMA#0mz^$)DHceZ)Tqv38)Z0GYoi%#*Pt*oYZ9nDo3LMEsxN4BEiacf98yZ)7]ycQkY8$vvkqHeGW[cO3&A7PyP)qsM68gpv%*4$zvHl^C*9y$IQ2CjJXg3&QsP$hR4NFdLSry*@@D#ekKsgf@%0ETmN]ANp#(CY51HIicVa[pS*T7eCJV[yzj(abhKAhcZ5247LG97O&ttU[H7bINESM4hFx7IyjnMsofpHP6oRl%FTPM[X)mXNUno6qKccI)rjqv8mhUMk31IjKEWmTn(u$5oA*bPnO@FxZCd3JVhINS2cxTAun%$Xj9lHYLAiWL7$xCZs)P[dYTK0%t$LkT32colMQUzb5XjI[![ipAjXtPtZL4%pYJhsnS@e@#Re1^E[DXYoD(6',
167
+ 'part_load_balance': '',
168
+ }
169
+
170
+ syncRules = SyncRules(a)
171
+ r = syncRules.createSyncRules(body)
172
+ print(r[0])
173
+ assert r[0]['ret'] == 200
174
+ write(r[0], 'SyncRules', 'createSyncRules', body)
175
+
176
+ def testModifySyncRules(self):
177
+ a = Auth(username, pwd)
178
+ body = {
179
+ 'row_map_mode': 'rowid',
180
+ 'map_type': 'user',
181
+ 'table_map': [{},],
182
+ 'dbmap_topic': '',
183
+ 'sync_mode': 1,
184
+ 'start_scn': 1,
185
+ 'full_sync_settings': {
186
+ 'keep_exist_table': 0,
187
+ 'keep_table': 0,
188
+ 'load_mode': 'direct',
189
+ 'ld_dir_opt': 0,
190
+ 'his_thread': 1,
191
+ 'try_split_part_table': 0,
192
+ 'concurrent_table': [
193
+ 'hello.world',],},
194
+ 'full_sync_obj_filter': {
195
+ 'full_sync_obj_data': [
196
+ 'PROCEDURE',
197
+ 'PACKAGE',
198
+ 'PACKAGE BODY',
199
+ 'DATABASE LINK',
200
+ 'OLD JOB',
201
+ 'JOB',
202
+ 'PRIVS',
203
+ 'CONSTRAINT',
204
+ 'JAVA RESOURCE',
205
+ 'JAVA SOURCE',],},
206
+ 'inc_sync_ddl_filter': {
207
+ 'inc_sync_ddl_data': [
208
+ 'INDEX',
209
+ 'VIEW',
210
+ 'FUNCTION',],},
211
+ 'filter_table_settings': {
212
+ 'exclude_table': [
213
+ 'hh.ww',],},
214
+ 'etl_settings': {
215
+ 'etl_table': [{
216
+ 'oprType': 'IRP',
217
+ 'table': '',
218
+ 'user': '',
219
+ 'process': 'SKIP',
220
+ 'addInfo': '',},],},
221
+ 'start_rule_now': 0,
222
+ 'storage_settings': {
223
+ 'src_max_mem': 512,
224
+ 'src_max_disk': 5000,
225
+ 'txn_max_mem': 10000,
226
+ 'tf_max_size': 100,
227
+ 'tgt_extern_table': '',},
228
+ 'error_handling': {
229
+ 'load_err_set': 'continue',
230
+ 'drp': 'ignore',
231
+ 'irp': 'irpafterdel',
232
+ 'urp': 'toirp',},
233
+ 'table_space_map': {
234
+ 'tgt_table_space': '',
235
+ 'table_mapping_way': 'ptop',
236
+ 'table_path_map': {
237
+ 'ddd': 'sss',
238
+ 'ddd1': 'sss1',},
239
+ 'table_space_name': {
240
+ 'qq': 'ss',},},
241
+ 'other_settings': {
242
+ 'keep_dyn_data': 0,
243
+ 'dyn_thread': 1,
244
+ 'dly_constraint_load': 0,
245
+ 'zip_level': 0,
246
+ 'ddl_cv': 0,
247
+ 'keep_bad_act': 0,
248
+ 'keep_usr_pwd': 1,
249
+ 'convert_urp_of_key': 0,
250
+ 'ignore_foreign_key': 0,},
251
+ 'bw_settings': {
252
+ 'bw_limit': '"12*00:00-13:00*40M,3*00:00-13:00*40M"',},
253
+ 'biz_grp_list': [],
254
+ 'part_load_balance': '',
255
+ 'kafka_time_out': '&kwZYr)nOZvE&(4d!AseJMb2JRcseOpII8Pki(oINfx[EZX0oj(1siOBaTWRHcoHLrKIZ*eODNWdZw#LPI9Ehihq^7zqFrmQt0V3xdlMScyCfcO$A19bOmm^gASLb@to7X$q3$&B%5fq*3V0UQ&oy!qlHAP!d&!55Ngqcj*G]kcs2eHINE$ZKZ@xIi%5gcS^ZIqFuRdILYbj7p4idp%liWM6(GR00Dmb*RDIQKDxc1QqqGvwND(M!!!gI]86phGzP1Uf(KnQo6sMiAw%AAIsHw)VmmdpGF)wpG9EiM3I&87xArFFD25#6^WZh9$)@ZIE#a)giqeNosd#&t4$hQnLXsrIeOZBzX@@qfFmZjW2pW[2Jn$^WeZm9C^BFOfnu@uCJBqFsdQl@l8OLQMhDWhvH@fF!@LUQcf^tXtE[9)1KkiyUc]QcIrg]dhYbRUpiE(Iz6k^RvB16omhkqI@HyF]0G!)b4OB0&BgjM9ylugSf1dKyI)8XjbK977S42uzFJm0vZ%ENE&FuP9X1)gX0Lv*WqlZHY@Pp!Y(D4@QVC3hhNo[x9yczxQ2#K5UjJQECQW#[AQIe@%AKPm&WE6(NQzgD4V0c0TQW&*IOA)q%KUD0Tb5gqLjFo9T3wWVf0YGKZGarZpU)&KEe^]8*Qs%&E]X2)Nsgh#!3elEUJ17&UL*aN^g#bK9^neH&NXy[dwc$kGs(PyGnb&5vxHJ8)3hV3CKq(LLxNYUugIlyN7qSl9jPZEqSYTUS*dHTGgGokd)6wIGR$@u5r*J2SiYWB)hePQ!8O)M4MpsGKGzwy%EfEj49^549^E[8BiY(TaJc1ooYybuOhwmgeN&kRzO0nhnBD^((%WlQkwWA4CG[A*0zE2K3$lE)a3l$jFmjb1lmxiAPYusIxP!4G(DaG#dtNWtOT!@WP$Y0EkeI068TH^l$PtSd*5r2d9nyvs4rr$AtCIFPmW)6heN*%TqDpLfYELNqc44yr^1R)K!kwfAR#EN@EUZjULzVhTZjvT$iICoET&5(dH8Klxx0fY$9tA)g*5hRJ)t&OhJG#a^ATq2w!NnwM)xfzRASppKF)p9tMFOvOmj^Y9U!u@dUP5033NTLCJbuuFVcDoIxiCh1WkR%e^YO)Y)XJDul!wdpRGXaA7MPy3Z[kpW8W90!Gou&C@1%G4Yojh^4nvpICP^H@AdbdQUFFhoD4[FQih(!MV8umgs(dY5yf8yDt^lS)kb0XMdBVG&ZyrPt29eSf&pXT*(oHi37Hz5XoqY@SAs6u4JouWBGKvmm0wHLrM%05Gl@%X9%X1Y2CsXuzQ]fddurCSnJcqb#)HJbqawrvdr2XgOXjBXw8ikb$LC]8&&GSGao#SNnZfx0y2iL0mZyDVqBGGT*KjvblAfIyu^NI@$BZYi31vJUMBS]X0rp(W1AwahP^1ovmcyCwJhaH%[pNTlDN@TGGUO$UKjVENxSN6NP4iDIy$$ckPQ2egPLTE$HlkGsD$3JwSSSYpdyw$tZD6FZL)gyN29UdY@(3De(^c[hF9Wwi8skSop%c[FIcDK$NEn9L^v3p6xR($AQzMU2FQe8A19TCDy1Vqb0tc^DzgcAJv#gQ]1CNmsm2Pwd3B[ZxCX8wiaqvAqc&5GldMZ!KIFX941U7c8%92tv25ov3HEY@u2#1]qHvGvNz0pN2!FX5WVI^[B)96RBprB^l]]%Ej%O9SPoxN@[hrX(DUbRXYA$**zd8t3sMmt4C(iC%yru1gz!^eW!qs!L*TCTzTyOx5cUr9p0o8c*D8MN#d[^6rY7Pp9Rz8)OgJo^t8446%^Ycf9*un(l[[6mUK%sRmQRzFRM5@mTPK)ZDyGiYQUQ&g3SQ)AY%hInqSIplGjdeQL7$sK[9vGECegAprCksB0nP])&)dGySBnyR@Qg3C*pEY1XqOuZwRZolc@)&dWMl@Ieqvk9Nnz[e^p6lV$rZR&&djjWgbtJ&N#!FMtY5W4b[s[%6T2vt9x5r&6jAc1^(zSJxtseTHN@fNvfJfe7eKDbUDl&%dBh]OaaKoL1)v7DXk(qGxtC[@Xns2F9^teAV$CHSuUV9UoV2p&XUPX5BTC%qu3Z7vWq4dWj1)IPTCZ7mZS89!UEPF)yzP%*YeLCu76KO%QOq4a53W7k3#g(VguSR^@(EO8Ga@fi!JPEi2JU5o7F%y@Vm94GOWK6h&YxsJ4Xum@XTY1z43LVQNLzeYHAcG0TF8]iiC2(Ep^cZyqF14bRI7LM&WQbiDFYH12ix2dm0LpaYirPFX3W&kA&!vGL6GZF@NxOx#g]3YEzS7Kezhybs31Nn*J$5kHQu5&8**#GAyG4MG[EDhLDYgOW)^7CMgDbCEl)sTA%b@fwYn&tf7tS5RNk57c2py#4xvm%3ufWf5yV*aTGGVAo$uPnxt4[s57&*LSiSE@tUm^OsK2bP6[Q02&%aEwezWx*2tUUFfUW6$iRaifowYGWL$24l[$Hv*vU*HD6UtALr56d!R0i[yz#uy5DH71RTi*1Y(7KT#7K2zPb#q[PdWvJ#16WhOlgmJIy(ILOY6ofI3CdftI7ugQb&UaR#6HN2*ucyK!IeKAqfMaLc!D9OnnjRim$4!4%bD(fe&7X5FyL%WANc(zzlatYf4MYYiUT[!1M&uVo2Cr6SYwqJbw8gyr#A5)MP1ZtR)(AC*@zBcL)[hBGc#sisU1aT&&iAW6AlOjq$uhR)^YV9%vRKQdg3Wb3^H(qs@8J0@pHM[NL6mPVhuLri92Nm5SfQAtR&clP8XG3B)CRS65Lf$hI%ozBJf[1[g5@tL91tow[e3@@BY#I@e*GbUmGu[sIM[hv%RB$UfYGSKF3U3!O^g0Dqb&q&!h0C0VwaUzX&g)9rI28m(l#^9t(R2Lq#hXSZ2I%c$WhZPKnekKpo!7shMoUums!UMAaY5lHeUShXq6*@s7DpY9i%%20mrk7Dp4C[sVpnMM3u]Kq%Ejc^@^2fYQdlX#rId@xiq!W4RkzOI1V^G9@Jzr*m1J!#RM0UMCLRPOL)5tV2!Nx)iM5T4f7W%Ft^CnRvy#Z1*@yODTR#oZY@VLAYQ6F2)Xx6&O*$14OHH#!Xq&[rf8tXWLaLSH#ZxWVtFRXgk$EW0ky$XbUVx&sez%7chJlLHz!I8(4U1LgUbcD03*#e4S@LVp^oU98RElej(n6%hVFaWuT@TD9q@0jCGn5^t]TX[GLwcqRGQM^^4$V5W$H(lYVR[CCbTWliMhZKv0)fQXrlZdeKCQzR*UIACF30XW6rP2[ArNvlET*14Gz*oYrVnjTeZZp)6Fpi7CDzQH^GAWMI[iY7UBAbsKiBBb02Msc5D(pwbdLgPKq%ixRzAwbpj8ddTHuj5lVzM$s)d0DEAB@86[wpjh039MpXPUac78zFr4AU]s(&1&Wd^hj9&p6pF))dD*tEUmqJmgNRtO&tIEgdpaeXNLbKIjC1Ci!rvsK[^XvTZuA4TOQyEdIfU7Q7fiCVGm&*1FqOg(c1]2lgFBNhZB5Oi$QWKpZ^n#FE%OiYH3CzSHtTqGZ1g9iR[1c@Nd@zDijYSUBGNjrPJCT$8&xdiUqd(NuE^zNqmKRWSD5eXt*vq*yjx1KbrT1&3HA&(hD2clN!NK!7TpX@jCyN#m[DzQ9A6ln9AE&[N2uH3Gf2W(r$^1Lc34!aYoYLCNDf$A)Zvv23x74OHQdlEOG3EscuVqtmBc2oC2^%Bp13BSsHkG71LJi$zTtn[$lPDD(DM%j6CUf^0zVDkODl7lyGkA*JOQA)SvqEgW!mWTVwf&sy@E2PAUnsE2iHqoU*dsGIIi#Eyk%yk(ubiWHHL99K1xNgIx6(2*D38Uv]EhrizHw[P$*b]K[LUw1MgPqNC^@]@qCl(xdchTj*)[4Qlr$q)PsF($@C$PU!6eN%y(HeA$e8ocZe9Subg!CLF9yquFjGDg2#&kAQK)bGq$WKL6rPp(CW))nAmyZElmp]dkxPb8vrusC![P8AjvGzH7!eKA4r@UH5Qmjm0C#)ezr%r8ckv0Ql0xMRVPF1KEq]rr7R7hDDJHIC^)t5wmFZs5oK35QIMWjZXx)5ZNNI4LwE5KeM)e1W3&&bDw4rEOx40X]zd1oQsQ5EhY6YPD13*nQPx$!4lovD8#I(DBpX]FOs#lU7CVrVouDW@Ul9bPNfIT)5(x)Ecek$tn$^sWtfBQfzuv$W3kZ*y1LCyBHXo(gKDirRyHVc@HEOrDxU6CfTXY*d!NIAPJpBN5GUg5wLJ0Amlu@WFZSy&OopB%7otxU[d!G9c11el5KdnTIhcVxqp@cx*FkECS3F7rJ(r!v5XWMI4K(#^7[E#C&ewW5LP&JA4eYJw!*wX!7Rld%4fJn4&u)@*vaDm0dzuq0GjUGwNFtMUnoAY]5yF*An9W37Cm)33UxXbe03iyVoKcvFk93o!75NeA)1OyQFEo%GmVvr!vi2!)0nTYyrH1xLF%E!82A$^BqtgZueo[[2trJlfa#5ljy#6ZWnYwLXqpbF7g&9wCqZezgPUY9SBS*UF]sdm5kwHVqO1(t6DvwjU&$%qUdT8sW5Mbd#iXBEv06uoE3Pzm[x2Js9w[doM)CKtLSzuuDKUB4NqnidIhLIy&f&[[taX7yeYpcB6y[j9sbe^s9ggvY5%048KaatYFZSF&SHB)3OBId9NUFx*VhXZTFiz6DI@SDfJ$X#nwdl^20kaPhM7Ew8pTrkUIYROZ0Wu#VlJiejk#@C$IRiFDXTLX5i[1YnW8DEU%H6o(%FIzmH^er0Q0xzmArTFHaT04fVJJXwn34@h!2SMC0%g[E%E43@5V0ZP#KgJKE@KUk9!$S79kp^A3gt6TO2WvwBdIlys8oeBlmIg[N^u)!W9PSISi5f[nYvzbyrRUcEVSIIsvj4C9jb6hLZ9YKaq%viFMX(Wiy#vS9I%%$1j^sQf#&9ble%%HtEGpb#u[(jTVxBhqfeC@^fM@EILbD5%ofcgCRdrTZN@@3Z]hon%^YtTg]VFFoMuIzGXWuH39YnY5C406s2gfs61&sTyQRGQs(PDMnNEP4J*o]9YF$[#dveTEyhri$w9w6iZ*Hw3QGHWk^R6v2Fso*w50lTTk]db0R]rqVYSNW5t8RT4[W%9C5xhHlU!ag&rRGUU6QEp%oJLw$(wy^[ruvuYMwyGwXi)jXHGXE0lM[tpf@Z%Ok@d8DYstxs&uYe[Z(Gn@X9IP(Tt9XuMJ*yH!Nzo6^f5Rf!A3i35Ho%j6#DeChohVQFHuYmCccB@x)KVIMG![Nji#OlWzsHsXNxL1mAj$VC4qf)7keFE^my6sFOG$YEscypE(dQFDm!LYcX)hhUkdZX#H7NLircVj[gy^DdQjqktmG4#IsQ*ubAOCXBm9tSe7#Qo^#*QHF%Jzx^jC0601DgBF!98dfStfAl8lq(*a3mCxchQWoeqZycv9XqKr7ZbWAM^@EgMl^fludVCZcgO@zHGe1oqfInchEv&#(2*fhbQi9GP5I^cAZ&X2Wpe^spFj%wo%0w$T6*GdT8BfWVpMJgtB%6LO0CO!tv7gVYmTWl$4gEiU3[&)#CMBvp@M%of3g9ETQMrjrVb6dAA*1Mj6mI(Fu!zYRyQx1eWaVkK4QXqrYz(b7522w8n38j6$H#EWtTrFwdEsL0MvTvZWi6jOrUnlk5PqUJUN*BKp^@X1cX^BzWZNAOjAZMLAHF(X@unLy3gp$rt0t3zkcMuELi#d%DHLoORiXbU1WC![9thMnHzB70niyX@YdlCMOo!7BdFUEujy%1skX7i(#WNtvrmu[UiB35KRL2F5WHqj&FWfrqZiV45tDjaG0sltT0XlY&OoAfZQ2ZqWKmcOJQhljo89t()9pznmsy$&z5kQ&l1Nk!S3289Q)X]t(VB6^f@qm#r&CJ!myJ$nFYffyB5BsqbchJjGI5YeBZIRmSh@lVwI8vOmwN505IkWDi8w[57qyhnpUkHkAn$AV%yp7)SEXpSGDAfxTCQ6zj$Qe7ASWipIUzV%[Chy0mI3lRlK4K@mv4nrpcrNv8p4jsYX3YhXrxL5YH&#h*@J^3TQ%o!5OQgt%8E[rSCZz9Kl*hT%BwYg0cg8UU9CL7*YkzpJnAkXz1mmD0W^EKywFIoSTlGsn0Oi[Om$JL%eP%Wdtpz3qn[ehY9mV^Mzpn9XSSrciDcoZPI&qxE6KiUs&3[wTC9$!cIF07yc4tHpoL%30FmypGXAw^s&KClp@@^59BoLYE&2IGA9iZyTb*TwZMGf1gbKGr2QSPS6@MAbmf@1CnHTelF^vvWM(ALpwp#@#)JGG1&YDW#upHQ6DBMDR$SCYkAv)kbC4ET[3JGnrTwCnC&mNZ@E4*VPJGHj5FWhq86wBJP$K^D2XOrYj8@hbfJx)8kOY0zn@Bbtvic57661pn*0ou^jqrMyO0ZL!59iImOHtgYcqe%Csht!iuTzBLqM$07^avG[wV61ZKsC@MP8ZzsOT68K^7k7vv4a%yg8p8t6$nN3LW0mnZ#Z2[3hP*SPJqcY0Jmn1v)cRLkIyJjDTl(NOTQ4JrY%c$dJ(ezvMx8eR%!9N9@hOecViwmjZSx87NWiQk)b67U]gUi#IQP^FuqlKn$p[6Z3g4tYYYp$(#SuevzwLpAqBqD(h@WDReT@#Fl6P24VxlGwT*JGe[pnTp(!jgjo5TCASdB3rzLxCIV95dMDVy(@AdqYezCOfk^O2JnWKh2lLZcc5Ft05H!fHb^l7oTJ*u4GdHoTgdmJIr(A*2d&YSwiF5ynke%RGrNlR&Ht2f6LZcOO!1UCiS&2Q#Nr7NmkRf9*DEEZRDSWdn2XAKNW6pMwh9g#yMYv(4ox5PJkAqCP16V36YR#Q1G&T4n5pRQY&&TyfnrUg6Q%%4S0&C9@Gv$QRnWZP9A[Id@sMYFxDb([*ZBO^qStmIR7Euno07NmtPPGBugj(4$4i2IRdv6!I3Dn163rd&2)qSAfILN88bP11V15N3tu!(soS)vDxg)XpFS^XfFHn$xAVq$(oCG1q[IPtG[awl8JX*6fbg0nh&kti$jZ5z%G%UZRfMv45H^8oMzZf@5COMH(j!reH*@vXj!JDI%%#iub9M7^oks*uvuiEWL0(PMez0mN69nu7w(ch9$INH(GEg$3U*LZe1P*S^YifFWTyMyNs6Oiu5RU38clD9hbOu94#YdR]aroIrntl$JNfBMZ8fRRg$J[4ERL56c8uOpId$J[KP2iAM2Np6xVgjB7Evo*X*Y^ZX1(xrOn&mx)a9jQ%l^R6kdF6ocqzzW3hH!3COz^G2ORBg%id$ocUtFcp$OxzMDxjyN6v14W1WYVTAdqyecKM[s32hSClVBTu6y)$VBqWEq[)tn&7V*Z1yhTlPWVjSF(@&xd2f[LU5iyruz2Qx)6uwu0CsNxp6&$[PPlJ&heYSA$!BzPs7cO)2G6D3Pk)5ZqD$Y9dz*y(YE%T9KV&rJ@*lp20L0O1f5O468fDbbrhGOuF@e5TS#[NikVKjqGc@@zKgaMqQgvP3G#$ka@hy[J5Rl(&1n7r6s2RmvRjy036I%UkK0SC$C!Gp[*q5TLA3iBofp@0BJrE0Rio)^r4K26buPNz20w(ef#(KNDZ95@*IMe!68WXizH4yMu@FYjDdzdEb6isWtFycgHOlA*uh0RcB*c&Dn1#80q8RofYWXD06!bV9(N#wYqJdydYHv4Z)xqZkgrZPj!UgpCssX#yRANKP%a)JwLlotc!X6py^spAfYf8o9N](Cb5!*Jw2mmRoOnGqc*b5(I1TkdrWIxKb&guu5zZ5V&%C^qYj8QL!s5Tgs)KniH6hChA$h)]gpjbxYPXOgK(Wdk!xVyIK$IFSSOP!2b2MZRGa#6X#IDJE$4MQ@qBlN)QF)TcnR7uWL![yut*SJVp#n%sKFalkOADVdFnsfQs2&uU*UUPoZSPNaMnlvJM]bkje)yv!lfN^VI2mzGexax[lRIwnkoAtK*6K^B$A3pt4L%1GpC#p3fj8hRIvR43H^NV1YTZEA*HJ0MV)]VSg1HBt)Y2trd[h)2tXuNK@ciqrNLPwm47jR#pCc#UwmmMrS7*K&(Ee%I)!8egK3GsKuVq5z^Veoxa@nq8Hd!aULTXI4wnVUUNm[7ZNm)qCD(F#q0fApnU8wufM8WuNkfgfu0WP[nfWuISRX0fRQxX)zfK#qNg9F!FOB4^w(2mAt1Wf6!dWlUs6lNkwIehT)qt^VwmkgP3vku6CWDiTjQA@0Jg4tdDBI07muVB(1p(y4tN7%Ym&NW^pyUWHC&)@FPOhZBJ3j(kiH#qYGSv#ihTHmMBvw@45s]jQzyP0He&3hHE3lvti%^AU&5s#Y*aSJ#T[8trpu%*x3ZmOSbX2GUOAKiTPVxqij%Y@mJFq[MBSKFPPZHJBrd*NDcj4D&[Qb[5ktrwlDS[UE@Se1El#0WNFH^LdgOi*V)j[SsfG8yLBYJ22Q25[)5b$2p3Z6)Vg2ex15byv3)TC7%UnsVlVOWC[%zblMmbz(*O[Nd%QS#o6Hv9toA52HxokMjb90tV7%FYTT4KX!uRls%wi]HFAN@!!KUF5ndbr]9IQ($0c8t4rAyRrexk]xqIe#Mx[t6(TWXEHQ^IVvZXE9V1a%FNUSQIi4A!c5QtrFwrs^cUCf4vr)xPysxCPDQbpurOz]@D[iUBKrUYPUhTY[C#TwSB8exbM*3S7dByz#aTz0vz6r7NR)j!Rlb$S#00RKo!XAjLXz1VzK!EHwNphW%l@339tl5YLHTnf[iE@*Cl&jikKH@L5eJ)S#CRNG!JKC1I6(kfNt5CMlTZA8svhn^NxD0NxMk(BxNFw3o*Is2Z#JLW5wk%Es92!03b)oDM%V2b4QwWKudv(kPoMW%r[4@DKHk4q$%r&%VOD3[))3X1BimnmnuCUDXrhasPj3OF7*XtMD2t9AJg%&d0urxjyzU%)gS)UrAfRs]&BHOg!884kk#J%Mv6sehukAHevB88Ab(PYy*kJ(Gl@bNYTK^gnfbrqtI&^Bb@XjPh&Ul60fPEm4@p&O#gZnk*UMV@WHiC)3KpdBX1C3lXmklFvNIk!G118y#%oD[*YJ*jZkJdpki$5P@yzeujUNbARfiQ#F(OpIycJYyg4&T!&RM$4v(bjjK*5TVnw93dfP*@)6ZxEXIOR15Bb0pHLF(Z1RXBZR)lMY4g^qm1Rb[6dip835f@hp#pMwgE1PLdy*Sb11nOuGFHgfkf*!UcL]87CJvF13[Z1otcGGdg(7#a8fIzj3pTAYj@))hzl%pDCGjFW1*kNh6]N@QK1d&XUP8F^$91az#Aofq6jrkOAqbPemhyKxPr@a1HEQo3OD3*3)5@%pK$rTOX0!%$5gF#LYu%lL&ASZ*elnc$[YdH1xyby2H6Yme@l4lgxeg#C5bgNZbFbLKijI675VG#*)tEyl&FnxxwYd9DznRl5y08^YsA3T50dMBp8sNZ3Lou5tHjq6HcOYq2s@$H4^@$[%[y^i&qRk7K!a(NX@7Aulj)zOEnLObLbLm@FjH0J$fq5!L0BVV0lTcaKQtFdwYCu%&2y&8h*7^$4)F(rY14rPCNEs3Q)4!XhxP8(*6p3@LS$yy)0jDkbLnVmNKUMz877lV#6Hi!01Y6@Ex(FVHeOAdnv&jCKvbNU)q&NU3r8V2YZL0grAxDbZ!1[qHZ4th%UfQ9UqF(2npC8KNv9TS!&1P1QU71QJJ3S&dK93sCr%sT7[65A5mXB0(7tk8rC93L[8CtxsA@5Q$V!uyd2OE]DJ[twx!yM9v2XH*@!eK45%GyFaTH@y5NshqN2nNO@eEJc%#5d[sgrH8Qbn@afks]eNXvJEHio6KQwz7rvwvVYYHBpCf)2GSZANPn5frpgAAxBK7ki2hTb8CU7lHq2CTbLNemVzsox%f#Y@mhC1AL4dGzGt%u(zmV1O3&Wtf1eAn(S&4o8)CbHrRXZq9)UNV#2MI4B$c[yC@3k]4nESknwHW^NtMlN!37X&Z&WtQ3u&K6WeWxU%C4PweQm4NJK*dLKoigkSfEcwM1Vz67muzXu)bFT%7Q8lE8Ow0wkhL!hEfz6@wSVV[sI4pNJewGykBu*](G[$*2YkSt)DMk#sLJp1yjQvJFLzxp3JYTp^RVcHg54lG7odLjN5sZgcw81zYuNjUH5pN&Fsq62^1WhZ9EP2hlbL*fTu*M2F1xYuSmy#vpKXf^9ZgjJUw[*v)X*[InXQd]ckrqYfIu^jZDSrZpQC!w)ijuCxFY7O8CZoCGLsqbA3*5rzY(^UF54(@%26ei#(Yo)z*FnmneYj)p6RKC*11O!Nosj*QJ!g6)aCEnoa1n^A7g&yJ18SQE8X8MVLg!YKB3uG!9B4JHK(E3jPkYRTu8ozy$&$nspKCPt#J$X1WAmMM28pLAec9#Ptm1KBErNkfYI*ZLC41E9&N&7p2%%viQAGCRbR$q1#1@sD4!nD8e3SUy3tp^]Erb3nMLsCB5e5(VzLymWrzeH2q9ERL25Tr7I8AILm3mtWu1j2vi*yjNhn8)jquq0vQLD*7*lRS4fUBY0aif7Mz@FxsQNEC9DDgUASRFYBIfE$Mu5H!%%[NymRXOO4fgPsZGf[MMT!yHhPAfsAHmXI3U6d5[Qw^lE31R&1#ea(tQROS&xm#pV8#M6B3Uv5I9Y6Kq2Q)CKhBVqHAKXY6&c&m&uwDZpbpsSRETL1yyc)w11%BTttz1JAiXF^N^owrLD3Q!tliFaCVNXG^D8#40Uh5gmwf3V(JPhfl(#oZBXjz!PzL[Q#bxQnK!opS&eDJ22r&0f!n*TN!hr$XTWblMTh5fN^opzj87KHtY@f!*a1Pu4TMBhcOwAw5Qp6]qvZzUOWFkH1k7^%wgsBCkWj8Y@PKuHYk$lM$[CN9yL7QhTt8Qa0$CcyiXMXCwckc45Igkc2eugFplLbCIj[&EhvLn&kzgAI*j^0ST6GSII@ck@fn8(L17)jsX)#z8W[mTemNc8oPr&l2hl9302qI$NJR)$)dTET8UKsC7]metz$$9ZY&rQ$GVc^FYY]0UN7kYj[wnp*rtQy$P9YmAOekq^i&Yr3GiaO2Ee2&hIQDdcBmrxpex17F3tjFzgYR!dewizm27DzM%ZRm%AJyC3#ZzCY8t!sg$)Bg66Kq)LInaznNhvDd7i*$FTDQQKHSkKmU9myngPW)eivvvct1qfjoH8$goig3N9oRpc%edlKrHWdS9b73ggib@l0D$2F!dm%#cPBew[&j20[PK%#L$%&jQXjGXBnFkIghhAnk^fQyb9HIKumzt&OSe^9Aqt!xB7^]g$nC&4zkc#c&LNM#J*D3s0&X(27yzeQHVT)gKui9Y)VJp^CUd2WknDA8l%uourSnajsS(c9Z2RbU7JneS@49OMbP6wYyfcF!4xzWq3d&6PpAQ3*%0M[U0zZ5R)pXL!wF26H]YR[X3vgr0p@Zz^XriECZM)5&&e)7Rf$EZBhlhbOlivWARbV9i^^8py!l9XpnyaRCiGv#q$tUWom$kVZ6$9OI9sTC[I7j*pE2xbTwOnw%nuljK!60svfz7IoGUU2csFVg[W8%#N[0O0^fX&iuUA7CX1OWHjIvTQs5gePM2zOfIHkqBwLJ3qqZnAAp*bKEAQphjj*#s*$R54UKqeZ#wGO6$Ff$qNO1(mlU[ohBmPNEyk2U)u8ceb&*)5X9%@zcTNFISqP^V3*kqq#h#XXkLAeDYC[PBpbxrJ^piOIfE^)uyZ6ThjUgdF#yh!AsukGWv8KKU(Yl&Yke&fo@rw1HSM$RImO40wjePO&oYOE#XEZ7G@Y@gwU6Oj10Q&Dng8hTa#kK4lYB@7*R8K5(D9P#X8GAx1f8ro5jirw6$D861hT8bi%jFvHmE0(2jSEJz!L(LoYr7Ga^b0v(N2tj#)ED6iSgg^CDgM!$MSEE74fJwSa7NKT58RFClFg8JMcrUfdXAUMg33XhHOBSbnpk!Q2FD)kz8^M(p@T(FhME196EKGvF(FJB3Jq(ab3p%PPuSYbedtgfJk&NFN@lJOzjM[S5DWii%ypU)HS7]Y)CgOdbtsFD0jv4QJ5m!e3xuDR(WP8Ic#IQ1Vr)IdxJdILDcd3*lbAsB!o9*E[PtEVL3@yAb7P9iO28eK2nh$WE',
256
+ 'rule_name': 'ctt->ctt',
257
+ 'src_db_uuid': ' 1B1153F6-DAD9-BC39-888A-A743FCC208E5',
258
+ 'tgt_db_uuid': ' D42BF707-C971-EEA9-521F-BB0F3F7A92FC',
259
+ 'tgt_type': 'oracle',
260
+ 'db_user_map': {
261
+ 'CTT': 'CTT',},
262
+ 'rule_uuid': '',
263
+ }
264
+
265
+ syncRules = SyncRules(a)
266
+ r = syncRules.modifySyncRules(body)
267
+ print(r[0])
268
+ assert r[0]['ret'] == 200
269
+ write(r[0], 'SyncRules', 'modifySyncRules', body)
270
+
271
+ def testDescribeSyncRulesHasSync(self):
272
+ a = Auth(username, pwd)
273
+ body = {
274
+ 'offset': '0',
275
+ 'limit': 10,
276
+ 'row_uuid': 'd9AEe7eD-BD9d-d332-83CA-A78924b7dfde',
277
+ 'search': '',
278
+ }
279
+
280
+ syncRules = SyncRules(a)
281
+ r = syncRules.describeSyncRulesHasSync(body)
282
+ print(r[0])
283
+ assert r[0]['ret'] == 200
284
+ write(r[0], 'SyncRules', 'describeSyncRulesHasSync', body)
285
+
286
+ def testDescribeSyncRulesFailObj(self):
287
+ a = Auth(username, pwd)
288
+ body = {
289
+ 'offset': 0,
290
+ 'limit': 10,
291
+ 'rule_uuid': '5bA6fA95-818D-E3c2-Ab81-8F2337b4f4Bc',
292
+ 'search': '',
293
+ }
294
+
295
+ syncRules = SyncRules(a)
296
+ r = syncRules.describeSyncRulesFailObj(body)
297
+ print(r[0])
298
+ assert r[0]['ret'] == 200
299
+ write(r[0], 'SyncRules', 'describeSyncRulesFailObj', body)
300
+
301
+ def testDescribeSyncRulesLoadInfo(self):
302
+ a = Auth(username, pwd)
303
+ body = {
304
+ 'rule_uuid': '',
305
+ }
306
+
307
+ syncRules = SyncRules(a)
308
+ r = syncRules.describeSyncRulesLoadInfo(body)
309
+ print(r[0])
310
+ assert r[0]['ret'] == 200
311
+ write(r[0], 'SyncRules', 'describeSyncRulesLoadInfo', body)
312
+
313
+ def testDeleteSyncRules(self):
314
+ a = Auth(username, pwd)
315
+ body = {
316
+ 'uuids': [
317
+ 'DBED8CDE-435D-7865-76FE-149AA54AC7F7',],
318
+ 'type': '',
319
+ }
320
+
321
+ syncRules = SyncRules(a)
322
+ r = syncRules.deleteSyncRules(body)
323
+ print(r[0])
324
+ assert r[0]['ret'] == 200
325
+ write(r[0], 'SyncRules', 'deleteSyncRules', body)
326
+
327
+ def testListSyncRules(self):
328
+ a = Auth(username, pwd)
329
+ body = {
330
+ 'page': 1,
331
+ 'limit': 10,
332
+ 'search_field': '',
333
+ 'search_value': '',
334
+ 'group_uuid': '',
335
+ 'where_args': {
336
+ 'rule_uuid': '',},
337
+ }
338
+
339
+ syncRules = SyncRules(a)
340
+ r = syncRules.listSyncRules(body)
341
+ print(r[0])
342
+ assert r[0]['ret'] == 200
343
+ write(r[0], 'SyncRules', 'listSyncRules', body)
344
+
345
+ def testListSyncRulesStatus(self):
346
+ a = Auth(username, pwd)
347
+ body = {
348
+ 'uuids': [
349
+ 'ACCf9F05-Ccd6-8Ccf-6EB8-4FE1663A0D74',
350
+ '3A541667-1c82-f9c5-A485-cE488Dca688B',],
351
+ }
352
+
353
+ syncRules = SyncRules(a)
354
+ r = syncRules.listSyncRulesStatus(body)
355
+ print(r[0])
356
+ assert r[0]['ret'] == 200
357
+ write(r[0], 'SyncRules', 'listSyncRulesStatus', body)
358
+
359
+ def testDescribeSyncRulesMrtg(self):
360
+ a = Auth(username, pwd)
361
+ body = {
362
+ 'set_time': 1,
363
+ 'type': '',
364
+ 'interval': '时间间隔',
365
+ 'set_time_init': '',
366
+ 'rule_uuid': '',
367
+ }
368
+
369
+ syncRules = SyncRules(a)
370
+ r = syncRules.describeSyncRulesMrtg(body)
371
+ print(r[0])
372
+ assert r[0]['ret'] == 200
373
+ write(r[0], 'SyncRules', 'describeSyncRulesMrtg', body)
374
+
375
+ def testDescribeSyncRulesIncreDdl(self):
376
+ a = Auth(username, pwd)
377
+ body = {
378
+ 'offset': 0,
379
+ 'limit': '10',
380
+ 'rule_uuid': 'EaAEff59-eB80-EbB7-9719-30f7DBa918C0',
381
+ }
382
+
383
+ syncRules = SyncRules(a)
384
+ r = syncRules.describeSyncRulesIncreDdl(body)
385
+ print(r[0])
386
+ assert r[0]['ret'] == 200
387
+ write(r[0], 'SyncRules', 'describeSyncRulesIncreDdl', body)
388
+
389
+ def testDescribeSyncRules(self):
390
+ a = Auth(username, pwd)
391
+ body = {
392
+ 'uuid': 'A923A558-b41F-Cb40-C95D-CB3fefcAE79b',
393
+ }
394
+ uuid = "22D03E06-94D0-5E2C-336E-4BEEC2D28EC4"
395
+ syncRules = SyncRules(a)
396
+ r = syncRules.describeSyncRules(body, uuid)
397
+ print(r[0])
398
+ assert r[0]['ret'] == 200
399
+ write(r[0], 'SyncRules', 'describeSyncRules', body)
400
+
401
+ def testListObjCmp(self):
402
+ a = Auth(username, pwd)
403
+ body = {
404
+ 'page': 1,
405
+ 'limit': 10,
406
+ 'search_field': '',
407
+ 'search_value': '',
408
+ }
409
+
410
+ syncRules = SyncRules(a)
411
+ r = syncRules.listObjCmp(body)
412
+ print(r[0])
413
+ assert r[0]['ret'] == 200
414
+ write(r[0], 'SyncRules', 'listObjCmp', body)
415
+
416
+ def testCreateObjCmp(self):
417
+ a = Auth(username, pwd)
418
+ body = {
419
+ 'obj_cmp_name': 'test',
420
+ 'src_db_uuid': '4CA773F4-36E3-A091-122C-ACDFB2112C21',
421
+ 'tgt_db_uuid': '40405FD3-DB86-DC8A-81C9-C137B6FDECE5',
422
+ 'cal_table_recoders': 1,
423
+ 'cmp_type': 'user',
424
+ 'rule_uuid': '751A03F5-C97D-645B-82B2-316A5D198528',
425
+ 'db_user_map': {'src_user':'dst_user'},
426
+ 'policies': '',
427
+ 'policy_type': 'periodic',
428
+ 'one_time': '2019-05-27 16:07:08',
429
+ 'repair': 1,
430
+ }
431
+
432
+ syncRules = SyncRules(a)
433
+ r = syncRules.createObjCmp(body)
434
+ print(r[0])
435
+ assert r[0]['ret'] == 200
436
+ write(r[0], 'SyncRules', 'createObjCmp', body)
437
+
438
+ def testDeleteObjCmp(self):
439
+ a = Auth(username, pwd)
440
+ body = {
441
+ 'uuids': [
442
+ '11111111-1111-1111-1111-111111111111',],
443
+ }
444
+
445
+ syncRules = SyncRules(a)
446
+ r = syncRules.deleteObjCmp(body)
447
+ print(r[0])
448
+ assert r[0]['ret'] == 200
449
+ write(r[0], 'SyncRules', 'deleteObjCmp', body)
450
+
451
+ def testDescribeObjCmp(self):
452
+ a = Auth(username, pwd)
453
+ body = {
454
+ }
455
+ uuid = "22D03E06-94D0-5E2C-336E-4BEEC2D28EC4"
456
+ syncRules = SyncRules(a)
457
+ r = syncRules.describeObjCmp(body, uuid)
458
+ print(r[0])
459
+ assert r[0]['ret'] == 200
460
+ write(r[0], 'SyncRules', 'describeObjCmp', body)
461
+
462
+ def testListObjCmpResultTimeList(self):
463
+ a = Auth(username, pwd)
464
+ body = {
465
+ 'uuid': 'DA4EFDEe-35Ae-db5c-7af6-CDDBBcb5F24D',
466
+ }
467
+
468
+ syncRules = SyncRules(a)
469
+ r = syncRules.listObjCmpResultTimeList(body)
470
+ print(r[0])
471
+ assert r[0]['ret'] == 200
472
+ write(r[0], 'SyncRules', 'listObjCmpResultTimeList', body)
473
+
474
+ def testDescribeObjCmpResult(self):
475
+ a = Auth(username, pwd)
476
+ body = {
477
+ 'uuid': '1c7583E4-24eB-57c7-fa5a-c9A66D49BDc1',
478
+ 'start_time': '',
479
+ 'limit': 1,
480
+ 'offset': '',
481
+ 'search_value': '',
482
+ 'BackLackOnly': 0,
483
+ }
484
+
485
+ syncRules = SyncRules(a)
486
+ r = syncRules.describeObjCmpResult(body)
487
+ print(r[0])
488
+ assert r[0]['ret'] == 200
489
+ write(r[0], 'SyncRules', 'describeObjCmpResult', body)
490
+
491
+ def testListObjCmpStatus(self):
492
+ a = Auth(username, pwd)
493
+ body = {
494
+ 'uuids': [],
495
+ }
496
+
497
+ syncRules = SyncRules(a)
498
+ r = syncRules.listObjCmpStatus(body)
499
+ print(r[0])
500
+ assert r[0]['ret'] == 200
501
+ write(r[0], 'SyncRules', 'listObjCmpStatus', body)
502
+
503
+ def testDescribeObjCmpResultTimeList(self):
504
+ a = Auth(username, pwd)
505
+ body = {
506
+ 'uuid': '5ed66EbF-BAE8-acDA-9A7A-Cde6fbdB65FC',
507
+ 'time_list': [],
508
+ }
509
+
510
+ syncRules = SyncRules(a)
511
+ r = syncRules.describeObjCmpResultTimeList(body)
512
+ print(r[0])
513
+ assert r[0]['ret'] == 200
514
+ write(r[0], 'SyncRules', 'describeObjCmpResultTimeList', body)
515
+
516
+ def testListObjCmpCmpInfo(self):
517
+ a = Auth(username, pwd)
518
+ body = {
519
+ 'offset': 1,
520
+ 'limit': 10,
521
+ 'search_value': '',
522
+ 'usr': 'I2',
523
+ 'filed': '',
524
+ 'uuid': '',
525
+ 'start_time': '',
526
+ }
527
+
528
+ syncRules = SyncRules(a)
529
+ r = syncRules.listObjCmpCmpInfo(body)
530
+ print(r[0])
531
+ assert r[0]['ret'] == 200
532
+ write(r[0], 'SyncRules', 'listObjCmpCmpInfo', body)
533
+
534
+ def testCreateObjFix(self):
535
+ a = Auth(username, pwd)
536
+ body = {
537
+ 'obj_fix_name': 'test',
538
+ 'src_db_uuid': '4CA773F4-36E3-A091-122C-ACDFB2112C21',
539
+ 'tgt_db_uuid': '40405FD3-DB86-DC8A-81C9-C137B6FDECE5',
540
+ 'rule_uuid': '751A03F5-C97D-645B-82B2-316A5D198528',
541
+ 'obj_map': [{
542
+ 'type': 'owner.name',},{
543
+ 'type': 'owner.name',},],
544
+ }
545
+
546
+ syncRules = SyncRules(a)
547
+ r = syncRules.createObjFix(body)
548
+ print(r[0])
549
+ assert r[0]['ret'] == 200
550
+ write(r[0], 'SyncRules', 'createObjFix', body)
551
+
552
+ def testDescribeObjFix(self):
553
+ a = Auth(username, pwd)
554
+ body = {
555
+ 'uuid': 'fA2fB1fa-BAef-eaB5-EfA9-42Fed0Edd4dC',
556
+ }
557
+ uuid = "22D03E06-94D0-5E2C-336E-4BEEC2D28EC4"
558
+ syncRules = SyncRules(a)
559
+ r = syncRules.describeObjFix(body, uuid)
560
+ print(r[0])
561
+ assert r[0]['ret'] == 200
562
+ write(r[0], 'SyncRules', 'describeObjFix', body)
563
+
564
+ def testDeleteObjFix(self):
565
+ a = Auth(username, pwd)
566
+ body = {
567
+ 'uuids': 'E46d4a32-98Cb-DdF3-674b-1Dd1cbA15ad1',
568
+ }
569
+
570
+ syncRules = SyncRules(a)
571
+ r = syncRules.deleteObjFix(body)
572
+ print(r[0])
573
+ assert r[0]['ret'] == 200
574
+ write(r[0], 'SyncRules', 'deleteObjFix', body)
575
+
576
+ def testListObjFix(self):
577
+ a = Auth(username, pwd)
578
+ body = {
579
+ 'page': 1,
580
+ 'limit': 10,
581
+ 'search_field': '',
582
+ 'search_value': '',
583
+ }
584
+
585
+ syncRules = SyncRules(a)
586
+ r = syncRules.listObjFix(body)
587
+ print(r[0])
588
+ assert r[0]['ret'] == 200
589
+ write(r[0], 'SyncRules', 'listObjFix', body)
590
+
591
+ def testDescribeObjFixResult(self):
592
+ a = Auth(username, pwd)
593
+ body = {
594
+ 'uuid': 'df3Ad2fe-C784-8F8c-43AF-C809765Ef5f4',
595
+ }
596
+
597
+ syncRules = SyncRules(a)
598
+ r = syncRules.describeObjFixResult(body)
599
+ print(r[0])
600
+ assert r[0]['ret'] == 200
601
+ write(r[0], 'SyncRules', 'describeObjFixResult', body)
602
+
603
+ def testListObjFixStatus(self):
604
+ a = Auth(username, pwd)
605
+ body = {
606
+ 'uuids': [],
607
+ }
608
+
609
+ syncRules = SyncRules(a)
610
+ r = syncRules.listObjFixStatus(body)
611
+ print(r[0])
612
+ assert r[0]['ret'] == 200
613
+ write(r[0], 'SyncRules', 'listObjFixStatus', body)
614
+
615
+ def testCreateTbCmp(self):
616
+ a = Auth(username, pwd)
617
+ body = {
618
+ 'tb_cmp_name': 'ctt->ctt',
619
+ 'src_db_uuid': '4CA773F4-36E3-A091-122C-ACDFB2112C21',
620
+ 'tgt_db_uuid': '40405FD3-DB86-DC8A-81C9-C137B6FDECE5',
621
+ 'cmp_type': 'user,table,db',
622
+ 'db_user_map': '{"CTT":"CTT"}',
623
+ 'filter_table': '[用户.表名]',
624
+ 'db_tb_map': '表映射',
625
+ 'dump_thd': 1,
626
+ 'rule_uuid': '4Cb7bcc7-5beB-969B-2c6A-38C5C6e4EEDd',
627
+ 'polices': '"0|00:00',
628
+ 'policy_type': 'one_time',
629
+ 'concurrent_table': [
630
+ 'hh.ww',],
631
+ 'try_split_part_table': 0,
632
+ 'one_time': '2019-05-27 16:07:08',
633
+ 'repair': 0,
634
+ 'fix_related': 0,
635
+ }
636
+
637
+ syncRules = SyncRules(a)
638
+ r = syncRules.createTbCmp(body)
639
+ print(r[0])
640
+ assert r[0]['ret'] == 200
641
+ write(r[0], 'SyncRules', 'createTbCmp', body)
642
+
643
+ def testDescribeTbCmp(self):
644
+ a = Auth(username, pwd)
645
+ body = {
646
+ 'uuid': '2F1BD5F2-0969-dCAE-2CB2-DAC5beDac99D',
647
+ }
648
+ uuid = "22D03E06-94D0-5E2C-336E-4BEEC2D28EC4"
649
+ syncRules = SyncRules(a)
650
+ r = syncRules.describeTbCmp(body, uuid)
651
+ print(r[0])
652
+ assert r[0]['ret'] == 200
653
+ write(r[0], 'SyncRules', 'describeTbCmp', body)
654
+
655
+ def testDeleteTbCmp(self):
656
+ a = Auth(username, pwd)
657
+ body = {
658
+ 'uuids': 'bDd3FB96-27D7-fD97-8bcF-cE61CCa289F9',
659
+ }
660
+
661
+ syncRules = SyncRules(a)
662
+ r = syncRules.deleteTbCmp(body)
663
+ print(r[0])
664
+ assert r[0]['ret'] == 200
665
+ write(r[0], 'SyncRules', 'deleteTbCmp', body)
666
+
667
+ def testListTbCmp(self):
668
+ a = Auth(username, pwd)
669
+ body = {
670
+ 'page': 1,
671
+ 'limit': 10,
672
+ 'search_field': '',
673
+ 'search_value': '',
674
+ }
675
+
676
+ syncRules = SyncRules(a)
677
+ r = syncRules.listTbCmp(body)
678
+ print(r[0])
679
+ assert r[0]['ret'] == 200
680
+ write(r[0], 'SyncRules', 'listTbCmp', body)
681
+
682
+ def testListTbCmpStatus(self):
683
+ a = Auth(username, pwd)
684
+ body = {
685
+ 'uuids': '1dcF478c-5112-fAd1-33c1-E8DD5eeC4FDc',
686
+ }
687
+
688
+ syncRules = SyncRules(a)
689
+ r = syncRules.listTbCmpStatus(body)
690
+ print(r[0])
691
+ assert r[0]['ret'] == 200
692
+ write(r[0], 'SyncRules', 'listTbCmpStatus', body)
693
+
694
+ def testListTbCmpResultTimeList(self):
695
+ a = Auth(username, pwd)
696
+ body = {
697
+ 'uuid': '',
698
+ }
699
+
700
+ syncRules = SyncRules(a)
701
+ r = syncRules.listTbCmpResultTimeList(body)
702
+ print(r[0])
703
+ assert r[0]['ret'] == 200
704
+ write(r[0], 'SyncRules', 'listTbCmpResultTimeList', body)
705
+
706
+ def testDescribeTbCmpResuluTimeList(self):
707
+ a = Auth(username, pwd)
708
+ body = {
709
+ 'time_list': '2CE8c95F-9AC8-EFeF-c4Eb-6c0EAD62cAbE',
710
+ 'uuid': '',
711
+ }
712
+
713
+ syncRules = SyncRules(a)
714
+ r = syncRules.describeTbCmpResuluTimeList(body)
715
+ print(r[0])
716
+ assert r[0]['ret'] == 200
717
+ write(r[0], 'SyncRules', 'describeTbCmpResuluTimeList', body)
718
+
719
+ def testDescribeTbCmpResult(self):
720
+ a = Auth(username, pwd)
721
+ body = {
722
+ 'page': 1,
723
+ 'limit': 10,
724
+ 'search_field': '',
725
+ 'search_value': '',
726
+ 'uuid': 'DD3BDbd9-4ec0-FD5e-dDc9-e68A7df21222',
727
+ 'start_time': '',
728
+ }
729
+
730
+ syncRules = SyncRules(a)
731
+ r = syncRules.describeTbCmpResult(body)
732
+ print(r[0])
733
+ assert r[0]['ret'] == 200
734
+ write(r[0], 'SyncRules', 'describeTbCmpResult', body)
735
+
736
+ def testDescribeTbCmpErrorMsg(self):
737
+ a = Auth(username, pwd)
738
+ body = {
739
+ 'offset': 1,
740
+ 'limit': 10,
741
+ 'search_field': '',
742
+ 'search_value': '',
743
+ 'uuid': 'dEceDa3c-BFbD-A44D-f861-657eC256D0F5',
744
+ 'start_time': '',
745
+ 'name': '',
746
+ 'owner': 'admin',
747
+ }
748
+
749
+ syncRules = SyncRules(a)
750
+ r = syncRules.describeTbCmpErrorMsg(body)
751
+ print(r[0])
752
+ assert r[0]['ret'] == 200
753
+ write(r[0], 'SyncRules', 'describeTbCmpErrorMsg', body)
754
+
755
+ def testDescribeTbCmpCmpResult(self):
756
+ a = Auth(username, pwd)
757
+ body = {
758
+ 'uuid': '',
759
+ }
760
+
761
+ syncRules = SyncRules(a)
762
+ r = syncRules.describeTbCmpCmpResult(body)
763
+ print(r[0])
764
+ assert r[0]['ret'] == 200
765
+ write(r[0], 'SyncRules', 'describeTbCmpCmpResult', body)
766
+
767
+ def testCreateBkTakeover(self):
768
+ a = Auth(username, pwd)
769
+ body = {
770
+ 'rule_uuid': '7404A6e4-fEeD-7E4f-C5B1-0C5ee1bB8db2',
771
+ 'start_val': 1000,
772
+ 'scan_ip': [
773
+ 'c01D7F86-A631-b79f-E2AA-7ccb7f2bE851',
774
+ 'c01D7F86-A631-b79f-E2AA-7ccb7f2bE851',
775
+ 'c01D7F86-A631-b79f-E2AA-7ccb7f2bE851',],
776
+ 'hosts': [{
777
+ 'ip': '192.168.12.200',
778
+ 'password': '',},],
779
+ 'use_ip_sw': 1,
780
+ }
781
+
782
+ syncRules = SyncRules(a)
783
+ r = syncRules.createBkTakeover(body)
784
+ print(r[0])
785
+ assert r[0]['ret'] == 200
786
+ write(r[0], 'SyncRules', 'createBkTakeover', body)
787
+
788
+ def testDescribeBkTakeover(self):
789
+ a = Auth(username, pwd)
790
+ body = {
791
+ }
792
+ uuid = "22D03E06-94D0-5E2C-336E-4BEEC2D28EC4"
793
+ syncRules = SyncRules(a)
794
+ r = syncRules.describeBkTakeover(body, uuid)
795
+ print(r[0])
796
+ assert r[0]['ret'] == 200
797
+ write(r[0], 'SyncRules', 'describeBkTakeover', body)
798
+
799
+ def testDeleteBkTakeover(self):
800
+ a = Auth(username, pwd)
801
+ body = {
802
+ 'uuids': 'b7B91Be1-CE58-C0B2-F27d-8EbCdAE3bDA4',
803
+ }
804
+
805
+ syncRules = SyncRules(a)
806
+ r = syncRules.deleteBkTakeover(body)
807
+ print(r[0])
808
+ assert r[0]['ret'] == 200
809
+ write(r[0], 'SyncRules', 'deleteBkTakeover', body)
810
+
811
+ def testDescribeBkTakeoverResult(self):
812
+ a = Auth(username, pwd)
813
+ body = {
814
+ 'bk_takeover_uuid': 'D23C8781-7Bed-dFA0-CAdb-eF0279AE8B62',
815
+ }
816
+
817
+ syncRules = SyncRules(a)
818
+ r = syncRules.describeBkTakeoverResult(body)
819
+ print(r[0])
820
+ assert r[0]['ret'] == 200
821
+ write(r[0], 'SyncRules', 'describeBkTakeoverResult', body)
822
+
823
+ def testListBkTakeoverStatus(self):
824
+ a = Auth(username, pwd)
825
+ body = {
826
+ 'uuids': [],
827
+ }
828
+
829
+ syncRules = SyncRules(a)
830
+ r = syncRules.listBkTakeoverStatus(body)
831
+ print(r[0])
832
+ assert r[0]['ret'] == 200
833
+ write(r[0], 'SyncRules', 'listBkTakeoverStatus', body)
834
+
835
+ def testListBkTakeover(self):
836
+ a = Auth(username, pwd)
837
+ body = {
838
+ }
839
+
840
+ syncRules = SyncRules(a)
841
+ r = syncRules.listBkTakeover()
842
+ assert r[0]['ret'] == 200
843
+ write(r[0], 'SyncRules', 'listBkTakeover', body)
844
+
845
+ def testCreateReverse(self):
846
+ a = Auth(username, pwd)
847
+ body = {
848
+ 'reverse_name': '',
849
+ 'rule_uuid': '7CfFfB84-77c6-dcef-B950-F5Ab5d5e2589',
850
+ 'node_uuid': '41CDDE6F-e6A2-7324-fbdd-Be965eDf3cbF',
851
+ 'start_scn': 1,
852
+ }
853
+
854
+ syncRules = SyncRules(a)
855
+ r = syncRules.createReverse(body)
856
+ print(r[0])
857
+ assert r[0]['ret'] == 200
858
+ write(r[0], 'SyncRules', 'createReverse', body)
859
+
860
+ def testDeleteReverse(self):
861
+ a = Auth(username, pwd)
862
+ body = {
863
+ 'uuids': [],
864
+ }
865
+
866
+ syncRules = SyncRules(a)
867
+ r = syncRules.deleteReverse(body)
868
+ print(r[0])
869
+ assert r[0]['ret'] == 200
870
+ write(r[0], 'SyncRules', 'deleteReverse', body)
871
+
872
+ def testDescribeReverse(self):
873
+ a = Auth(username, pwd)
874
+ body = {
875
+ 'rule_uuid': '86313AA4-aefe-D3fE-B8F1-CAef1F1C9AFf',
876
+ }
877
+
878
+ syncRules = SyncRules(a)
879
+ r = syncRules.describeReverse(body)
880
+ print(r[0])
881
+ assert r[0]['ret'] == 200
882
+ write(r[0], 'SyncRules', 'describeReverse', body)
883
+
884
+ def testListReverse(self):
885
+ a = Auth(username, pwd)
886
+ body = {
887
+ 'page': 1,
888
+ 'limit': 10,
889
+ 'search_field': '',
890
+ 'search_value': '',
891
+ }
892
+
893
+ syncRules = SyncRules(a)
894
+ r = syncRules.listReverse(body)
895
+ print(r[0])
896
+ assert r[0]['ret'] == 200
897
+ write(r[0], 'SyncRules', 'listReverse', body)
898
+
899
+ def testListReverseStatus(self):
900
+ a = Auth(username, pwd)
901
+ body = {
902
+ 'uuids': '022cfAE6-dbce-F8F2-fdeA-61cCffb3b274',
903
+ }
904
+
905
+ syncRules = SyncRules(a)
906
+ r = syncRules.listReverseStatus(body)
907
+ print(r[0])
908
+ assert r[0]['ret'] == 200
909
+ write(r[0], 'SyncRules', 'listReverseStatus', body)
910
+
911
+ def testStopReverse(self):
912
+ a = Auth(username, pwd)
913
+ body = {
914
+ 'uuid': 'a6F31B7A-ee1f-41B5-fD2c-41554e1Cba94',
915
+ }
916
+
917
+ syncRules = SyncRules(a)
918
+ r = syncRules.stopReverse(body)
919
+ print(r[0])
920
+ assert r[0]['ret'] == 200
921
+ write(r[0], 'SyncRules', 'stopReverse', body)
922
+
923
+ def testRestartReverse(self):
924
+ a = Auth(username, pwd)
925
+ body = {
926
+ 'uuid': 'F5b1fEDE-C8bF-bCDd-E4d1-de05c581514F',
927
+ }
928
+
929
+ syncRules = SyncRules(a)
930
+ r = syncRules.restartReverse(body)
931
+ print(r[0])
932
+ assert r[0]['ret'] == 200
933
+ write(r[0], 'SyncRules', 'restartReverse', body)
934
+
935
+ def testDescribeSingleReverse(self):
936
+ a = Auth(username, pwd)
937
+ body = {
938
+ 'uuid': '743ca3a5-9D5e-A51C-1c43-ABe3C6CebEbE',
939
+ }
940
+
941
+ syncRules = SyncRules(a)
942
+ r = syncRules.describeSingleReverse(body)
943
+ print(r[0])
944
+ assert r[0]['ret'] == 200
945
+ write(r[0], 'SyncRules', 'describeSingleReverse', body)
946
+
947
+ def testDescribeRuleSelectUser(self):
948
+ a = Auth(username, pwd)
949
+ body = {
950
+ 'db_uuid': '6CDE730D-ad5d-A37e-cf70-bafCdaEd16bd',
951
+ }
952
+
953
+ syncRules = SyncRules(a)
954
+ r = syncRules.describeRuleSelectUser(body)
955
+ print(r[0])
956
+ assert r[0]['ret'] == 200
957
+ write(r[0], 'SyncRules', 'describeRuleSelectUser', body)
958
+
959
+ def testDescribeRuleZStructure(self):
960
+ a = Auth(username, pwd)
961
+ body = {
962
+ 'tab': '4e806F9C-cCb4-f8f6-39f3-54b64aCDd28a',
963
+ 'user': '',
964
+ 'db_uuid': '5fDb001F-6fC1-CEB2-eF08-fc59DDcf5eC9',
965
+ 'lv': '',
966
+ }
967
+
968
+ syncRules = SyncRules(a)
969
+ r = syncRules.describeRuleZStructure(body)
970
+ print(r[0])
971
+ assert r[0]['ret'] == 200
972
+ write(r[0], 'SyncRules', 'describeRuleZStructure', body)
973
+
974
+ def testListRuleLog(self):
975
+ a = Auth(username, pwd)
976
+ body = {
977
+ 'offset': 0,
978
+ 'limit': 10,
979
+ 'date_start': '',
980
+ 'date_end': '',
981
+ 'type': 1,
982
+ 'module_type': 1,
983
+ 'query_type': 1,
984
+ 'rule_uuid': 'B306c9e5-dcCC-9253-E5aE-7e38aAFc9dCc',
985
+ }
986
+
987
+ syncRules = SyncRules(a)
988
+ r = syncRules.listRuleLog(body)
989
+ print(r[0])
990
+ assert r[0]['ret'] == 200
991
+ write(r[0], 'SyncRules', 'listRuleLog', body)
992
+
993
+ def testDescribeRuleTableFix(self):
994
+ a = Auth(username, pwd)
995
+ body = {
996
+ 'rule_uuid': '253CeD3E-4Cc2-f77c-6759-7FBE2f7ABd3c',
997
+ 'tab': [],
998
+ 'fix_relation': 0,
999
+ }
1000
+
1001
+ syncRules = SyncRules(a)
1002
+ r = syncRules.describeRuleTableFix(body)
1003
+ print(r[0])
1004
+ assert r[0]['ret'] == 200
1005
+ write(r[0], 'SyncRules', 'describeRuleTableFix', body)
1006
+
1007
+ def testListRuleSyncTable(self):
1008
+ a = Auth(username, pwd)
1009
+ body = {
1010
+ 'row_uuid': '',
1011
+ }
1012
+
1013
+ syncRules = SyncRules(a)
1014
+ r = syncRules.listRuleSyncTable(body)
1015
+ print(r[0])
1016
+ assert r[0]['ret'] == 200
1017
+ write(r[0], 'SyncRules', 'listRuleSyncTable', body)
1018
+
1019
+ def testListRuleIncreDml(self):
1020
+ a = Auth(username, pwd)
1021
+ body = {
1022
+ 'offset': 0,
1023
+ 'limit': '10',
1024
+ 'rule_uuid': 'cBc5BeF6-A34d-fa9b-dAAb-c30Aa995EeA3',
1025
+ }
1026
+
1027
+ syncRules = SyncRules(a)
1028
+ r = syncRules.listRuleIncreDml(body)
1029
+ print(r[0])
1030
+ assert r[0]['ret'] == 200
1031
+ write(r[0], 'SyncRules', 'listRuleIncreDml', body)
1032
+
1033
+ def testDescribeRuleGetFalseRule(self):
1034
+ a = Auth(username, pwd)
1035
+ body = {
1036
+ }
1037
+
1038
+ syncRules = SyncRules(a)
1039
+ r = syncRules.describeRuleGetFalseRule(body)
1040
+ print(r[0])
1041
+ assert r[0]['ret'] == 200
1042
+ write(r[0], 'SyncRules', 'describeRuleGetFalseRule', body)
1043
+
1044
+ def testDescribeRuleGetScn(self):
1045
+ a = Auth(username, pwd)
1046
+ body = {
1047
+ 'uuid': 'B35F1b98-DA4f-FEbA-221f-005dCC13BC25',
1048
+ }
1049
+
1050
+ syncRules = SyncRules(a)
1051
+ r = syncRules.describeRuleGetScn(body)
1052
+ print(r[0])
1053
+ assert r[0]['ret'] == 200
1054
+ write(r[0], 'SyncRules', 'describeRuleGetScn', body)
1055
+
1056
+ def testListRuleLoadReport(self):
1057
+ a = Auth(username, pwd)
1058
+ body = {
1059
+ 'type': 'sec',
1060
+ 'start_time': '',
1061
+ 'end_time': '',
1062
+ 'limit': 10,
1063
+ 'offset': 0,
1064
+ 'uuid': '1d2F6Fed-DAC6-FE94-A6cB-5Ab55415E9fd',
1065
+ }
1066
+
1067
+ syncRules = SyncRules(a)
1068
+ r = syncRules.listRuleLoadReport(body)
1069
+ print(r[0])
1070
+ assert r[0]['ret'] == 200
1071
+ write(r[0], 'SyncRules', 'listRuleLoadReport', body)
1072
+
1073
+ def testListRuleLoadDelayReport(self):
1074
+ a = Auth(username, pwd)
1075
+ body = {
1076
+ 'type': 'sec',
1077
+ 'start_time': '',
1078
+ 'end_time': '',
1079
+ 'limit': 10,
1080
+ 'offset': 0,
1081
+ 'uuid': '1d2F6Fed-DAC6-FE94-A6cB-5Ab55415E9fd',
1082
+ }
1083
+
1084
+ syncRules = SyncRules(a)
1085
+ r = syncRules.listRuleLoadDelayReport(body)
1086
+ print(r[0])
1087
+ assert r[0]['ret'] == 200
1088
+ write(r[0], 'SyncRules', 'listRuleLoadDelayReport', body)
1089
+
1090
+ def testDescribeRuleDbCheck(self):
1091
+ a = Auth(username, pwd)
1092
+ body = {
1093
+ 'src_db_uuid': '',
1094
+ 'dst_db_uuid': '',
1095
+ }
1096
+
1097
+ syncRules = SyncRules(a)
1098
+ r = syncRules.describeRuleDbCheck(body)
1099
+ print(r[0])
1100
+ assert r[0]['ret'] == 200
1101
+ write(r[0], 'SyncRules', 'describeRuleDbCheck', body)
1102
+
1103
+ def testResumeSyncRules(self):
1104
+ a = Auth(username, pwd)
1105
+ body = {
1106
+ 'operate': '',
1107
+ 'rule_uuids': '',
1108
+ 'scn': '',
1109
+ }
1110
+
1111
+ syncRules = SyncRules(a)
1112
+ r = syncRules.resumeSyncRules(body)
1113
+ print(r[0])
1114
+ assert r[0]['ret'] == 200
1115
+ write(r[0], 'SyncRules', 'resumeSyncRules', body)
1116
+
1117
+ def testStopSyncRules(self):
1118
+ a = Auth(username, pwd)
1119
+ body = {
1120
+ 'operate': '',
1121
+ 'rule_uuids': '',
1122
+ 'scn': '',
1123
+ }
1124
+
1125
+ syncRules = SyncRules(a)
1126
+ r = syncRules.stopSyncRules(body)
1127
+ print(r[0])
1128
+ assert r[0]['ret'] == 200
1129
+ write(r[0], 'SyncRules', 'stopSyncRules', body)
1130
+
1131
+ def testRestartSyncRules(self):
1132
+ a = Auth(username, pwd)
1133
+ body = {
1134
+ 'operate': '',
1135
+ 'rule_uuids': '',
1136
+ 'scn': '',
1137
+ }
1138
+
1139
+ syncRules = SyncRules(a)
1140
+ r = syncRules.restartSyncRules(body)
1141
+ print(r[0])
1142
+ assert r[0]['ret'] == 200
1143
+ write(r[0], 'SyncRules', 'restartSyncRules', body)
1144
+
1145
+ def testStartAnalysisSyncRules(self):
1146
+ a = Auth(username, pwd)
1147
+ body = {
1148
+ 'operate': '',
1149
+ 'rule_uuids': '',
1150
+ 'scn': '',
1151
+ }
1152
+
1153
+ syncRules = SyncRules(a)
1154
+ r = syncRules.startAnalysisSyncRules(body)
1155
+ print(r[0])
1156
+ assert r[0]['ret'] == 200
1157
+ write(r[0], 'SyncRules', 'startAnalysisSyncRules', body)
1158
+
1159
+ def testStopAnalysisSyncRules(self):
1160
+ a = Auth(username, pwd)
1161
+ body = {
1162
+ 'operate': '',
1163
+ 'rule_uuids': '',
1164
+ 'scn': '',
1165
+ }
1166
+
1167
+ syncRules = SyncRules(a)
1168
+ r = syncRules.stopAnalysisSyncRules(body)
1169
+ print(r[0])
1170
+ assert r[0]['ret'] == 200
1171
+ write(r[0], 'SyncRules', 'stopAnalysisSyncRules', body)
1172
+
1173
+ def testResetAnalysisSyncRules(self):
1174
+ a = Auth(username, pwd)
1175
+ body = {
1176
+ 'operate': '',
1177
+ 'rule_uuids': '',
1178
+ 'scn': '',
1179
+ }
1180
+
1181
+ syncRules = SyncRules(a)
1182
+ r = syncRules.resetAnalysisSyncRules(body)
1183
+ print(r[0])
1184
+ assert r[0]['ret'] == 200
1185
+ write(r[0], 'SyncRules', 'resetAnalysisSyncRules', body)
1186
+
1187
+ def testStopAndStopanalysisSyncRules(self):
1188
+ a = Auth(username, pwd)
1189
+ body = {
1190
+ 'operate': '',
1191
+ 'rule_uuids': '',
1192
+ 'scn': '',
1193
+ }
1194
+
1195
+ syncRules = SyncRules(a)
1196
+ r = syncRules.stopAndStopanalysisSyncRules(body)
1197
+ print(r[0])
1198
+ assert r[0]['ret'] == 200
1199
+ write(r[0], 'SyncRules', 'stopAndStopanalysisSyncRules', body)
1200
+
1201
+ def testRestartObjFix(self):
1202
+ a = Auth(username, pwd)
1203
+ body = {
1204
+ 'obj_fix_uuids': '33E2BD5a-3bB8-Bc72-4Be9-ff9157ddfAD4',
1205
+ }
1206
+
1207
+ syncRules = SyncRules(a)
1208
+ r = syncRules.restartObjFix(body)
1209
+ print(r[0])
1210
+ assert r[0]['ret'] == 200
1211
+ write(r[0], 'SyncRules', 'restartObjFix', body)
1212
+
1213
+ def testStopObjFix(self):
1214
+ a = Auth(username, pwd)
1215
+ body = {
1216
+ 'obj_fix_uuids': '33E2BD5a-3bB8-Bc72-4Be9-ff9157ddfAD4',
1217
+ }
1218
+
1219
+ syncRules = SyncRules(a)
1220
+ r = syncRules.stopObjFix(body)
1221
+ print(r[0])
1222
+ assert r[0]['ret'] == 200
1223
+ write(r[0], 'SyncRules', 'stopObjFix', body)
1224
+
1225
+ def testStopTbCmp(self):
1226
+ a = Auth(username, pwd)
1227
+ body = {
1228
+ 'tb_cmp_uuids': 'DAD4dECC-2eED-6c37-e16e-018DDe7fFfad',
1229
+ 'operate': '',
1230
+ }
1231
+
1232
+ syncRules = SyncRules(a)
1233
+ r = syncRules.stopTbCmp(body)
1234
+ print(r[0])
1235
+ assert r[0]['ret'] == 200
1236
+ write(r[0], 'SyncRules', 'stopTbCmp', body)
1237
+
1238
+ def testRestartTbCmp(self):
1239
+ a = Auth(username, pwd)
1240
+ body = {
1241
+ 'tb_cmp_uuids': 'DAD4dECC-2eED-6c37-e16e-018DDe7fFfad',
1242
+ 'operate': '',
1243
+ }
1244
+
1245
+ syncRules = SyncRules(a)
1246
+ r = syncRules.restartTbCmp(body)
1247
+ print(r[0])
1248
+ assert r[0]['ret'] == 200
1249
+ write(r[0], 'SyncRules', 'restartTbCmp', body)
1250
+
1251
+ def testStopBkTakeover(self):
1252
+ a = Auth(username, pwd)
1253
+ body = {
1254
+ 'bk_takeover_uuids': 'Be227bF2-1553-edeC-9993-B4071D73c8Cb',
1255
+ 'operate': '',
1256
+ }
1257
+
1258
+ syncRules = SyncRules(a)
1259
+ r = syncRules.stopBkTakeover(body)
1260
+ print(r[0])
1261
+ assert r[0]['ret'] == 200
1262
+ write(r[0], 'SyncRules', 'stopBkTakeover', body)
1263
+
1264
+ def testRestartBkTakeover(self):
1265
+ a = Auth(username, pwd)
1266
+ body = {
1267
+ 'bk_takeover_uuids': 'Be227bF2-1553-edeC-9993-B4071D73c8Cb',
1268
+ 'operate': '',
1269
+ }
1270
+
1271
+ syncRules = SyncRules(a)
1272
+ r = syncRules.restartBkTakeover(body)
1273
+ print(r[0])
1274
+ assert r[0]['ret'] == 200
1275
+ write(r[0], 'SyncRules', 'restartBkTakeover', body)
1276
+
1277
+ def testDownloadLog(self):
1278
+ a = Auth(username, pwd)
1279
+ body = {
1280
+ 'rule_uuid': '',
1281
+ 'type': 1,
1282
+ 'module_type': 1,
1283
+ 'date_start': 1,
1284
+ 'date_end': 1,
1285
+ }
1286
+
1287
+ syncRules = SyncRules(a)
1288
+ r = syncRules.downloadLog(body)
1289
+ print(r[0])
1290
+ assert r[0]['ret'] == 200
1291
+ write(r[0], 'SyncRules', 'downloadLog', body)
1292
+
1293
+
1294
+ if __name__ == '__main__':
1295
+ unittest.main()