1*1acb412dSIftekharul 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">
5706b75b3SMichael Davis		<h2 class="inline h4">Manage BMC and server firmware</h2>
69486f54aSMichael Davis	</div>
79486f54aSMichael Davis</div>
89486f54aSMichael Davis<div class="row column">
9b27188e8SMichael Davis	<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>
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">
16b27188e8SMichael Davis		<h2 class="inline h3 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">
21b27188e8SMichael Davis			<h3 class="h4 bold">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">
24c016139fSIftekharul Islam				<input id="file-upload" type="file" file="file" class="hide" onchange="angular.element(this).scope().fileNameChanged()"/>
259486f54aSMichael Davis				<span class="button btn-secondary inline">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>
28c016139fSIftekharul Islam			<input type="button" value="Upload firmware" class="inline button 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">
32b27188e8SMichael Davis			<h3 class="h4 bold">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>
38*1acb412dSIftekharul 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>
42*1acb412dSIftekharul 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">
45*1acb412dSIftekharul Islam						<input type="button" value="Download firmware" class="inline button 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<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': display_error}">
569486f54aSMichael Davis	<div class="modal__upload-fail" role="document">
57c016139fSIftekharul Islam		<div class="screen-reader-offscreen modal-description">{{error.modal_title}}</div><!-- accessibility only; used for screen readers -->
589486f54aSMichael Davis		<div class="page-header ">
59c016139fSIftekharul Islam			<span class="icon icon__warning inline"><span class="accessible-text" role="alert">{{error.type}}</span></span>
60c016139fSIftekharul Islam			<h1 class="modal-title h4 inline">{{error.title}}</h1>
619486f54aSMichael Davis		</div>
629486f54aSMichael Davis		<div class="modal__content">
63c016139fSIftekharul Islam			<p>{{error.desc}}</p>
649486f54aSMichael Davis		</div>
659486f54aSMichael Davis		<div class="modal__button-wrapper">
66c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="display_error = false;">Close</button>
679486f54aSMichael Davis		</div>
689486f54aSMichael Davis	</div>
6943366db7SMichael Davis</section>
70c016139fSIftekharul Islam
71*1acb412dSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': confirm_priority}">
72*1acb412dSIftekharul Islam	<div class="modal__tftp-unreachable" role="document">
73*1acb412dSIftekharul Islam		<div class="screen-reader-offscreen modal-description">Update image priority</div><!-- accessibility only; used for screen readers -->
74*1acb412dSIftekharul Islam		<div class="page-header ">
75*1acb412dSIftekharul Islam			<span class="icon icon__warning inline"><span class="accessible-text" role="alert">Warning</span></span>
76*1acb412dSIftekharul Islam			<h1 class="modal-title h4 inline">Change image priority</h1>
77*1acb412dSIftekharul Islam		</div>
78*1acb412dSIftekharul Islam		<div class="modal__content">
79*1acb412dSIftekharul Islam			<p>Change firmware {{priority_image_id}} priority?</p>
80*1acb412dSIftekharul Islam		</div>
81*1acb412dSIftekharul Islam		<div class="modal__button-wrapper">
82*1acb412dSIftekharul Islam			<button class="inline btn-secondary" ng-click="confirm_priority=false;">Cancel</button>
83*1acb412dSIftekharul Islam			<button class="inline btn-primary" ng-click="confirmChangePriority()">Continue</button>
84*1acb412dSIftekharul Islam		</div>
85*1acb412dSIftekharul Islam	</div>
86*1acb412dSIftekharul Islam</section>
87*1acb412dSIftekharul Islam
88c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': confirm_delete}">
899486f54aSMichael Davis	<div class="modal__tftp-unreachable" role="document">
909486f54aSMichael Davis		<div class="screen-reader-offscreen modal-description">Delete firmware image</div><!-- accessibility only; used for screen readers -->
919486f54aSMichael Davis		<div class="page-header ">
929486f54aSMichael Davis			<span class="icon icon__warning inline"><span class="accessible-text" role="alert">Warning</span></span>
939486f54aSMichael Davis			<h1 class="modal-title h4 inline">Delete image</h1>
949486f54aSMichael Davis		</div>
959486f54aSMichael Davis		<div class="modal__content">
96c016139fSIftekharul Islam			<p>Delete firmware {{delete_image_version}}?</p>
979486f54aSMichael Davis		</div>
989486f54aSMichael Davis		<div class="modal__button-wrapper">
99c016139fSIftekharul Islam			<button class="inline btn-secondary" ng-click="confirm_delete=false;">Cancel</button>
100c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="confirmDeleteImage()">Continue</button>
1019486f54aSMichael Davis		</div>
1029486f54aSMichael Davis	</div>
1039486f54aSMichael Davis</section>
104c016139fSIftekharul Islam
105c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': confirm_upload_image}">
1069486f54aSMichael Davis	<div class="modal__upload" role="document">
1079486f54aSMichael Davis		<div class="screen-reader-offscreen modal-description">Upload image file modal</div><!-- accessibility only; used for screen readers -->
1089486f54aSMichael Davis		<div class="page-header ">
1099486f54aSMichael Davis			<h1 class="modal-title h4"><span class="icon icon__info"><svg xmlns="http://www.w3.org/2000/svg"
1109486f54aSMichael Davis					viewBox="0 0 32 32"><path
1119486f54aSMichael Davis					d="M18 14h-6v2h1v6h-2v2h8v-2h-2z"/><circle cx="16" cy="10" r="2"/><path
1129486f54aSMichael Davis					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>
1139486f54aSMichael Davis				Upload image file
1149486f54aSMichael Davis			</h1>
1159486f54aSMichael Davis		</div>
1169486f54aSMichael Davis		<div class="modal__content">
1179486f54aSMichael Davis			<p>Uploading this image may replace a non-active image, and prevent rollback from the current active image
1189486f54aSMichael Davis				to the previous image.</p>
1199486f54aSMichael Davis		</div>
1209486f54aSMichael Davis		<div class="modal__button-wrapper">
121c016139fSIftekharul Islam			<button class="inline btn-secondary" ng-click="confirm_upload_image = false;">Cancel</button>
122c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="confirmUpload()">Continue</button>
1239486f54aSMichael Davis		</div>
1249486f54aSMichael Davis	</div>
1259486f54aSMichael Davis</section>
126c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': reboot_confirm}">
1279486f54aSMichael Davis	<div class="modal__reboot" role="document">
1289486f54aSMichael Davis		<div class="screen-reader-offscreen modal-description">Server reboot required modal</div><!-- accessibility only; used for screen readers -->
1299486f54aSMichael Davis		<div class="page-header ">
1309486f54aSMichael Davis			<h1 class="modal-title h4"><span class="icon icon__info"><svg xmlns="http://www.w3.org/2000/svg"
1319486f54aSMichael Davis					viewBox="0 0 32 32"><path
1329486f54aSMichael Davis					d="M18 14h-6v2h1v6h-2v2h8v-2h-2z"/><circle cx="16" cy="10" r="2"/><path
1339486f54aSMichael Davis					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>
1349486f54aSMichael Davis				Server reboot required
1359486f54aSMichael Davis			</h1>
1369486f54aSMichael Davis		</div>
1379486f54aSMichael Davis		<div class="modal__content">
1389486f54aSMichael Davis			<p>You specified a new primary firmware image. This change will not take effect until the server is powered
1399486f54aSMichael Davis				down and restarted.</p>
1409486f54aSMichael Davis		</div>
1419486f54aSMichael Davis		<a href="#/server-control/power-operations" class="bold modal__link">Go to power operations page</a>
1429486f54aSMichael Davis		<div class="modal__button-wrapper">
143c016139fSIftekharul Islam			<button class="inline btn-secondary" ng-click="reboot_confirm=false;">Cancel</button>
144c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="confirmWarmReboot()">Warm reboot</button>
1459486f54aSMichael Davis		</div>
1469486f54aSMichael Davis	</div>
1479486f54aSMichael Davis</section>
148c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': preserve_settings_confirm}">
1499486f54aSMichael Davis	<div class="modal__preserve-settings" role="document">
1509486f54aSMichael Davis		<div class="screen-reader-offscreen modal-description">Preserve setting modal</div><!-- accessibility only; used for screen readers -->
1519486f54aSMichael Davis		<div class="page-header ">
1529486f54aSMichael Davis			<h1 class="modal-title h4"><span class="icon icon__info"><svg xmlns="http://www.w3.org/2000/svg"
1539486f54aSMichael Davis					viewBox="0 0 32 32"><path
1549486f54aSMichael Davis					d="M18 14h-6v2h1v6h-2v2h8v-2h-2z"/><circle cx="16" cy="10" r="2"/><path
1559486f54aSMichael Davis					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>
1569486f54aSMichael Davis				Preserve settings
1579486f54aSMichael Davis			</h1>
1589486f54aSMichael Davis		</div>
1599486f54aSMichael Davis		<div class="modal__content">
1600b2bc11bSMichael Davis			<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>
1619486f54aSMichael Davis			<form>
1629486f54aSMichael Davis				<fieldset>
1639486f54aSMichael Davis					<div class="row column">
1649486f54aSMichael Davis						<label class="control-radio bold" for="preserve-settings">Preserve network settings
1659486f54aSMichael Davis							<input type="radio" name="preserve-settings" id="preserve-settings" ng-checked="true" ng-model="dhcp" ng-value="true" ng-init="dhcp=true"/>
1669486f54aSMichael Davis							<span class="control__indicator control__indicator-on"></span>
1679486f54aSMichael Davis						</label>
1689486f54aSMichael Davis					</div>
1699486f54aSMichael Davis					<div class="row column">
170ec6bcd10SIftekharul Islam						<label class="control-radio bold" for="reset-settings">Reset both user and network settings
1719486f54aSMichael Davis							<input type="radio" name="reset-settings" id="reset-settings" ng-model="dhcp" ng-value="false"/>
1729486f54aSMichael Davis							<span class="control__indicator control__indicator-on"></span>
1739486f54aSMichael Davis						</label>
1749486f54aSMichael Davis					</div>
1759486f54aSMichael Davis				</fieldset>
1769486f54aSMichael Davis			</form>
1779486f54aSMichael Davis		</div>
1789486f54aSMichael Davis		<div class="modal__button-wrapper">
179c016139fSIftekharul Islam			<button class="inline btn-secondary" ng-click="preserve_settings_confirm=false;">Cancel</button>
180c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="preserveSettingsConfirmed()">Continue</button>
1819486f54aSMichael Davis		</div>
1829486f54aSMichael Davis	</div>
1839486f54aSMichael Davis</section>
184c016139fSIftekharul Islam<div class="modal-overlay" tabindex="-1" ng-class="{'active': (display_error || confirm_upload_image || reboot_confirm || preserve_settings_confirm)}"></div>