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">
129486f54aSMichael Davis	<p>Use the tables at the top of the page to manage firmware images that are currently available on the BMC. The
139486f54aSMichael Davis		image at the top of the table is the Primary image, which will be used the next time the device is
149486f54aSMichael Davis		booted. To change which image is Primary, move the image you want to use as the Primary to the top of the tablw using the arrows.</p>
159486f54aSMichael Davis	<p>Use the Upload images section of this page to transfer new firmware images to the BMC. After uploading a new
169486f54aSMichael Davis		image, activate it to make it available for use.</p>
179486f54aSMichael Davis	<button class="inline btn-primary" ng-click="gotoAnchor()">
189486f54aSMichael Davis		<span class="icon icon__bar-arrow">&nbsp;</span>&nbsp;&nbsp;Scroll to upload image file
199486f54aSMichael Davis	</button>
209486f54aSMichael Davis</div>
21*c016139fSIftekharul Islam<firmware-list title="BMC images" version="bmcActiveVersion" firmwares="firmwares" filter-by="filters.bmc"></firmware-list>
22*c016139fSIftekharul Islam<firmware-list title="Server images" version="hostActiveVersion" firmwares="firmwares" filter-by="filters.host"></firmware-list>
239486f54aSMichael Davis<div class="row column" id="upload">
2443366db7SMichael Davis	<div class="column small-12 page-header">
2543366db7SMichael Davis		<h2 class="inline h3 bold">Upload firmware image</h2>
269486f54aSMichael 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>
2743366db7SMichael Davis	</div>
2843366db7SMichael Davis	<form id="firmware__upload-form" role="form" class="firmware__upload-form">
299486f54aSMichael Davis		<div class=" column firmware__upload-station">
309486f54aSMichael Davis			<h3 class="h4 bold">Upload from workstation</h3>
319486f54aSMichael Davis			<p>Optional text area. Can be used to explain about updating openBMC firmware from workstation. This could
329486f54aSMichael Davis				be step-by-step instruction. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce et</p>
339486f54aSMichael Davis			<label for="file-upload" class="inline firmware__upload-chooser">
34*c016139fSIftekharul Islam				<input id="file-upload" type="file" file="file" class="hide" onchange="angular.element(this).scope().fileNameChanged()"/>
359486f54aSMichael Davis				<span class="button btn-secondary inline">Choose a file</span>
36*c016139fSIftekharul 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>
3743366db7SMichael Davis			</label>
38*c016139fSIftekharul Islam			<input type="button" value="Upload firmware" class="inline button btn-primary float-right" ng-click="upload()"/>
39*c016139fSIftekharul Islam			<div class="inline uploading" ng-show="uploading">Upload in progress...</div>
4043366db7SMichael Davis		</div>
419486f54aSMichael Davis		<div class=" column firmware__upload-tftp">
429486f54aSMichael Davis			<h3 class="h4 bold">Download from TFTP server</h3>
439486f54aSMichael Davis			<p>Optional text area. Can be used to explain about updating openBMC firmware from workstation. This could
449486f54aSMichael Davis				be step-by-step instruction. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce et</p>
4543366db7SMichael Davis			<fieldset>
469486f54aSMichael Davis				<div class="row">
479486f54aSMichael Davis					<div class="column small-12 large-4">
4843366db7SMichael Davis						<label for="tftp-ip">Server IP address</label>
4943366db7SMichael Davis						<input name="tftp-ip" id="tftp-ip" type="number"/>
5043366db7SMichael Davis					</div>
519486f54aSMichael Davis					<div class="column small-12 large-4">
5243366db7SMichael Davis						<label for="tftp-file-name">File name</label>
5343366db7SMichael Davis						<input name="tftp-file-name" id="tftp-file-name" type="text"/>
5443366db7SMichael Davis					</div>
559486f54aSMichael Davis					<div class="column small-12 large-4">
56*c016139fSIftekharul Islam						<input type="submit" value="Download firmware" class="inline button btn-primary float-right"/>
579486f54aSMichael Davis					</div>
589486f54aSMichael Davis				</div>
59*c016139fSIftekharul Islam				<div class="inline uploading" ng-show="downloading">Downloading in progress...</div>
6043366db7SMichael Davis			</fieldset>
6143366db7SMichael Davis		</div>
6243366db7SMichael Davis	</form>
639486f54aSMichael Davis</div>
649486f54aSMichael Davis
659486f54aSMichael Davis<!-- Firmware modals -->
66*c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': display_error}">
679486f54aSMichael Davis	<div class="modal__upload-fail" role="document">
68*c016139fSIftekharul Islam		<div class="screen-reader-offscreen modal-description">{{error.modal_title}}</div><!-- accessibility only; used for screen readers -->
699486f54aSMichael Davis		<div class="page-header ">
70*c016139fSIftekharul Islam			<span class="icon icon__warning inline"><span class="accessible-text" role="alert">{{error.type}}</span></span>
71*c016139fSIftekharul Islam			<h1 class="modal-title h4 inline">{{error.title}}</h1>
729486f54aSMichael Davis		</div>
739486f54aSMichael Davis		<div class="modal__content">
74*c016139fSIftekharul Islam			<p>{{error.desc}}</p>
759486f54aSMichael Davis		</div>
769486f54aSMichael Davis		<div class="modal__button-wrapper">
77*c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="display_error = false;">Close</button>
789486f54aSMichael Davis		</div>
799486f54aSMichael Davis	</div>
8043366db7SMichael Davis</section>
81*c016139fSIftekharul Islam
82*c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': confirm_delete}">
839486f54aSMichael Davis	<div class="modal__tftp-unreachable" role="document">
849486f54aSMichael Davis		<div class="screen-reader-offscreen modal-description">Delete firmware image</div><!-- accessibility only; used for screen readers -->
859486f54aSMichael Davis		<div class="page-header ">
869486f54aSMichael Davis			<span class="icon icon__warning inline"><span class="accessible-text" role="alert">Warning</span></span>
879486f54aSMichael Davis			<h1 class="modal-title h4 inline">Delete image</h1>
889486f54aSMichael Davis		</div>
899486f54aSMichael Davis		<div class="modal__content">
90*c016139fSIftekharul Islam			<p>Delete firmware {{delete_image_version}}?</p>
919486f54aSMichael Davis		</div>
929486f54aSMichael Davis		<div class="modal__button-wrapper">
93*c016139fSIftekharul Islam			<button class="inline btn-secondary" ng-click="confirm_delete=false;">Cancel</button>
94*c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="confirmDeleteImage()">Continue</button>
959486f54aSMichael Davis		</div>
969486f54aSMichael Davis	</div>
979486f54aSMichael Davis</section>
98*c016139fSIftekharul Islam
99*c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': confirm_upload_image}">
1009486f54aSMichael Davis	<div class="modal__upload" role="document">
1019486f54aSMichael Davis		<div class="screen-reader-offscreen modal-description">Upload image file modal</div><!-- accessibility only; used for screen readers -->
1029486f54aSMichael Davis		<div class="page-header ">
1039486f54aSMichael Davis			<h1 class="modal-title h4"><span class="icon icon__info"><svg xmlns="http://www.w3.org/2000/svg"
1049486f54aSMichael Davis					viewBox="0 0 32 32"><path
1059486f54aSMichael Davis					d="M18 14h-6v2h1v6h-2v2h8v-2h-2z"/><circle cx="16" cy="10" r="2"/><path
1069486f54aSMichael 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>
1079486f54aSMichael Davis				Upload image file
1089486f54aSMichael Davis			</h1>
1099486f54aSMichael Davis		</div>
1109486f54aSMichael Davis		<div class="modal__content">
1119486f54aSMichael Davis			<p>Uploading this image may replace a non-active image, and prevent rollback from the current active image
1129486f54aSMichael Davis				to the previous image.</p>
1139486f54aSMichael Davis		</div>
1149486f54aSMichael Davis		<div class="modal__button-wrapper">
115*c016139fSIftekharul Islam			<button class="inline btn-secondary" ng-click="confirm_upload_image = false;">Cancel</button>
116*c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="confirmUpload()">Continue</button>
1179486f54aSMichael Davis		</div>
1189486f54aSMichael Davis	</div>
1199486f54aSMichael Davis</section>
120*c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': reboot_confirm}">
1219486f54aSMichael Davis	<div class="modal__reboot" role="document">
1229486f54aSMichael Davis		<div class="screen-reader-offscreen modal-description">Server reboot required modal</div><!-- accessibility only; used for screen readers -->
1239486f54aSMichael Davis		<div class="page-header ">
1249486f54aSMichael Davis			<h1 class="modal-title h4"><span class="icon icon__info"><svg xmlns="http://www.w3.org/2000/svg"
1259486f54aSMichael Davis					viewBox="0 0 32 32"><path
1269486f54aSMichael Davis					d="M18 14h-6v2h1v6h-2v2h8v-2h-2z"/><circle cx="16" cy="10" r="2"/><path
1279486f54aSMichael 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>
1289486f54aSMichael Davis				Server reboot required
1299486f54aSMichael Davis			</h1>
1309486f54aSMichael Davis		</div>
1319486f54aSMichael Davis		<div class="modal__content">
1329486f54aSMichael Davis			<p>You specified a new primary firmware image. This change will not take effect until the server is powered
1339486f54aSMichael Davis				down and restarted.</p>
1349486f54aSMichael Davis		</div>
1359486f54aSMichael Davis		<a href="#/server-control/power-operations" class="bold modal__link">Go to power operations page</a>
1369486f54aSMichael Davis		<div class="modal__button-wrapper">
137*c016139fSIftekharul Islam			<button class="inline btn-secondary" ng-click="reboot_confirm=false;">Cancel</button>
138*c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="confirmWarmReboot()">Warm reboot</button>
1399486f54aSMichael Davis		</div>
1409486f54aSMichael Davis	</div>
1419486f54aSMichael Davis</section>
142*c016139fSIftekharul Islam<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': preserve_settings_confirm}">
1439486f54aSMichael Davis	<div class="modal__preserve-settings" role="document">
1449486f54aSMichael Davis		<div class="screen-reader-offscreen modal-description">Preserve setting modal</div><!-- accessibility only; used for screen readers -->
1459486f54aSMichael Davis		<div class="page-header ">
1469486f54aSMichael Davis			<h1 class="modal-title h4"><span class="icon icon__info"><svg xmlns="http://www.w3.org/2000/svg"
1479486f54aSMichael Davis					viewBox="0 0 32 32"><path
1489486f54aSMichael Davis					d="M18 14h-6v2h1v6h-2v2h8v-2h-2z"/><circle cx="16" cy="10" r="2"/><path
1499486f54aSMichael 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>
1509486f54aSMichael Davis				Preserve settings
1519486f54aSMichael Davis			</h1>
1529486f54aSMichael Davis		</div>
1539486f54aSMichael Davis		<div class="modal__content">
1549486f54aSMichael 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>
1559486f54aSMichael Davis			<form>
1569486f54aSMichael Davis				<fieldset>
1579486f54aSMichael Davis					<div class="row column">
1589486f54aSMichael Davis						<label class="control-radio bold" for="preserve-settings">Preserve network settings
1599486f54aSMichael Davis							<input type="radio" name="preserve-settings" id="preserve-settings" ng-checked="true" ng-model="dhcp" ng-value="true" ng-init="dhcp=true"/>
1609486f54aSMichael Davis							<span class="control__indicator control__indicator-on"></span>
1619486f54aSMichael Davis						</label>
1629486f54aSMichael Davis					</div>
1639486f54aSMichael Davis					<div class="row column">
1649486f54aSMichael Davis						<label class="control-radio bold" for="reset-settings">Reset all user and network settings
1659486f54aSMichael Davis							<input type="radio" name="reset-settings" id="reset-settings" ng-model="dhcp" ng-value="false"/>
1669486f54aSMichael Davis							<span class="control__indicator control__indicator-on"></span>
1679486f54aSMichael Davis						</label>
1689486f54aSMichael Davis					</div>
1699486f54aSMichael Davis				</fieldset>
1709486f54aSMichael Davis			</form>
1719486f54aSMichael Davis		</div>
1729486f54aSMichael Davis		<div class="modal__button-wrapper">
173*c016139fSIftekharul Islam			<button class="inline btn-secondary" ng-click="preserve_settings_confirm=false;">Cancel</button>
174*c016139fSIftekharul Islam			<button class="inline btn-primary" ng-click="preserveSettingsConfirmed()">Continue</button>
1759486f54aSMichael Davis		</div>
1769486f54aSMichael Davis	</div>
1779486f54aSMichael Davis</section>
178*c016139fSIftekharul Islam<div class="modal-overlay" tabindex="-1" ng-class="{'active': (display_error || confirm_upload_image || reboot_confirm || preserve_settings_confirm)}"></div>