From fbca7e70f140c1ed0b3574bc1eadfdc3429de193 Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Thu, 12 May 2016 14:16:39 -0400 Subject: [PATCH] optimize transformation --- awx/fact/utils/dbtransform.py | 9 ++++++--- awx/main/migrations/_system_tracking.py | 4 +++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/awx/fact/utils/dbtransform.py b/awx/fact/utils/dbtransform.py index f808281d28..0541c32fe0 100644 --- a/awx/fact/utils/dbtransform.py +++ b/awx/fact/utils/dbtransform.py @@ -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 diff --git a/awx/main/migrations/_system_tracking.py b/awx/main/migrations/_system_tracking.py index 7750a3e69f..6c269275b5 100644 --- a/awx/main/migrations/_system_tracking.py +++ b/awx/main/migrations/_system_tracking.py @@ -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: