Exemple #1
0
def test_get_resource_utilization_per_slave():
    tasks = [
        {"resources": {"cpus": 10, "mem": 10, "disk": 10}, "state": "TASK_RUNNING"},
        {"resources": {"cpus": 10, "mem": 10, "disk": 10}, "state": "TASK_RUNNING"},
    ]
    slaves = [
        {
            "id": "somenametest-slave",
            "hostname": "test.somewhere.www",
            "resources": {"cpus": 75, "disk": 250, "mem": 100},
            "reserved_resources": {},
            "attributes": {"habitat": "somenametest-habitat"},
        },
        {
            "id": "somenametest-slave2",
            "hostname": "test2.somewhere.www",
            "resources": {"cpus": 500, "disk": 200, "mem": 750},
            "reserved_resources": {"maintenance": {"cpus": 10, "disk": 0, "mem": 150}},
            "attributes": {"habitat": "somenametest-habitat-2"},
        },
    ]
    actual = metastatus_lib.calculate_resource_utilization_for_slaves(
        slaves=slaves, tasks=tasks
    )
    assert sorted(actual.keys()) == sorted(["total", "free", "slave_count"])
    assert actual["total"] == metastatus_lib.ResourceInfo(cpus=575, disk=450, mem=850)
    assert actual["free"] == metastatus_lib.ResourceInfo(cpus=545, disk=430, mem=680)
    assert actual["slave_count"] == 2
Exemple #2
0
def test_calculate_resource_utilization_for_slaves():
    fake_slaves = [
        {
            "id": "somenametest-slave2",
            "hostname": "test2.somewhere.www",
            "resources": {"cpus": 500, "disk": 200, "mem": 750, "gpus": 5},
            "reserved_resources": {},
            "attributes": {"habitat": "somenametest-habitat-2"},
        }
    ]
    tasks = [
        {
            "resources": {"cpus": 10, "mem": 10, "disk": 10, "gpus": 1},
            "state": "TASK_RUNNING",
        },
        {
            "resources": {"cpus": 10, "mem": 10, "disk": 10, "gpus": 2},
            "state": "TASK_RUNNING",
        },
    ]
    free = metastatus_lib.calculate_resource_utilization_for_slaves(
        slaves=fake_slaves, tasks=tasks
    )["free"]

    assert free.cpus == 480
    assert free.mem == 730
    assert free.disk == 180
    assert free.gpus == 2
Exemple #3
0
def main(hostnames):
    master = get_mesos_master()
    try:
        mesos_state = master.state
    except MasterNotAvailableException as e:
        paasta_print(PaastaColors.red("CRITICAL:  %s" % e.message))
        sys.exit(2)
    slaves = [slave for slave in mesos_state.get('slaves', []) if slave['hostname'] in hostnames]
    tasks = get_all_tasks_from_state(mesos_state, include_orphans=True)
    filtered_tasks = filter_tasks_for_slaves(slaves, tasks)
    resource_info_dict = calculate_resource_utilization_for_slaves(slaves, filtered_tasks)
    resource_utilizations = resource_utillizations_from_resource_info(
        total=resource_info_dict['total'],
        free=resource_info_dict['free'],
    )
    output = {}
    for metric in resource_utilizations:
        utilization = metric.total - metric.free
        if int(metric.total) == 0:
            utilization_perc = 100
        else:
            utilization_perc = utilization / float(metric.total) * 100
        output[metric.metric] = {
            'total': metric.total,
            'used': utilization,
            'perc': utilization_perc,
        }
    print(json.dumps(output))
def main(hostnames: Sequence[str]) -> None:
    master = get_mesos_master()
    try:
        mesos_state = block(master.state)
    except MasterNotAvailableException as e:
        print(PaastaColors.red("CRITICAL:  %s" % e.message))
        sys.exit(2)
    slaves = [
        slave for slave in mesos_state.get("slaves", [])
        if slave["hostname"] in hostnames
    ]
    tasks = get_all_tasks_from_state(mesos_state, include_orphans=True)
    filtered_tasks = filter_tasks_for_slaves(slaves, tasks)
    resource_info_dict = calculate_resource_utilization_for_slaves(
        slaves, filtered_tasks)
    resource_utilizations = resource_utillizations_from_resource_info(
        total=resource_info_dict["total"], free=resource_info_dict["free"])
    output = {}
    for metric in resource_utilizations:
        utilization = metric.total - metric.free
        if int(metric.total) == 0:
            utilization_perc = 100
        else:
            utilization_perc = utilization / float(metric.total) * 100
        output[metric.metric] = {
            "total": metric.total,
            "used": utilization,
            "perc": utilization_perc,
        }
    print(json.dumps(output))
Exemple #5
0
def test_get_resource_utilization_per_slave():
    tasks = [{
        'resources': {
            'cpus': 10,
            'mem': 10,
            'disk': 10
        },
        'state': 'TASK_RUNNING'
    }, {
        'resources': {
            'cpus': 10,
            'mem': 10,
            'disk': 10
        },
        'state': 'TASK_RUNNING'
    }]
    slaves = [
        {
            'id': 'somenametest-slave',
            'hostname': 'test.somewhere.www',
            'resources': {
                'cpus': 75,
                'disk': 250,
                'mem': 100,
            },
            'reserved_resources': {},
            'attributes': {
                'habitat': 'somenametest-habitat',
            },
        },
        {
            'id': 'somenametest-slave2',
            'hostname': 'test2.somewhere.www',
            'resources': {
                'cpus': 500,
                'disk': 200,
                'mem': 750,
            },
            'reserved_resources': {
                'some-role': {
                    'cpus': 10,
                    'disk': 0,
                    'mem': 150,
                },
            },
            'attributes': {
                'habitat': 'somenametest-habitat-2',
            },
        },
    ]
    actual = metastatus_lib.calculate_resource_utilization_for_slaves(
        slaves=slaves, tasks=tasks)
    assert sorted(actual.keys()) == sorted(['total', 'free'])
    assert actual['total'] == metastatus_lib.ResourceInfo(cpus=575,
                                                          disk=450,
                                                          mem=850)
    assert actual['free'] == metastatus_lib.ResourceInfo(cpus=545,
                                                         disk=430,
                                                         mem=680)
Exemple #6
0
def test_calculate_resource_utilization_for_slaves():
    fake_slaves = [
        {
            'id': 'somenametest-slave2',
            'hostname': 'test2.somewhere.www',
            'resources': {
                'cpus': 500,
                'disk': 200,
                'mem': 750,
                'gpus': 5,
            },
            'reserved_resources': {},
            'attributes': {
                'habitat': 'somenametest-habitat-2',
            },
        },
    ]
    tasks = [
        {
            'resources': {
                'cpus': 10,
                'mem': 10,
                'disk': 10,
                'gpus': 1,
            },
            'state': 'TASK_RUNNING',
        },
        {
            'resources': {
                'cpus': 10,
                'mem': 10,
                'disk': 10,
                'gpus': 2,
            },
            'state': 'TASK_RUNNING',
        },
    ]
    free = metastatus_lib.calculate_resource_utilization_for_slaves(
        slaves=fake_slaves,
        tasks=tasks,
    )['free']

    assert free.cpus == 480
    assert free.mem == 730
    assert free.disk == 180
    assert free.gpus == 2
Exemple #7
0
def test_get_resource_utilization_per_slave():
    tasks = [{"resources": {"cpus": 10, "mem": 10, "disk": 10}}, {"resources": {"cpus": 10, "mem": 10, "disk": 10}}]
    slaves = [
        {
            "id": "somenametest-slave",
            "hostname": "test.somewhere.www",
            "resources": {"cpus": 75, "disk": 250, "mem": 100},
            "reserved_resources": {},
            "attributes": {"habitat": "somenametest-habitat"},
        },
        {
            "id": "somenametest-slave2",
            "hostname": "test2.somewhere.www",
            "resources": {"cpus": 500, "disk": 200, "mem": 750},
            "reserved_resources": {"some-role": {"cpus": 10, "disk": 0, "mem": 150}},
            "attributes": {"habitat": "somenametest-habitat-2"},
        },
    ]
    actual = metastatus_lib.calculate_resource_utilization_for_slaves(slaves=slaves, tasks=tasks)
    assert sorted(actual.keys()) == sorted(["total", "free"])
    assert actual["total"] == metastatus_lib.ResourceInfo(cpus=575, disk=450, mem=850)
    assert actual["free"] == metastatus_lib.ResourceInfo(cpus=545, disk=430, mem=680)
def test_get_resource_utilization_per_slave():
    tasks = [
        {
            'resources': {
                'cpus': 10,
                'mem': 10,
                'disk': 10
            }
        },
        {
            'resources': {
                'cpus': 10,
                'mem': 10,
                'disk': 10
            }
        }
    ]
    slaves = [
        {
            'id': 'somenametest-slave',
            'hostname': 'test.somewhere.www',
            'resources': {
                'cpus': 75,
                'disk': 250,
                'mem': 100,
            },
            'reserved_resources': {
            },
            'attributes': {
                'habitat': 'somenametest-habitat',
            },
        },
        {
            'id': 'somenametest-slave2',
            'hostname': 'test2.somewhere.www',
            'resources': {
                'cpus': 500,
                'disk': 200,
                'mem': 750,
            },
            'reserved_resources': {
                'some-role': {
                    'cpus': 10,
                    'disk': 0,
                    'mem': 150,
                },
            },
            'attributes': {
                'habitat': 'somenametest-habitat-2',
            },
        },
    ]
    actual = metastatus_lib.calculate_resource_utilization_for_slaves(
        slaves=slaves,
        tasks=tasks
    )
    assert sorted(actual.keys()) == sorted(['total', 'free'])
    assert actual['total'] == metastatus_lib.ResourceInfo(
        cpus=575,
        disk=450,
        mem=850
    )
    assert actual['free'] == metastatus_lib.ResourceInfo(
        cpus=545,
        disk=430,
        mem=680
    )