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))
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))
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))
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))
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))
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
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))
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))
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))
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))
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))
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))
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))
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))
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)
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)