instances compare

by russau

HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js"></script>

JavaScript

var previousInstances = {"i-78334d93":{"PublicIpAddress":"54.236.238.117","Name":""},"i-dd1b7336":{"PublicIpAddress":"54.86.239.146","Name":"RegionJs"},"i-eb7c0a3d":{"PublicIpAddress":"x","Name":"InstuctorDemosVPC - rails-app1"},"i-da18c333":{"PublicIpAddress":"54.173.146.65","Name":"Test-InstanceStore-Backedx"},"i-e6e37d4f":{"PublicIpAddress":"54.174.144.160","Name":"SophosVPC NAT", "extra": "demoa"}};


var instances = {"i-dd1b7336":{"PublicIpAddress":"54.86.239.146","Name":"RegionJs"},"i-eb7c0a3d":{"PublicIpAddress":"","Name":"InstuctorDemosVPC - rails-app1"},"i-da18c333":{"PublicIpAddress":"54.173.146.65","Name":"Test-InstanceStore-Backed"},"i-e6e37d4f":{"PublicIpAddress":"54.174.144.160","Name":"SophosVPC NAT", "extra": "demo"},"i-d339a405":{"PublicIpAddress":"52.0.185.122","Name":"InstructorDemos NAT"}};

var newInstances = [];
var removedInstances = [];
var changes = '';

for (instanceId in instances) {
    var instance = instances[instanceId];
    var previousInstance = previousInstances[instanceId];
    if (!previousInstance) {
        newInstances.push(instance);
    } else {
        for (prop in instance) {
            if (instance[prop] != previousInstance[prop]) {
                changes += "Instance " + instanceId + " " + prop + " has changed from [" + previousInstance[prop] + "] to [" + instance[prop] + "]\n"; 
            }
        }
    }
}

for (instanceId in previousInstances) {
    var instance = instances[instanceId];
    if (!instance) removedInstances.push(previousInstances[instanceId]);
}
alert(changes);
alert(removedInstances);