Skip to content

Commit

Permalink
Fix resource handle preference logic.
Browse files Browse the repository at this point in the history
  • Loading branch information
jkupferer committed Sep 4, 2024
1 parent e835da5 commit c64f4ed
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions operator/resourcehandle.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,39 +36,39 @@ def __lt__(self, cmp):
'''Compare matches by preference'''
if self.resource_count_difference < cmp.resource_count_difference:
return True
elif self.resource_count_difference > cmp.resource_count_difference:
if self.resource_count_difference > cmp.resource_count_difference:
return False

if self.resource_name_difference_count < cmp.resource_name_difference_count:
return True
elif self.resource_name_difference_count > cmp.resource_name_difference_count:
if self.resource_name_difference_count > cmp.resource_name_difference_count:
return False

if self.template_difference_count < cmp.template_difference_count:
return True
elif self.template_difference_count > cmp.template_difference_count:
if self.template_difference_count > cmp.template_difference_count:
return False

# Prefer healthy resources to unknown health state
if self.resource_handle.is_healthy and not cmp.resource_handle.is_healthy == None:
if self.resource_handle.is_healthy and cmp.resource_handle.is_healthy == None:
return True
elif not self.resource_handle.is_healthy and cmp.resource_handle.is_healthy == None:
if self.resource_handle.is_healthy == None and cmp.resource_handle.is_healthy:
return False

# Prefer ready resources to unready or unknown readiness state
if self.resource_handle.is_ready and not cmp.resource_handle.is_ready:
return True
elif not self.resource_handle.is_ready and cmp.resource_handle.is_ready:
if not self.resource_handle.is_ready and cmp.resource_handle.is_ready:
return False

# Prefer unknown readiness state to known unready state
if self.resource_handle.is_ready == None and not cmp.resource_handle.is_ready == False:
if self.resource_handle.is_ready == None and cmp.resource_handle.is_ready == False:
return True
elif not self.resource_handle.is_ready == False and cmp.resource_handle.is_ready == None:
if not self.resource_handle.is_ready == False and cmp.resource_handle.is_ready == None:
return False

# Prefer older matches
return self.resource_handle.creation_timestamp > cmp.resource_handle.creation_timestamp
return self.resource_handle.creation_timestamp < cmp.resource_handle.creation_timestamp

class ResourceHandle(KopfObject):
api_group = Poolboy.operator_domain
Expand Down

0 comments on commit c64f4ed

Please sign in to comment.