mirror of
https://github.com/ansible/awx.git
synced 2026-05-10 02:47:36 -02:30
Deal with unreadable mandatory foreign keys
by dropping the parent object. Also, clarify some of the warning log messages.
This commit is contained in:
@@ -113,7 +113,6 @@ class ApiV2(base.Base):
|
|||||||
key: asset.json[key] for key in options
|
key: asset.json[key] for key in options
|
||||||
if key in asset.json and key not in asset.related and key != 'id'
|
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:
|
for key in options:
|
||||||
if key not in asset.related:
|
if key not in asset.related:
|
||||||
@@ -122,8 +121,9 @@ class ApiV2(base.Base):
|
|||||||
# FIXME: use caching by url
|
# FIXME: use caching by url
|
||||||
fields[key] = asset.related[key].get().get_natural_key()
|
fields[key] = asset.related[key].get().get_natural_key()
|
||||||
except exc.Forbidden:
|
except exc.Forbidden:
|
||||||
log.warning("This object cannot be read: %s", asset.related[key])
|
log.warning("This foreign key cannot be read: %s", asset.related[key])
|
||||||
pass # FIXME: what if the fk is mandatory?
|
if options[key]['required']:
|
||||||
|
return None # This is a mandatory foreign key
|
||||||
|
|
||||||
related = {}
|
related = {}
|
||||||
for key, related_endpoint in asset.related.items():
|
for key, related_endpoint in asset.related.items():
|
||||||
@@ -147,7 +147,7 @@ class ApiV2(base.Base):
|
|||||||
# FIXME: use caching by url
|
# FIXME: use caching by url
|
||||||
data = rel.get(all_pages=True)
|
data = rel.get(all_pages=True)
|
||||||
except exc.Forbidden:
|
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
|
continue
|
||||||
|
|
||||||
if 'results' in data:
|
if 'results' in data:
|
||||||
@@ -162,6 +162,7 @@ class ApiV2(base.Base):
|
|||||||
if related:
|
if related:
|
||||||
fields['related'] = related
|
fields['related'] = related
|
||||||
|
|
||||||
|
fields['natural_key'] = asset.get_natural_key()
|
||||||
return fields
|
return fields
|
||||||
|
|
||||||
def _get_assets(self, resource, value):
|
def _get_assets(self, resource, value):
|
||||||
|
|||||||
@@ -331,7 +331,7 @@ class Page(object):
|
|||||||
# FIXME: use caching by url
|
# FIXME: use caching by url
|
||||||
natural_key[key] = self.related[key].get().get_natural_key()
|
natural_key[key] = self.related[key].get().get_natural_key()
|
||||||
except exc.Forbidden:
|
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
|
return None
|
||||||
elif key in self:
|
elif key in self:
|
||||||
natural_key[key] = self[key]
|
natural_key[key] = self[key]
|
||||||
|
|||||||
Reference in New Issue
Block a user