Skip to content
Snippets Groups Projects
Commit e48b476a authored by Robert Latta's avatar Robert Latta
Browse files

use dedicated endpoint for all entities retrieval

parent 9b2a97db
No related branches found
No related tags found
No related merge requests found
......@@ -240,7 +240,7 @@ class IMS(object):
response.raise_for_status()
break
def _get_entity(
def _get_ims_data(
self,
url,
params=None,
......@@ -332,7 +332,7 @@ class IMS(object):
url = f'{entity_type}/{entity_id}'
return \
self._get_entity(url, None, navigation_properties, use_cache)
self._get_ims_data(url, None, navigation_properties, use_cache)
@log_entry_and_exit
def get_entity_by_name(
......@@ -342,7 +342,7 @@ class IMS(object):
navigation_properties=None,
use_cache=False):
url = f'{entity}/byname/"{name}"'
return self._get_entity(url, None, navigation_properties, use_cache)
return self._get_ims_data(url, None, navigation_properties, use_cache)
@log_entry_and_exit
def get_filtered_entities(
......@@ -352,17 +352,31 @@ class IMS(object):
navigation_properties=None,
use_cache=False,
step_count=50):
url = f'{entity}/filtered/{filter_string}'
yield from self.get_entities(
url,
navigation_properties,
use_cache,
step_count
)
def get_entities(
self,
url,
navigation_properties=None,
use_cache=False,
step_count=50):
more_to_come = True
start_entity = 0
gateway_error_count = 0
while more_to_come:
params = {
'paginatorStartElement': start_entity,
'paginatorNumberOfElements': step_count
}
url = f'{entity}/filtered/{filter_string}'
try:
more_to_come = False
entities = self._get_entity(
entities = self._get_ims_data(
url,
params,
navigation_properties,
......@@ -372,6 +386,17 @@ class IMS(object):
if r.status_code == requests.codes.not_found \
and NO_FILTERED_RESULTS_MESSAGE in r.text.lower():
entities = None
elif r.status_code == 504:
gateway_error_count += 1
logger.debug(
f"GATEWAY TIME-OUT for {url}"
f" -- COUNT: {gateway_error_count}")
if gateway_error_count > 4:
raise e
time.sleep(5)
logger.debug("WAKING UP")
more_to_come = True
continue
else:
raise e
if entities:
......@@ -388,9 +413,9 @@ class IMS(object):
use_cache=False,
step_count=50
):
yield from self.get_filtered_entities(
entity,
'Id <> 0',
url = f'{entity}/all'
yield from self.get_entities(
url,
navigation_properties,
use_cache,
step_count
......
......@@ -139,7 +139,7 @@ def test_ims_class_get_all_entities(mocker):
list(ds.get_all_entities('Node', step_count=10))
mock_get.assert_called_once_with(
'dummy_base/ims/Node/filtered/Id <> 0',
'dummy_base/ims/Node/all',
headers={'Authorization': 'Bearer dummy_bt'},
params={
'paginatorStartElement': 0,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment