blob: 1f67caad387073e0a9bdee43f57cf05278e90b2d [file] [log] [blame]
Michael Davis9486f542017-05-30 15:35:31 -05001<div class="row column">
Michael Davis706b75b2017-08-18 16:40:03 -05002 <h1>Firmware</h1>
Michael Davis43366db2017-05-15 18:12:35 -05003 <div class="column small-12 page-header">
Michael Davis706b75b2017-08-18 16:40:03 -05004 <h2 class="inline h4">Manage BMC and server firmware</h2>
Michael Davis43366db2017-05-15 18:12:35 -05005 </div>
Michael Davis9486f542017-05-30 15:35:31 -05006</div>
7<div class="row column">
Michael Davisb27188e2017-07-27 14:35:00 -05008 <p>Use the following tables to manage firmware image files. The image file that is listed as Active is used the next time that the device is booted. To change the boot order for the image, click the arrow icons.</p>
9 <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 Davis9486f542017-05-30 15:35:31 -050010</div>
Iftekharul Islamc0161392017-06-14 15:46:15 -050011<firmware-list title="BMC images" version="bmcActiveVersion" firmwares="firmwares" filter-by="filters.bmc"></firmware-list>
12<firmware-list title="Server images" version="hostActiveVersion" firmwares="firmwares" filter-by="filters.host"></firmware-list>
Michael Davis9486f542017-05-30 15:35:31 -050013<div class="row column" id="upload">
Michael Davis43366db2017-05-15 18:12:35 -050014 <div class="column small-12 page-header">
Michael Davisb27188e2017-07-27 14:35:00 -050015 <h2 class="inline h3 bold">Specify image file location</h2>
Michael Davis43366db2017-05-15 18:12:35 -050016 </div>
17 <form id="firmware__upload-form" role="form" class="firmware__upload-form">
Michael Davisb27188e2017-07-27 14:35:00 -050018 <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>
Michael Davis9486f542017-05-30 15:35:31 -050019 <div class=" column firmware__upload-station">
Michael Davisb27188e2017-07-27 14:35:00 -050020 <h3 class="h4 bold">Upload image file from workstation</h3>
21 <p>Select the image file saved on the workstation storage medium to upload to the server BMC.</p>
Michael Davis9486f542017-05-30 15:35:31 -050022 <label for="file-upload" class="inline firmware__upload-chooser">
Iftekharul Islamc0161392017-06-14 15:46:15 -050023 <input id="file-upload" type="file" file="file" class="hide" onchange="angular.element(this).scope().fileNameChanged()"/>
Michael Davis9486f542017-05-30 15:35:31 -050024 <span class="button btn-secondary inline">Choose a file</span>
Iftekharul Islamc0161392017-06-14 15:46:15 -050025 <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>
Michael Davis43366db2017-05-15 18:12:35 -050026 </label>
Iftekharul Islamc0161392017-06-14 15:46:15 -050027 <input type="button" value="Upload firmware" class="inline button btn-primary float-right" ng-click="upload()"/>
28 <div class="inline uploading" ng-show="uploading">Upload in progress...</div>
Michael Davis43366db2017-05-15 18:12:35 -050029 </div>
Michael Davis9486f542017-05-30 15:35:31 -050030 <div class=" column firmware__upload-tftp">
Michael Davisb27188e2017-07-27 14:35:00 -050031 <h3 class="h4 bold">Download image file from TFTP server</h3>
32 <p>Specify both the TFTP server IP address and the image file name stored on it to download to the server BMC.</p>
Michael Davis43366db2017-05-15 18:12:35 -050033 <fieldset>
Michael Davis9486f542017-05-30 15:35:31 -050034 <div class="row">
35 <div class="column small-12 large-4">
Michael Davisb27188e2017-07-27 14:35:00 -050036 <label for="tftp-ip">TFTP Server IP address</label>
Michael Davis9486f542017-05-30 15:35:31 -050037 <input name="tftp-ip" id="tftp-ip" type="number"/>
38 </div>
39 <div class="column small-12 large-4">
40 <label for="tftp-file-name">File name</label>
41 <input name="tftp-file-name" id="tftp-file-name" type="text"/>
42 </div>
43 <div class="column small-12 large-4">
Iftekharul Islamc0161392017-06-14 15:46:15 -050044 <input type="submit" value="Download firmware" class="inline button btn-primary float-right"/>
Michael Davis9486f542017-05-30 15:35:31 -050045 </div>
46 </div>
Iftekharul Islamc0161392017-06-14 15:46:15 -050047 <div class="inline uploading" ng-show="downloading">Downloading in progress...</div>
Michael Davis43366db2017-05-15 18:12:35 -050048 </fieldset>
49 </div>
Michael Davis43366db2017-05-15 18:12:35 -050050 </form>
Michael Davis9486f542017-05-30 15:35:31 -050051</div>
52
53<!-- Firmware modals -->
Iftekharul Islamc0161392017-06-14 15:46:15 -050054<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': display_error}">
Michael Davis9486f542017-05-30 15:35:31 -050055 <div class="modal__upload-fail" role="document">
Iftekharul Islamc0161392017-06-14 15:46:15 -050056 <div class="screen-reader-offscreen modal-description">{{error.modal_title}}</div><!-- accessibility only; used for screen readers -->
Michael Davis9486f542017-05-30 15:35:31 -050057 <div class="page-header ">
Iftekharul Islamc0161392017-06-14 15:46:15 -050058 <span class="icon icon__warning inline"><span class="accessible-text" role="alert">{{error.type}}</span></span>
59 <h1 class="modal-title h4 inline">{{error.title}}</h1>
Michael Davis9486f542017-05-30 15:35:31 -050060 </div>
61 <div class="modal__content">
Iftekharul Islamc0161392017-06-14 15:46:15 -050062 <p>{{error.desc}}</p>
Michael Davis9486f542017-05-30 15:35:31 -050063 </div>
64 <div class="modal__button-wrapper">
Iftekharul Islamc0161392017-06-14 15:46:15 -050065 <button class="inline btn-primary" ng-click="display_error = false;">Close</button>
Michael Davis9486f542017-05-30 15:35:31 -050066 </div>
67 </div>
68</section>
Iftekharul Islamc0161392017-06-14 15:46:15 -050069
70<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': confirm_delete}">
Michael Davis9486f542017-05-30 15:35:31 -050071 <div class="modal__tftp-unreachable" role="document">
72 <div class="screen-reader-offscreen modal-description">Delete firmware image</div><!-- accessibility only; used for screen readers -->
73 <div class="page-header ">
74 <span class="icon icon__warning inline"><span class="accessible-text" role="alert">Warning</span></span>
75 <h1 class="modal-title h4 inline">Delete image</h1>
76 </div>
77 <div class="modal__content">
Iftekharul Islamc0161392017-06-14 15:46:15 -050078 <p>Delete firmware {{delete_image_version}}?</p>
Michael Davis9486f542017-05-30 15:35:31 -050079 </div>
80 <div class="modal__button-wrapper">
Iftekharul Islamc0161392017-06-14 15:46:15 -050081 <button class="inline btn-secondary" ng-click="confirm_delete=false;">Cancel</button>
82 <button class="inline btn-primary" ng-click="confirmDeleteImage()">Continue</button>
Michael Davis9486f542017-05-30 15:35:31 -050083 </div>
84 </div>
85</section>
Iftekharul Islamc0161392017-06-14 15:46:15 -050086
87<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': confirm_upload_image}">
Michael Davis9486f542017-05-30 15:35:31 -050088 <div class="modal__upload" role="document">
89 <div class="screen-reader-offscreen modal-description">Upload image file modal</div><!-- accessibility only; used for screen readers -->
90 <div class="page-header ">
91 <h1 class="modal-title h4"><span class="icon icon__info"><svg xmlns="http://www.w3.org/2000/svg"
92 viewBox="0 0 32 32"><path
93 d="M18 14h-6v2h1v6h-2v2h8v-2h-2z"/><circle cx="16" cy="10" r="2"/><path
94 d="M16 2C8.269 2 2 8.269 2 16s6.269 14 14 14 14-6.269 14-14S23.731 2 16 2zm0 26C9.383 28 4 22.617 4 16S9.383 4 16 4s12 5.383 12 12-5.383 12-12 12z"/></svg></span>
95 Upload image file
96 </h1>
97 </div>
98 <div class="modal__content">
99 <p>Uploading this image may replace a non-active image, and prevent rollback from the current active image
100 to the previous image.</p>
101 </div>
102 <div class="modal__button-wrapper">
Iftekharul Islamc0161392017-06-14 15:46:15 -0500103 <button class="inline btn-secondary" ng-click="confirm_upload_image = false;">Cancel</button>
104 <button class="inline btn-primary" ng-click="confirmUpload()">Continue</button>
Michael Davis9486f542017-05-30 15:35:31 -0500105 </div>
106 </div>
107</section>
Iftekharul Islamc0161392017-06-14 15:46:15 -0500108<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': reboot_confirm}">
Michael Davis9486f542017-05-30 15:35:31 -0500109 <div class="modal__reboot" role="document">
110 <div class="screen-reader-offscreen modal-description">Server reboot required modal</div><!-- accessibility only; used for screen readers -->
111 <div class="page-header ">
112 <h1 class="modal-title h4"><span class="icon icon__info"><svg xmlns="http://www.w3.org/2000/svg"
113 viewBox="0 0 32 32"><path
114 d="M18 14h-6v2h1v6h-2v2h8v-2h-2z"/><circle cx="16" cy="10" r="2"/><path
115 d="M16 2C8.269 2 2 8.269 2 16s6.269 14 14 14 14-6.269 14-14S23.731 2 16 2zm0 26C9.383 28 4 22.617 4 16S9.383 4 16 4s12 5.383 12 12-5.383 12-12 12z"/></svg></span>
116 Server reboot required
117 </h1>
118 </div>
119 <div class="modal__content">
120 <p>You specified a new primary firmware image. This change will not take effect until the server is powered
121 down and restarted.</p>
122 </div>
123 <a href="#/server-control/power-operations" class="bold modal__link">Go to power operations page</a>
124 <div class="modal__button-wrapper">
Iftekharul Islamc0161392017-06-14 15:46:15 -0500125 <button class="inline btn-secondary" ng-click="reboot_confirm=false;">Cancel</button>
126 <button class="inline btn-primary" ng-click="confirmWarmReboot()">Warm reboot</button>
Michael Davis9486f542017-05-30 15:35:31 -0500127 </div>
128 </div>
129</section>
Iftekharul Islamc0161392017-06-14 15:46:15 -0500130<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': preserve_settings_confirm}">
Michael Davis9486f542017-05-30 15:35:31 -0500131 <div class="modal__preserve-settings" role="document">
132 <div class="screen-reader-offscreen modal-description">Preserve setting modal</div><!-- accessibility only; used for screen readers -->
133 <div class="page-header ">
134 <h1 class="modal-title h4"><span class="icon icon__info"><svg xmlns="http://www.w3.org/2000/svg"
135 viewBox="0 0 32 32"><path
136 d="M18 14h-6v2h1v6h-2v2h8v-2h-2z"/><circle cx="16" cy="10" r="2"/><path
137 d="M16 2C8.269 2 2 8.269 2 16s6.269 14 14 14 14-6.269 14-14S23.731 2 16 2zm0 26C9.383 28 4 22.617 4 16S9.383 4 16 4s12 5.383 12 12-5.383 12-12 12z"/></svg></span>
138 Preserve settings
139 </h1>
140 </div>
141 <div class="modal__content">
Michael Davis0b2bc112017-09-06 15:07:24 -0500142 <p>Booting to a different firmware image will reset the user settings for the BMC. Choose either the option to reset both the user and network settings or the option to preserve the network settings for the newly active firmware image.</p>
Michael Davis9486f542017-05-30 15:35:31 -0500143 <form>
144 <fieldset>
145 <div class="row column">
146 <label class="control-radio bold" for="preserve-settings">Preserve network settings
147 <input type="radio" name="preserve-settings" id="preserve-settings" ng-checked="true" ng-model="dhcp" ng-value="true" ng-init="dhcp=true"/>
148 <span class="control__indicator control__indicator-on"></span>
149 </label>
150 </div>
151 <div class="row column">
Iftekharul Islamec6bcd12017-09-06 10:49:07 -0500152 <label class="control-radio bold" for="reset-settings">Reset both user and network settings
Michael Davis9486f542017-05-30 15:35:31 -0500153 <input type="radio" name="reset-settings" id="reset-settings" ng-model="dhcp" ng-value="false"/>
154 <span class="control__indicator control__indicator-on"></span>
155 </label>
156 </div>
157 </fieldset>
158 </form>
159 </div>
160 <div class="modal__button-wrapper">
Iftekharul Islamc0161392017-06-14 15:46:15 -0500161 <button class="inline btn-secondary" ng-click="preserve_settings_confirm=false;">Cancel</button>
162 <button class="inline btn-primary" ng-click="preserveSettingsConfirmed()">Continue</button>
Michael Davis9486f542017-05-30 15:35:31 -0500163 </div>
164 </div>
165</section>
Iftekharul Islamc0161392017-06-14 15:46:15 -0500166<div class="modal-overlay" tabindex="-1" ng-class="{'active': (display_error || confirm_upload_image || reboot_confirm || preserve_settings_confirm)}"></div>