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_no_schedule_undrain( mock_get_machine_ids, mock_get_maintenance_schedule, ): mock_get_maintenance_schedule.return_value.json.return_value = { 'get_maintenance_schedule': { 'schedule': {} }, } 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 = { 'type': 'UPDATE_MAINTENANCE_SCHEDULE', 'update_maintenance_schedule': { 'schedule': { 'windows': [], } }, } assert actual == expected
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_no_schedule_undrain( mock_get_machine_ids, mock_get_maintenance_schedule): mock_get_maintenance_schedule.return_value.json.return_value = { "get_maintenance_schedule": { "schedule": {} } } 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 = { "type": "UPDATE_MAINTENANCE_SCHEDULE", "update_maintenance_schedule": { "schedule": { "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
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 = { "type": "GET_MAINTENANCE_SCHEDULE", "get_maintenance_schedule": { "schedule": { "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 = { "type": "UPDATE_MAINTENANCE_SCHEDULE", "update_maintenance_schedule": { "schedule": { "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