コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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
コード例 #4
0
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
コード例 #5
0
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
コード例 #6
0
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
コード例 #7
0
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
コード例 #8
0
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