diff --git a/app/components/network/networkController.js b/app/components/network/networkController.js index 05b70e462..bb7a3f4b9 100644 --- a/app/components/network/networkController.js +++ b/app/components/network/networkController.js @@ -17,18 +17,21 @@ function ($scope, Network, Messages, $state, $stateParams, errorMsgFilter) { $scope.remove = function remove(networkId) { $('#loadingViewSpinner').show(); Network.remove({id: $stateParams.id}, function (d) { - var error = errorMsgFilter(d); - if (error) { + if (d.message) { $('#loadingViewSpinner').hide(); - Messages.send("Error", error); + Messages.send("Error", d.message); } else { $('#loadingViewSpinner').hide(); - Messages.send("Network deleted", $stateParams.id); + Messages.send("Network removed", $stateParams.id); $state.go('networks', {}); } }, function (e) { $('#loadingViewSpinner').hide(); - Messages.error("Failure", e.data); + if (e.data.message) { + Messages.error("Failure", e.data.message); + } else { + Messages.error("Failure", 'Unable to remove network'); + } }); }; diff --git a/app/components/networks/networksController.js b/app/components/networks/networksController.js index 217f23559..cb5a9bbe7 100644 --- a/app/components/networks/networksController.js +++ b/app/components/networks/networksController.js @@ -45,17 +45,21 @@ function ($scope, $state, Network, Config, Messages, errorMsgFilter) { if (network.Checked) { counter = counter + 1; Network.remove({id: network.Id}, function (d) { - var error = errorMsgFilter(d); - if (error) { - Messages.send("Error", error); + if (d.message) { + Messages.send("Error", d.message); } else { - Messages.send("Network deleted", network.Id); + Messages.send("Network removed", network.Id); var index = $scope.networks.indexOf(network); $scope.networks.splice(index, 1); } complete(); }, function (e) { - Messages.error("Failure", e.data); + console.log(JSON.stringify(e, null, 4)); + if (e.data.message) { + Messages.error("Failure", e.data.message); + } else { + Messages.error("Failure", 'Unable to remove network'); + } complete(); }); } diff --git a/app/shared/responseHandlers.js b/app/shared/responseHandlers.js index fff403036..30fd1f94e 100644 --- a/app/shared/responseHandlers.js +++ b/app/shared/responseHandlers.js @@ -33,3 +33,27 @@ function deleteImageHandler(data) { response = angular.fromJson(data); return response; } + +// Network delete API returns an empty string on success. +// On error, it returns either an error message as a string (Docker < 1.12) or a JSON object with the field message +// container the error (Docker = 1.12). +// This handler returns an empty object on success or a JSON object with the field message container the error message +// on failure. +function deleteNetworkHandler(data) { + console.log(JSON.stringify(data, null, 4)); + var response = {}; + // No data is returned when deletion is successful (Docker 1.9 -> 1.12) + if (!data) { + return response; + } + // A string is returned when an error occurs (Docker < 1.12) + else if (data && !isJSON(data)) { + response.message = data; + return response; + } + // Docker 1.12 returns a valid JSON object when an error occurs + else { + response = angular.fromJson(data); + } + return response; +} diff --git a/app/shared/services.js b/app/shared/services.js index e9ff7da22..bb992a5d6 100644 --- a/app/shared/services.js +++ b/app/shared/services.js @@ -135,7 +135,7 @@ angular.module('uifordocker.services', ['ngResource', 'ngSanitize']) query: {method: 'GET', isArray: true}, get: {method: 'GET'}, create: {method: 'POST', params: {action: 'create'}}, - remove: {method: 'DELETE'}, + remove: { method: 'DELETE', transformResponse: deleteNetworkHandler }, connect: {method: 'POST', params: {action: 'connect'}}, disconnect: {method: 'POST', params: {action: 'disconnect'}} });