diff --git a/awxkit/awxkit/api/pages/api.py b/awxkit/awxkit/api/pages/api.py index c1b2b29032..f54010052d 100644 --- a/awxkit/awxkit/api/pages/api.py +++ b/awxkit/awxkit/api/pages/api.py @@ -113,7 +113,6 @@ class ApiV2(base.Base): key: asset.json[key] for key in options if key in asset.json and key not in asset.related and key != 'id' } - fields['natural_key'] = asset.get_natural_key() for key in options: if key not in asset.related: @@ -122,8 +121,9 @@ class ApiV2(base.Base): # FIXME: use caching by url fields[key] = asset.related[key].get().get_natural_key() except exc.Forbidden: - log.warning("This object cannot be read: %s", asset.related[key]) - pass # FIXME: what if the fk is mandatory? + log.warning("This foreign key cannot be read: %s", asset.related[key]) + if options[key]['required']: + return None # This is a mandatory foreign key related = {} for key, related_endpoint in asset.related.items(): @@ -147,7 +147,7 @@ class ApiV2(base.Base): # FIXME: use caching by url data = rel.get(all_pages=True) except exc.Forbidden: - log.warning("This object cannot be read: %s", related_endpoint) + log.warning("These related objects cannot be read: %s", related_endpoint) continue if 'results' in data: @@ -162,6 +162,7 @@ class ApiV2(base.Base): if related: fields['related'] = related + fields['natural_key'] = asset.get_natural_key() return fields def _get_assets(self, resource, value): diff --git a/awxkit/awxkit/api/pages/page.py b/awxkit/awxkit/api/pages/page.py index dd73fc4d67..4a824ee290 100644 --- a/awxkit/awxkit/api/pages/page.py +++ b/awxkit/awxkit/api/pages/page.py @@ -331,7 +331,7 @@ class Page(object): # FIXME: use caching by url natural_key[key] = self.related[key].get().get_natural_key() except exc.Forbidden: - log.warning("This object cannot be read: %s", getattr(self, 'endpoint', '')) + log.warning("This foreign key cannot be read: %s", getattr(self, 'endpoint', '')) return None elif key in self: natural_key[key] = self[key]