def test_build_maintenance_schedule_payload_no_schedule( mock_get_machine_ids, mock_get_maintenance_schedule, ): mock_get_maintenance_schedule.return_value.json.return_value = {} machine_ids = [{'hostname': 'machine2', 'ip': '10.0.0.2'}] mock_get_machine_ids.return_value = machine_ids hostnames = ['fake-hostname'] start = '1443830400000000000' duration = '3600000000000' actual = build_maintenance_schedule_payload(hostnames, start, duration, drain=True) assert mock_get_maintenance_schedule.call_count == 1 assert mock_get_machine_ids.call_count == 1 assert mock_get_machine_ids.call_args == mock.call(hostnames) expected = { 'windows': [ { 'machine_ids': machine_ids, 'unavailability': { 'start': { 'nanoseconds': int(start), }, 'duration': { 'nanoseconds': int(duration), }, }, }, ], } assert actual == expected
def test_build_maintenance_schedule_payload_schedule_undrain( mock_get_machine_ids, mock_get_maintenance_schedule, ): mock_get_maintenance_schedule.return_value.json.return_value = { "windows": [ { "machine_ids": [ {"hostname": "machine1", "ip": "10.0.0.1"}, {"hostname": "machine2", "ip": "10.0.0.2"} ], "unavailability": { "start": {"nanoseconds": 1443830400000000000}, "duration": {"nanoseconds": 3600000000000} } }, { "machine_ids": [ {"hostname": "machine3", "ip": "10.0.0.3"} ], "unavailability": { "start": {"nanoseconds": 1443834000000000000}, "duration": {"nanoseconds": 3600000000000} } } ] } machine_ids = [{'hostname': 'machine2', 'ip': '10.0.0.2'}] mock_get_machine_ids.return_value = machine_ids hostnames = ['machine2'] start = '1443830400000000000' duration = '3600000000000' actual = build_maintenance_schedule_payload(hostnames, start, duration, drain=False) assert mock_get_maintenance_schedule.call_count == 1 assert mock_get_machine_ids.call_count == 1 assert mock_get_machine_ids.call_args == mock.call(hostnames) expected = { "windows": [ { "machine_ids": [ {"hostname": "machine1", "ip": "10.0.0.1"}, ], "unavailability": { "start": {"nanoseconds": 1443830400000000000}, "duration": {"nanoseconds": 3600000000000} } }, { "machine_ids": [ {"hostname": "machine3", "ip": "10.0.0.3"} ], "unavailability": { "start": {"nanoseconds": 1443834000000000000}, "duration": {"nanoseconds": 3600000000000} } }, ] } assert actual == expected
def test_build_maintenance_schedule_payload_no_schedule_undrain(mock_get_machine_ids, mock_get_maintenance_schedule): mock_get_maintenance_schedule.return_value.json.return_value = {} machine_ids = [{"hostname": "machine2", "ip": "10.0.0.2"}] mock_get_machine_ids.return_value = machine_ids hostnames = ["fake-hostname"] start = "1443830400000000000" duration = "3600000000000" actual = build_maintenance_schedule_payload(hostnames, start, duration, drain=False) assert mock_get_maintenance_schedule.call_count == 1 assert mock_get_machine_ids.call_count == 1 assert mock_get_machine_ids.call_args == mock.call(hostnames) expected = {"windows": []} assert actual == expected
def test_build_maintenance_schedule_payload_schedule(mock_get_machine_ids, mock_get_maintenance_schedule): mock_get_maintenance_schedule.return_value.json.return_value = { "windows": [ { "machine_ids": [{"hostname": "machine1", "ip": "10.0.0.1"}, {"hostname": "machine2", "ip": "10.0.0.2"}], "unavailability": { "start": {"nanoseconds": 1443830400000000000}, "duration": {"nanoseconds": 3600000000000}, }, }, { "machine_ids": [{"hostname": "machine3", "ip": "10.0.0.3"}], "unavailability": { "start": {"nanoseconds": 1443834000000000000}, "duration": {"nanoseconds": 3600000000000}, }, }, ] } machine_ids = [{"hostname": "machine2", "ip": "10.0.0.2"}] mock_get_machine_ids.return_value = machine_ids hostnames = ["machine2"] start = "1443830400000000000" duration = "3600000000000" actual = build_maintenance_schedule_payload(hostnames, start, duration, drain=True) assert mock_get_maintenance_schedule.call_count == 1 assert mock_get_machine_ids.call_count == 1 assert mock_get_machine_ids.call_args == mock.call(hostnames) expected = { "windows": [ { "machine_ids": [{"hostname": "machine1", "ip": "10.0.0.1"}], "unavailability": { "start": {"nanoseconds": 1443830400000000000}, "duration": {"nanoseconds": 3600000000000}, }, }, { "machine_ids": [{"hostname": "machine3", "ip": "10.0.0.3"}], "unavailability": { "start": {"nanoseconds": 1443834000000000000}, "duration": {"nanoseconds": 3600000000000}, }, }, { "machine_ids": machine_ids, "unavailability": {"start": {"nanoseconds": int(start)}, "duration": {"nanoseconds": int(duration)}}, }, ] } assert actual == expected
def test_build_maintenance_schedule_payload_no_schedule_undrain( mock_get_machine_ids, mock_get_maintenance_schedule, ): mock_get_maintenance_schedule.return_value.json.return_value = {} machine_ids = [{'hostname': 'machine2', 'ip': '10.0.0.2'}] mock_get_machine_ids.return_value = machine_ids hostnames = ['fake-hostname'] start = '1443830400000000000' duration = '3600000000000' actual = build_maintenance_schedule_payload(hostnames, start, duration, drain=False) assert mock_get_maintenance_schedule.call_count == 1 assert mock_get_machine_ids.call_count == 1 assert mock_get_machine_ids.call_args == mock.call(hostnames) expected = { 'windows': [], } assert actual == expected
def test_build_maintenance_schedule_payload_schedule_undrain( mock_get_machine_ids, mock_get_maintenance_schedule, ): mock_get_maintenance_schedule.return_value.json.return_value = { "windows": [{ "machine_ids": [{ "hostname": "machine1", "ip": "10.0.0.1" }, { "hostname": "machine2", "ip": "10.0.0.2" }], "unavailability": { "start": { "nanoseconds": 1443830400000000000 }, "duration": { "nanoseconds": 3600000000000 } } }, { "machine_ids": [{ "hostname": "machine3", "ip": "10.0.0.3" }], "unavailability": { "start": { "nanoseconds": 1443834000000000000 }, "duration": { "nanoseconds": 3600000000000 } } }] } machine_ids = [{'hostname': 'machine2', 'ip': '10.0.0.2'}] mock_get_machine_ids.return_value = machine_ids hostnames = ['machine2'] start = '1443830400000000000' duration = '3600000000000' actual = build_maintenance_schedule_payload(hostnames, start, duration, drain=False) assert mock_get_maintenance_schedule.call_count == 1 assert mock_get_machine_ids.call_count == 1 assert mock_get_machine_ids.call_args == mock.call(hostnames) expected = { "windows": [ { "machine_ids": [ { "hostname": "machine1", "ip": "10.0.0.1" }, ], "unavailability": { "start": { "nanoseconds": 1443830400000000000 }, "duration": { "nanoseconds": 3600000000000 } } }, { "machine_ids": [{ "hostname": "machine3", "ip": "10.0.0.3" }], "unavailability": { "start": { "nanoseconds": 1443834000000000000 }, "duration": { "nanoseconds": 3600000000000 } } }, ] } assert actual == expected