stack_upgrade_wizard.hbs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  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 pauseUpgrade target="view"}}>{{t admin.stackUpgrade.pauseDowngrade}}</button>
  82. {{else}}
  83. <button class="btn" {{action pauseUpgrade 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. <p class="manual-steps-content">{{view.manualItem.text}}</p>
  98. <label class="message">
  99. {{view Em.Checkbox checkedBinding="view.isManualDone"}}
  100. {{t admin.stackUpgrade.dialog.manualDone}}
  101. </label>
  102. <div class="button-row">
  103. {{#if view.isDowngradeAvailable}}
  104. <button class="btn btn-danger" {{bindAttr disabled="controller.requestInProgress"}} {{action confirmDowngrade view.manualItem target="controller"}}>{{t common.downgrade}}</button>
  105. {{/if}}
  106. {{#if isDowngrade}}
  107. <button class="btn" {{action pauseUpgrade target="view"}}>{{t admin.stackUpgrade.pauseDowngrade}}</button>
  108. {{else}}
  109. <button class="btn" {{action pauseUpgrade target="view"}}>{{t admin.stackUpgrade.pauseUpgrade}}</button>
  110. {{/if}}
  111. <button class="btn btn-success" {{bindAttr disabled="view.isManualProceedDisabled"}} {{action complete view.manualItem target="view"}}>
  112. {{t common.proceed}}
  113. </button>
  114. </div>
  115. </div>
  116. {{/if}}
  117. {{#if view.isFinalizeItem}}
  118. <div class="box details-box">
  119. <p class="manual-steps-title"><strong>{{t admin.stackUpgrade.dialog.manual}}</strong></p>
  120. {{#if isDowngrade}}
  121. <p class="manual-steps-content">{{t admin.stackUpgrade.finalize.message.downgrade}}</p>
  122. {{else}}
  123. <p class="manual-steps-content">{{t admin.stackUpgrade.finalize.message.upgrade}}</p>
  124. {{/if}}
  125. {{#if areSkippedServiceChecksLoaded}}
  126. {{#if skippedServiceChecks.length}}
  127. <div>{{t admin.stackUpgrade.finalize.message.skippedServiceChecks}}</div>
  128. <ul>
  129. {{#each serviceName in skippedServiceChecks}}
  130. <li>{{serviceName}}</li>
  131. {{/each}}
  132. </ul>
  133. <div>{{t admin.stackUpgrade.finalize.message.testServices}}</div>
  134. {{/if}}
  135. {{else}}
  136. {{view App.SpinnerView}}
  137. {{/if}}
  138. <label class="message">
  139. {{view Em.Checkbox checkedBinding="view.isManualDone"}}
  140. {{t admin.stackUpgrade.dialog.manualDone}}
  141. </label>
  142. <div class="button-row">
  143. {{#if view.isDowngradeAvailable}}
  144. <button class="btn btn-danger" {{bindAttr disabled="controller.requestInProgress"}} {{action confirmDowngrade view.manualItem target="controller"}}>{{t common.downgrade}}</button>
  145. {{/if}}
  146. <button class="btn" {{action pauseUpgrade target="view"}}>{{t admin.stackUpgrade.finalize.later}}</button>
  147. <button class="btn btn-success" {{bindAttr disabled="view.isManualProceedDisabled"}} {{action complete view.manualItem target="view"}}>
  148. {{t common.finalize}}
  149. </button>
  150. </div>
  151. </div>
  152. {{/if}}
  153. {{#if view.isSlaveComponentFailuresItem}}
  154. <div class="box details-box">
  155. <p class="manual-steps-title"><strong>{{t admin.stackUpgrade.dialog.manual}}</strong></p>
  156. <div class="slave-failures-info">
  157. <p>
  158. {{#if areSlaveComponentFailuresHostsLoaded}}
  159. {{t admin.stackUpgrade.failedHosts.message}}
  160. <a href="#" {{action showFailedHosts target="view"}}>{{view.failedHostsMessage}}</a>
  161. {{else}}
  162. {{view App.SpinnerView}}
  163. {{/if}}
  164. </p>
  165. <p>
  166. {{t admin.stackUpgrade.failedHosts.options}}
  167. <ul>
  168. <li>{{t admin.stackUpgrade.failedHosts.options.first}}</li>
  169. {{#if view.isDowngradeAvailable}}
  170. <li>{{t admin.stackUpgrade.failedHosts.options.second}}</li>
  171. {{/if}}
  172. </ul>
  173. </p>
  174. </div>
  175. {{#unless view.isHoldingState}}
  176. <label class="message">
  177. {{view Em.Checkbox checkedBinding="view.isManualDone"}}
  178. {{t admin.stackUpgrade.dialog.manualDone}}
  179. </label>
  180. {{/unless}}
  181. <div class="button-row">
  182. {{#if view.isDowngradeAvailable}}
  183. <button class="btn btn-danger" {{bindAttr disabled="controller.requestInProgress"}} {{action confirmDowngrade view.manualItem target="controller"}}>{{t common.downgrade}}</button>
  184. {{/if}}
  185. {{#if isDowngrade}}
  186. <button class="btn" {{action pauseUpgrade target="view"}}>{{t admin.stackUpgrade.pauseDowngrade}}</button>
  187. {{else}}
  188. <button class="btn" {{action pauseUpgrade target="view"}}>{{t admin.stackUpgrade.pauseUpgrade}}</button>
  189. {{/if}}
  190. {{#if view.isHoldingState}}
  191. <button class="btn" {{bindAttr disabled="controller.requestInProgress"}} {{action retry view.failedItem target="view"}}>{{t common.retry}}</button>
  192. {{else}}
  193. <button class="btn btn-success" {{bindAttr disabled="view.isManualProceedDisabled"}} {{action complete view.manualItem target="view"}}>
  194. {{t common.proceed}}
  195. </button>
  196. {{/if}}
  197. </div>
  198. </div>
  199. {{/if}}
  200. {{#if view.isServiceCheckFailuresItem}}
  201. <div class="box details-box">
  202. <p class="manual-steps-title"><strong>{{t admin.stackUpgrade.dialog.manual}}</strong></p>
  203. {{#if areServiceCheckFailuresServicenamesLoaded}}
  204. {{#if serviceCheckFailuresServicenames.length}}
  205. <div class="service-check-failures-info">
  206. <p class="service-check-failures-title"><strong>{{t admin.stackUpgrade.dialog.manual.serviceCheckFailures.title}}</strong></p>
  207. <div>{{t admin.stackUpgrade.dialog.manual.serviceCheckFailures.msg1}}</div>
  208. <ul class="failed-info-list">
  209. {{#each serviceName in serviceCheckFailuresServicenames}}
  210. <li>{{serviceName}}</li>
  211. {{/each}}
  212. </ul>
  213. <div>{{t admin.stackUpgrade.dialog.manual.serviceCheckFailures.msg2}}</div>
  214. </div>
  215. {{/if}}
  216. {{#if slaveComponentStructuredInfo.hosts.length}}
  217. <div class="slave-failures-info">
  218. <p class="slave-failures-title"><strong>{{t admin.stackUpgrade.dialog.manual.slaveComponentFailures.title}}</strong></p>
  219. <p>
  220. {{t admin.stackUpgrade.failedHosts.message}}
  221. <a href="#" {{action showFailedHosts target="view"}}>{{view.failedHostsMessage}}</a>
  222. </p>
  223. <p>
  224. {{t admin.stackUpgrade.failedHosts.options}}
  225. <ul>
  226. <li>{{t admin.stackUpgrade.failedHosts.options.first}}</li>
  227. <li>{{t admin.stackUpgrade.failedHosts.options.third}}</li>
  228. {{#if view.isDowngradeAvailable}}
  229. <li>{{t admin.stackUpgrade.failedHosts.options.second}}</li>
  230. {{/if}}
  231. </ul>
  232. </p>
  233. </div>
  234. {{/if}}
  235. {{else}}
  236. {{view App.SpinnerView}}
  237. {{/if}}
  238. <label class="message">
  239. {{view Em.Checkbox checkedBinding="view.isManualDone"}}
  240. {{t admin.stackUpgrade.dialog.manualDone}}
  241. </label>
  242. <div class="button-row">
  243. {{#if view.isDowngradeAvailable}}
  244. <button class="btn btn-danger" {{bindAttr disabled="controller.requestInProgress"}} {{action confirmDowngrade view.manualItem target="controller"}}>{{t common.downgrade}}</button>
  245. {{/if}}
  246. {{#if isDowngrade}}
  247. <button class="btn" {{action pauseUpgrade target="view"}}>{{t admin.stackUpgrade.pauseDowngrade}}</button>
  248. {{else}}
  249. <button class="btn" {{action pauseUpgrade target="view"}}>{{t admin.stackUpgrade.pauseUpgrade}}</button>
  250. {{/if}}
  251. <button class="btn btn-success" {{bindAttr disabled="view.isManualProceedDisabled"}} {{action complete view.manualItem target="view"}}>
  252. {{t common.proceed}}
  253. </button>
  254. </div>
  255. </div>
  256. {{/if}}
  257. {{#if view.noActiveItem}}
  258. <div class="box details-box">
  259. <div>
  260. {{t admin.stackUpgrade.dialog.notActive}}
  261. </div>
  262. </div>
  263. {{/if}}
  264. {{#if App.upgradeAborted}}
  265. <div class="box details-box">
  266. <label class="message">
  267. {{#if isDowngrade}}
  268. {{t admin.stackUpgrade.dialog.suspended.downgrade}}
  269. {{else}}
  270. {{t admin.stackUpgrade.dialog.suspended}}
  271. {{/if}}
  272. </label>
  273. <div class="button-row">
  274. {{#if isDowngrade}}
  275. <button class="btn btn-primary" {{action resumeUpgrade target="controller"}}>
  276. {{t admin.stackUpgrade.dialog.resume.downgrade}}
  277. </button>
  278. {{else}}
  279. <button class="btn btn-primary" {{action resumeUpgrade target="controller"}}>
  280. {{t admin.stackUpgrade.dialog.resume}}
  281. </button>
  282. {{/if}}
  283. </div>
  284. </div>
  285. {{/if}}
  286. </div>
  287. {{#each group in view.upgradeGroups}}
  288. {{#if group.isVisible}}
  289. {{view App.upgradeGroupView contentBinding="group"}}
  290. {{/if}}
  291. {{/each}}
  292. {{/if}}
  293. </div>
  294. {{#unless view.isLoaded}}
  295. {{view App.SpinnerView}}
  296. {{/unless}}
  297. </div>