optimize transformation

This commit is contained in:
Chris Meyers 2016-05-12 14:16:39 -04:00
parent 4096583b47
commit fbca7e70f1
2 changed files with 9 additions and 4 deletions

View File

@ -11,12 +11,12 @@ class KeyTransform(SONManipulator):
def replace_key(self, key):
for (replace, replacement) in self.replace:
key = key.replace(replace, replacement)
key = key.replace(replace, replacement)
return key
def revert_key(self, key):
for (replacement, replace) in self.replace:
key = key.replace(replace, replacement)
key = key.replace(replace, replacement)
return key
def replace_incoming(self, obj):
@ -49,7 +49,10 @@ class KeyTransform(SONManipulator):
return self.replace_incoming(son)
def transform_outgoing(self, son, collection):
if not collection or collection.name != 'fact':
return son
return self.replace_outgoing(son)
def register_key_transform(db):
db.add_son_manipulator(KeyTransform([('.', '\uff0E'), ('$', '\uff04')]))
#db.add_son_manipulator(KeyTransform([('.', '\uff0E'), ('$', '\uff04')]))
pass

View File

@ -1,5 +1,6 @@
from awx.fact.models import FactVersion
from awx.fact.utils.dbtransform import KeyTransform
from mongoengine.connection import ConnectionError
from pymongo.errors import OperationFailure
from django.conf import settings
@ -36,10 +37,11 @@ def migrate_facts(apps, schema_editor):
migrated_count = 0
not_migrated_count = 0
transform = KeyTransform([('.', '\uff0E'), ('$', '\uff04')])
for factver in FactVersion.objects.all():
fact_obj = factver.fact
try:
host = Host.objects.only('id').get(inventory__id=factver.host.inventory_id, name=factver.host.hostname)
fact_obj = transform.replace_outgoing(factver.fact)
Fact.objects.create(host_id=host.id, timestamp=fact_obj.timestamp, module=fact_obj.module, facts=fact_obj.fact).save()
migrated_count += 1
except Host.DoesNotExist: