fetchTxnProgress.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739
  1. <?php
  2. include_once '../util/Logger.php';
  3. include_once "../conf/Config.inc";
  4. include_once "../orchestrator/HMC.php";
  5. include_once "uninstallCleanup.php";
  6. include_once "deployPostProcess.php";
  7. $dbPath = $GLOBALS["DB_PATH"];
  8. $clusterName = $_GET['clusterName'];
  9. $txnId = $_GET['txnId'];
  10. $deployUser = $_GET['deployUser'];
  11. $logger = new HMCLogger("TxnProgress");
  12. $map = array(
  13. "HMC::uninstallHDP" => array (
  14. "deBootStrap"
  15. ),
  16. "HMC::deployHDP" => array (
  17. "deployPostProcess"
  18. )
  19. );
  20. //REZXXX $dummyDeployProgressData = array(
  21. //REZXXX // Sample 0
  22. //REZXXX array(
  23. //REZXXX 'result' => 0,
  24. //REZXXX 'error' => '',
  25. //REZXXX 'processRunning' => 1,
  26. //REZXXX 'subTxns' => array(
  27. //REZXXX array(
  28. //REZXXX 'subTxnId' => 1,
  29. //REZXXX 'parentSubTxnId' => 0,
  30. //REZXXX 'state' => 'INSTALLING',
  31. //REZXXX 'description' => 'orchestratortestcluster-INSTALLING',
  32. //REZXXX 'progress' => 'IN_PROGRESS',
  33. //REZXXX 'subTxnType' => 'CLUSTER',
  34. //REZXXX 'rank' => 0
  35. //REZXXX ),
  36. //REZXXX array(
  37. //REZXXX 'subTxnId' => 14,
  38. //REZXXX 'parentSubTxnId' => 13,
  39. //REZXXX 'state' => 'PENDING',
  40. //REZXXX 'description' => 'HDFS-STARTING',
  41. //REZXXX 'progress' => 'PENDING',
  42. //REZXXX 'subTxnType' => 'SERVICE',
  43. //REZXXX 'rank' => 1
  44. //REZXXX ),
  45. //REZXXX array(
  46. //REZXXX 'subTxnId' => 16,
  47. //REZXXX 'parentSubTxnId' => 15,
  48. //REZXXX 'state' => 'PENDING',
  49. //REZXXX 'description' => 'NAMENODE-STARTING',
  50. //REZXXX 'progress' => 'PENDING',
  51. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  52. //REZXXX 'rank' => 2
  53. //REZXXX ),
  54. //REZXXX array(
  55. //REZXXX 'subTxnId' => 15,
  56. //REZXXX 'parentSubTxnId' => 14,
  57. //REZXXX 'state' => 'PENDING',
  58. //REZXXX 'description' => 'DATANODE-STARTING',
  59. //REZXXX 'progress' => 'PENDING',
  60. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  61. //REZXXX 'rank' => 3
  62. //REZXXX ),
  63. //REZXXX array(
  64. //REZXXX 'subTxnId' => 18,
  65. //REZXXX 'parentSubTxnId' => 14,
  66. //REZXXX 'state' => 'PENDING',
  67. //REZXXX 'description' => 'SNAMENODE-STARTING',
  68. //REZXXX 'progress' => 'PENDING',
  69. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  70. //REZXXX 'rank' => 4
  71. //REZXXX ),
  72. //REZXXX array(
  73. //REZXXX 'subTxnId' => 20,
  74. //REZXXX 'parentSubTxnId' => 13,
  75. //REZXXX 'state' => 'PENDING',
  76. //REZXXX 'description' => 'MAPREDUCE-STARTING',
  77. //REZXXX 'progress' => 'PENDING',
  78. //REZXXX 'subTxnType' => 'SERVICE',
  79. //REZXXX 'rank' => 5
  80. //REZXXX ),
  81. //REZXXX array(
  82. //REZXXX 'subTxnId' => 22,
  83. //REZXXX 'parentSubTxnId' => 20,
  84. //REZXXX 'state' => 'PENDING',
  85. //REZXXX 'description' => 'JOBTRACKER-STARTING',
  86. //REZXXX 'progress' => 'PENDING',
  87. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  88. //REZXXX 'rank' => 6
  89. //REZXXX ),
  90. //REZXXX array(
  91. //REZXXX 'subTxnId' => 23,
  92. //REZXXX 'parentSubTxnId' => 20,
  93. //REZXXX 'state' => 'PENDING',
  94. //REZXXX 'description' => 'TASKTRACKER-STARTING',
  95. //REZXXX 'progress' => 'PENDING',
  96. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  97. //REZXXX 'rank' => 7
  98. //REZXXX )
  99. //REZXXX )
  100. //REZXXX ),
  101. //REZXXX // Sample 1
  102. //REZXXX array(
  103. //REZXXX 'result' => 0,
  104. //REZXXX 'error' => '',
  105. //REZXXX 'processRunning' => 1,
  106. //REZXXX 'subTxns' => array(
  107. //REZXXX array(
  108. //REZXXX 'subTxnId' => 1,
  109. //REZXXX 'parentSubTxnId' => 0,
  110. //REZXXX 'state' => 'INSTALLED',
  111. //REZXXX 'description' => 'orchestratortestcluster-INSTALLED',
  112. //REZXXX 'progress' => 'COMPLETED',
  113. //REZXXX 'subTxnType' => 'CLUSTER',
  114. //REZXXX 'rank' => 0
  115. //REZXXX ),
  116. //REZXXX array(
  117. //REZXXX 'subTxnId' => 14,
  118. //REZXXX 'parentSubTxnId' => 13,
  119. //REZXXX 'state' => 'STARTING',
  120. //REZXXX 'description' => 'HDFS-STARTING',
  121. //REZXXX 'progress' => 'IN_PROGRESS',
  122. //REZXXX 'subTxnType' => 'SERVICE',
  123. //REZXXX 'rank' => 1
  124. //REZXXX ),
  125. //REZXXX array(
  126. //REZXXX 'subTxnId' => 16,
  127. //REZXXX 'parentSubTxnId' => 15,
  128. //REZXXX 'state' => 'STARTING',
  129. //REZXXX 'description' => 'NAMENODE-STARTING',
  130. //REZXXX 'progress' => 'IN_PROGRESS',
  131. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  132. //REZXXX 'rank' => 2
  133. //REZXXX ),
  134. //REZXXX array(
  135. //REZXXX 'subTxnId' => 15,
  136. //REZXXX 'parentSubTxnId' => 14,
  137. //REZXXX 'state' => 'STARTING',
  138. //REZXXX 'description' => 'DATANODE-STARTING',
  139. //REZXXX 'progress' => 'IN_PROGRESS',
  140. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  141. //REZXXX 'rank' => 3
  142. //REZXXX ),
  143. //REZXXX array(
  144. //REZXXX 'subTxnId' => 18,
  145. //REZXXX 'parentSubTxnId' => 14,
  146. //REZXXX 'state' => 'PENDING',
  147. //REZXXX 'description' => 'SNAMENODE-STARTING',
  148. //REZXXX 'progress' => 'PENDING',
  149. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  150. //REZXXX 'rank' => 4
  151. //REZXXX ),
  152. //REZXXX array(
  153. //REZXXX 'subTxnId' => 20,
  154. //REZXXX 'parentSubTxnId' => 13,
  155. //REZXXX 'state' => 'PENDING',
  156. //REZXXX 'description' => 'MAPREDUCE-STARTING',
  157. //REZXXX 'progress' => 'PENDING',
  158. //REZXXX 'subTxnType' => 'SERVICE',
  159. //REZXXX 'rank' => 5
  160. //REZXXX ),
  161. //REZXXX array(
  162. //REZXXX 'subTxnId' => 22,
  163. //REZXXX 'parentSubTxnId' => 20,
  164. //REZXXX 'state' => 'PENDING',
  165. //REZXXX 'description' => 'JOBTRACKER-STARTING',
  166. //REZXXX 'progress' => 'PENDING',
  167. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  168. //REZXXX 'rank' => 6
  169. //REZXXX ),
  170. //REZXXX array(
  171. //REZXXX 'subTxnId' => 23,
  172. //REZXXX 'parentSubTxnId' => 20,
  173. //REZXXX 'state' => 'PENDING',
  174. //REZXXX 'description' => 'TASKTRACKER-STARTING',
  175. //REZXXX 'progress' => 'PENDING',
  176. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  177. //REZXXX 'rank' => 7
  178. //REZXXX )
  179. //REZXXX )
  180. //REZXXX ),
  181. //REZXXX // Sample 2
  182. //REZXXX array(
  183. //REZXXX 'result' => 0,
  184. //REZXXX 'error' => '',
  185. //REZXXX 'processRunning' => 1,
  186. //REZXXX 'subTxns' => array(
  187. //REZXXX array(
  188. //REZXXX 'subTxnId' => 1,
  189. //REZXXX 'parentSubTxnId' => 0,
  190. //REZXXX 'state' => 'INSTALLED',
  191. //REZXXX 'description' => 'orchestratortestcluster-INSTALLED',
  192. //REZXXX 'progress' => 'COMPLETED',
  193. //REZXXX 'subTxnType' => 'CLUSTER',
  194. //REZXXX 'rank' => 0
  195. //REZXXX ),
  196. //REZXXX array(
  197. //REZXXX 'subTxnId' => 14,
  198. //REZXXX 'parentSubTxnId' => 13,
  199. //REZXXX 'state' => 'STARTING',
  200. //REZXXX 'description' => 'HDFS-STARTING',
  201. //REZXXX 'progress' => 'IN_PROGRESS',
  202. //REZXXX 'subTxnType' => 'SERVICE',
  203. //REZXXX 'rank' => 1
  204. //REZXXX ),
  205. //REZXXX array(
  206. //REZXXX 'subTxnId' => 16,
  207. //REZXXX 'parentSubTxnId' => 15,
  208. //REZXXX 'state' => 'STARTED',
  209. //REZXXX 'description' => 'NAMENODE-STARTED',
  210. //REZXXX 'progress' => 'COMPLETED',
  211. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  212. //REZXXX 'rank' => 2
  213. //REZXXX ),
  214. //REZXXX array(
  215. //REZXXX 'subTxnId' => 15,
  216. //REZXXX 'parentSubTxnId' => 14,
  217. //REZXXX 'state' => 'STARTING',
  218. //REZXXX 'description' => 'DATANODE-STARTING',
  219. //REZXXX 'progress' => 'IN_PROGRESS',
  220. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  221. //REZXXX 'rank' => 3
  222. //REZXXX ),
  223. //REZXXX array(
  224. //REZXXX 'subTxnId' => 18,
  225. //REZXXX 'parentSubTxnId' => 14,
  226. //REZXXX 'state' => 'PENDING',
  227. //REZXXX 'description' => 'SNAMENODE-STARTING',
  228. //REZXXX 'progress' => 'PENDING',
  229. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  230. //REZXXX 'rank' => 4
  231. //REZXXX ),
  232. //REZXXX array(
  233. //REZXXX 'subTxnId' => 20,
  234. //REZXXX 'parentSubTxnId' => 13,
  235. //REZXXX 'state' => 'PENDING',
  236. //REZXXX 'description' => 'MAPREDUCE-STARTING',
  237. //REZXXX 'progress' => 'PENDING',
  238. //REZXXX 'subTxnType' => 'SERVICE',
  239. //REZXXX 'rank' => 5
  240. //REZXXX ),
  241. //REZXXX array(
  242. //REZXXX 'subTxnId' => 22,
  243. //REZXXX 'parentSubTxnId' => 20,
  244. //REZXXX 'state' => 'PENDING',
  245. //REZXXX 'description' => 'JOBTRACKER-STARTING',
  246. //REZXXX 'progress' => 'PENDING',
  247. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  248. //REZXXX 'rank' => 6
  249. //REZXXX ),
  250. //REZXXX array(
  251. //REZXXX 'subTxnId' => 23,
  252. //REZXXX 'parentSubTxnId' => 20,
  253. //REZXXX 'state' => 'PENDING',
  254. //REZXXX 'description' => 'TASKTRACKER-STARTING',
  255. //REZXXX 'progress' => 'PENDING',
  256. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  257. //REZXXX 'rank' => 7
  258. //REZXXX )
  259. //REZXXX )
  260. //REZXXX ),
  261. //REZXXX // Sample 3
  262. //REZXXX array(
  263. //REZXXX 'result' => 0,
  264. //REZXXX 'error' => '',
  265. //REZXXX 'processRunning' => 1,
  266. //REZXXX 'subTxns' => array(
  267. //REZXXX array(
  268. //REZXXX 'subTxnId' => 1,
  269. //REZXXX 'parentSubTxnId' => 0,
  270. //REZXXX 'state' => 'INSTALLED',
  271. //REZXXX 'description' => 'orchestratortestcluster-INSTALLED',
  272. //REZXXX 'progress' => 'COMPLETED',
  273. //REZXXX 'subTxnType' => 'CLUSTER',
  274. //REZXXX 'rank' => 0
  275. //REZXXX ),
  276. //REZXXX array(
  277. //REZXXX 'subTxnId' => 14,
  278. //REZXXX 'parentSubTxnId' => 13,
  279. //REZXXX 'state' => 'STARTING',
  280. //REZXXX 'description' => 'HDFS-STARTING',
  281. //REZXXX 'progress' => 'IN_PROGRESS',
  282. //REZXXX 'subTxnType' => 'SERVICE',
  283. //REZXXX 'rank' => 1
  284. //REZXXX ),
  285. //REZXXX array(
  286. //REZXXX 'subTxnId' => 16,
  287. //REZXXX 'parentSubTxnId' => 15,
  288. //REZXXX 'state' => 'STARTED',
  289. //REZXXX 'description' => 'NAMENODE-STARTED',
  290. //REZXXX 'progress' => 'COMPLETED',
  291. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  292. //REZXXX 'rank' => 2
  293. //REZXXX ),
  294. //REZXXX array(
  295. //REZXXX 'subTxnId' => 15,
  296. //REZXXX 'parentSubTxnId' => 14,
  297. //REZXXX 'state' => 'STARTED',
  298. //REZXXX 'description' => 'DATANODE-STARTED',
  299. //REZXXX 'progress' => 'COMPLETED',
  300. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  301. //REZXXX 'rank' => 3
  302. //REZXXX ),
  303. //REZXXX array(
  304. //REZXXX 'subTxnId' => 18,
  305. //REZXXX 'parentSubTxnId' => 14,
  306. //REZXXX 'state' => 'STARTING',
  307. //REZXXX 'description' => 'SNAMENODE-STARTING',
  308. //REZXXX 'progress' => 'IN_PROGRESS',
  309. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  310. //REZXXX 'rank' => 4
  311. //REZXXX ),
  312. //REZXXX array(
  313. //REZXXX 'subTxnId' => 20,
  314. //REZXXX 'parentSubTxnId' => 13,
  315. //REZXXX 'state' => 'PENDING',
  316. //REZXXX 'description' => 'MAPREDUCE-STARTING',
  317. //REZXXX 'progress' => 'PENDING',
  318. //REZXXX 'subTxnType' => 'SERVICE',
  319. //REZXXX 'rank' => 5
  320. //REZXXX ),
  321. //REZXXX array(
  322. //REZXXX 'subTxnId' => 22,
  323. //REZXXX 'parentSubTxnId' => 20,
  324. //REZXXX 'state' => 'PENDING',
  325. //REZXXX 'description' => 'JOBTRACKER-STARTING',
  326. //REZXXX 'progress' => 'PENDING',
  327. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  328. //REZXXX 'rank' => 6
  329. //REZXXX ),
  330. //REZXXX array(
  331. //REZXXX 'subTxnId' => 23,
  332. //REZXXX 'parentSubTxnId' => 20,
  333. //REZXXX 'state' => 'PENDING',
  334. //REZXXX 'description' => 'TASKTRACKER-STARTING',
  335. //REZXXX 'progress' => 'PENDING',
  336. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  337. //REZXXX 'rank' => 7
  338. //REZXXX )
  339. //REZXXX )
  340. //REZXXX ),
  341. //REZXXX // Sample 4
  342. //REZXXX array(
  343. //REZXXX 'result' => 0,
  344. //REZXXX 'error' => '',
  345. //REZXXX 'processRunning' => 1,
  346. //REZXXX 'subTxns' => array(
  347. //REZXXX array(
  348. //REZXXX 'subTxnId' => 1,
  349. //REZXXX 'parentSubTxnId' => 0,
  350. //REZXXX 'state' => 'INSTALLED',
  351. //REZXXX 'description' => 'orchestratortestcluster-INSTALLED',
  352. //REZXXX 'progress' => 'COMPLETED',
  353. //REZXXX 'subTxnType' => 'CLUSTER',
  354. //REZXXX 'rank' => 0
  355. //REZXXX ),
  356. //REZXXX array(
  357. //REZXXX 'subTxnId' => 14,
  358. //REZXXX 'parentSubTxnId' => 13,
  359. //REZXXX 'state' => 'STARTED',
  360. //REZXXX 'description' => 'HDFS-STARTED',
  361. //REZXXX 'progress' => 'COMPLETED',
  362. //REZXXX 'subTxnType' => 'SERVICE',
  363. //REZXXX 'rank' => 1
  364. //REZXXX ),
  365. //REZXXX array(
  366. //REZXXX 'subTxnId' => 16,
  367. //REZXXX 'parentSubTxnId' => 15,
  368. //REZXXX 'state' => 'STARTED',
  369. //REZXXX 'description' => 'NAMENODE-STARTED',
  370. //REZXXX 'progress' => 'COMPLETED',
  371. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  372. //REZXXX 'rank' => 2
  373. //REZXXX ),
  374. //REZXXX array(
  375. //REZXXX 'subTxnId' => 15,
  376. //REZXXX 'parentSubTxnId' => 14,
  377. //REZXXX 'state' => 'STARTED',
  378. //REZXXX 'description' => 'DATANODE-STARTED',
  379. //REZXXX 'progress' => 'COMPLETED',
  380. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  381. //REZXXX 'rank' => 3
  382. //REZXXX ),
  383. //REZXXX array(
  384. //REZXXX 'subTxnId' => 18,
  385. //REZXXX 'parentSubTxnId' => 14,
  386. //REZXXX 'state' => 'STARTED',
  387. //REZXXX 'description' => 'SNAMENODE-STARTED',
  388. //REZXXX 'progress' => 'COMPLETED',
  389. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  390. //REZXXX 'rank' => 4
  391. //REZXXX ),
  392. //REZXXX array(
  393. //REZXXX 'subTxnId' => 20,
  394. //REZXXX 'parentSubTxnId' => 13,
  395. //REZXXX 'state' => 'STARTING',
  396. //REZXXX 'description' => 'MAPREDUCE-STARTING',
  397. //REZXXX 'progress' => 'IN_PROGRESS',
  398. //REZXXX 'subTxnType' => 'SERVICE',
  399. //REZXXX 'rank' => 5
  400. //REZXXX ),
  401. //REZXXX array(
  402. //REZXXX 'subTxnId' => 22,
  403. //REZXXX 'parentSubTxnId' => 20,
  404. //REZXXX 'state' => 'STARTING',
  405. //REZXXX 'description' => 'JOBTRACKER-STARTING',
  406. //REZXXX 'progress' => 'IN_PROGRESS',
  407. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  408. //REZXXX 'rank' => 6
  409. //REZXXX ),
  410. //REZXXX array(
  411. //REZXXX 'subTxnId' => 23,
  412. //REZXXX 'parentSubTxnId' => 20,
  413. //REZXXX 'state' => 'PENDING',
  414. //REZXXX 'description' => 'TASKTRACKER-STARTING',
  415. //REZXXX 'progress' => 'PENDING',
  416. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  417. //REZXXX 'rank' => 7
  418. //REZXXX )
  419. //REZXXX )
  420. //REZXXX ),
  421. //REZXXX // Sample 5
  422. //REZXXX array(
  423. //REZXXX 'result' => 0,
  424. //REZXXX 'error' => '',
  425. //REZXXX 'processRunning' => 1,
  426. //REZXXX 'subTxns' => array(
  427. //REZXXX array(
  428. //REZXXX 'subTxnId' => 1,
  429. //REZXXX 'parentSubTxnId' => 0,
  430. //REZXXX 'state' => 'INSTALLED',
  431. //REZXXX 'description' => 'orchestratortestcluster-INSTALLED',
  432. //REZXXX 'progress' => 'COMPLETED',
  433. //REZXXX 'subTxnType' => 'CLUSTER',
  434. //REZXXX 'rank' => 0
  435. //REZXXX ),
  436. //REZXXX array(
  437. //REZXXX 'subTxnId' => 14,
  438. //REZXXX 'parentSubTxnId' => 13,
  439. //REZXXX 'state' => 'STARTED',
  440. //REZXXX 'description' => 'HDFS-STARTED',
  441. //REZXXX 'progress' => 'COMPLETED',
  442. //REZXXX 'subTxnType' => 'SERVICE',
  443. //REZXXX 'rank' => 1
  444. //REZXXX ),
  445. //REZXXX array(
  446. //REZXXX 'subTxnId' => 16,
  447. //REZXXX 'parentSubTxnId' => 15,
  448. //REZXXX 'state' => 'STARTED',
  449. //REZXXX 'description' => 'NAMENODE-STARTED',
  450. //REZXXX 'progress' => 'COMPLETED',
  451. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  452. //REZXXX 'rank' => 2
  453. //REZXXX ),
  454. //REZXXX array(
  455. //REZXXX 'subTxnId' => 15,
  456. //REZXXX 'parentSubTxnId' => 14,
  457. //REZXXX 'state' => 'STARTED',
  458. //REZXXX 'description' => 'DATANODE-STARTED',
  459. //REZXXX 'progress' => 'COMPLETED',
  460. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  461. //REZXXX 'rank' => 3
  462. //REZXXX ),
  463. //REZXXX array(
  464. //REZXXX 'subTxnId' => 18,
  465. //REZXXX 'parentSubTxnId' => 14,
  466. //REZXXX 'state' => 'STARTED',
  467. //REZXXX 'description' => 'SNAMENODE-STARTED',
  468. //REZXXX 'progress' => 'COMPLETED',
  469. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  470. //REZXXX 'rank' => 4
  471. //REZXXX ),
  472. //REZXXX array(
  473. //REZXXX 'subTxnId' => 20,
  474. //REZXXX 'parentSubTxnId' => 13,
  475. //REZXXX 'state' => 'STARTING',
  476. //REZXXX 'description' => 'MAPREDUCE-STARTING',
  477. //REZXXX 'progress' => 'IN_PROGRESS',
  478. //REZXXX 'subTxnType' => 'SERVICE',
  479. //REZXXX 'rank' => 5
  480. //REZXXX ),
  481. //REZXXX array(
  482. //REZXXX 'subTxnId' => 22,
  483. //REZXXX 'parentSubTxnId' => 20,
  484. //REZXXX 'state' => 'STARTED',
  485. //REZXXX 'description' => 'JOBTRACKER-STARTED',
  486. //REZXXX 'progress' => 'COMPLETED',
  487. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  488. //REZXXX 'rank' => 6
  489. //REZXXX ),
  490. //REZXXX array(
  491. //REZXXX 'subTxnId' => 23,
  492. //REZXXX 'parentSubTxnId' => 20,
  493. //REZXXX 'state' => 'STARTING',
  494. //REZXXX 'description' => 'TASKTRACKER-STARTING',
  495. //REZXXX 'progress' => 'IN_PROGRESS',
  496. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  497. //REZXXX 'rank' => 7
  498. //REZXXX )
  499. //REZXXX )
  500. //REZXXX ),
  501. //REZXXX // Sample 6
  502. //REZXXX array(
  503. //REZXXX 'result' => 0,
  504. //REZXXX 'error' => '',
  505. //REZXXX 'processRunning' => 0,
  506. //REZXXX 'subTxns' => array(
  507. //REZXXX array(
  508. //REZXXX 'subTxnId' => 1,
  509. //REZXXX 'parentSubTxnId' => 0,
  510. //REZXXX 'state' => 'INSTALLED',
  511. //REZXXX 'description' => 'orchestratortestcluster-INSTALLED',
  512. //REZXXX 'progress' => 'COMPLETED',
  513. //REZXXX 'subTxnType' => 'CLUSTER',
  514. //REZXXX 'rank' => 0
  515. //REZXXX ),
  516. //REZXXX array(
  517. //REZXXX 'subTxnId' => 14,
  518. //REZXXX 'parentSubTxnId' => 13,
  519. //REZXXX 'state' => 'STARTED',
  520. //REZXXX 'description' => 'HDFS-STARTED',
  521. //REZXXX 'progress' => 'COMPLETED',
  522. //REZXXX 'subTxnType' => 'SERVICE',
  523. //REZXXX 'rank' => 1
  524. //REZXXX ),
  525. //REZXXX array(
  526. //REZXXX 'subTxnId' => 16,
  527. //REZXXX 'parentSubTxnId' => 15,
  528. //REZXXX 'state' => 'STARTED',
  529. //REZXXX 'description' => 'NAMENODE-STARTED',
  530. //REZXXX 'progress' => 'COMPLETED',
  531. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  532. //REZXXX 'rank' => 2
  533. //REZXXX ),
  534. //REZXXX array(
  535. //REZXXX 'subTxnId' => 15,
  536. //REZXXX 'parentSubTxnId' => 14,
  537. //REZXXX 'state' => 'STARTED',
  538. //REZXXX 'description' => 'DATANODE-STARTED',
  539. //REZXXX 'progress' => 'COMPLETED',
  540. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  541. //REZXXX 'rank' => 3
  542. //REZXXX ),
  543. //REZXXX array(
  544. //REZXXX 'subTxnId' => 18,
  545. //REZXXX 'parentSubTxnId' => 14,
  546. //REZXXX 'state' => 'STARTED',
  547. //REZXXX 'description' => 'SNAMENODE-STARTED',
  548. //REZXXX 'progress' => 'COMPLETED',
  549. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  550. //REZXXX 'rank' => 4
  551. //REZXXX ),
  552. //REZXXX array(
  553. //REZXXX 'subTxnId' => 20,
  554. //REZXXX 'parentSubTxnId' => 13,
  555. //REZXXX 'state' => 'STARTED',
  556. //REZXXX 'description' => 'MAPREDUCE-STARTED',
  557. //REZXXX 'progress' => 'COMPLETED',
  558. //REZXXX 'subTxnType' => 'SERVICE',
  559. //REZXXX 'rank' => 5
  560. //REZXXX ),
  561. //REZXXX array(
  562. //REZXXX 'subTxnId' => 22,
  563. //REZXXX 'parentSubTxnId' => 20,
  564. //REZXXX 'state' => 'STARTED',
  565. //REZXXX 'description' => 'JOBTRACKER-STARTED',
  566. //REZXXX 'progress' => 'COMPLETED',
  567. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  568. //REZXXX 'rank' => 6
  569. //REZXXX ),
  570. //REZXXX array(
  571. //REZXXX 'subTxnId' => 23,
  572. //REZXXX 'parentSubTxnId' => 20,
  573. //REZXXX 'state' => 'STARTED',
  574. //REZXXX 'description' => 'TASKTRACKER-STARTED',
  575. //REZXXX 'progress' => 'COMPLETED',
  576. //REZXXX 'subTxnType' => 'SERVICECOMPONENT',
  577. //REZXXX 'rank' => 7
  578. //REZXXX )
  579. //REZXXX )
  580. //REZXXX )
  581. //REZXXX );
  582. //REZXXX
  583. //REZXXX define('LAST_PROGRESS_STATE_INDEX_FILE', '/tmp/rezDeployProgressStateIndex' . $txnId);
  584. //REZXXX
  585. //REZXXX function fetchLastProgressStateIndex()
  586. //REZXXX {
  587. //REZXXX $lastProgressStateIndex = 0;
  588. //REZXXX
  589. //REZXXX if( file_exists(LAST_PROGRESS_STATE_INDEX_FILE) )
  590. //REZXXX {
  591. //REZXXX $lastProgressStateIndex = trim( file_get_contents(LAST_PROGRESS_STATE_INDEX_FILE) );
  592. //REZXXX }
  593. //REZXXX
  594. //REZXXX return $lastProgressStateIndex;
  595. //REZXXX }
  596. //REZXXX
  597. //REZXXX function storeLastProgressStateIndex( $latestProgressStateIndex )
  598. //REZXXX {
  599. //REZXXX file_put_contents(LAST_PROGRESS_STATE_INDEX_FILE, $latestProgressStateIndex);
  600. //REZXXX }
  601. function fetchTxnProgress( $txnId )
  602. {
  603. global $dbPath;
  604. global $clusterName;
  605. $hmc = new HMC($dbPath, $clusterName);
  606. $progress = $hmc->getProgress($txnId);
  607. //REZXXX global $dummyDeployProgressData;
  608. //REZXXX
  609. //REZXXX $lastProgressStateIndex = fetchLastProgressStateIndex();
  610. //REZXXX
  611. //REZXXX $progress = $dummyDeployProgressData[$lastProgressStateIndex];
  612. //REZXXX
  613. //REZXXX $currentProgressStateIndex = $lastProgressStateIndex;
  614. //REZXXX
  615. //REZXXX /* Progress to the next state only if we haven't already reached the end.
  616. //REZXXX *
  617. //REZXXX * We expect callers to stop to call this webservice once this condition is
  618. //REZXXX * reached in any case, but let's be safe all the same.
  619. //REZXXX */
  620. //REZXXX if( $lastProgressStateIndex < count($dummyDeployProgressData) )
  621. //REZXXX {
  622. //REZXXX /* Randomize the rate of our progress, in steps of 1. */
  623. //REZXXX $currentProgressStateIndex = (rand() % 2) ? ($lastProgressStateIndex + 1) : ($lastProgressStateIndex);
  624. //REZXXX
  625. //REZXXX /* Update our disk cookie. */
  626. //REZXXX storeLastProgressStateIndex( $currentProgressStateIndex );
  627. //REZXXX }
  628. return $progress;
  629. }
  630. function sortProgressStatesByRank( $first, $second )
  631. {
  632. if( $first['rank'] == $second['rank'] )
  633. {
  634. return 0;
  635. }
  636. return ($first['rank'] < $second['rank']) ? -1 : 1;
  637. }
  638. $progress = fetchTxnProgress($txnId);
  639. // TODO XXX Check for $progress['result'] and $progress['error'] here, before proceeding.
  640. /* Tack on some additional state to make life on the frontend easier. */
  641. $progress['encounteredError'] = false;
  642. /* Marker to keep track of whether at least one subTxn has been kicked off. */
  643. $atLeastOneSubTxnInProgress = false;
  644. /* Sort the subTxns array inside $progress by rank, and then remove all notion
  645. * of rank from the sorted array we're going to return.
  646. */
  647. usort( $progress['subTxns'], 'sortProgressStatesByRank' );
  648. foreach( $progress['subTxns'] as &$progressSubTxn )
  649. {
  650. unset( $progressSubTxn['rank'] );
  651. /* Any one subTxn failing means we want the frontend to bail. */
  652. if( $progressSubTxn['progress'] == 'FAILED' )
  653. {
  654. $progress['encounteredError'] = true;
  655. }
  656. /* We need to make sure at least one subTxn is not pending before
  657. * sending a progress report back to the frontend - if not, the
  658. * progress states aren't yet finalized and will change across
  659. * invocations to this webservice, so we prefer to wait before
  660. * showing anything.
  661. */
  662. if( $progressSubTxn['progress'] != 'PENDING' )
  663. {
  664. $atLeastOneSubTxnInProgress = true;
  665. }
  666. }
  667. $lastTransaction = $progressSubTxn;
  668. /* If at least one subTxn isn't in progress, signal to the frontend that
  669. * there's nothing worthy for it to process yet.
  670. */
  671. if (!$atLeastOneSubTxnInProgress) {
  672. $progress['subTxns'] = null;
  673. }
  674. $dbAccessor = new HMCDBAccessor($GLOBALS["DB_PATH"]);
  675. if (($progress['processRunning'] == FALSE) || ($progress['encounteredError'] == TRUE)) {
  676. // get the transaction status info from db
  677. $retval = $dbAccessor->getTransactionStatusInfo($clusterName, $txnId);
  678. if ($retval["result"] != 0) {
  679. $progress['encounteredError'] = TRUE;
  680. } else {
  681. $statusInfo = json_decode($retval['statusInfo'], true);
  682. $logger->log_debug("Status info function ".$statusInfo['function']);
  683. // run the next script from the map
  684. foreach ($map[$statusInfo['function']] as $postProcessFunc) {
  685. $logger->log_debug("Post process function is ".$postProcessFunc);
  686. $retval = $postProcessFunc($clusterName, $deployUser, $txnId, $progress);
  687. if ($retval["result"] != 0) {
  688. $progress['encounteredError'] = TRUE;
  689. break;
  690. }
  691. }
  692. }
  693. }
  694. /* Clean up some more remnants that we don't need on the frontend. */
  695. unset( $progress['result'] );
  696. unset( $progress['error'] );
  697. /* Create the output data... */
  698. $jsonOutput = array(
  699. 'clusterName' => $clusterName,
  700. 'txnId' => $txnId,
  701. 'progress' => $progress );
  702. if ($deployUser != null) {
  703. $jsonOutput['deployUser'] = $deployUser;
  704. }
  705. /* ...and spit it out. */
  706. header("Content-type: application/json");
  707. print (json_encode($jsonOutput));
  708. ?>