limit updating outdated nodes to 500 at a time (#397)

This commit is contained in:
bmc-msft
2021-01-05 17:40:36 -05:00
committed by GitHub
parent 633e5b5f02
commit 986df8fcc6

View File

@ -100,6 +100,7 @@ class Node(BASE_NODE, ORMMixin):
states: Optional[List[NodeState]] = None, states: Optional[List[NodeState]] = None,
pool_name: Optional[str] = None, pool_name: Optional[str] = None,
exclude_update_scheduled: bool = False, exclude_update_scheduled: bool = False,
num_results: Optional[int] = None,
) -> List["Node"]: ) -> List["Node"]:
query: QueryFilter = {} query: QueryFilter = {}
if scaleset_id: if scaleset_id:
@ -117,11 +118,14 @@ class Node(BASE_NODE, ORMMixin):
# We write the query this way to allow us to get the nodes where the # We write the query this way to allow us to get the nodes where the
# version is not defined as well as the nodes with a mismatched version # version is not defined as well as the nodes with a mismatched version
version_query = "not (version eq '%s')" % __version__ version_query = "not (version eq '%s')" % __version__
return cls.search(query=query, raw_unchecked_filter=version_query) return cls.search(
query=query, raw_unchecked_filter=version_query, num_results=num_results
)
@classmethod @classmethod
def mark_outdated_nodes(cls) -> None: def mark_outdated_nodes(cls) -> None:
outdated = cls.search_outdated(exclude_update_scheduled=True) # ony update 500 nodes at a time to mitigate timeout issues
outdated = cls.search_outdated(exclude_update_scheduled=True, num_results=500)
for node in outdated: for node in outdated:
logging.info( logging.info(
"node is outdated: %s - node_version:%s api_version:%s", "node is outdated: %s - node_version:%s api_version:%s",