Iftekharul Islam | 1acb412 | 2017-11-02 13:20:32 -0500 | [diff] [blame] | 1 | <loader loading="loading"></loader> |
Michael Davis | 9486f54 | 2017-05-30 15:35:31 -0500 | [diff] [blame] | 2 | <div class="row column"> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 3 | <h1>Firmware</h1> |
| 4 | <div class="column small-12 page-header"> |
beccabroek | edf1ab4 | 2019-02-15 16:26:38 -0600 | [diff] [blame] | 5 | <h2 class="inline">Manage BMC and server firmware</h2> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 6 | </div> |
Michael Davis | 9486f54 | 2017-05-30 15:35:31 -0500 | [diff] [blame] | 7 | </div> |
| 8 | <div class="row column"> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 9 | <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> |
| 10 | <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> |
Michael Davis | 9486f54 | 2017-05-30 15:35:31 -0500 | [diff] [blame] | 11 | </div> |
Iftekharul Islam | c016139 | 2017-06-14 15:46:15 -0500 | [diff] [blame] | 12 | <firmware-list title="BMC images" version="bmcActiveVersion" firmwares="firmwares" filter-by="filters.bmc"></firmware-list> |
| 13 | <firmware-list title="Server images" version="hostActiveVersion" firmwares="firmwares" filter-by="filters.host"></firmware-list> |
Michael Davis | 9486f54 | 2017-05-30 15:35:31 -0500 | [diff] [blame] | 14 | <div class="row column" id="upload"> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 15 | <div class="column small-12 page-header"> |
beccabroek | edf1ab4 | 2019-02-15 16:26:38 -0600 | [diff] [blame] | 16 | <h2 class="inline bold">Specify image file location</h2> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 17 | </div> |
| 18 | <form id="firmware__upload-form" role="form" class="firmware__upload-form"> |
| 19 | <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> |
| 20 | <div class=" column firmware__upload-station"> |
beccabroek | edf1ab4 | 2019-02-15 16:26:38 -0600 | [diff] [blame] | 21 | <h3>Upload image file from workstation</h3> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 22 | <p>Select the image file saved on the workstation storage medium to upload to the server BMC.</p> |
| 23 | <label for="file-upload" class="inline firmware__upload-chooser"> |
beccabroek | 4733a11 | 2019-04-10 14:08:49 -0500 | [diff] [blame] | 24 | <input id="file-upload" type="file" file="file" class="hide"/> |
Yoshie Muranaka | c86ce3c | 2019-06-05 12:30:30 -0500 | [diff] [blame] | 25 | <span class="btn btn-secondary">Choose a file</span> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 26 | <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> |
| 27 | </label> |
Yoshie Muranaka | c86ce3c | 2019-06-05 12:30:30 -0500 | [diff] [blame] | 28 | <input type="button" value="Upload firmware" class="btn btn-primary float-right" ng-click="upload()"/> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 29 | <div class="inline uploading" ng-show="uploading">Upload in progress...</div> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 30 | </div> |
Yoshie Muranaka | c86ce3c | 2019-06-05 12:30:30 -0500 | [diff] [blame] | 31 | <div class="column firmware__upload-tftp"> |
beccabroek | edf1ab4 | 2019-02-15 16:26:38 -0600 | [diff] [blame] | 32 | <h3>Download image file from TFTP server</h3> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 33 | <p>Specify both the TFTP server IP address and the image file name stored on it to download to the server BMC.</p> |
| 34 | <fieldset> |
| 35 | <div class="row"> |
| 36 | <div class="column small-12 large-4"> |
| 37 | <label for="tftp-ip">TFTP Server IP address</label> |
| 38 | <input name="tftp-ip" id="tftp-ip" type="text" ng-model="download_host"/> |
| 39 | </div> |
| 40 | <div class="column small-12 large-4"> |
| 41 | <label for="tftp-file-name">File name</label> |
| 42 | <input name="tftp-file-name" id="tftp-file-name" type="text" ng-model="download_filename"/> |
| 43 | </div> |
| 44 | <div class="column small-12 large-4"> |
Yoshie Muranaka | c86ce3c | 2019-06-05 12:30:30 -0500 | [diff] [blame] | 45 | <input type="button" value="Download firmware" class="btn btn-primary float-right" ng-click="download()"/> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 46 | </div> |
| 47 | </div> |
| 48 | <div class="inline uploading" ng-show="downloading">Downloading in progress...</div> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 49 | </fieldset> |
| 50 | </div> |
| 51 | </form> |
Michael Davis | 9486f54 | 2017-05-30 15:35:31 -0500 | [diff] [blame] | 52 | </div> |
| 53 | |
| 54 | <!-- Firmware modals --> |
Iftekharul Islam | c016139 | 2017-06-14 15:46:15 -0500 | [diff] [blame] | 55 | |
Iftekharul Islam | 1acb412 | 2017-11-02 13:20:32 -0500 | [diff] [blame] | 56 | <section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': confirm_priority}"> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 57 | <div class="modal__tftp-unreachable" role="document"> |
| 58 | <div class="screen-reader-offscreen modal-description">Update image priority</div><!-- accessibility only; used for screen readers --> |
| 59 | <div class="page-header "> |
Derick Montague | 86c0b94 | 2019-10-08 16:00:45 -0500 | [diff] [blame^] | 60 | <icon file="icon-warning.svg" aria-hidden="true"></icon><span class="accessible-text" role="alert">Warning</span> |
beccabroek | edf1ab4 | 2019-02-15 16:26:38 -0600 | [diff] [blame] | 61 | <h3 class="modal-title inline">Change image priority</h3> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 62 | </div> |
| 63 | <div class="modal__content"> |
| 64 | <p>Change firmware {{priority_image_version}} priority?</p> |
| 65 | </div> |
| 66 | <div class="modal__button-wrapper"> |
Yoshie Muranaka | c86ce3c | 2019-06-05 12:30:30 -0500 | [diff] [blame] | 67 | <button class="btn btn-secondary" ng-click="confirm_priority=false;">Cancel</button> |
| 68 | <button class="btn btn-primary" ng-click="confirmChangePriority()">Continue</button> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 69 | </div> |
| 70 | </div> |
Iftekharul Islam | 1acb412 | 2017-11-02 13:20:32 -0500 | [diff] [blame] | 71 | </section> |
| 72 | |
Iftekharul Islam | c016139 | 2017-06-14 15:46:15 -0500 | [diff] [blame] | 73 | <section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': confirm_delete}"> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 74 | <div class="modal__tftp-unreachable" role="document"> |
| 75 | <div class="screen-reader-offscreen modal-description">Delete firmware image</div><!-- accessibility only; used for screen readers --> |
| 76 | <div class="page-header "> |
Derick Montague | 86c0b94 | 2019-10-08 16:00:45 -0500 | [diff] [blame^] | 77 | <icon file="icon-warning.svg" aria-hidden="true"></icon><span class="accessible-text" role="alert">Warning</span> |
beccabroek | edf1ab4 | 2019-02-15 16:26:38 -0600 | [diff] [blame] | 78 | <h3 class="modal-title inline">Delete image</h3> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 79 | </div> |
| 80 | <div class="modal__content"> |
| 81 | <p>Delete firmware {{delete_image_version}}?</p> |
| 82 | </div> |
| 83 | <div class="modal__button-wrapper"> |
Yoshie Muranaka | c86ce3c | 2019-06-05 12:30:30 -0500 | [diff] [blame] | 84 | <button class="btn btn-secondary" ng-click="confirm_delete=false;">Cancel</button> |
| 85 | <button class="btn btn-primary" ng-click="confirmDeleteImage()">Continue</button> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 86 | </div> |
| 87 | </div> |
Michael Davis | 9486f54 | 2017-05-30 15:35:31 -0500 | [diff] [blame] | 88 | </section> |
Iftekharul Islam | c016139 | 2017-06-14 15:46:15 -0500 | [diff] [blame] | 89 | |
Gunnar Mills | e7f8397 | 2018-03-21 11:03:35 -0500 | [diff] [blame] | 90 | <section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': activate_confirm}"> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 91 | <div class="modal__activate" role="document"> |
| 92 | <div class="screen-reader-offscreen modal-description">Activate modal</div><!-- accessibility only; used for screen readers --> |
| 93 | <div class="page-header "> |
Yoshie Muranaka | c86ce3c | 2019-06-05 12:30:30 -0500 | [diff] [blame] | 94 | <h3 class="modal-title"> |
| 95 | <icon class="icon__info" file="icon-information.svg"></icon> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 96 | <!-- We call "Host" firmware "server" firmware --> |
| 97 | Confirm {{activate_image_type == 'Host' ? 'server' : activate_image_type}} firmware file activation |
beccabroek | edf1ab4 | 2019-02-15 16:26:38 -0600 | [diff] [blame] | 98 | </h3> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 99 | </div> |
| 100 | <div class="modal__content"> |
| 101 | <div ng-switch on="activate_image_type"> |
| 102 | <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> |
| 103 | <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> |
| 104 | </div> |
| 105 | <form ng-if="activate_image_type == 'BMC'"> |
| 106 | <fieldset> |
| 107 | <div class="row column"> |
| 108 | <label class="control-radio bold" for="activate-without-reboot">Activate firmware file without rebooting BMC |
| 109 | <input type="radio" name="activate-without-reboot" id="activate-without-reboot" ng-model="activate.reboot" ng-value="false"/> |
| 110 | <span class="control__indicator control__indicator-on"></span> |
| 111 | </label> |
| 112 | </div> |
| 113 | <div class="row column"> |
| 114 | <label class="control-radio bold" for="activate-with-reboot">Activate firmware file and automatically reboot BMC |
| 115 | <input type="radio" name="activate-with-reboot" id="activate-with-reboot" ng-model="activate.reboot" ng-value="true"/> |
| 116 | <span class="control__indicator control__indicator-on"></span> |
| 117 | </label> |
| 118 | </div> |
| 119 | </fieldset> |
| 120 | </form> |
| 121 | <form ng-if="activate_image_type == 'Host'"> |
| 122 | <fieldset> |
| 123 | <div class="row column"> |
| 124 | <label class="control-radio bold" for="activate-host-without-reboot">Activate firmware file without {{isServerOff() ? "booting" : "rebooting"}} server |
| 125 | <input type="radio" name="activate-host-without-reboot" id="activate-host-without-reboot" ng-model="activate.reboot" ng-value="false"/> |
| 126 | <span class="control__indicator control__indicator-on"></span> |
| 127 | </label> |
| 128 | </div> |
| 129 | <div class="row column"> |
| 130 | <label class="control-radio bold" for="activate-host-with-reboot">Activate firmware file and automatically {{isServerOff() ? "boot" : "reboot"}} server |
| 131 | <input type="radio" name="activate-host-with-reboot" id="activate-host-with-reboot" ng-model="activate.reboot" ng-value="true"/> |
| 132 | <span class="control__indicator control__indicator-on"></span> |
| 133 | </label> |
| 134 | </div> |
| 135 | </fieldset> |
| 136 | </form> |
| 137 | </div> |
| 138 | <div class="modal__button-wrapper"> |
Yoshie Muranaka | c86ce3c | 2019-06-05 12:30:30 -0500 | [diff] [blame] | 139 | <button class="btn btn-secondary" ng-click="activate_confirm=false;">Cancel</button> |
| 140 | <button class="btn btn-primary" ng-click="activateConfirmed()">Continue</button> |
Gunnar Mills | 5f0b776 | 2018-09-25 14:10:45 -0500 | [diff] [blame] | 141 | </div> |
| 142 | </div> |
Michael Davis | 9486f54 | 2017-05-30 15:35:31 -0500 | [diff] [blame] | 143 | </section> |
beccabroek | 90ae95e | 2019-01-15 16:55:57 -0600 | [diff] [blame] | 144 | <div class="modal-overlay" tabindex="-1" ng-class="{'active': (confirm_priority || activate_confirm || confirm_delete)}"></div> |