From 201de4e18a08c5b3c708eb86c6b7f78e266e1f2d Mon Sep 17 00:00:00 2001 From: Jeff Bradberry Date: Thu, 9 Apr 2020 15:22:41 -0400 Subject: [PATCH] Attempt to deal with foreign keys that get mislabeled as type integer such as through the use of DeprecatedCredentialField. --- awxkit/awxkit/api/pages/api.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/awxkit/awxkit/api/pages/api.py b/awxkit/awxkit/api/pages/api.py index ddd01803bf..da824e999d 100644 --- a/awxkit/awxkit/api/pages/api.py +++ b/awxkit/awxkit/api/pages/api.py @@ -266,20 +266,24 @@ class ApiV2(base.Base): for field, value in asset.items(): if field not in options: continue - if options[field]['type'] == 'id': + if options[field]['type'] in ('id', 'integer') and isinstance(value, dict): page = self._get_by_natural_key(value) post_data[field] = page['id'] if page is not None else None else: post_data[field] = value page = self._get_by_natural_key(asset['natural_key'], fetch=False) - if page is None: - if resource == 'users': - # We should only impose a default password if the resource doesn't exist. - post_data.setdefault('password', 'abc123') - page = endpoint.post(post_data) - else: - page = page.put(post_data) + try: + if page is None: + if resource == 'users': + # We should only impose a default password if the resource doesn't exist. + post_data.setdefault('password', 'abc123') + page = endpoint.post(post_data) + else: + page = page.put(post_data) + except exc.Common: + log.exception("post_data: %r", post_data) + raise self._register_page(page)