Exemplo n.º 1
0
def update_host(old_host_name):
    if not is_json_request(request):
        return abort(400)

    req = request.json
    if not is_valid_keys(req, ["host_name", "ip", "role"]):
        abort(400)

    try:
        role_maps = RoleMap.get_by_host_name(db.session.query, old_host_name)
        for r in role_maps:
            rm = RoleMap.get_by_host_name_and_role_name(db.session.query, old_host_name, r.role_name)
            db.session.delete(rm)
            db.session.flush()

        host = Host.get_one_by_host_name(db.session.query, old_host_name)
        host.host_name = req["host_name"]
        old_ip = host.ip
        host.ip = req["ip"]
        host.role = [RoleMap(role_name=role_name) for role_name in req["role"]]
        db.session.add(host)

        if req["ip"] != old_ip:
            ip = IP.get_one(db.session.query, req["ip"])
            ip.is_used = 1
            ip = IP.get_one(db.session.query, old_ip)
            ip.is_used = 0

        db.session.commit()
    except Exception as e:
        abort(500)
    return jsonify(result=[dict(message="OK", request="update host", payload=str(request.json))])
Exemplo n.º 2
0
def list_ip_by_role(role_name):
    fmt = request.args.get("format")

    role_maps = RoleMap.get_by_role_name(db.session.query, role_name)
    host_names = [role_map.host_name for role_map in role_maps]
    hosts = Host.get_in_host_names(db.session.query, host_names)
    result = [r.ip for r in hosts]
    return formatter(fmt, result)
Exemplo n.º 3
0
 def test_get_by_host_name(self):
     expected = [('web01', 'app'), ('web01', 'web')]
     self.create_test_role_data()
     self.create_test_ip_data()
     self.create_test_host_data()
     self.create_test_role_map_data()
     role_maps = RoleMap.get_by_host_name(db.session.query, 'web01')
     actual = [(r.host_name, r.role_name) for r in role_maps]
     self.assertListEqual(sorted(expected), sorted(actual))
Exemplo n.º 4
0
 def test_get_one_by_role_name(self):
     expected = ('web01', 'app')
     self.create_test_role_data()
     self.create_test_ip_data()
     self.create_test_host_data()
     self.create_test_role_map_data()
     role_map = RoleMap.get_one_by_role_name(db.session.query, 'app')
     actual = (role_map.host_name, role_map.role_name)
     self.assertEqual(expected, actual)
Exemplo n.º 5
0
def output_hosts(role_name):
    role_maps = RoleMap.get_by_role_name(db.session.query, role_name)
    host_names = [role_map.host_name for role_map in role_maps]

    hosts = Host.get_in_host_names(db.session.query, host_names)
    if len(hosts) == 0:
        abort(404)

    result = [dict(host_name=host.host_name, ip=host.ip) for host in hosts]
    return formatter("hosts", result)
Exemplo n.º 6
0
def search_by_host(host_name):
    host = Host.get_one_by_host_name(db.session.query, host_name)
    if not host:
        abort(404)

    role_maps = RoleMap.get_by_host_name(db.session.query, host.host_name)
    role_names = [r.role_name for r in role_maps]

    result = [dict(host_name=host.host_name, ip=host.ip, role=role_names)]
    return jsonify(result=result)
Exemplo n.º 7
0
def search_by_role(role_name):
    role_maps = RoleMap.get_by_role_name(db.session.query, role_name)
    host_names = [r.host_name for r in role_maps]

    hosts = Host.get_in_host_names(db.session.query, host_names)
    if len(hosts) == 0:
        abort(404)

    result = []
    for host in hosts:
        d = {}
        d["host_name"] = host.host_name
        d["ip"] = host.ip
        d["role"] = [r.role_name for r in host.role]
        result.append(d)
    return jsonify(result=result)