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