143366db7SMichael Davis<div id="firmware">
243366db7SMichael Davis	<div class="row column">
343366db7SMichael Davis		<h1>Firmware</h1>
443366db7SMichael Davis	</div>
543366db7SMichael Davis</div>
69486f54aSMichael Davis<div class="row column">
743366db7SMichael Davis	<div class="column small-12 page-header">
89486f54aSMichael Davis		<h1 class="inline h4">Manage BMC and server firmware</h1>
99486f54aSMichael Davis	</div>
109486f54aSMichael Davis</div>
119486f54aSMichael Davis<div class="row column">
12*b27188e8SMichael 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>
13*b27188e8SMichael 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>
149486f54aSMichael Davis</div>
15c016139fSIftekharul Islam<firmware-list title="BMC images" version="bmcActiveVersion" firmwares="firmwares" filter-by="filters.bmc"></firmware-list>
16c016139fSIftekharul Islam<firmware-list title="Server images" version="hostActiveVersion" firmwares="firmwares" filter-by="filters.host"></firmware-list>
179486f54aSMichael Davis<div class="row column" id="upload">
1843366db7SMichael Davis	<div class="column small-12 page-header">
19*b27188e8SMichael Davis		<h2 class="inline h3 bold">Specify image file location</h2>
2043366db7SMichael Davis	</div>
2143366db7SMichael Davis	<form id="firmware__upload-form" role="form" class="firmware__upload-form">
22*b27188e8SMichael 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>
239486f54aSMichael Davis		<div class=" column firmware__upload-station">
24*b27188e8SMichael Davis			<h3 class="h4 bold">Upload image file from workstation</h3>
25*b27188e8SMichael Davis			<p>Select the image file saved on the workstation storage medium to upload to the server BMC.</p>
269486f54aSMichael Davis			<label for="file-upload" class="inline firmware__upload-chooser">
27c016139fSIftekharul Islam				<input id="file-upload" type="file" file="file" class="hide" onchange="angular.element(this).scope().fileNameChanged()"/>
289486f54aSMichael Davis				<span class="button btn-secondary inline">Choose a file</span>
29c016139fSIftekharul 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>
3043366db7SMichael Davis			</label>
31c016139fSIftekharul Islam			<input type="button" value="Upload firmware" class="inline button btn-primary float-right" ng-click="upload()"/>
32c016139fSIftekharul Islam			<div class="inline uploading" ng-show="uploading">Upload in progress...</div>
3343366db7SMichael Davis		</div>
349486f54aSMichael Davis		<div class=" column firmware__upload-tftp">
35*b27188e8SMichael Davis			<h3 class="h4 bold">Download image file from TFTP server</h3>
36*b27188e8SMichael Davis			<p>Specify both the TFTP server IP address and the image file name stored on it to download to the server BMC.</p>
3743366db7SMichael Davis			<fieldset>
389486f54aSMichael Davis				<div class="row">
399486f54aSMichael Davis					<div class="column small-12 large-4">
40*b27188e8SMichael Davis						<label for="tftp-ip">TFTP Server IP address</label>
4143366db7SMichael Davis						<input name="tftp-ip" id="tftp-ip" type="number"/>
4243366db7SMichael Davis					</div>
439486f54aSMichael Davis					<div class="column small-12 large-4">
4443366db7SMichael Davis						<label for="tftp-file-name">File name</label>
4543366db7SMichael Davis						<input name="tftp-file-name" id="tftp-file-name" type="text"/>
4643366db7SMichael Davis					</div>
479486f54aSMichael Davis					<div class="column small-12 large-4">
48c016139fSIftekharul Islam						<input type="submit" value="Download firmware" class="inline button btn-primary float-right"/>
499486f54aSMichael Davis					</div>
509486f54aSMichael Davis				</div>
51c016139fSIftekharul Islam				<div class="inline uploading" ng-show="downloading">Downloading in progress...</div>
5243366db7SMichael Davis			</fieldset>
5343366db7SMichael Davis		</div>
5443366db7SMichael Davis	</form>
559486f54aSMichael Davis</div>
569486f54aSMichael Davis
579486f54aSMichael Davis<!-- Firmware modals -->
58c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': display_error}">
599486f54aSMichael Davis	<div class="modal__upload-fail" role="document">
60c016139fSIftekharul Islam		<div class="screen-reader-offscreen modal-description">{{error.modal_title}}</div><!-- accessibility only; used for screen readers -->
619486f54aSMichael Davis		<div class="page-header ">
62c016139fSIftekharul Islam			<span class="icon icon__warning inline"><span class="accessible-text" role="alert">{{error.type}}</span></span>
63c016139fSIftekharul Islam			<h1 class="modal-title h4 inline">{{error.title}}</h1>
649486f54aSMichael Davis		</div>
659486f54aSMichael Davis		<div class="modal__content">
66c016139fSIftekharul Islam			<p>{{error.desc}}</p>
679486f54aSMichael Davis		</div>
689486f54aSMichael Davis		<div class="modal__button-wrapper">
69c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="display_error = false;">Close</button>
709486f54aSMichael Davis		</div>
719486f54aSMichael Davis	</div>
7243366db7SMichael Davis</section>
73c016139fSIftekharul Islam
74c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': confirm_delete}">
759486f54aSMichael Davis	<div class="modal__tftp-unreachable" role="document">
769486f54aSMichael Davis		<div class="screen-reader-offscreen modal-description">Delete firmware image</div><!-- accessibility only; used for screen readers -->
779486f54aSMichael Davis		<div class="page-header ">
789486f54aSMichael Davis			<span class="icon icon__warning inline"><span class="accessible-text" role="alert">Warning</span></span>
799486f54aSMichael Davis			<h1 class="modal-title h4 inline">Delete image</h1>
809486f54aSMichael Davis		</div>
819486f54aSMichael Davis		<div class="modal__content">
82c016139fSIftekharul Islam			<p>Delete firmware {{delete_image_version}}?</p>
839486f54aSMichael Davis		</div>
849486f54aSMichael Davis		<div class="modal__button-wrapper">
85c016139fSIftekharul Islam			<button class="inline btn-secondary" ng-click="confirm_delete=false;">Cancel</button>
86c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="confirmDeleteImage()">Continue</button>
879486f54aSMichael Davis		</div>
889486f54aSMichael Davis	</div>
899486f54aSMichael Davis</section>
90c016139fSIftekharul Islam
91c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': confirm_upload_image}">
929486f54aSMichael Davis	<div class="modal__upload" role="document">
939486f54aSMichael Davis		<div class="screen-reader-offscreen modal-description">Upload image file modal</div><!-- accessibility only; used for screen readers -->
949486f54aSMichael Davis		<div class="page-header ">
959486f54aSMichael Davis			<h1 class="modal-title h4"><span class="icon icon__info"><svg xmlns="http://www.w3.org/2000/svg"
969486f54aSMichael Davis					viewBox="0 0 32 32"><path
979486f54aSMichael Davis					d="M18 14h-6v2h1v6h-2v2h8v-2h-2z"/><circle cx="16" cy="10" r="2"/><path
989486f54aSMichael 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>
999486f54aSMichael Davis				Upload image file
1009486f54aSMichael Davis			</h1>
1019486f54aSMichael Davis		</div>
1029486f54aSMichael Davis		<div class="modal__content">
1039486f54aSMichael Davis			<p>Uploading this image may replace a non-active image, and prevent rollback from the current active image
1049486f54aSMichael Davis				to the previous image.</p>
1059486f54aSMichael Davis		</div>
1069486f54aSMichael Davis		<div class="modal__button-wrapper">
107c016139fSIftekharul Islam			<button class="inline btn-secondary" ng-click="confirm_upload_image = false;">Cancel</button>
108c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="confirmUpload()">Continue</button>
1099486f54aSMichael Davis		</div>
1109486f54aSMichael Davis	</div>
1119486f54aSMichael Davis</section>
112c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': reboot_confirm}">
1139486f54aSMichael Davis	<div class="modal__reboot" role="document">
1149486f54aSMichael Davis		<div class="screen-reader-offscreen modal-description">Server reboot required modal</div><!-- accessibility only; used for screen readers -->
1159486f54aSMichael Davis		<div class="page-header ">
1169486f54aSMichael Davis			<h1 class="modal-title h4"><span class="icon icon__info"><svg xmlns="http://www.w3.org/2000/svg"
1179486f54aSMichael Davis					viewBox="0 0 32 32"><path
1189486f54aSMichael Davis					d="M18 14h-6v2h1v6h-2v2h8v-2h-2z"/><circle cx="16" cy="10" r="2"/><path
1199486f54aSMichael 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>
1209486f54aSMichael Davis				Server reboot required
1219486f54aSMichael Davis			</h1>
1229486f54aSMichael Davis		</div>
1239486f54aSMichael Davis		<div class="modal__content">
1249486f54aSMichael Davis			<p>You specified a new primary firmware image. This change will not take effect until the server is powered
1259486f54aSMichael Davis				down and restarted.</p>
1269486f54aSMichael Davis		</div>
1279486f54aSMichael Davis		<a href="#/server-control/power-operations" class="bold modal__link">Go to power operations page</a>
1289486f54aSMichael Davis		<div class="modal__button-wrapper">
129c016139fSIftekharul Islam			<button class="inline btn-secondary" ng-click="reboot_confirm=false;">Cancel</button>
130c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="confirmWarmReboot()">Warm reboot</button>
1319486f54aSMichael Davis		</div>
1329486f54aSMichael Davis	</div>
1339486f54aSMichael Davis</section>
134c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': preserve_settings_confirm}">
1359486f54aSMichael Davis	<div class="modal__preserve-settings" role="document">
1369486f54aSMichael Davis		<div class="screen-reader-offscreen modal-description">Preserve setting modal</div><!-- accessibility only; used for screen readers -->
1379486f54aSMichael Davis		<div class="page-header ">
1389486f54aSMichael Davis			<h1 class="modal-title h4"><span class="icon icon__info"><svg xmlns="http://www.w3.org/2000/svg"
1399486f54aSMichael Davis					viewBox="0 0 32 32"><path
1409486f54aSMichael Davis					d="M18 14h-6v2h1v6h-2v2h8v-2h-2z"/><circle cx="16" cy="10" r="2"/><path
1419486f54aSMichael 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>
1429486f54aSMichael Davis				Preserve settings
1439486f54aSMichael Davis			</h1>
1449486f54aSMichael Davis		</div>
1459486f54aSMichael Davis		<div class="modal__content">
1469486f54aSMichael Davis			<p>Switching to a new BMC firmware image will erase current user settings. Network settings will be preserved unless you choose to reset all settings.</p>
1479486f54aSMichael Davis			<form>
1489486f54aSMichael Davis				<fieldset>
1499486f54aSMichael Davis					<div class="row column">
1509486f54aSMichael Davis						<label class="control-radio bold" for="preserve-settings">Preserve network settings
1519486f54aSMichael Davis							<input type="radio" name="preserve-settings" id="preserve-settings" ng-checked="true" ng-model="dhcp" ng-value="true" ng-init="dhcp=true"/>
1529486f54aSMichael Davis							<span class="control__indicator control__indicator-on"></span>
1539486f54aSMichael Davis						</label>
1549486f54aSMichael Davis					</div>
1559486f54aSMichael Davis					<div class="row column">
1569486f54aSMichael Davis						<label class="control-radio bold" for="reset-settings">Reset all user and network settings
1579486f54aSMichael Davis							<input type="radio" name="reset-settings" id="reset-settings" ng-model="dhcp" ng-value="false"/>
1589486f54aSMichael Davis							<span class="control__indicator control__indicator-on"></span>
1599486f54aSMichael Davis						</label>
1609486f54aSMichael Davis					</div>
1619486f54aSMichael Davis				</fieldset>
1629486f54aSMichael Davis			</form>
1639486f54aSMichael Davis		</div>
1649486f54aSMichael Davis		<div class="modal__button-wrapper">
165c016139fSIftekharul Islam			<button class="inline btn-secondary" ng-click="preserve_settings_confirm=false;">Cancel</button>
166c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="preserveSettingsConfirmed()">Continue</button>
1679486f54aSMichael Davis		</div>
1689486f54aSMichael Davis	</div>
1699486f54aSMichael Davis</section>
170c016139fSIftekharul Islam<div class="modal-overlay" tabindex="-1" ng-class="{'active': (display_error || confirm_upload_image || reboot_confirm || preserve_settings_confirm)}"></div>