mirror of
https://github.com/ansible/awx.git
synced 2026-02-23 22:16:00 -03:30
Revert "Improve performance for awx cli export (#13182)"
This commit is contained in:
@@ -162,7 +162,7 @@ class ApiV2(base.Base):
|
|||||||
export_key = 'create_approval_template'
|
export_key = 'create_approval_template'
|
||||||
rel_option_endpoint = _page.related.get('create_approval_template')
|
rel_option_endpoint = _page.related.get('create_approval_template')
|
||||||
|
|
||||||
rel_post_fields = self._cache.get_post_fields(rel_option_endpoint)
|
rel_post_fields = utils.get_post_fields(rel_option_endpoint, self._cache)
|
||||||
if rel_post_fields is None:
|
if rel_post_fields is None:
|
||||||
log.debug("%s is a read-only endpoint.", rel_endpoint)
|
log.debug("%s is a read-only endpoint.", rel_endpoint)
|
||||||
continue
|
continue
|
||||||
@@ -202,7 +202,7 @@ class ApiV2(base.Base):
|
|||||||
return utils.remove_encrypted(fields)
|
return utils.remove_encrypted(fields)
|
||||||
|
|
||||||
def _export_list(self, endpoint):
|
def _export_list(self, endpoint):
|
||||||
post_fields = self._cache.get_post_fields(endpoint)
|
post_fields = utils.get_post_fields(endpoint, self._cache)
|
||||||
if post_fields is None:
|
if post_fields is None:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -267,7 +267,7 @@ class ApiV2(base.Base):
|
|||||||
|
|
||||||
def _import_list(self, endpoint, assets):
|
def _import_list(self, endpoint, assets):
|
||||||
log.debug("_import_list -- endpoint: %s, assets: %s", endpoint.endpoint, repr(assets))
|
log.debug("_import_list -- endpoint: %s, assets: %s", endpoint.endpoint, repr(assets))
|
||||||
post_fields = self._cache.get_post_fields(endpoint)
|
post_fields = utils.get_post_fields(endpoint, self._cache)
|
||||||
|
|
||||||
changed = False
|
changed = False
|
||||||
|
|
||||||
|
|||||||
@@ -495,7 +495,6 @@ class TentativePage(str):
|
|||||||
class PageCache(object):
|
class PageCache(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.options = {}
|
self.options = {}
|
||||||
self.post_fields = {}
|
|
||||||
self.pages_by_url = {}
|
self.pages_by_url = {}
|
||||||
self.pages_by_natural_key = {}
|
self.pages_by_natural_key = {}
|
||||||
|
|
||||||
@@ -517,29 +516,6 @@ class PageCache(object):
|
|||||||
|
|
||||||
return self.options.setdefault(url, options)
|
return self.options.setdefault(url, options)
|
||||||
|
|
||||||
def get_post_fields(self, page):
|
|
||||||
url = page.endpoint if isinstance(page, Page) else str(page)
|
|
||||||
key = get_registered_page(url)
|
|
||||||
if key in self.post_fields:
|
|
||||||
return self.post_fields[key]
|
|
||||||
|
|
||||||
options_page = self.get_options(page)
|
|
||||||
|
|
||||||
if options_page is None:
|
|
||||||
return None
|
|
||||||
|
|
||||||
if 'POST' not in options_page.r.headers.get('Allow', ''):
|
|
||||||
return None
|
|
||||||
|
|
||||||
if 'POST' in options_page.json['actions']:
|
|
||||||
post_fields = options_page.json['actions']['POST']
|
|
||||||
else:
|
|
||||||
log.warning("Insufficient privileges on %s, inferring POST fields from description.", options_page.endpoint)
|
|
||||||
post_fields = utils.parse_description(options_page.json['description'])
|
|
||||||
self.post_fields[key] = post_fields
|
|
||||||
|
|
||||||
return post_fields
|
|
||||||
|
|
||||||
def set_page(self, page):
|
def set_page(self, page):
|
||||||
log.debug("set_page: %s %s", type(page), page.endpoint)
|
log.debug("set_page: %s %s", type(page), page.endpoint)
|
||||||
self.pages_by_url[page.endpoint] = page
|
self.pages_by_url[page.endpoint] = page
|
||||||
|
|||||||
@@ -31,3 +31,18 @@ def remove_encrypted(value):
|
|||||||
if isinstance(value, dict):
|
if isinstance(value, dict):
|
||||||
return {k: remove_encrypted(v) for k, v in value.items()}
|
return {k: remove_encrypted(v) for k, v in value.items()}
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
def get_post_fields(page, cache):
|
||||||
|
options_page = cache.get_options(page)
|
||||||
|
if options_page is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if 'POST' not in options_page.r.headers.get('Allow', ''):
|
||||||
|
return None
|
||||||
|
|
||||||
|
if 'POST' in options_page.json['actions']:
|
||||||
|
return options_page.json['actions']['POST']
|
||||||
|
else:
|
||||||
|
log.warning("Insufficient privileges on %s, inferring POST fields from description.", options_page.endpoint)
|
||||||
|
return parse_description(options_page.json['description'])
|
||||||
|
|||||||
Reference in New Issue
Block a user