stack_upgrade_wizard.hbs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. {{!
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. }}
  18. <div id="stack-upgrade-dialog">
  19. <div {{bindAttr class=":upgrade-options-link controller.isDowngrade:disabled"}} {{action openUpgradeOptions target="controller"}}>
  20. <i class="icon-cogs"></i><a>{{t common.options}}</a>
  21. </div>
  22. <div {{bindAttr class="view.isLoaded::hidden :row-fluid"}}>
  23. <div class="span3 task-list-main-warp">{{statusIcon controller.requestStatus}}
  24. &nbsp;{{view.upgradeStatusLabel}}</div>
  25. <div class="span8">
  26. {{view App.ProgressBarView
  27. progressBinding="view.overallProgress"
  28. statusBinding="controller.requestStatus"
  29. }}
  30. </div>
  31. <div class="span1">
  32. {{view.overallProgress}}%
  33. </div>
  34. </div>
  35. <div class="task-list scrollable-block task-list-main-warp">
  36. {{#if view.isLoaded}}
  37. <div>
  38. {{#if view.runningItem}}
  39. <div class="box details-box">
  40. <div class="row-fluid">
  41. <div class="pull-left">{{t admin.stackUpgrade.dialog.inProgress}}&nbsp;{{view.runningItem.text}}</div>
  42. {{#if view.isDetailsOpened}}
  43. <a href="#" class="pull-right" {{action toggleDetails target="view"}}>{{t admin.stackUpgrade.dialog.details.hide}}</a>
  44. {{#if view.runningItem.isTasksLoaded}}
  45. <div class="clear">
  46. {{view App.upgradeTaskView contentBinding="view.taskDetails" outsideViewBinding="view.outsideView"}}
  47. </div>
  48. {{else}}
  49. {{view App.SpinnerView classNames="clear"}}
  50. {{/if}}
  51. {{else}}
  52. <a href="#" class="pull-right" {{action toggleDetails target="view"}}>{{t admin.stackUpgrade.dialog.details.open}}</a>
  53. {{/if}}
  54. </div>
  55. </div>
  56. {{/if}}
  57. {{#if view.failedItem}}
  58. {{#unless view.isSlaveComponentFailuresItem}}
  59. <div class="box details-box">
  60. <div class="row-fluid">
  61. <div class="pull-left">{{t admin.stackUpgrade.dialog.failed}}&nbsp;{{view.failedItem.text}}</div>
  62. {{#if view.isDetailsOpened}}
  63. <a href="#" class="pull-right" {{action toggleDetails target="view"}}>{{t admin.stackUpgrade.dialog.details.hide}}</a>
  64. {{#if view.failedItem.isTasksLoaded}}
  65. <div class="clear">
  66. {{view App.upgradeTaskView contentBinding="view.taskDetails" outsideViewBinding="view.outsideView"}}
  67. </div>
  68. {{else}}
  69. {{view App.SpinnerView classNames="clear"}}
  70. {{/if}}
  71. {{else}}
  72. <a href="#" class="pull-right" {{action toggleDetails target="view"}}>{{t admin.stackUpgrade.dialog.details.open}}</a>
  73. {{/if}}
  74. </div>
  75. {{#if view.isHoldingState}}
  76. <div class="button-row">
  77. {{#if view.isDowngradeAvailable}}
  78. <button class="btn btn-danger" {{bindAttr disabled="controller.requestInProgress"}} {{action confirmDowngrade view.failedItem target="controller"}}>{{t common.downgrade}}</button>
  79. {{/if}}
  80. {{#if isDowngrade}}
  81. <button class="btn" {{action confirmPauseDowngrade target="view"}}>{{t admin.stackUpgrade.pauseDowngrade}}</button>
  82. {{else}}
  83. <button class="btn" {{action confirmPauseUpgrade target="view"}}>{{t admin.stackUpgrade.pauseUpgrade}}</button>
  84. {{/if}}
  85. {{#if view.failedItem.skippable}}
  86. <button class="btn btn-warning" {{bindAttr disabled="controller.requestInProgress"}} {{action continue view.failedItem target="view"}}>{{t admin.stackUpgrade.dialog.continue}}</button>
  87. {{/if}}
  88. <button class="btn" {{bindAttr disabled="controller.requestInProgress"}} {{action retry view.failedItem target="view"}}>{{t common.retry}}</button>
  89. </div>
  90. {{/if}}
  91. </div>
  92. {{/unless}}
  93. {{/if}}
  94. {{#if view.plainManualItem}}
  95. <div class="box details-box">
  96. <p class="manual-steps-title"><strong>{{t admin.stackUpgrade.dialog.manual}}</strong></p>
  97. {{#each message in view.manualItem.messages}}
  98. <p class="manual-steps-content">{{message}}</p>
  99. {{/each}}
  100. <label class="message">
  101. {{view Em.Checkbox checkedBinding="view.isManualDone"}}
  102. {{t admin.stackUpgrade.dialog.manualDone}}
  103. </label>
  104. <div class="button-row">
  105. {{#if view.isDowngradeAvailable}}
  106. <button class="btn btn-danger" {{bindAttr disabled="controller.requestInProgress"}} {{action confirmDowngrade view.manualItem target="controller"}}>{{t common.downgrade}}</button>
  107. {{/if}}
  108. {{#if isDowngrade}}
  109. <button class="btn" {{action confirmPauseDowngrade target="view"}}>{{t admin.stackUpgrade.pauseDowngrade}}</button>
  110. {{else}}
  111. <button class="btn" {{action confirmPauseUpgrade target="view"}}>{{t admin.stackUpgrade.pauseUpgrade}}</button>
  112. {{/if}}
  113. <button class="btn btn-success" {{bindAttr disabled="view.isManualProceedDisabled"}} {{action complete view.manualItem target="view"}}>
  114. {{t common.proceed}}
  115. </button>
  116. </div>
  117. </div>
  118. {{/if}}
  119. {{#if view.isFinalizeItem}}
  120. <div class="box details-box">
  121. <p class="manual-steps-title"><strong>{{t admin.stackUpgrade.dialog.manual}}</strong></p>
  122. {{#if isDowngrade}}
  123. <p class="manual-steps-content">{{t admin.stackUpgrade.finalize.message.downgrade}}</p>
  124. {{else}}
  125. <p class="manual-steps-content">{{t admin.stackUpgrade.finalize.message.upgrade}}</p>
  126. {{/if}}
  127. {{#if areSkippedServiceChecksLoaded}}
  128. {{#if skippedServiceChecks.length}}
  129. <div>{{t admin.stackUpgrade.finalize.message.skippedServiceChecks}}</div>
  130. <ul>
  131. {{#each serviceName in skippedServiceChecks}}
  132. <li>{{serviceName}}</li>
  133. {{/each}}
  134. </ul>
  135. <div>{{t admin.stackUpgrade.finalize.message.testServices}}</div>
  136. {{/if}}
  137. {{else}}
  138. {{view App.SpinnerView}}
  139. {{/if}}
  140. <label class="message">
  141. {{view Em.Checkbox checkedBinding="view.isManualDone"}}
  142. {{t admin.stackUpgrade.dialog.manualDone}}
  143. </label>
  144. <div class="button-row">
  145. {{#if view.isDowngradeAvailable}}
  146. <button class="btn btn-danger" {{bindAttr disabled="controller.requestInProgress"}} {{action confirmDowngrade view.manualItem target="controller"}}>{{t common.downgrade}}</button>
  147. {{/if}}
  148. <button class="btn" {{action confirmPauseUpgrade target="view"}}>{{t admin.stackUpgrade.finalize.later}}</button>
  149. <button class="btn btn-success" {{bindAttr disabled="view.isManualProceedDisabled"}} {{action complete view.manualItem target="view"}}>
  150. {{t common.finalize}}
  151. </button>
  152. </div>
  153. </div>
  154. {{/if}}
  155. {{#if view.isSlaveComponentFailuresItem}}
  156. <div class="box details-box">
  157. <p class="manual-steps-title"><strong>{{t admin.stackUpgrade.dialog.manual}}</strong></p>
  158. <div class="slave-failures-info">
  159. <p>
  160. {{#if areSlaveComponentFailuresHostsLoaded}}
  161. {{t admin.stackUpgrade.failedHosts.message}}
  162. <a href="#" {{action showFailedHosts target="view"}}>{{view.failedHostsMessage}}</a>
  163. {{else}}
  164. {{view App.SpinnerView}}
  165. {{/if}}
  166. </p>
  167. <p>
  168. {{t admin.stackUpgrade.failedHosts.options}}
  169. <ul>
  170. <li>{{t admin.stackUpgrade.failedHosts.options.first}}</li>
  171. {{#if view.isDowngradeAvailable}}
  172. <li>{{t admin.stackUpgrade.failedHosts.options.second}}</li>
  173. {{/if}}
  174. </ul>
  175. </p>
  176. </div>
  177. {{#unless view.isHoldingState}}
  178. <label class="message">
  179. {{view Em.Checkbox checkedBinding="view.isManualDone"}}
  180. {{t admin.stackUpgrade.dialog.manualDone}}
  181. </label>
  182. {{/unless}}
  183. <div class="button-row">
  184. {{#if view.isDowngradeAvailable}}
  185. <button class="btn btn-danger" {{bindAttr disabled="controller.requestInProgress"}} {{action confirmDowngrade view.manualItem target="controller"}}>{{t common.downgrade}}</button>
  186. {{/if}}
  187. {{#if isDowngrade}}
  188. <button class="btn" {{action confirmPauseDowngrade target="view"}}>{{t admin.stackUpgrade.pauseDowngrade}}</button>
  189. {{else}}
  190. <button class="btn" {{action confirmPauseUpgrade target="view"}}>{{t admin.stackUpgrade.pauseUpgrade}}</button>
  191. {{/if}}
  192. {{#if view.isHoldingState}}
  193. <button class="btn" {{bindAttr disabled="controller.requestInProgress"}} {{action retry view.failedItem target="view"}}>{{t common.retry}}</button>
  194. {{else}}
  195. <button class="btn btn-success" {{bindAttr disabled="view.isManualProceedDisabled"}} {{action complete view.manualItem target="view"}}>
  196. {{t common.proceed}}
  197. </button>
  198. {{/if}}
  199. </div>
  200. </div>
  201. {{/if}}
  202. {{#if view.isServiceCheckFailuresItem}}
  203. <div class="box details-box">
  204. <p class="manual-steps-title"><strong>{{t admin.stackUpgrade.dialog.manual}}</strong></p>
  205. {{#if areServiceCheckFailuresServicenamesLoaded}}
  206. {{#if serviceCheckFailuresServicenames.length}}
  207. <div class="service-check-failures-info">
  208. <p class="service-check-failures-title"><strong>{{t admin.stackUpgrade.dialog.manual.serviceCheckFailures.title}}</strong></p>
  209. <div>{{t admin.stackUpgrade.dialog.manual.serviceCheckFailures.msg1}}</div>
  210. <ul class="failed-info-list">
  211. {{#each serviceName in serviceCheckFailuresServicenames}}
  212. <li>{{serviceName}}</li>
  213. {{/each}}
  214. </ul>
  215. <div>{{t admin.stackUpgrade.dialog.manual.serviceCheckFailures.msg2}}</div>
  216. </div>
  217. {{/if}}
  218. {{#if slaveComponentStructuredInfo.hosts.length}}
  219. <div class="slave-failures-info">
  220. <p class="slave-failures-title"><strong>{{t admin.stackUpgrade.dialog.manual.slaveComponentFailures.title}}</strong></p>
  221. <p>
  222. {{t admin.stackUpgrade.failedHosts.message}}
  223. <a href="#" {{action showFailedHosts target="view"}}>{{view.failedHostsMessage}}</a>
  224. </p>
  225. <p>
  226. {{t admin.stackUpgrade.failedHosts.options}}
  227. <ul>
  228. <li>{{t admin.stackUpgrade.failedHosts.options.first}}</li>
  229. <li>{{t admin.stackUpgrade.failedHosts.options.third}}</li>
  230. {{#if view.isDowngradeAvailable}}
  231. <li>{{t admin.stackUpgrade.failedHosts.options.second}}</li>
  232. {{/if}}
  233. </ul>
  234. </p>
  235. </div>
  236. {{/if}}
  237. {{else}}
  238. {{view App.SpinnerView}}
  239. {{/if}}
  240. <label class="message">
  241. {{view Em.Checkbox checkedBinding="view.isManualDone"}}
  242. {{t admin.stackUpgrade.dialog.manualDone}}
  243. </label>
  244. <div class="button-row">
  245. {{#if view.isDowngradeAvailable}}
  246. <button class="btn btn-danger" {{bindAttr disabled="controller.requestInProgress"}} {{action confirmDowngrade view.manualItem target="controller"}}>{{t common.downgrade}}</button>
  247. {{/if}}
  248. {{#if isDowngrade}}
  249. <button class="btn" {{action confirmPauseDowngrade target="view"}}>{{t admin.stackUpgrade.pauseDowngrade}}</button>
  250. {{else}}
  251. <button class="btn" {{action confirmPauseUpgrade target="view"}}>{{t admin.stackUpgrade.pauseUpgrade}}</button>
  252. {{/if}}
  253. <button class="btn btn-success" {{bindAttr disabled="view.isManualProceedDisabled"}} {{action complete view.manualItem target="view"}}>
  254. {{t common.proceed}}
  255. </button>
  256. </div>
  257. </div>
  258. {{/if}}
  259. {{#if view.noActiveItem}}
  260. <div class="box details-box">
  261. <div>
  262. {{t admin.stackUpgrade.dialog.notActive}}
  263. </div>
  264. </div>
  265. {{/if}}
  266. {{#if App.upgradeSuspended}}
  267. <div class="box details-box">
  268. <label class="message">
  269. {{#if isDowngrade}}
  270. {{t admin.stackUpgrade.dialog.suspended.downgrade}}
  271. {{else}}
  272. {{t admin.stackUpgrade.dialog.suspended}}
  273. {{/if}}
  274. </label>
  275. <div class="button-row">
  276. {{#if isDowngrade}}
  277. <button class="btn btn-primary" {{action resumeUpgrade target="controller"}}>
  278. {{t admin.stackUpgrade.dialog.resume.downgrade}}
  279. </button>
  280. {{else}}
  281. <button class="btn btn-primary" {{action resumeUpgrade target="controller"}}>
  282. {{t admin.stackUpgrade.dialog.resume}}
  283. </button>
  284. {{/if}}
  285. </div>
  286. </div>
  287. {{/if}}
  288. </div>
  289. {{#each group in view.upgradeGroups}}
  290. {{#if group.isVisible}}
  291. {{view App.upgradeGroupView contentBinding="group"}}
  292. {{/if}}
  293. {{/each}}
  294. {{/if}}
  295. </div>
  296. {{#unless view.isLoaded}}
  297. {{view App.SpinnerView}}
  298. {{/unless}}
  299. </div>