Created
December 30, 2014 18:47
-
-
Save YanivHaramati/f5078cf1aa0a17736291 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This could have been better served with regex to be honest, but this works too. | |
var Promise = require('bluebird'), | |
request = require('request'), | |
url = require('url'); | |
var servers = ["csd02htp9000", "csd02htp9001"]; | |
function promiseableRequest(server) { | |
return new Promise(function (resolve, reject) { | |
var opts = { | |
uri: url.parse("http://" + server + ":8088/Kitara/Daemons/list"), | |
followRedirect: true, | |
encoding: "UTF-8" | |
} | |
request(opts, function (error, response, body) { | |
if (error) reject(error); | |
resolve(JSON.parse(body)); | |
}); | |
}); | |
} | |
function getOrphanLinks(json) { | |
return new Promise(function(resolve, reject) { | |
var daemons = json.daemons; | |
var hyperMediaLinks = daemons.filter(function(d) { | |
return d.daemon == "WebLocal"; | |
})[0].versions | |
.filter(function(version) { | |
return version.orphaned; | |
}) | |
.map(function(orphanedVersion) { | |
return orphanedVersion.hypermedia.links.filter(function(l) { | |
return l.label == "Delete"; | |
}); | |
}); | |
var orphanLinks = hyperMediaLinks.map(function(l) { | |
return l[0].href; | |
}); | |
resolve(orphanLinks); | |
}); | |
} | |
function deleteOrphan(orphanLink) { | |
return new Promise(function(resolve, reject) { | |
var opts = { | |
uri: url.parse(orphanLink), | |
followRedirect: true, | |
encoding: "UTF-8" | |
} | |
request(opts, function (error, response, body) { | |
if (error) reject(error); | |
resolve("Deleted."); | |
}); | |
}); | |
} | |
function flatten(arr) { | |
return new Promise(function(resolve, reject) { | |
var reduced = Promise.reduce(arr, function(finalResult, currentResult) { | |
return finalResult.concat(currentResult); | |
}); | |
resolve(reduced); | |
}, []); | |
} | |
Promise.map(servers, promiseableRequest) | |
.map(getOrphanLinks) | |
.then(flatten) | |
.each(deleteOrphan) | |
.catch(function(err) { | |
console.log(err); | |
}) | |
.then(function(arr) { | |
console.log("Deleted " + arr.length + " entries."); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment