From dda42760157037e0888e66b42723e9bae378557d Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Wed, 5 Feb 2014 11:48:18 +0300 Subject: [PATCH] Added a script to migrate existing data to the recent update which introduced _deviceId object. --- tools/update-deviceid.coffee | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 tools/update-deviceid.coffee diff --git a/tools/update-deviceid.coffee b/tools/update-deviceid.coffee new file mode 100644 index 0000000..32745ff --- /dev/null +++ b/tools/update-deviceid.coffee @@ -0,0 +1,37 @@ +# This script will generate _deviceId struct for all devices in DB. +# To be used in migrating existing data to the recent update which introduced _deviceId object. +config = require '../config' +mongodb = require 'mongodb' + +dbserver = new mongodb.Server(config.MONGODB_SOCKET, 0, {auto_reconnect: true}) +db = new mongodb.Db(config.DATABASE_NAME, dbserver, {native_parser: true, safe: true}) + +query = {} + +projection = { + _id : true, + 'InternetGatewayDevice.DeviceInfo' : true +} + +db.open((err, db) -> + db.collection('devices', (err, collection) -> + cur = collection.find(query) + cur.each((err, doc) -> + if not doc? + db.close() + return + serialNumber = doc['InternetGatewayDevice']['DeviceInfo']['SerialNumber']['_value'] + oui = doc['InternetGatewayDevice']['DeviceInfo']['ManufacturerOUI']['_value'] + manufacturer = doc['InternetGatewayDevice']['DeviceInfo']['Manufacturer']['_value'] + productClass = doc['InternetGatewayDevice']['DeviceInfo']['ProductClass']['_value'] + id = doc['_id'] + collection.update({_id : id}, {$set : { + '_deviceId._Manufacturer' : manufacturer, + '_deviceId._OUI' : oui, + '_deviceId._ProductClass' : productClass, + '_deviceId._SerialNumber' : serialNumber + }}, () -> + ) + ) + ) +)