Ejemplo n.º 1
0
def api_node_tags_add(nodeid):
    status = "success"
    answ = {"data": {}}
    cloud_api_main.debug_log_print("Add tags", request.data)

    try:
        cloud_api_main.check_user_privilege_node(nodeid)
        added = []
        reqdata = json.loads(request.data)
        tags = reqdata["tags"]
        alltags = cloud_api_main.get_tags()
        if isinstance(tags, basestring):
            tags = [tags]
        tags = set(tags)
        for t in tags:
            if t not in alltags:
                cloud_api_main.create_tag(t)
            cloud_api_main.add_tag_node(t, nodeid)
        answ["data"]["tags"] = list(tags)
    except (cloud_api_main.PrivilegeException, cloud_api_main.NoSuchObjectException) as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()
    except Exception as e:
        status = "error"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 2
0
def api_node_tags_delete(nodeid,tag):
    status = "success"
    answ = {"data": {}}
    cloud_api_main.debug_log_print("Change tags", request.data)

    try:
        cloud_api_main.check_user_privilege_node(nodeid)

        if tag == cloud_api_main.tdata.usertag:
            cloud_api_main.add_to_user_problem_msg("you can't remove your own usertag")
            raise cloud_api_main.PrivilegeException("can't remove this tag")

        tags = set((tag,))

        currtags = set(cloud_api_main.get_tags_node(nodeid))

        to_remove = tags.intersection(currtags)

        cloud_api_main.remove_tag_node(to_remove, nodeid)

        answ["data"]["deleted"] = True
    except (cloud_api_main.PrivilegeException, cloud_api_main.NoSuchObjectException) as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    except Exception as e:
        status = "error"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 3
0
def api_node_set_status(nodeid):
    status = "success"
    answ = {"data": {}}
    try:
        cloud_api_main.check_user_privilege_node(nodeid)
        reqdata = json.loads(request.data)

        wantedstate = reqdata.get("status")
        if not wantedstate:
            cloud_api_main.add_to_user_problem_msg("no status to change to")
            raise cloud_api_main.WrongRequestException("wrong request")

        data = cloud_api_main.change_node_state_cruder(nodeid,wantedstate)
        answ["data"] = data
    except (cloud_api_main.PrivilegeException, cloud_api_main.NoSuchObjectException, cloud_api_main.WrongRequestException) as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()
    except BaseException as e:
        status = "error"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 4
0
def api_node_sshcmd(nodeid):
    status = "success"
    answ = {"data": {}}
    cloud_api_main.debug_log_print("Create node", request.data)

    try:
        reqdata = json.loads(request.data)
        cmd = reqdata.get("cmd")

        result = cloud_api_main.run_ssh_on_node(nodeid, cmd)

        answ["data"]["result"] = result

    except cloud_api_main.GeneralAPIError as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] =  cloud_api_main.get_user_problem_msg()
    except Exception as e:
        status = "error"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 5
0
def api_node_tags_add(nodeid):
    status = "success"
    answ = {"data": {}}
    cloud_api_main.debug_log_print("Add tags", request.data)

    try:
        cloud_api_main.check_user_privilege_node(nodeid)
        added = []
        reqdata = json.loads(request.data)
        tags = reqdata["tags"]
        alltags = cloud_api_main.get_tags()
        if isinstance(tags, basestring):
            tags = [tags]
        tags = set(tags)
        for t in tags:
            if t not in alltags:
                cloud_api_main.create_tag(t)
            cloud_api_main.add_tag_node(t, nodeid)
        answ["data"]["tags"] = list(tags)
    except (cloud_api_main.PrivilegeException,
            cloud_api_main.NoSuchObjectException) as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()
    except Exception as e:
        status = "error"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 6
0
def api_node_set_status(nodeid):
    status = "success"
    answ = {"data": {}}
    try:
        cloud_api_main.check_user_privilege_node(nodeid)
        reqdata = json.loads(request.data)

        wantedstate = reqdata.get("status")
        if not wantedstate:
            cloud_api_main.add_to_user_problem_msg("no status to change to")
            raise cloud_api_main.WrongRequestException("wrong request")

        data = cloud_api_main.change_node_state_cruder(nodeid, wantedstate)
        answ["data"] = data
    except (cloud_api_main.PrivilegeException,
            cloud_api_main.NoSuchObjectException,
            cloud_api_main.WrongRequestException) as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()
    except BaseException as e:
        status = "error"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 7
0
def api_node_sshcmd(nodeid):
    status = "success"
    answ = {"data": {}}
    cloud_api_main.debug_log_print("Create node", request.data)

    try:
        reqdata = json.loads(request.data)
        cmd = reqdata.get("cmd")

        result = cloud_api_main.run_ssh_on_node(nodeid, cmd)

        answ["data"]["result"] = result

    except cloud_api_main.GeneralAPIError as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()
    except Exception as e:
        status = "error"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 8
0
def api_deletions():
    cloud_api_main.tdata.DB_CON = cloud_api_main.open_db2()
    cloud_api_main.tdata.isadmin = True
    everything = ""
    vmdel = "onevm delete {0} \n"
    vnetdel = "onevnet delete {0} \n"

    try:
        for i in cloud_api_main.get_nodes_db().itervalues():
            if i["platform"] == "nebula" and i["internal_id"]:
                everything += vmdel.format(i["internal_id"])

        for i in cloud_api_main.get_networks_db().itervalues():
            everything += vnetdel.format(i["nebulaid"])
    except Exception as e:
        cloud_api_main.debug_log_print("Error:", repr(e))

    return everything
Ejemplo n.º 9
0
def api_deletions():
    cloud_api_main.tdata.DB_CON = cloud_api_main.open_db2()
    cloud_api_main.tdata.isadmin = True
    everything = ""
    vmdel = "onevm delete {0} \n"
    vnetdel = "onevnet delete {0} \n"

    try:
        for i in cloud_api_main.get_nodes_db().itervalues():
            if i["platform"] == "nebula" and i["internal_id"]:
                everything += vmdel.format(i["internal_id"])

        for i in cloud_api_main.get_networks_db().itervalues():
            everything += vnetdel.format(i["nebulaid"])
    except Exception as e:
        cloud_api_main.debug_log_print("Error:", repr(e))

    return everything
Ejemplo n.º 10
0
def api_node_tags_change(nodeid):
    status = "success"
    answ = {"data": {}}

    try:
        cloud_api_main.debug_log_print("Change tags", request.data)

        cloud_api_main.check_user_privilege_node(nodeid)

        reqdata = json.loads(request.data)
        tags = reqdata["tags"]
        if isinstance(tags, basestring):
            tags = [tags]
        tags = set(tags)
        tags.add(cloud_api_main.tdata.ownertag)

        alltags = cloud_api_main.get_tags()
        currtags = set(cloud_api_main.get_tags_node(nodeid))

        to_remove = currtags.difference(tags).intersection(alltags)
        to_add = tags.difference(currtags)

        for t in to_add:
            if t not in alltags:
                cloud_api_main.create_tag(t)
            cloud_api_main.add_tag_node(t, nodeid)
        cloud_api_main.remove_tag_node(to_remove, nodeid)

        answ["data"]["tags"] = cloud_api_main.get_tags_node(nodeid)
    except (cloud_api_main.PrivilegeException,
            cloud_api_main.NoSuchObjectException) as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    except Exception as e:
        status = "error"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 11
0
def api_interface_get(intfid):
    status = "success"
    answ = {"data": {}}
    try:
        data = cloud_api_main.get_interface_db(intfid)
        answ["data"]["interface"] = data
    except (cloud_api_main.PrivilegeException, cloud_api_main.NoSuchObjectException) as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()
    except BaseException as e:
        status = "error"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.tdata.extended_error_log

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 12
0
def api_node_tags_change(nodeid):
    status = "success"
    answ = {"data": {}}

    try:
        cloud_api_main.debug_log_print("Change tags", request.data)

        cloud_api_main.check_user_privilege_node(nodeid)

        reqdata = json.loads(request.data)
        tags = reqdata["tags"]
        if isinstance(tags, basestring):
            tags = [tags]
        tags = set(tags)
        tags.add(cloud_api_main.tdata.ownertag)

        alltags = cloud_api_main.get_tags()
        currtags = set(cloud_api_main.get_tags_node(nodeid))

        to_remove = currtags.difference(tags).intersection(alltags)
        to_add = tags.difference(currtags)

        for t in to_add:
            if t not in alltags:
                cloud_api_main.create_tag(t)
            cloud_api_main.add_tag_node(t, nodeid)
        cloud_api_main.remove_tag_node(to_remove, nodeid)

        answ["data"]["tags"] = cloud_api_main.get_tags_node(nodeid)
    except (cloud_api_main.PrivilegeException, cloud_api_main.NoSuchObjectException) as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    except Exception as e:
        status = "error"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 13
0
def api_node_get_status(nodeid):
    status = "success"
    answ = {"data": {}}
    try:
        data = cloud_api_main.get_node_state(nodeid)
        answ["data"] = data
    except (cloud_api_main.PrivilegeException, cloud_api_main.NoSuchObjectException) as e:
        status = "fail"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()
    except BaseException as e:
        status = "error"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 14
0
def api_interface_get(intfid):
    status = "success"
    answ = {"data": {}}
    try:
        data = cloud_api_main.get_interface_db(intfid)
        answ["data"]["interface"] = data
    except (cloud_api_main.PrivilegeException,
            cloud_api_main.NoSuchObjectException) as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()
    except BaseException as e:
        status = "error"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.tdata.extended_error_log

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 15
0
def api_interface_delete(intfid):
    status = "success"
    answ = {"data": {}}
    try:
        # TODO odstranit i addr range?
        cloud_api_main.remove_disconnect_interface(intfid)

        answ["data"]["deleted"] = True
    except (cloud_api_main.PrivilegeException, cloud_api_main.NoSuchObjectException) as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()
    except BaseException as e:
        status = "error"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 16
0
def api_node_get_status(nodeid):
    status = "success"
    answ = {"data": {}}
    try:
        data = cloud_api_main.get_node_state(nodeid)
        answ["data"] = data
    except (cloud_api_main.PrivilegeException,
            cloud_api_main.NoSuchObjectException) as e:
        status = "fail"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()
    except BaseException as e:
        status = "error"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 17
0
def api_node_get(nodeid):
    status = "success"
    answ = {"data": {}}
    try:
        data = cloud_api_main.get_node_db_for_output(nodeid)
        answ["data"]["node"] = data
        answ["data"]["node"]["tags"] = cloud_api_main.get_tags_node(nodeid)
    except cloud_api_main.PrivilegeException as e:
        status = "fail"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.tdata.extended_error_log + " you are neither owner nor admin of this node"
    except cloud_api_main.NoSuchObjectException as e:
        status = "fail"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.tdata.extended_error_log + " no such node id exists"
    except BaseException as e:
        status = "error"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.tdata.extended_error_log

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 18
0
def api_node_get(nodeid):
    status = "success"
    answ = {"data": {}}
    try:
        data = cloud_api_main.get_node_db_for_output(nodeid)
        answ["data"]["node"] = data
        answ["data"]["node"]["tags"] = cloud_api_main.get_tags_node(nodeid)
    except cloud_api_main.PrivilegeException as e:
        status = "fail"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"][
            "description"] = cloud_api_main.tdata.extended_error_log + " you are neither owner nor admin of this node"
    except cloud_api_main.NoSuchObjectException as e:
        status = "fail"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"][
            "description"] = cloud_api_main.tdata.extended_error_log + " no such node id exists"
    except BaseException as e:
        status = "error"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.tdata.extended_error_log

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 19
0
def api_interface_delete(intfid):
    status = "success"
    answ = {"data": {}}
    try:
        # TODO odstranit i addr range?
        cloud_api_main.remove_disconnect_interface(intfid)

        answ["data"]["deleted"] = True
    except (cloud_api_main.PrivilegeException,
            cloud_api_main.NoSuchObjectException) as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()
    except BaseException as e:
        status = "error"
        cloud_api_main.debug_log_print(e)
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 20
0
def api_node_create():
    status = "success"
    answ = {"data": {}}
    cloud_api_main.debug_log_print("Create node", request.data)

    try:
        reqdata = json.loads(request.data)
        templname = reqdata.pop("templatename")
        dbid = cloud_api_main.create_node(templname, **reqdata)
        answ["data"]["node"] = cloud_api_main.get_node_db_for_output(dbid)
    except cloud_api_main.GeneralAPIError as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()
    except Exception as e:
        status = "error"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 21
0
def api_node_create():
    status = "success"
    answ = {"data": {}}
    cloud_api_main.debug_log_print("Create node", request.data)

    try:
        reqdata = json.loads(request.data)
        templname = reqdata.pop("templatename")
        dbid = cloud_api_main.create_node(templname, **reqdata)
        answ["data"]["node"] = cloud_api_main.get_node_db_for_output(dbid)
    except cloud_api_main.GeneralAPIError as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] =  cloud_api_main.get_user_problem_msg()
    except Exception as e:
        status = "error"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 22
0
def api_node_tags_delete(nodeid, tag):
    status = "success"
    answ = {"data": {}}
    cloud_api_main.debug_log_print("Change tags", request.data)

    try:
        cloud_api_main.check_user_privilege_node(nodeid)

        if tag == cloud_api_main.tdata.usertag:
            cloud_api_main.add_to_user_problem_msg(
                "you can't remove your own usertag")
            raise cloud_api_main.PrivilegeException("can't remove this tag")

        tags = set((tag, ))

        currtags = set(cloud_api_main.get_tags_node(nodeid))

        to_remove = tags.intersection(currtags)

        cloud_api_main.remove_tag_node(to_remove, nodeid)

        answ["data"]["deleted"] = True
    except (cloud_api_main.PrivilegeException,
            cloud_api_main.NoSuchObjectException) as e:
        status = "fail"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    except Exception as e:
        status = "error"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))
Ejemplo n.º 23
0
        status = "error"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()


    answ["status"] = status

    return make_response(jsonify(answ))




if __name__ == '__main__':
    poller = cloud_api_main.InfoPoller()
    poller.setDaemon(daemonic=True)
    cloud_api_main.debug_log_print("start poller")
    poller.start()
    cloud_api_main.debug_log_print("started poller")

    checker = cloud_api_main.CallbackChecker()
    checker.setDaemon(daemonic=True)
    checker.start()

    time.sleep(1)
    cloud_api_main.tdata.DB_CON = cloud_api_main.open_db2()
    with cloud_api_main.tdata.DB_CON:

        if len(sys.argv) >= 2 and sys.argv[1] == "server":

            callbackdispatcher = cloud_api_main.CallbackDispatcher()
            callbackdispatcher.setDaemon(daemonic=True)
Ejemplo n.º 24
0
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    except Exception as e:
        status = "error"
        answ["message"] = repr(e)
        answ["data"]["description"] = cloud_api_main.get_user_problem_msg()

    answ["status"] = status

    return make_response(jsonify(answ))


if __name__ == '__main__':
    poller = cloud_api_main.InfoPoller()
    poller.setDaemon(daemonic=True)
    cloud_api_main.debug_log_print("start poller")
    poller.start()
    cloud_api_main.debug_log_print("started poller")

    checker = cloud_api_main.CallbackChecker()
    checker.setDaemon(daemonic=True)
    checker.start()

    time.sleep(1)
    cloud_api_main.tdata.DB_CON = cloud_api_main.open_db2()
    with cloud_api_main.tdata.DB_CON:

        if len(sys.argv) >= 2 and sys.argv[1] == "server":

            callbackdispatcher = cloud_api_main.CallbackDispatcher()
            callbackdispatcher.setDaemon(daemonic=True)