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): def replace_key(self, key):
for (replace, replacement) in self.replace: for (replace, replacement) in self.replace:
key = key.replace(replace, replacement) key = key.replace(replace, replacement)
return key return key
def revert_key(self, key): def revert_key(self, key):
for (replacement, replace) in self.replace: for (replacement, replace) in self.replace:
key = key.replace(replace, replacement) key = key.replace(replace, replacement)
return key return key
def replace_incoming(self, obj): def replace_incoming(self, obj):
@@ -49,7 +49,10 @@ class KeyTransform(SONManipulator):
return self.replace_incoming(son) return self.replace_incoming(son)
def transform_outgoing(self, son, collection): def transform_outgoing(self, son, collection):
if not collection or collection.name != 'fact':
return son
return self.replace_outgoing(son) return self.replace_outgoing(son)
def register_key_transform(db): 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.models import FactVersion
from awx.fact.utils.dbtransform import KeyTransform
from mongoengine.connection import ConnectionError from mongoengine.connection import ConnectionError
from pymongo.errors import OperationFailure from pymongo.errors import OperationFailure
from django.conf import settings from django.conf import settings
@@ -36,10 +37,11 @@ def migrate_facts(apps, schema_editor):
migrated_count = 0 migrated_count = 0
not_migrated_count = 0 not_migrated_count = 0
transform = KeyTransform([('.', '\uff0E'), ('$', '\uff04')])
for factver in FactVersion.objects.all(): for factver in FactVersion.objects.all():
fact_obj = factver.fact
try: try:
host = Host.objects.only('id').get(inventory__id=factver.host.inventory_id, name=factver.host.hostname) 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() Fact.objects.create(host_id=host.id, timestamp=fact_obj.timestamp, module=fact_obj.module, facts=fact_obj.fact).save()
migrated_count += 1 migrated_count += 1
except Host.DoesNotExist: except Host.DoesNotExist: