Beispiel #1
0
def run(argv=None):
    '''
    Main function of |info_cname|.
    '''
    ff = FFFlash(parsed_args(argv))
    ff.log(info.ident)

    if not ff.access_for('api'):
        return (not ff.log('error loading API file', level=False))

    modified = []

    if ff.access_for('sidecars'):
        modified.append(handle_sidecars(ff))

    if ff.access_for('nodelist'):
        modified.append(handle_nodelist(ff))

    if ff.args.dry:
        ff.log('\n{}'.format(ff.api.pretty()), level='API file preview')
    else:
        if any(modified):
            ff.save()
            ff.log('saved api file')

    return (not any(modified))
Beispiel #2
0
def test_handle_nodelist_count_some_nodes(tmpdir, fffake):
    apifile = tmpdir.join('api_file.json')
    apifile.write_text(dumps({'state': {
        'nodes': 0,
        'description': ''
    }}), 'utf-8')
    nl = tmpdir.join('nodelist.json')

    def _n(c, o):
        return {'status': {'clients': c, 'online': o}}

    dt = [(choice(range(42)), choice([True, False])) for _ in range(23)]
    nl.write_text(
        dumps({
            'version': 1,
            'nodes': [_n(c, o) for c, o in dt],
            'updated_at': 'never'
        }), 'utf-8')

    ff = fffake(apifile, nodelist=nl, dry=True)

    assert ff.api.c.get('state').get('nodes') == 0
    assert handle_nodelist(ff) is True
    assert ff.api.c.get('state').get('nodes') == sum([o for _, o in dt])

    assert tmpdir.remove() is None
Beispiel #3
0
def run(argv=None):
    '''
    Main function of |info_cname|.
    '''
    ff = FFFlash(parsed_args(argv))
    ff.log(info.ident)

    if not ff.access_for('api'):
        return (not ff.log('error loading API file', level=False))

    modified = []

    if ff.access_for('sidecars'):
        modified.append(
            handle_sidecars(ff)
        )

    if ff.access_for('nodelist'):
        modified.append(
            handle_nodelist(ff)
        )

    if ff.args.dry:
        ff.log('\n{}'.format(ff.api.pretty()), level='API file preview')
    else:
        if any(modified):
            ff.save()
            ff.log('saved api file')

    return (not any(modified))
def test_handle_nodelist_empty_nodelist(tmpdir, fffake):
    apifile = tmpdir.join("api_file.json")
    apifile.write_text(dumps({"a": "b"}), "utf-8")
    nl = tmpdir.join("nodelist.json")
    nl.write_text(dumps(""), "utf-8")

    ff = fffake(apifile, nodelist=nl, dry=True)
    assert handle_nodelist(ff) is False

    nl.write_text(dumps({"a": "b"}), "utf-8")
    ff = fffake(apifile, nodelist=nl, dry=True)
    assert handle_nodelist(ff) is False

    nl.write_text(dumps({"version": 1, "nodes": [], "updated_at": "never"}), "utf-8")
    ff = fffake(apifile, nodelist=nl, dry=True)
    assert handle_nodelist(ff) is False

    assert tmpdir.remove() is None
def test_handle_nodelist_invalid_nodelist_locations(tmpdir, fffake):
    apifile = tmpdir.join("api_file.json")
    apifile.write_text(dumps({"a": "b"}), "utf-8")
    for nodelist in [tmpdir.join("nodelist.json"), "http://localhost/404/not-found/does/not/exist.json"]:

        ff = fffake(apifile, nodelist=nodelist, dry=True)
        assert handle_nodelist(ff) is False

    assert tmpdir.remove() is None
Beispiel #6
0
def test_handle_nodelist_invalid_nodelist_locations(tmpdir, fffake):
    apifile = tmpdir.join('api_file.json')
    apifile.write_text(dumps({'a': 'b'}), 'utf-8')
    for nodelist in [
            tmpdir.join('nodelist.json'),
            'http://localhost/404/not-found/does/not/exist.json',
    ]:

        ff = fffake(apifile, nodelist=nodelist, dry=True)
        assert handle_nodelist(ff) is False

    assert tmpdir.remove() is None
Beispiel #7
0
def test_handle_nodelist_empty_nodelist(tmpdir, fffake):
    apifile = tmpdir.join('api_file.json')
    apifile.write_text(dumps({'a': 'b'}), 'utf-8')
    nl = tmpdir.join('nodelist.json')
    nl.write_text(dumps(''), 'utf-8')

    ff = fffake(apifile, nodelist=nl, dry=True)
    assert handle_nodelist(ff) is False

    nl.write_text(dumps({'a': 'b'}), 'utf-8')
    ff = fffake(apifile, nodelist=nl, dry=True)
    assert handle_nodelist(ff) is False

    nl.write_text(dumps({
        'version': 1,
        'nodes': [],
        'updated_at': 'never'
    }), 'utf-8')
    ff = fffake(apifile, nodelist=nl, dry=True)
    assert handle_nodelist(ff) is False

    assert tmpdir.remove() is None
def test_handle_nodelist_dry_launch_rankfile(tmpdir, fffake):
    apifile = tmpdir.join("api_file.json")
    apifile.write_text(dumps({"a": "b"}), "utf-8")
    nl = tmpdir.join("nodelist.json")
    nl.write_text(dumps({"version": 0, "nodes": [], "updated_at": "never"}), "utf-8")
    rf = tmpdir.join("rankfile.json")

    assert tmpdir.listdir() == [apifile, nl]
    ff = fffake(apifile, nodelist=nl, rankfile=rf, dry=True)

    assert handle_nodelist(ff) is False

    assert tmpdir.listdir() == [apifile, nl]
    assert tmpdir.remove() is None
def test_handle_nodelist_count_some_nodes(tmpdir, fffake):
    apifile = tmpdir.join("api_file.json")
    apifile.write_text(dumps({"state": {"nodes": 0, "description": ""}}), "utf-8")
    nl = tmpdir.join("nodelist.json")

    def _n(c, o):
        return {"status": {"clients": c, "online": o}}

    dt = [(choice(range(42)), choice([True, False])) for _ in range(23)]
    nl.write_text(dumps({"version": 1, "nodes": [_n(c, o) for c, o in dt], "updated_at": "never"}), "utf-8")

    ff = fffake(apifile, nodelist=nl, dry=True)

    assert ff.api.c.get("state").get("nodes") == 0
    assert handle_nodelist(ff) is True
    assert ff.api.c.get("state").get("nodes") == sum([o for _, o in dt])

    assert tmpdir.remove() is None
Beispiel #10
0
def test_handle_nodelist_dry_launch_rankfile(tmpdir, fffake):
    apifile = tmpdir.join('api_file.json')
    apifile.write_text(dumps({'a': 'b'}), 'utf-8')
    nl = tmpdir.join('nodelist.json')
    nl.write_text(dumps({
        'version': 0,
        'nodes': [],
        'updated_at': 'never'
    }), 'utf-8')
    rf = tmpdir.join('rankfile.json')

    assert tmpdir.listdir() == [apifile, nl]
    ff = fffake(apifile, nodelist=nl, rankfile=rf, dry=True)

    assert handle_nodelist(ff) is False

    assert tmpdir.listdir() == [apifile, nl]
    assert tmpdir.remove() is None
def test_handle_nodelist_launch_rankfile(tmpdir, fffake):
    apifile = tmpdir.join("api_file.json")
    apifile.write_text(dumps({"a": "b"}), "utf-8")
    nl = tmpdir.join("nodelist.json")
    nl.write_text(dumps({"version": 0, "nodes": [], "updated_at": "never"}), "utf-8")
    rf = tmpdir.join("rankfile.json")

    assert tmpdir.listdir() == [apifile, nl]
    ff = fffake(apifile, nodelist=nl, rankfile=rf)

    assert handle_nodelist(ff) is True
    assert tmpdir.listdir() == [apifile, nl, rf]

    res = loads(rf.read_text("utf-8"))
    assert res
    assert res.get("nodes") == []
    assert res.get("updated_at", False) != "never"

    assert tmpdir.remove() is None
Beispiel #12
0
def test_handle_nodelist_launch_rankfile(tmpdir, fffake):
    apifile = tmpdir.join('api_file.json')
    apifile.write_text(dumps({'a': 'b'}), 'utf-8')
    nl = tmpdir.join('nodelist.json')
    nl.write_text(dumps({
        'version': 0,
        'nodes': [],
        'updated_at': 'never'
    }), 'utf-8')
    rf = tmpdir.join('rankfile.json')

    assert tmpdir.listdir() == [apifile, nl]
    ff = fffake(apifile, nodelist=nl, rankfile=rf)

    assert handle_nodelist(ff) is True
    assert tmpdir.listdir() == [apifile, nl, rf]

    res = loads(rf.read_text('utf-8'))
    assert res
    assert res.get('nodes') == []
    assert res.get('updated_at', False) != 'never'

    assert tmpdir.remove() is None
def test_handle_nodelist_without_nodelist(tmpdir, fffake):
    ff = fffake(tmpdir.join("api_file.json"), dry=True)

    assert handle_nodelist(ff) is False

    assert tmpdir.remove() is None
Beispiel #14
0
def test_handle_nodelist_without_nodelist(tmpdir, fffake):
    ff = fffake(tmpdir.join('api_file.json'), dry=True)

    assert handle_nodelist(ff) is False

    assert tmpdir.remove() is None