11acb412dSIftekharul Islam<loader loading="loading"></loader>
243366db7SMichael Davis<div class="row column">
343366db7SMichael Davis  <h1>Firmware</h1>
443366db7SMichael Davis  <div class="column small-12 page-header">
5edf1ab46Sbeccabroek    <h2 class="inline">Manage BMC and server firmware</h2>
69486f54aSMichael Davis  </div>
79486f54aSMichael Davis</div>
89486f54aSMichael Davis<div class="row column">
974b05409SGunnar Mills  <p>Use the following tables to manage firmware image files. The image file that is listed at the top, the image with the highest boot priority, is used the next time that the device is booted. To change the boot priority for the image, click the arrow icons.</p>
10b27188e8SMichael Davis  <p><a ng-click="gotoAnchor()">Scroll down to upload an image file</a> to transfer a new firmware image to the BMC. After uploading a new image, Activate it to make it available for use.</p>
119486f54aSMichael Davis</div>
12c016139fSIftekharul Islam<firmware-list title="BMC images" version="bmcActiveVersion" firmwares="firmwares" filter-by="filters.bmc"></firmware-list>
13c016139fSIftekharul Islam<firmware-list title="Server images" version="hostActiveVersion" firmwares="firmwares" filter-by="filters.host"></firmware-list>
149486f54aSMichael Davis<div class="row column" id="upload">
1543366db7SMichael Davis  <div class="column small-12 page-header">
16edf1ab46Sbeccabroek    <h2 class="inline bold">Specify image file location</h2>
1743366db7SMichael Davis  </div>
1843366db7SMichael Davis  <form id="firmware__upload-form" role="form" class="firmware__upload-form">
19b27188e8SMichael Davis    <p>Specify an image file located on your workstation or a TFTP server. An image file may contain firmware images for the server, BMC, or other hardware devices. Each image that you upload will be unpacked from the image file and added to the appropriate list above.</p>
209486f54aSMichael Davis    <div class=" column firmware__upload-station">
21edf1ab46Sbeccabroek      <h3>Upload image file from workstation</h3>
22b27188e8SMichael Davis      <p>Select the image file saved on the workstation storage medium to upload to the server BMC.</p>
239486f54aSMichael Davis      <label for="file-upload" class="inline firmware__upload-chooser">
244733a11bSbeccabroek        <input id="file-upload" type="file" file="file" class="hide"/>
25c86ce3c9SYoshie Muranaka        <span class="btn btn-secondary">Choose a file</span>
26c016139fSIftekharul Islam        <span class="inline firmware__upload-file-name"><span ng-if="!file">No file chosen</span><span ng-if="file.name !== undefined">{{file.name}}</span></span>
2743366db7SMichael Davis      </label>
28c86ce3c9SYoshie Muranaka      <input type="button" value="Upload firmware" class="btn btn-primary float-right" ng-click="upload()"/>
29c016139fSIftekharul Islam      <div class="inline uploading" ng-show="uploading">Upload in progress...</div>
3043366db7SMichael Davis    </div>
319486f54aSMichael Davis    <div class="column firmware__upload-tftp">
32edf1ab46Sbeccabroek      <h3>Download image file from TFTP server</h3>
33b27188e8SMichael Davis      <p>Specify both the TFTP server IP address and the image file name stored on it to download to the server BMC.</p>
3443366db7SMichael Davis      <fieldset>
359486f54aSMichael Davis        <div class="row">
369486f54aSMichael Davis          <div class="column small-12 large-4">
37b27188e8SMichael Davis            <label for="tftp-ip">TFTP Server IP address</label>
381acb412dSIftekharul Islam            <input name="tftp-ip" id="tftp-ip" type="text"  ng-model="download_host"/>
3943366db7SMichael Davis          </div>
409486f54aSMichael Davis          <div class="column small-12 large-4">
4143366db7SMichael Davis            <label for="tftp-file-name">File name</label>
421acb412dSIftekharul Islam            <input name="tftp-file-name" id="tftp-file-name" type="text"  ng-model="download_filename"/>
4343366db7SMichael Davis          </div>
449486f54aSMichael Davis          <div class="column small-12 large-4">
45c86ce3c9SYoshie Muranaka            <input type="button" value="Download firmware" class="btn btn-primary float-right" ng-click="download()"/>
469486f54aSMichael Davis          </div>
479486f54aSMichael Davis        </div>
48c016139fSIftekharul Islam        <div class="inline uploading" ng-show="downloading">Downloading in progress...</div>
4943366db7SMichael Davis      </fieldset>
5043366db7SMichael Davis    </div>
5143366db7SMichael Davis  </form>
529486f54aSMichael Davis</div>
539486f54aSMichael Davis
549486f54aSMichael Davis<!-- Firmware modals -->
55c016139fSIftekharul Islam
561acb412dSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': confirm_priority}">
571acb412dSIftekharul Islam  <div class="modal__tftp-unreachable" role="document">
581acb412dSIftekharul Islam    <div class="screen-reader-offscreen modal-description">Update image priority</div><!-- accessibility only; used for screen readers -->
591acb412dSIftekharul Islam    <div class="page-header ">
60*86c0b94bSDerick Montague      <icon file="icon-warning.svg" aria-hidden="true"></icon><span class="accessible-text" role="alert">Warning</span>
61edf1ab46Sbeccabroek      <h3 class="modal-title inline">Change image priority</h3>
621acb412dSIftekharul Islam    </div>
631acb412dSIftekharul Islam    <div class="modal__content">
646473a41dSGunnar Mills      <p>Change firmware {{priority_image_version}} priority?</p>
651acb412dSIftekharul Islam    </div>
661acb412dSIftekharul Islam    <div class="modal__button-wrapper">
67c86ce3c9SYoshie Muranaka      <button class="btn btn-secondary" ng-click="confirm_priority=false;">Cancel</button>
68c86ce3c9SYoshie Muranaka      <button class="btn btn-primary" ng-click="confirmChangePriority()">Continue</button>
691acb412dSIftekharul Islam    </div>
701acb412dSIftekharul Islam  </div>
711acb412dSIftekharul Islam</section>
721acb412dSIftekharul Islam
73c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': confirm_delete}">
749486f54aSMichael Davis  <div class="modal__tftp-unreachable" role="document">
759486f54aSMichael Davis    <div class="screen-reader-offscreen modal-description">Delete firmware image</div><!-- accessibility only; used for screen readers -->
769486f54aSMichael Davis    <div class="page-header ">
77*86c0b94bSDerick Montague      <icon file="icon-warning.svg" aria-hidden="true"></icon><span class="accessible-text" role="alert">Warning</span>
78edf1ab46Sbeccabroek      <h3 class="modal-title inline">Delete image</h3>
799486f54aSMichael Davis    </div>
809486f54aSMichael Davis    <div class="modal__content">
81c016139fSIftekharul Islam      <p>Delete firmware {{delete_image_version}}?</p>
829486f54aSMichael Davis    </div>
839486f54aSMichael Davis    <div class="modal__button-wrapper">
84c86ce3c9SYoshie Muranaka      <button class="btn  btn-secondary" ng-click="confirm_delete=false;">Cancel</button>
85c86ce3c9SYoshie Muranaka      <button class="btn  btn-primary" ng-click="confirmDeleteImage()">Continue</button>
869486f54aSMichael Davis    </div>
879486f54aSMichael Davis  </div>
889486f54aSMichael Davis</section>
89c016139fSIftekharul Islam
90e7f83970SGunnar Mills<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': activate_confirm}">
91e7f83970SGunnar Mills  <div class="modal__activate" role="document">
92e7f83970SGunnar Mills    <div class="screen-reader-offscreen modal-description">Activate modal</div><!-- accessibility only; used for screen readers -->
939486f54aSMichael Davis    <div class="page-header ">
94c86ce3c9SYoshie Muranaka      <h3 class="modal-title">
95c86ce3c9SYoshie Muranaka        <icon class="icon__info" file="icon-information.svg"></icon>
96ee6efd85SGunnar Mills        <!-- We call "Host" firmware "server" firmware -->
97ee6efd85SGunnar Mills        Confirm {{activate_image_type == 'Host' ? 'server' : activate_image_type}} firmware file activation
98edf1ab46Sbeccabroek      </h3>
999486f54aSMichael Davis    </div>
1009486f54aSMichael Davis    <div class="modal__content">
101ee6efd85SGunnar Mills      <div ng-switch on="activate_image_type">
1026d9ef5acSGunnar Mills        <p ng-switch-when="BMC">When you activate the BMC firmware file, {{activate_image_version}}, the BMC must be rebooted before it will operate with the new firmware code. Note that when you reboot the BMC, the BMC will be unavailable for several minutes and you must log in again.</p>
103c3abaa9bSbeccabroek        <p ng-switch-when="Host">When you activate the server firmware file, {{activate_image_version}}, the new firmware will not operate until the next time the server boots.</p>
104ee6efd85SGunnar Mills      </div>
105ee6efd85SGunnar Mills      <form ng-if="activate_image_type == 'BMC'">
1069486f54aSMichael Davis        <fieldset>
1079486f54aSMichael Davis          <div class="row column">
108e7f83970SGunnar Mills            <label class="control-radio bold" for="activate-without-reboot">Activate firmware file without rebooting BMC
1096d9ef5acSGunnar Mills              <input type="radio" name="activate-without-reboot" id="activate-without-reboot" ng-model="activate.reboot" ng-value="false"/>
1109486f54aSMichael Davis              <span class="control__indicator control__indicator-on"></span>
1119486f54aSMichael Davis            </label>
1129486f54aSMichael Davis          </div>
1136d9ef5acSGunnar Mills          <div class="row column">
1146d9ef5acSGunnar Mills            <label class="control-radio bold" for="activate-with-reboot">Activate firmware file and automatically reboot BMC
1156d9ef5acSGunnar Mills              <input type="radio" name="activate-with-reboot" id="activate-with-reboot" ng-model="activate.reboot" ng-value="true"/>
1166d9ef5acSGunnar Mills              <span class="control__indicator control__indicator-on"></span>
1176d9ef5acSGunnar Mills            </label>
1186d9ef5acSGunnar Mills          </div>
1199486f54aSMichael Davis        </fieldset>
1209486f54aSMichael Davis      </form>
121c3abaa9bSbeccabroek      <form ng-if="activate_image_type == 'Host'">
122c3abaa9bSbeccabroek        <fieldset>
123c3abaa9bSbeccabroek          <div class="row column">
124c3abaa9bSbeccabroek            <label class="control-radio bold" for="activate-host-without-reboot">Activate firmware file without {{isServerOff() ? "booting" : "rebooting"}} server
125c3abaa9bSbeccabroek              <input type="radio" name="activate-host-without-reboot" id="activate-host-without-reboot" ng-model="activate.reboot" ng-value="false"/>
126c3abaa9bSbeccabroek              <span class="control__indicator control__indicator-on"></span>
127c3abaa9bSbeccabroek            </label>
128c3abaa9bSbeccabroek          </div>
129c3abaa9bSbeccabroek          <div class="row column">
130c3abaa9bSbeccabroek            <label class="control-radio bold" for="activate-host-with-reboot">Activate firmware file and automatically {{isServerOff() ? "boot" : "reboot"}} server
131c3abaa9bSbeccabroek              <input type="radio" name="activate-host-with-reboot" id="activate-host-with-reboot" ng-model="activate.reboot" ng-value="true"/>
132c3abaa9bSbeccabroek              <span class="control__indicator control__indicator-on"></span>
133c3abaa9bSbeccabroek            </label>
134c3abaa9bSbeccabroek          </div>
135c3abaa9bSbeccabroek        </fieldset>
136c3abaa9bSbeccabroek      </form>
1379486f54aSMichael Davis    </div>
1389486f54aSMichael Davis    <div class="modal__button-wrapper">
139c86ce3c9SYoshie Muranaka      <button class="btn  btn-secondary" ng-click="activate_confirm=false;">Cancel</button>
140c86ce3c9SYoshie Muranaka      <button class="btn  btn-primary" ng-click="activateConfirmed()">Continue</button>
1419486f54aSMichael Davis    </div>
1429486f54aSMichael Davis  </div>
1439486f54aSMichael Davis</section>
14490ae95ebSbeccabroek<div class="modal-overlay" tabindex="-1" ng-class="{'active': (confirm_priority || activate_confirm || confirm_delete)}"></div>
145