blob: 812f4710e6f109ee9bd09cacaca8850a60005daf [file] [log] [blame]
Michael Davis43366db2017-05-15 18:12:35 -05001/**
2 * Controller for firmware
3 *
4 * @module app/configuration
5 * @exports firmwareController
6 * @name firmwareController
7 * @version 0.1.0
8 */
9
10window.angular && (function (angular) {
11 'use strict';
12
13 angular
14 .module('app.configuration')
15 .controller('firmwareController', [
16 '$scope',
17 '$window',
18 'APIUtils',
19 'dataService',
20 '$location',
21 '$anchorScroll',
Iftekharul Islam1acb4122017-11-02 13:20:32 -050022 'Constants',
23 function ($scope, $window, APIUtils, dataService, $location, $anchorScroll, Constants) {
Michael Davis43366db2017-05-15 18:12:35 -050024 $scope.dataService = dataService;
25
Michael Davis43366db2017-05-15 18:12:35 -050026 //Scroll to target anchor
27 $scope.gotoAnchor = function () {
28 $location.hash('upload');
29 $anchorScroll();
30 };
Iftekharul Islamc0161392017-06-14 15:46:15 -050031
32 $scope.firmwares = [];
33 $scope.bmcActiveVersion = "";
34 $scope.hostActiveVersion = "";
35 $scope.display_error = false;
Gunnar Millse7f83972018-03-21 11:03:35 -050036 $scope.activate_confirm = false;
Iftekharul Islamc0161392017-06-14 15:46:15 -050037 $scope.delete_image_id = "";
Gunnar Mills607a1202018-03-01 16:26:50 -060038 $scope.delete_image_version = "";
Iftekharul Islamc0161392017-06-14 15:46:15 -050039 $scope.activate_image_id = "";
Gunnar Millse7f83972018-03-21 11:03:35 -050040 $scope.activate_image_version = "";
Iftekharul Islam1acb4122017-11-02 13:20:32 -050041 $scope.priority_image_id = "";
Gunnar Mills6473a412018-03-01 16:19:37 -060042 $scope.priority_image_version = "";
Iftekharul Islam1acb4122017-11-02 13:20:32 -050043 $scope.priority_from = -1;
44 $scope.priority_to = -1;
45 $scope.confirm_priority = false;
Iftekharul Islamc0161392017-06-14 15:46:15 -050046 $scope.file_empty = true;
47 $scope.uploading = false;
48
49 $scope.error = {
50 modal_title: "",
51 title: "",
52 desc: "",
53 type: "warning"
54 };
55
Gunnar Millse7f83972018-03-21 11:03:35 -050056 $scope.activateImage = function(imageId, imageVersion){
Iftekharul Islamc0161392017-06-14 15:46:15 -050057 $scope.activate_image_id = imageId;
Gunnar Millse7f83972018-03-21 11:03:35 -050058 $scope.activate_image_version = imageVersion;
59 $scope.activate_confirm = true;
Iftekharul Islamc0161392017-06-14 15:46:15 -050060 }
61
62 $scope.displayError = function(data){
63 $scope.error = data;
64 $scope.display_error = true;
65 }
66
Gunnar Millse7f83972018-03-21 11:03:35 -050067 $scope.activateConfirmed = function(){
Iftekharul Islam2a489552017-11-02 13:23:08 -050068 $scope.uploading = true;
69 APIUtils.activateImage($scope.activate_image_id).then(function(response){
Gunnar Millseedefd32018-02-28 17:02:34 -060070 $scope.uploading = false;
Iftekharul Islam2a489552017-11-02 13:23:08 -050071 if(response.status == 'error'){
72 $scope.displayError({
73 modal_title: response.data.description,
74 title: response.data.description,
75 desc: response.data.exception,
76 type: 'Error'
77 });
78 }else{
79 $scope.loadFirmwares();
80 }
81 });
Gunnar Millse7f83972018-03-21 11:03:35 -050082 $scope.activate_confirm = false;
Iftekharul Islamc0161392017-06-14 15:46:15 -050083 }
84
Iftekharul Islamc0161392017-06-14 15:46:15 -050085 $scope.upload = function(){
Gunnar Millsdddb1492018-02-19 16:27:27 -060086 if($scope.file) {
87 $scope.uploading = true;
88 APIUtils.uploadImage($scope.file).then(function(response){
89 $scope.uploading = false;
90 if(response.status == 'error'){
91 $scope.displayError({
92 modal_title: response.data.description,
93 title: response.data.description,
94 desc: response.data.exception,
95 type: 'Error'
96 });
97 }else{
98 $scope.loadFirmwares();
99 }
100 });
Iftekharul Islamc0161392017-06-14 15:46:15 -0500101 }
102 }
Iftekharul Islamc0161392017-06-14 15:46:15 -0500103
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500104 $scope.download = function(){
105 $scope.downloading = true;
106 APIUtils.downloadImage($scope.download_host, $scope.download_filename).then(function(response){
107 var data = response.data;
108 $scope.downloading = false;
109 var headers = response.headers();
110
111 var filename = headers['x-filename'];
112 var contentType = headers['content-type'];
113
114 if(!headers['x-filename']){
Iftekharul Islam2a489552017-11-02 13:23:08 -0500115 filename = $scope.download_filename;
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500116 }
117
118 var linkElement = document.createElement('a');
119 try {
120 var blob = new Blob([data], { type: contentType });
121 var url = window.URL.createObjectURL(blob);
122
123 linkElement.setAttribute('href', url);
124 linkElement.setAttribute("download", filename);
125
126 var clickEvent = new MouseEvent("click", {
127 "view": window,
128 "bubbles": true,
129 "cancelable": false
130 });
131 linkElement.dispatchEvent(clickEvent);
132 } catch (ex) {
133 console.log(ex);
134 }
135 });
136 }
137
Gunnar Mills6473a412018-03-01 16:19:37 -0600138 $scope.changePriority = function(imageId, imageVersion, from, to){
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500139 $scope.priority_image_id = imageId;
Gunnar Mills6473a412018-03-01 16:19:37 -0600140 $scope.priority_image_version = imageVersion;
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500141 $scope.priority_from = from;
142 $scope.priority_to = to;
Gunnar Millsf4d9bc42018-03-06 15:42:40 -0600143 $scope.confirm_priority = true;
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500144 }
145
146 $scope.confirmChangePriority = function(){
147 $scope.loading = true;
148 APIUtils.changePriority($scope.priority_image_id, $scope.priority_to).then(function(response){
149 $scope.loading = false;
150 if(response.status == 'error'){
151 $scope.displayError({
152 modal_title: response.data.description,
153 title: response.data.description,
154 desc: response.data.exception,
155 type: 'Error'
156 });
157 }else{
158 $scope.loadFirmwares();
159 }
160 });
161 $scope.confirm_priority = false;
162 }
Gunnar Mills607a1202018-03-01 16:26:50 -0600163 $scope.deleteImage = function(imageId, imageVersion){
Iftekharul Islamc0161392017-06-14 15:46:15 -0500164 $scope.delete_image_id = imageId;
Gunnar Mills607a1202018-03-01 16:26:50 -0600165 $scope.delete_image_version = imageVersion;
Iftekharul Islamc0161392017-06-14 15:46:15 -0500166 $scope.confirm_delete = true;
167 }
Iftekharul Islam2a489552017-11-02 13:23:08 -0500168 $scope.confirmDeleteImage = function(){
169 $scope.loading = true;
170 APIUtils.deleteImage($scope.delete_image_id).then(function(response){
171 $scope.loading = false;
172 if(response.status == 'error'){
173 $scope.displayError({
174 modal_title: response.data.description,
175 title: response.data.description,
176 desc: response.data.exception,
177 type: 'Error'
178 });
179 }else{
180 $scope.loadFirmwares();
181 }
182 });
Iftekharul Islamc0161392017-06-14 15:46:15 -0500183 $scope.confirm_delete = false;
184 }
Iftekharul Islamc0161392017-06-14 15:46:15 -0500185 $scope.fileNameChanged = function(){
186 $scope.file_empty = false;
187 }
188
189 $scope.uploading = false;
190 $scope.filters = {
191 bmc: {
192 imageType: 'BMC'
193 },
194 host: {
195 imageType: 'Host'
196 }
197 };
198
199 $scope.loadFirmwares = function(){
Michael Davisdf3bd122017-08-10 11:03:42 -0500200 APIUtils.getFirmwares().then(function(result){
201 $scope.firmwares = result.data;
202 $scope.bmcActiveVersion = result.bmcActiveVersion;
203 $scope.hostActiveVersion = result.hostActiveVersion;
Iftekharul Islamc0161392017-06-14 15:46:15 -0500204 });
205 }
206
207 $scope.loadFirmwares();
Michael Davis43366db2017-05-15 18:12:35 -0500208 }
209 ]
210 );
211
212})(angular);