'use strict'; angular.module('yardStickGui2App') .controller('ImageController', ['$scope', '$state', '$stateParams', 'mainFactory', 'Upload', 'toaster', '$location', '$interval', 'ngDialog', function($scope, $state, $stateParams, mainFactory, Upload, toaster, $location, $interval, ngDialog) { init(); function init() { $scope.showloading = false; $scope.ifshowStatus = 0; $scope.yardstickImage = [ { 'name': 'yardstick-image', 'description': '', 'size': 'N/A', 'status': 'N/A', 'time': 'N/A' }, { 'name': 'Ubuntu-16.04', 'description': '', 'size': 'N/A', 'status': 'N/A', 'time': 'N/A' }, { 'name': 'cirros-0.3.5', 'description': '', 'size': 'N/A', 'status': 'N/A', 'time': 'N/A' } ]; $scope.customImage = []; $scope.uuid = $stateParams.uuid; $scope.showloading = false; $scope.url = null; $scope.environmentInfo = null; getYardstickImageList(); getCustomImageList(function(image, image_id){}); } function getYardstickImageList(){ mainFactory.ImageList().get({}).$promise.then(function(response){ if(response.status == 1){ angular.forEach($scope.yardstickImage, function(ele, index){ if(typeof(response.result.images[ele.name]) != 'undefined'){ $scope.yardstickImage[index] = response.result.images[ele.name]; } }); }else{ mainFactory.errorHandler1(response); } }, function(response){ mainFactory.errorHandler2(response); }); } function getCustomImageList(func){ mainFactory.ItemDetail().get({ 'envId': $stateParams.uuid }).$promise.then(function(response) { if(response.status == 1){ $scope.environmentInfo = response.result.environment; $scope.customImage = []; angular.forEach(response.result.environment.image_id, function(ele){ mainFactory.getImage().get({'imageId': ele}).$promise.then(function(responseData){ if(responseData.status == 1){ $scope.customImage.push(responseData.result.image); func(responseData.result.image, ele); }else{ mainFactory.errorHandler1(responseData); } }, function(errorData){ mainFactory.errorHandler2(errorData); }); }); }else{ mainFactory.errorHandler1(response); } }, function(response){ mainFactory.errorHandler2(response); }); } $scope.loadYardstickImage = function(image_name){ var updateImageTask = $interval(updateYardstickImage, 10000); function updateYardstickImage(){ mainFactory.ImageList().get({}).$promise.then(function(responseData){ if(responseData.status == 1){ if(typeof(responseData.result.images[image_name]) != 'undefined' && responseData.result.images[image_name].status == 'ACTIVE'){ angular.forEach($scope.yardstickImage, function(ele, index){ if(ele.name == image_name){ $scope.yardstickImage[index] = responseData.result.images[ele.name]; } }); $interval.cancel(updateImageTask); } }else{ mainFactory.errorHandler1(responseData); } },function(errorData){ mainFactory.errorHandler2(errorData); }); } mainFactory.uploadImage().post({'action': 'load_image', 'args': {'name': image_name}}).$promise.then(function(response){ },function(response){ mainFactory.errorHandler2(response); }); } $scope.deleteYardstickImage = function(image_name){ var updateImageTask = $interval(updateYardstickImage, 10000); function updateYardstickImage(){ mainFactory.ImageList().get({}).$promise.then(function(response){ if(response.status == 1){ if(typeof(response.result.images[image_name]) == 'undefined'){ angular.forEach($scope.yardstickImage, function(ele, index){ if(ele.name == image_name){ $scope.yardstickImage[index].size = 'N/A'; $scope.yardstickImage[index].status = 'N/A'; $scope.yardstickImage[index].time = 'N/A'; } }); $interval.cancel(updateImageTask); } }else{ mainFactory.errorHandler1(response); } },function(response){ mainFactory.errorHandler2(response); }); } mainFactory.uploadImage().post({'action': 'delete_image', 'args': {'name': image_name}}).$promise.then(function(response){ },function(response){ mainFactory.errorHandler2(response); }); } $scope.uploadCustomImageByUrl = function(url){ mainFactory.uploadImageByUrl().post({ 'action': 'upload_image_by_url', 'args': { 'environment_id': $stateParams.uuid, 'url': url } }).$promise.then(function(response){ if(response.status == 1){ var updateImageTask = $interval(getCustomImageList, 30000, 10, true, function(image, image_id){ if(image_id == response.result.uuid && image.status == 'ACTIVE'){ $interval.cancel(updateImageTask); } }); ngDialog.close(); }else{ mainFactory.errorHandler1(response); } }, function(response){ mainFactory.errorHandler2(response); }); } $scope.uploadCustomImage = function($file, $invalidFiles) { $scope.showloading = true; $scope.displayImageFile = $file; Upload.upload({ url: Base_URL + '/api/v2/yardstick/images', data: { file: $file, 'environment_id': $scope.uuid, 'action': 'upload_image' } }).then(function(response) { $scope.showloading = false; if (response.data.status == 1) { toaster.pop({ type: 'success', title: 'upload success', body: 'you can go next step', timeout: 3000 }); var updateImageTask = $interval(getCustomImageList, 10000, 10, true, function(image, image_id){ if(image_id == response.data.result.uuid && image.status == 'ACTIVE'){ $interval.cancel(updateImageTask); } }); }else{ mainFactory.errorHandler1(response); } }, function(response) { $scope.uploadfile = null; mainFactory.errorHandler2(response); }) } $scope.deleteCustomImage = function(image_id){ mainFactory.deleteImage().delete({'imageId': image_id}).$promise.then(function(response){ if(response.status == 1){ $interval(getCustomImageList, 10000, 5, true, function(image, image_id){ }); }else{ mainFactory.errorHandler2(response); } }, function(response){ mainFactory.errorHandler2(response); }); } $scope.openImageDialog = function(){ $scope.url = null; ngDialog.open({ preCloseCallback: function(value) { }, template: 'views/modal/imageDialog.html', scope: $scope, className: 'ngdialog-theme-default', width: 950, showClose: true, closeByDocument: false }) } $scope.goBack = function goBack() { $state.go('app.projectList'); } $scope.goNext = function goNext() { $scope.path = $location.path(); $scope.uuid = $scope.path.split('/').pop(); $state.go('app.podUpload', { uuid: $scope.uuid }); } } ]);