#!/bin/bash
# insert missing unit workload status documents
# on machine N, invoke `./insert-statuses.sh N`
pw=$(sudo cat /var/lib/juju/agents/machine-$1/agent.conf |grep statepassword |awk '{ print $2 }')
mongo --ssl -u machine-$1 -p $pw localhost:37017/admin <<EOF
use juju;
var anyUnitStatus = /:u#/;
var charmStatus = /#charm$/;
var coll = db.statuses;
var charmStatuses = {};
var agentStatuses = {};
var cursor = coll.find({ _id: anyUnitStatus });
while (cursor.hasNext()) {
var doc = cursor.next()
var key = doc['_id'];
if (charmStatus.test(key)) {
charmStatuses[key] = true;
} else {
agentStatuses[key] = doc;
}
}
for (var agentKey in agentStatuses) {
var charmKey = agentKey + "#charm";
if (charmKey in charmStatuses) {
continue
}
var envUUID = agentStatuses[agentKey]['env-uuid'];
coll.insert( {
'_id': charmKey,
'env-uuid': envUUID,
'status': 'unknown',
'statusinfo': '',
'statusdata': {},
});
}
EOF