Iftekharul Islam | a1d238f | 2018-02-26 12:29:45 -0600 | [diff] [blame] | 1 | <loader loading="dataService.loading || loading"></loader> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 2 | <div id="power-operations" class="power-operations"> |
| 3 | <div class="row column"> |
| 4 | <h1>Server power operations</h1> |
| 5 | <div class="power__current-status page-header"> |
| 6 | <h2 class="inline">Current status</h2> |
| 7 | <div class="power__status-log inline float-right"> |
| 8 | Last power operation at |
| 9 | <span class="courier-bold">{{ powerTime | localeDate }}</span> |
| 10 | </div> |
Michael Davis | 1947575 | 2017-02-23 18:30:23 -0600 | [diff] [blame] | 11 | </div> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 12 | </div> |
| 13 | <!-- Power Indicator Bar --> |
| 14 | <div class="row column"> |
| 15 | <div id="power-indicator-bar" class="power__indicator-bar" |
Yoshie Muranaka | 4b366b5 | 2019-09-24 08:32:42 -0700 | [diff] [blame] | 16 | ng-class="{'power__state-on': dataService.server_state == 'Running', |
| 17 | 'power__state-off': dataService.server_state == 'Off', |
| 18 | 'power__state-indet': dataService.server_state == 'Standby', |
| 19 | 'power__state-error': dataService.server_state == 'Quiesced'}"> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 20 | <p class="inline"> |
| 21 | {{ dataService.hostname }} - {{ dataService.server_id }} |
| 22 | </p> |
| 23 | <h3 class="power__state inline no-margin h3"> |
Yoshie Muranaka | 4b366b5 | 2019-09-24 08:32:42 -0700 | [diff] [blame] | 24 | <status-icon status="{{ dataService.server_state == 'Running' ? 'on' : |
| 25 | dataService.server_state == 'Off' ? 'off' : |
| 26 | dataService.server_state == 'Unreachable' ? 'off' : |
| 27 | dataService.server_state == 'Standby' ? 'warn' : |
| 28 | dataService.server_state == 'Quiesced' ? 'error' : null }}"> |
| 29 | </status-icon> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 30 | <span>{{ dataService.server_state | quiescedToError }}</span> |
| 31 | </h3> |
Michael Davis | 1947575 | 2017-02-23 18:30:23 -0600 | [diff] [blame] | 32 | </div> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 33 | </div> |
| 34 | <div class="row column"> |
| 35 | <!-- Boot Settings Column --> |
| 36 | <div class="large-4 columns boot-options-wrapper"> |
| 37 | <form id="host-boot-settings" name="hostBootSettings" class="host-boot-settings" novalidate> |
| 38 | <h2 class="subhead boot-options">Host OS boot settings</h2> |
| 39 | <div class="boot-settings-form"> |
| 40 | <div class="boot-options"> |
| 41 | <label for="boot-selected"> |
| 42 | Boot setting override</label> |
Yoshie Muranaka | 5dac9e1 | 2019-09-23 12:01:36 -0700 | [diff] [blame] | 43 | <select name="bootSelected" |
| 44 | id="boot-selected" |
| 45 | ng-disabled="dataService.server_unreachable || bootOverrideError" |
| 46 | ng-model="boot.BootSourceOverrideTarget" |
| 47 | ng-change="onChangeBootSetting()"> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 48 | <option class="courier-bold" value="{{bootSource}}" ng-repeat="bootSource in bootSources"> |
| 49 | {{ bootSource }} |
| 50 | </option> |
| 51 | </select> |
| 52 | <div class="boot-options one-time-boot-setting"> |
| 53 | <div class="align-self-center"> |
| 54 | <label class="control-check" id="one-time-label"> <span class="inline boot-checkbox">Enable one time boot</span> |
Yoshie Muranaka | 5dac9e1 | 2019-09-23 12:01:36 -0700 | [diff] [blame] | 55 | <input type="checkbox" |
| 56 | name="oneTime" |
| 57 | ng-disabled="dataService.server_unreachable || |
| 58 | bootOverrideError || |
| 59 | boot.BootSourceOverrideTarget =='None'" |
| 60 | ng-model="boot.oneTimeBootEnabled"/> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 61 | <span class="control__indicator"> </span> |
| 62 | </label> |
| 63 | </div> |
| 64 | </div> |
Michael Davis | 1947575 | 2017-02-23 18:30:23 -0600 | [diff] [blame] | 65 | </div> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 66 | <!-- TPM Required --> |
| 67 | <div class="boot-options one-time-boot-setting"> |
| 68 | <div class="boot-options"> |
| 69 | <h3 class="content-label"> |
| 70 | TPM required policy</h3> |
| 71 | <p> Enable to ensure the system only boots when the TPM is functional. </p> |
| 72 | <!-- Toggle component --> |
| 73 | <div class="toggle-container"> |
| 74 | <div class="toggle"> |
| 75 | <input |
| 76 | id="toggle__switch-round" |
| 77 | class="toggle-switch toggle-switch__round-flat" |
| 78 | name="toggle" |
| 79 | type="checkbox" |
| 80 | tabindex="0" |
| 81 | ng-model="TPMToggle.TPMEnable" |
| 82 | ng-disabled="dataService.server_unreachable" |
| 83 | /> |
| 84 | <label for="toggle__switch-round" tabindex="0" |
| 85 | >TPM required policy is {{ TPMToggle.TPMEnable ? "On" : "Off" }}</label |
| 86 | > |
| 87 | </div> |
| 88 | <span> |
| 89 | {{ TPMToggle.TPMEnable ? "On" : "Off" }} |
| 90 | </span> |
| 91 | </div> |
| 92 | </div> |
| 93 | </div> |
| 94 | <!-- form actions --> |
| 95 | <div class="boot-form-actions"> |
| 96 | <button type="submit" class="btn btn-primary" ng-click="saveBootSettings();saveTPMPolicy();hostBootSettings.$setPristine()" ng-disabled="dataService.server_unreachable || hostBootSettings.$pristine;"> |
| 97 | Save |
| 98 | </button> |
| 99 | <button type="reset" class="btn btn-secondary" ng-disabled="dataService.server_unreachable || hostBootSettings.$pristine" ng-click="resetForm();hostBootSettings.$setPristine()"> |
| 100 | Cancel |
| 101 | </button> |
| 102 | </div> |
Yoshie Muranaka | 1578b87 | 2020-06-10 13:24:13 -0700 | [diff] [blame^] | 103 | </div> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 104 | </form> |
| 105 | </div> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 106 | <!-- Power Operations Column --> |
| 107 | <div class="large-8 columns operations-wrapper"> |
| 108 | <h2 class="subhead boot-operations">Operations</h2> |
| 109 | <!-- Pending one time boot alert --> |
| 110 | <div class="alert-warning" |
| 111 | ng-if="boot.oneTimeBootEnabled" ng-hide="dataService.server_state == 'Unreachable'"> |
| 112 | <div class="pending-icon"> |
| 113 | <icon file="icon-pending.svg"></icon> |
| 114 | </div> |
| 115 | <p class="alert-pending"> |
| 116 | Pending one time boot. Next boot will be performed with the |
| 117 | specified one time boot settings. Subsequent boots will be performed |
| 118 | with the default settings. |
| 119 | </p> |
| 120 | </div> |
| 121 | <!-- Pending reboot warning --> |
| 122 | <p ng-show="operationPending"> |
| 123 | There are no power operations to display while power operation is in |
| 124 | progress. When complete, any new power operations will be displayed |
| 125 | here. |
| 126 | </p> |
| 127 | <div ng-show="!operationPending"> |
| 128 | <!-- Power on displays only when server is off --> |
| 129 | <div class="row column" ng-show="dataService.server_state == 'Off'" |
| 130 | ng-class="{disabled: dataService.server_unreachable}"> |
| 131 | <button id="power__power-on" class="btn btn-primary inline" ng-click="powerOn()" role="button" |
| 132 | ng-disabled="dataService.server_unreachable"> |
| 133 | Power on |
| 134 | </button> |
| 135 | </div> |
| 136 | <!-- Reboot/shutdown column --> |
| 137 | <div |
| 138 | ng-show="dataService.server_state !== 'Off'"> |
| 139 | <div class="reboot__operations"> |
| 140 | <form id="reboot-form" name="rebootForm" class="reboot-form"> |
| 141 | <fieldset> |
| 142 | <legend class="boot-operations">Reboot server</legend> |
| 143 | <label class="control-radio">Orderly - OS shuts down, then server reboots |
| 144 | <input type="radio" name="radioReboot" |
| 145 | ng-model="defaultRebootSetting" value="warm-reboot" /> |
| 146 | <span class="control__indicator control__indicator-on"></span> |
| 147 | </label> |
| 148 | <label class="control-radio">Immediate - Server reboots without OS shutting down; may cause data corruption |
| 149 | <input type="radio" name="radioReboot" |
| 150 | ng-model="defaultRebootSetting" value="cold-reboot" /> |
| 151 | <span class="control__indicator control__indicator-on"></span> |
| 152 | </label> |
| 153 | </fieldset> |
| 154 | <div> |
Yoshie Muranaka | 54d53c6 | 2019-09-25 15:47:15 -0700 | [diff] [blame] | 155 | <button class="btn btn-primary" ng-click="rebootConfirmModal()" type="submit" ng-disabled="dataService.server_unreachable"> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 156 | Reboot |
Yoshie Muranaka | 5ff9878 | 2019-07-18 15:36:39 -0500 | [diff] [blame] | 157 | </button> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 158 | </div> |
| 159 | </form> |
| 160 | </div> |
| 161 | <!-- Shutdown Field Row --> |
| 162 | <div class="shutdown__operations"> |
| 163 | <form id="shutdown-form" name="shutdownForm" class="shutdown-form"> |
| 164 | <fieldset> |
| 165 | <legend class="boot-operations">Shutdown server</legend> |
| 166 | <label class="control-radio">Orderly - OS shuts down, then server shuts down |
| 167 | <input type="radio" name="radioShutdown" ng-model="defaultShutdownSetting" |
| 168 | value='warm-shutdown' /> |
| 169 | <span class="control__indicator control__indicator-on"></span> |
| 170 | </label> |
| 171 | <label class="control-radio">Immediate - Server shuts down without OS shutting down; may cause data corruption |
| 172 | <input type="radio" name="radioShutdown" ng-model="defaultShutdownSetting" |
| 173 | value='cold-shutdown' /> |
| 174 | <span class="control__indicator control__indicator-on"></span> |
| 175 | </label> |
| 176 | </fieldset> |
| 177 | <div> |
Yoshie Muranaka | 54d53c6 | 2019-09-25 15:47:15 -0700 | [diff] [blame] | 178 | <button class="btn btn-primary" ng-click="shutdownConfirmModal()" type="submit" ng-disabled="dataService.server_unreachable"> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 179 | Shut down |
| 180 | </button> |
Yoshie Muranaka | 5ff9878 | 2019-07-18 15:36:39 -0500 | [diff] [blame] | 181 | </div> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 182 | </form> |
| 183 | </div> |
Michael Davis | 1947575 | 2017-02-23 18:30:23 -0600 | [diff] [blame] | 184 | </div> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 185 | </div> |
| 186 | </div> |
Yoshie Muranaka | 1578b87 | 2020-06-10 13:24:13 -0700 | [diff] [blame^] | 187 | </div> |
Dixsie Wolmers | e368108 | 2019-06-21 13:48:06 -0500 | [diff] [blame] | 188 | </div> |