def test_calculate_required_auto_scaling_group_sizes(): assert calculate_required_auto_scaling_group_sizes({}, {}, {}, {}, {}) == {} node = {'allocatable': {'cpu': 1, 'memory': 1, 'pods': 1}, 'unschedulable': False, 'master': False} assert calculate_required_auto_scaling_group_sizes({('a1', 'z1'): [node]}, {}, {}, {}, {}) == {'a1': 0} assert calculate_required_auto_scaling_group_sizes({('a1', 'z1'): [node]}, {('a1', 'z1'): {'cpu': 1, 'memory': 1, 'pods': 1}}, {}, {}, {}) == {'a1': 1} assert calculate_required_auto_scaling_group_sizes({('a1', 'z1'): [node]}, {('unknown', 'unknown'): {'cpu': 1, 'memory': 1, 'pods': 1}}, {}, {}, {}) == {'a1': 1} assert calculate_required_auto_scaling_group_sizes({('a1', 'z1'): [node]}, {}, {}, {}, {}, buffer_spare_nodes=2) == {'a1': 2}
def test_calculate_required_auto_scaling_group_sizes_cordon(): node = { 'name': 'mynode', 'allocatable': { 'cpu': 1, 'memory': 1, 'pods': 1 }, 'unschedulable': True, 'master': False, 'asg_lifecycle_state': 'InService' } assert calculate_required_auto_scaling_group_sizes({('a1', 'z1'): [node]}, {}, {}, {}) == { 'a1': 1 } assert calculate_required_auto_scaling_group_sizes( {('a1', 'z1'): [node]}, {('a1', 'z1'): { 'cpu': 1, 'memory': 1, 'pods': 1 }}, {}, {}) == { 'a1': 2 }
def test_calculate_required_auto_scaling_group_sizes_unschedulable_terminating( ): node = { 'name': 'mynode', 'allocatable': { 'cpu': 1, 'memory': 1, 'pods': 1 }, 'unschedulable': True, 'master': False, 'asg_lifecycle_state': 'Terminating' } # do not compensate if the instance is terminating.. (it will probably be replaced by ASG) assert calculate_required_auto_scaling_group_sizes({('a1', 'z1'): [node]}, {}, {}, {}) == { 'a1': 0 } assert calculate_required_auto_scaling_group_sizes( {('a1', 'z1'): [node]}, {('a1', 'z1'): { 'cpu': 1, 'memory': 1, 'pods': 1 }}, {}, {}) == { 'a1': 1 }
def test_calculate_required_auto_scaling_group_sizes_no_scaledown(): nodes = [{ 'allocatable': { 'cpu': 1, 'memory': 1, 'pods': 1 }, 'unschedulable': False, 'master': False }, { 'allocatable': { 'cpu': 1, 'memory': 1, 'pods': 1 }, 'unschedulable': False, 'master': False }] assert calculate_required_auto_scaling_group_sizes({('a1', 'z1'): nodes}, {}, {}, {}) == { 'a1': 0 } assert calculate_required_auto_scaling_group_sizes( {('a1', 'z1'): nodes}, {}, {}, {}, disable_scale_down=True) == { 'a1': 2 }
def test_calculate_required_auto_scaling_group_sizes_with_asg_overrides_no_scale(): node = {'allocatable': {'cpu': 1, 'memory': 1, 'pods': 10}, 'unschedulable': False, 'master': False} buffer_per_asg = { 'asg1': {'cpu': 5, 'memory': 5, 'pods': 10, 'nodes': 0} } result = calculate_required_auto_scaling_group_sizes({('asg1', 'z1'): [node]}, {('asg1', 'z1'): {'cpu': 0.5, 'memory': 0.5, 'pods': 1}}, buffer_per_asg, {}, {}) assert result == {'asg1': 1}