blob: b9a87b769034874622f7012eac3bb2cfac2645b3 [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 = "";
Gunnar Millsee6efd82018-03-21 15:31:56 -050041 $scope.activate_image_type = "";
Iftekharul Islam1acb4122017-11-02 13:20:32 -050042 $scope.priority_image_id = "";
Gunnar Mills6473a412018-03-01 16:19:37 -060043 $scope.priority_image_version = "";
Iftekharul Islam1acb4122017-11-02 13:20:32 -050044 $scope.priority_from = -1;
45 $scope.priority_to = -1;
46 $scope.confirm_priority = false;
Iftekharul Islamc0161392017-06-14 15:46:15 -050047 $scope.file_empty = true;
48 $scope.uploading = false;
49
50 $scope.error = {
51 modal_title: "",
52 title: "",
53 desc: "",
54 type: "warning"
55 };
56
Gunnar Millsee6efd82018-03-21 15:31:56 -050057 $scope.activateImage = function(imageId, imageVersion, imageType){
Iftekharul Islamc0161392017-06-14 15:46:15 -050058 $scope.activate_image_id = imageId;
Gunnar Millse7f83972018-03-21 11:03:35 -050059 $scope.activate_image_version = imageVersion;
Gunnar Millsee6efd82018-03-21 15:31:56 -050060 $scope.activate_image_type = imageType;
Gunnar Millse7f83972018-03-21 11:03:35 -050061 $scope.activate_confirm = true;
Iftekharul Islamc0161392017-06-14 15:46:15 -050062 }
63
64 $scope.displayError = function(data){
65 $scope.error = data;
66 $scope.display_error = true;
67 }
68
Gunnar Millse7f83972018-03-21 11:03:35 -050069 $scope.activateConfirmed = function(){
Iftekharul Islam2a489552017-11-02 13:23:08 -050070 $scope.uploading = true;
71 APIUtils.activateImage($scope.activate_image_id).then(function(response){
Gunnar Millseedefd32018-02-28 17:02:34 -060072 $scope.uploading = false;
Iftekharul Islam2a489552017-11-02 13:23:08 -050073 if(response.status == 'error'){
74 $scope.displayError({
75 modal_title: response.data.description,
76 title: response.data.description,
77 desc: response.data.exception,
78 type: 'Error'
79 });
80 }else{
81 $scope.loadFirmwares();
82 }
83 });
Gunnar Millse7f83972018-03-21 11:03:35 -050084 $scope.activate_confirm = false;
Iftekharul Islamc0161392017-06-14 15:46:15 -050085 }
86
Iftekharul Islamc0161392017-06-14 15:46:15 -050087 $scope.upload = function(){
Gunnar Millsdddb1492018-02-19 16:27:27 -060088 if($scope.file) {
89 $scope.uploading = true;
90 APIUtils.uploadImage($scope.file).then(function(response){
91 $scope.uploading = false;
92 if(response.status == 'error'){
93 $scope.displayError({
94 modal_title: response.data.description,
95 title: response.data.description,
96 desc: response.data.exception,
97 type: 'Error'
98 });
99 }else{
100 $scope.loadFirmwares();
101 }
102 });
Iftekharul Islamc0161392017-06-14 15:46:15 -0500103 }
104 }
Iftekharul Islamc0161392017-06-14 15:46:15 -0500105
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500106 $scope.download = function(){
107 $scope.downloading = true;
108 APIUtils.downloadImage($scope.download_host, $scope.download_filename).then(function(response){
109 var data = response.data;
110 $scope.downloading = false;
111 var headers = response.headers();
112
113 var filename = headers['x-filename'];
114 var contentType = headers['content-type'];
115
116 if(!headers['x-filename']){
Iftekharul Islam2a489552017-11-02 13:23:08 -0500117 filename = $scope.download_filename;
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500118 }
119
120 var linkElement = document.createElement('a');
121 try {
122 var blob = new Blob([data], { type: contentType });
123 var url = window.URL.createObjectURL(blob);
124
125 linkElement.setAttribute('href', url);
126 linkElement.setAttribute("download", filename);
127
128 var clickEvent = new MouseEvent("click", {
129 "view": window,
130 "bubbles": true,
131 "cancelable": false
132 });
133 linkElement.dispatchEvent(clickEvent);
134 } catch (ex) {
135 console.log(ex);
136 }
137 });
138 }
139
Gunnar Mills6473a412018-03-01 16:19:37 -0600140 $scope.changePriority = function(imageId, imageVersion, from, to){
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500141 $scope.priority_image_id = imageId;
Gunnar Mills6473a412018-03-01 16:19:37 -0600142 $scope.priority_image_version = imageVersion;
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500143 $scope.priority_from = from;
144 $scope.priority_to = to;
Gunnar Millsf4d9bc42018-03-06 15:42:40 -0600145 $scope.confirm_priority = true;
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500146 }
147
148 $scope.confirmChangePriority = function(){
149 $scope.loading = true;
150 APIUtils.changePriority($scope.priority_image_id, $scope.priority_to).then(function(response){
151 $scope.loading = false;
152 if(response.status == 'error'){
153 $scope.displayError({
154 modal_title: response.data.description,
155 title: response.data.description,
156 desc: response.data.exception,
157 type: 'Error'
158 });
159 }else{
160 $scope.loadFirmwares();
161 }
162 });
163 $scope.confirm_priority = false;
164 }
Gunnar Mills607a1202018-03-01 16:26:50 -0600165 $scope.deleteImage = function(imageId, imageVersion){
Iftekharul Islamc0161392017-06-14 15:46:15 -0500166 $scope.delete_image_id = imageId;
Gunnar Mills607a1202018-03-01 16:26:50 -0600167 $scope.delete_image_version = imageVersion;
Iftekharul Islamc0161392017-06-14 15:46:15 -0500168 $scope.confirm_delete = true;
169 }
Iftekharul Islam2a489552017-11-02 13:23:08 -0500170 $scope.confirmDeleteImage = function(){
171 $scope.loading = true;
172 APIUtils.deleteImage($scope.delete_image_id).then(function(response){
173 $scope.loading = false;
174 if(response.status == 'error'){
175 $scope.displayError({
176 modal_title: response.data.description,
177 title: response.data.description,
178 desc: response.data.exception,
179 type: 'Error'
180 });
181 }else{
182 $scope.loadFirmwares();
183 }
184 });
Iftekharul Islamc0161392017-06-14 15:46:15 -0500185 $scope.confirm_delete = false;
186 }
Iftekharul Islamc0161392017-06-14 15:46:15 -0500187 $scope.fileNameChanged = function(){
188 $scope.file_empty = false;
189 }
190
191 $scope.uploading = false;
192 $scope.filters = {
193 bmc: {
194 imageType: 'BMC'
195 },
196 host: {
197 imageType: 'Host'
198 }
199 };
200
201 $scope.loadFirmwares = function(){
Michael Davisdf3bd122017-08-10 11:03:42 -0500202 APIUtils.getFirmwares().then(function(result){
203 $scope.firmwares = result.data;
204 $scope.bmcActiveVersion = result.bmcActiveVersion;
205 $scope.hostActiveVersion = result.hostActiveVersion;
Iftekharul Islamc0161392017-06-14 15:46:15 -0500206 });
207 }
208
209 $scope.loadFirmwares();
Michael Davis43366db2017-05-15 18:12:35 -0500210 }
211 ]
212 );
213
214})(angular);