)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"4b37222c7437563b4bc454ce6fd0f8e19881d9ee","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Eyal Leshem \u003ceyal.leshem@toganetworks.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-01-04 12:04:13 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add add command to df-db"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Used for adding object to df by the df-db utility."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"It\u0027s can be used from adding object before the controller is started."},{"line_number":12,"context_line":"Needed for creating furing devstack in the kubernetes POC ."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I19464c565031e48bfcda4de53ab79911d531a285"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f91af0f_3d709ddc","line":12,"range":{"start_line":7,"start_character":0,"end_line":12,"end_character":59},"updated":"2018-01-04 10:22:37.000000000","message":"Maybe worth to rephrase so that this commit comes to extend capabilities of df-db utility to create (and not only retrieve and show) Dragonflow managed objects. I think it worth to add launchpad bug to trace the work.","commit_id":"b8462158db2736b76ab8ea60fe1cc2ef20718762"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6700428c0d18aeb6411fbb26da4d93cda7679f20","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add add command to df-db"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"this commit comes to extend capabilities of df-db utility to create "},{"line_number":10,"context_line":"Dragonflow managed objects. "},{"line_number":11,"context_line":"Closes-Bug: #1741250"},{"line_number":12,"context_line":"Change-Id: I19464c565031e48bfcda4de53ab79911d531a285"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9f91af0f_a99c410e","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":4},"updated":"2018-01-07 07:34:27.000000000","message":"This","commit_id":"9f6133e9aa0368304266cbd4c14f9edea81247ef"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6700428c0d18aeb6411fbb26da4d93cda7679f20","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add add command to df-db"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"this commit comes to extend capabilities of df-db utility to create "},{"line_number":10,"context_line":"Dragonflow managed objects. "},{"line_number":11,"context_line":"Closes-Bug: #1741250"},{"line_number":12,"context_line":"Change-Id: I19464c565031e48bfcda4de53ab79911d531a285"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9f91af0f_c9a18548","line":9,"range":{"start_line":9,"start_character":67,"end_line":9,"end_character":68},"updated":"2018-01-07 07:34:27.000000000","message":"please remove white space","commit_id":"9f6133e9aa0368304266cbd4c14f9edea81247ef"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6700428c0d18aeb6411fbb26da4d93cda7679f20","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add add command to df-db"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"this commit comes to extend capabilities of df-db utility to create "},{"line_number":10,"context_line":"Dragonflow managed objects. "},{"line_number":11,"context_line":"Closes-Bug: #1741250"},{"line_number":12,"context_line":"Change-Id: I19464c565031e48bfcda4de53ab79911d531a285"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9f91af0f_698ab9bf","line":10,"range":{"start_line":10,"start_character":26,"end_line":10,"end_character":28},"updated":"2018-01-07 07:34:27.000000000","message":"ditto","commit_id":"9f6133e9aa0368304266cbd4c14f9edea81247ef"}],"dragonflow/cli/df_db.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"55af73a71e323243272cbbfbcfc896399f8748b3","unresolved":false,"context_lines":[{"line_number":150,"context_line":"def add_object_from_json(json_str, table):"},{"line_number":151,"context_line":"    nb_api \u003d api_nb.NbApi.get_instance(False)"},{"line_number":152,"context_line":"    try:"},{"line_number":153,"context_line":"        model \u003d model_framework.get_model(table)"},{"line_number":154,"context_line":"        obj \u003d model.from_json(json_str)"},{"line_number":155,"context_line":"        nb_api.create(obj)"},{"line_number":156,"context_line":"    except KeyError:"},{"line_number":157,"context_line":"        print(\"Table {} not found in model list\".format(table))"},{"line_number":158,"context_line":"    except ValueError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_e327f811","line":155,"range":{"start_line":153,"start_character":0,"end_line":155,"end_character":26},"updated":"2018-01-04 12:43:31.000000000","message":"Please break up this try clause. \u0027get_model\u0027 only throws KeyError. from_json doesn\u0027t throw KeyError. And does nb_api.create raise exceptions?","commit_id":"b8462158db2736b76ab8ea60fe1cc2ef20718762"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"2f40bdb3a6b729b23922fe79f70039f86a32d574","unresolved":false,"context_lines":[{"line_number":150,"context_line":"def add_object_from_json(json_str, table):"},{"line_number":151,"context_line":"    nb_api \u003d api_nb.NbApi.get_instance(False)"},{"line_number":152,"context_line":"    try:"},{"line_number":153,"context_line":"        model \u003d model_framework.get_model(table)"},{"line_number":154,"context_line":"        obj \u003d model.from_json(json_str)"},{"line_number":155,"context_line":"        nb_api.create(obj)"},{"line_number":156,"context_line":"    except KeyError:"},{"line_number":157,"context_line":"        print(\"Table {} not found in model list\".format(table))"},{"line_number":158,"context_line":"    except ValueError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_1274a367","line":155,"range":{"start_line":153,"start_character":0,"end_line":155,"end_character":26},"in_reply_to":"9f91af0f_e327f811","updated":"2018-01-04 13:44:07.000000000","message":"Done , \nmust to admit the i prefer the perv version","commit_id":"b8462158db2736b76ab8ea60fe1cc2ef20718762"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"55af73a71e323243272cbbfbcfc896399f8748b3","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def handle(db_driver, args):"},{"line_number":280,"context_line":"        table \u003d args.table"},{"line_number":281,"context_line":"        dict_arg \u003d vars(args)"},{"line_number":282,"context_line":"        file_path \u003d dict_arg.get(\"file\")"},{"line_number":283,"context_line":"        if file_path:"},{"line_number":284,"context_line":"            add_object_from_file(file_path, table)"},{"line_number":285,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_be682387","line":282,"range":{"start_line":281,"start_character":0,"end_line":282,"end_character":40},"updated":"2018-01-04 12:43:31.000000000","message":"I think using getattr is better. Or even: \ntry:\n    args.file ...\nexcept AttributeError:\n    ...\n\ntry:\n    args.json ...\nexcept AttributeError:\n    ...\n\nprint(ERROR)","commit_id":"b8462158db2736b76ab8ea60fe1cc2ef20718762"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"2f40bdb3a6b729b23922fe79f70039f86a32d574","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def handle(db_driver, args):"},{"line_number":280,"context_line":"        table \u003d args.table"},{"line_number":281,"context_line":"        dict_arg \u003d vars(args)"},{"line_number":282,"context_line":"        file_path \u003d dict_arg.get(\"file\")"},{"line_number":283,"context_line":"        if file_path:"},{"line_number":284,"context_line":"            add_object_from_file(file_path, table)"},{"line_number":285,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_920513c5","line":282,"range":{"start_line":281,"start_character":0,"end_line":282,"end_character":40},"in_reply_to":"9f91af0f_be682387","updated":"2018-01-04 13:44:07.000000000","message":"Done , all arg in the Namespace object , and thier value can be None","commit_id":"b8462158db2736b76ab8ea60fe1cc2ef20718762"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"55af73a71e323243272cbbfbcfc896399f8748b3","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        print(\"json or file argument must be supplied\")"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    sub_parser \u003d subparsers.add_parser(\u0027add\u0027, help\u003d\"Drop all tables.\")"},{"line_number":295,"context_line":"    sub_parser.add_argument(\u0027table\u0027, help\u003d\u0027The name of the table.\u0027)"},{"line_number":296,"context_line":"    sub_parser.add_argument("},{"line_number":297,"context_line":"        \u0027-j\u0027, \u0027--json\u0027, help\u003d\"object represented by json string\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_9e02ffb3","line":294,"range":{"start_line":294,"start_character":52,"end_line":294,"end_character":67},"updated":"2018-01-04 12:43:31.000000000","message":"This is wrong :)","commit_id":"b8462158db2736b76ab8ea60fe1cc2ef20718762"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"2f40bdb3a6b729b23922fe79f70039f86a32d574","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        print(\"json or file argument must be supplied\")"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    sub_parser \u003d subparsers.add_parser(\u0027add\u0027, help\u003d\"Drop all tables.\")"},{"line_number":295,"context_line":"    sub_parser.add_argument(\u0027table\u0027, help\u003d\u0027The name of the table.\u0027)"},{"line_number":296,"context_line":"    sub_parser.add_argument("},{"line_number":297,"context_line":"        \u0027-j\u0027, \u0027--json\u0027, help\u003d\"object represented by json string\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_7212cf0b","line":294,"range":{"start_line":294,"start_character":52,"end_line":294,"end_character":67},"in_reply_to":"9f91af0f_9e02ffb3","updated":"2018-01-04 13:44:07.000000000","message":"fixed","commit_id":"b8462158db2736b76ab8ea60fe1cc2ef20718762"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"55af73a71e323243272cbbfbcfc896399f8748b3","unresolved":false,"context_lines":[{"line_number":296,"context_line":"    sub_parser.add_argument("},{"line_number":297,"context_line":"        \u0027-j\u0027, \u0027--json\u0027, help\u003d\"object represented by json string\")"},{"line_number":298,"context_line":"    sub_parser.add_argument("},{"line_number":299,"context_line":"        \u0027-f\u0027, \u0027--file\u0027, help\u003d\"patch to file with object json representation\")"},{"line_number":300,"context_line":"    sub_parser.set_defaults(handle\u003dhandle)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_de21674f","line":299,"range":{"start_line":299,"start_character":30,"end_line":299,"end_character":35},"updated":"2018-01-04 12:43:31.000000000","message":"typo? patch -\u003e path","commit_id":"b8462158db2736b76ab8ea60fe1cc2ef20718762"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"6abfd662b45545b2b231c44404762b79632b9ca2","unresolved":false,"context_lines":[{"line_number":296,"context_line":"    sub_parser.add_argument("},{"line_number":297,"context_line":"        \u0027-j\u0027, \u0027--json\u0027, help\u003d\"object represented by json string\")"},{"line_number":298,"context_line":"    sub_parser.add_argument("},{"line_number":299,"context_line":"        \u0027-f\u0027, \u0027--file\u0027, help\u003d\"patch to file with object json representation\")"},{"line_number":300,"context_line":"    sub_parser.set_defaults(handle\u003dhandle)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_f216dff1","line":299,"range":{"start_line":299,"start_character":30,"end_line":299,"end_character":35},"in_reply_to":"9f91af0f_de21674f","updated":"2018-01-04 13:45:41.000000000","message":"done","commit_id":"b8462158db2736b76ab8ea60fe1cc2ef20718762"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6700428c0d18aeb6411fbb26da4d93cda7679f20","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        print(\u0027Key %s is not found in table %s.\u0027 % (key, table))"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"def add_object_from_json(json_str, table):"},{"line_number":152,"context_line":"    nb_api \u003d api_nb.NbApi.get_instance(False)"},{"line_number":153,"context_line":"    try:"},{"line_number":154,"context_line":"        model \u003d model_framework.get_model(table)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_09c52df1","line":151,"updated":"2018-01-07 07:34:27.000000000","message":"please add docstring","commit_id":"9f6133e9aa0368304266cbd4c14f9edea81247ef"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"4ac26a373a86e74e8be312c981dc416989eb3648","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    try:"},{"line_number":154,"context_line":"        model \u003d model_framework.get_model(table)"},{"line_number":155,"context_line":"    except KeyError:"},{"line_number":156,"context_line":"        print(\"Table {} not found in model list\".format(table))"},{"line_number":157,"context_line":"        return"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_751159ac","line":156,"range":{"start_line":156,"start_character":15,"end_line":156,"end_character":20},"updated":"2018-01-04 15:02:08.000000000","message":"I think that \"Model\" is a more accurate","commit_id":"9f6133e9aa0368304266cbd4c14f9edea81247ef"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6700428c0d18aeb6411fbb26da4d93cda7679f20","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    try:"},{"line_number":154,"context_line":"        model \u003d model_framework.get_model(table)"},{"line_number":155,"context_line":"    except KeyError:"},{"line_number":156,"context_line":"        print(\"Table {} not found in model list\".format(table))"},{"line_number":157,"context_line":"        return"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_8987fdb5","line":156,"range":{"start_line":156,"start_character":37,"end_line":156,"end_character":42},"updated":"2018-01-07 07:34:27.000000000","message":"models","commit_id":"9f6133e9aa0368304266cbd4c14f9edea81247ef"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"e86075ea653323b1b28e1c16cc4ca458e7c05021","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    try:"},{"line_number":154,"context_line":"        model \u003d model_framework.get_model(table)"},{"line_number":155,"context_line":"    except KeyError:"},{"line_number":156,"context_line":"        print(\"Table {} not found in model list\".format(table))"},{"line_number":157,"context_line":"        return"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_49f81548","line":156,"range":{"start_line":156,"start_character":15,"end_line":156,"end_character":20},"in_reply_to":"9f91af0f_751159ac","updated":"2018-01-07 07:31:55.000000000","message":"Done","commit_id":"9f6133e9aa0368304266cbd4c14f9edea81247ef"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6700428c0d18aeb6411fbb26da4d93cda7679f20","unresolved":false,"context_lines":[{"line_number":168,"context_line":"    nb_api.create(obj)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"def add_object_from_file(file_path, table):"},{"line_number":172,"context_line":"    try:"},{"line_number":173,"context_line":"        with open(file_path, \u0027rb\u0027) as f:"},{"line_number":174,"context_line":"            json_str \u003d f.read()"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_e9bfa95e","line":171,"updated":"2018-01-07 07:34:27.000000000","message":"please add docstring","commit_id":"9f6133e9aa0368304266cbd4c14f9edea81247ef"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"4ac26a373a86e74e8be312c981dc416989eb3648","unresolved":false,"context_lines":[{"line_number":300,"context_line":"              \"(use \u0027-h\u0027 for details)\")"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    sub_parser \u003d subparsers.add_parser("},{"line_number":303,"context_line":"        \u0027add\u0027, help\u003d\"Create new object in table\","},{"line_number":304,"context_line":"        description\u003d\"object should be json (string/file) that\""},{"line_number":305,"context_line":"                    \"desribe object according to the definetions \""},{"line_number":306,"context_line":"                    \"that set by table modles \")"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_b52e01f8","line":303,"range":{"start_line":303,"start_character":32,"end_line":303,"end_character":38},"updated":"2018-01-04 15:02:08.000000000","message":"single object or multiple objects for each table?","commit_id":"9f6133e9aa0368304266cbd4c14f9edea81247ef"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"e86075ea653323b1b28e1c16cc4ca458e7c05021","unresolved":false,"context_lines":[{"line_number":300,"context_line":"              \"(use \u0027-h\u0027 for details)\")"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    sub_parser \u003d subparsers.add_parser("},{"line_number":303,"context_line":"        \u0027add\u0027, help\u003d\"Create new object in table\","},{"line_number":304,"context_line":"        description\u003d\"object should be json (string/file) that\""},{"line_number":305,"context_line":"                    \"desribe object according to the definetions \""},{"line_number":306,"context_line":"                    \"that set by table modles \")"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_e996c9f0","line":303,"range":{"start_line":303,"start_character":32,"end_line":303,"end_character":38},"in_reply_to":"9f91af0f_b52e01f8","updated":"2018-01-07 07:31:55.000000000","message":"it\u0027s single object per call","commit_id":"9f6133e9aa0368304266cbd4c14f9edea81247ef"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6700428c0d18aeb6411fbb26da4d93cda7679f20","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    sub_parser \u003d subparsers.add_parser("},{"line_number":303,"context_line":"        \u0027add\u0027, help\u003d\"Create new object in table\","},{"line_number":304,"context_line":"        description\u003d\"object should be json (string/file) that\""},{"line_number":305,"context_line":"                    \"desribe object according to the definetions \""},{"line_number":306,"context_line":"                    \"that set by table modles \")"},{"line_number":307,"context_line":"    sub_parser.add_argument(\u0027table\u0027, help\u003d\u0027The name of the table.\u0027)"},{"line_number":308,"context_line":"    sub_parser.add_argument("}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_c9bae56c","line":305,"range":{"start_line":305,"start_character":53,"end_line":305,"end_character":64},"updated":"2018-01-07 07:34:27.000000000","message":"definition","commit_id":"9f6133e9aa0368304266cbd4c14f9edea81247ef"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6700428c0d18aeb6411fbb26da4d93cda7679f20","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        \u0027add\u0027, help\u003d\"Create new object in table\","},{"line_number":304,"context_line":"        description\u003d\"object should be json (string/file) that\""},{"line_number":305,"context_line":"                    \"desribe object according to the definetions \""},{"line_number":306,"context_line":"                    \"that set by table modles \")"},{"line_number":307,"context_line":"    sub_parser.add_argument(\u0027table\u0027, help\u003d\u0027The name of the table.\u0027)"},{"line_number":308,"context_line":"    sub_parser.add_argument("},{"line_number":309,"context_line":"        \u0027-j\u0027, \u0027--json\u0027, help\u003d\"object represented by json string\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_a9b52180","line":306,"range":{"start_line":306,"start_character":39,"end_line":306,"end_character":45},"updated":"2018-01-07 07:34:27.000000000","message":"model","commit_id":"9f6133e9aa0368304266cbd4c14f9edea81247ef"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"eb13eba1e0b2ba7d4991b3fe03b93ccc7de005c1","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        print(\"Json {} is not applicable to {}\".format(json_str, table))"},{"line_number":173,"context_line":"        return"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    nb_api.create(obj)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"def add_object_from_file(file_path, table):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_e4a270ae","line":175,"updated":"2018-01-07 09:53:38.000000000","message":"Can\u0027t we get errors here? if the object has valid structure, but lacks referenced objects for example?","commit_id":"e54a2d2807a91159bf599d6be0c4e6a5188a9df4"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"cd1efdadc638dbbbf57429a3b3516f2e94f610af","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        print(\"Json {} is not applicable to {}\".format(json_str, table))"},{"line_number":173,"context_line":"        return"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    nb_api.create(obj)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"def add_object_from_file(file_path, table):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_87b36198","line":175,"in_reply_to":"9f91af0f_189c940d","updated":"2018-01-08 06:12:31.000000000","message":"Works for me","commit_id":"e54a2d2807a91159bf599d6be0c4e6a5188a9df4"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"9e2e6dc5b1fd6878c39957da78662bd0c6a8b7dc","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        print(\"Json {} is not applicable to {}\".format(json_str, table))"},{"line_number":173,"context_line":"        return"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    nb_api.create(obj)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"def add_object_from_file(file_path, table):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_189c940d","line":175,"in_reply_to":"9f91af0f_e4a270ae","updated":"2018-01-07 14:58:54.000000000","message":"I added Validation error from json-model . \nDon\u0027t sure that i can catch all exceptions that could be thrown by driver.","commit_id":"e54a2d2807a91159bf599d6be0c4e6a5188a9df4"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"eb13eba1e0b2ba7d4991b3fe03b93ccc7de005c1","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    \"\"\""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    try:"},{"line_number":188,"context_line":"        with open(file_path, \u0027rb\u0027) as f:"},{"line_number":189,"context_line":"            json_str \u003d f.read()"},{"line_number":190,"context_line":"            add_object_from_json(json_str, table)"},{"line_number":191,"context_line":"    except IOError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_44c47c5f","line":188,"range":{"start_line":188,"start_character":13,"end_line":188,"end_character":20},"updated":"2018-01-07 09:53:38.000000000","message":"Maybe I am lacking some python knowledge, but where is the close() ?","commit_id":"e54a2d2807a91159bf599d6be0c4e6a5188a9df4"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"9e2e6dc5b1fd6878c39957da78662bd0c6a8b7dc","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    \"\"\""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    try:"},{"line_number":188,"context_line":"        with open(file_path, \u0027rb\u0027) as f:"},{"line_number":189,"context_line":"            json_str \u003d f.read()"},{"line_number":190,"context_line":"            add_object_from_json(json_str, table)"},{"line_number":191,"context_line":"    except IOError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_d8a14c48","line":188,"range":{"start_line":188,"start_character":13,"end_line":188,"end_character":20},"in_reply_to":"9f91af0f_44c47c5f","updated":"2018-01-07 14:58:54.000000000","message":"the with statement handle that see -\nhttp://effbot.org/zone/python-with-statement.htm","commit_id":"e54a2d2807a91159bf599d6be0c4e6a5188a9df4"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"cd1efdadc638dbbbf57429a3b3516f2e94f610af","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    \"\"\""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    try:"},{"line_number":188,"context_line":"        with open(file_path, \u0027rb\u0027) as f:"},{"line_number":189,"context_line":"            json_str \u003d f.read()"},{"line_number":190,"context_line":"            add_object_from_json(json_str, table)"},{"line_number":191,"context_line":"    except IOError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_678dfdd1","line":188,"range":{"start_line":188,"start_character":13,"end_line":188,"end_character":20},"in_reply_to":"9f91af0f_d8a14c48","updated":"2018-01-08 06:12:31.000000000","message":"Excellent, I have learned something new :)","commit_id":"e54a2d2807a91159bf599d6be0c4e6a5188a9df4"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"eb13eba1e0b2ba7d4991b3fe03b93ccc7de005c1","unresolved":false,"context_lines":[{"line_number":301,"context_line":"    def handle(db_driver, args):"},{"line_number":302,"context_line":"        table \u003d args.table"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        file_path \u003d args.file"},{"line_number":305,"context_line":"        if file_path:"},{"line_number":306,"context_line":"            add_object_from_file(file_path, table)"},{"line_number":307,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_a4b3080a","line":304,"updated":"2018-01-07 09:53:38.000000000","message":"In case you use group, I would change to:\nif args.file:\n    ....\nelif args.json:\n    ....\nelse:\n   print \"error....\"\n   usage()","commit_id":"e54a2d2807a91159bf599d6be0c4e6a5188a9df4"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"9e2e6dc5b1fd6878c39957da78662bd0c6a8b7dc","unresolved":false,"context_lines":[{"line_number":301,"context_line":"    def handle(db_driver, args):"},{"line_number":302,"context_line":"        table \u003d args.table"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        file_path \u003d args.file"},{"line_number":305,"context_line":"        if file_path:"},{"line_number":306,"context_line":"            add_object_from_file(file_path, table)"},{"line_number":307,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_788a80bf","line":304,"in_reply_to":"9f91af0f_a4b3080a","updated":"2018-01-07 14:58:54.000000000","message":"done","commit_id":"e54a2d2807a91159bf599d6be0c4e6a5188a9df4"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"eb13eba1e0b2ba7d4991b3fe03b93ccc7de005c1","unresolved":false,"context_lines":[{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    sub_parser \u003d subparsers.add_parser("},{"line_number":318,"context_line":"        \u0027add\u0027, help\u003d\"Create new object in table\","},{"line_number":319,"context_line":"        description\u003d\"object should be json (string/file) that\""},{"line_number":320,"context_line":"                    \"describe object.The object should be matched to\""},{"line_number":321,"context_line":"                    \" the table model definition, as defined by dragonflow\""},{"line_number":322,"context_line":"                    \"datamodel\")"},{"line_number":323,"context_line":"    sub_parser.add_argument(\u0027table\u0027, help\u003d\u0027The name of the table.\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_040c34eb","line":320,"range":{"start_line":319,"start_character":57,"end_line":320,"end_character":29},"updated":"2018-01-07 09:53:38.000000000","message":"describing an","commit_id":"e54a2d2807a91159bf599d6be0c4e6a5188a9df4"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"eb13eba1e0b2ba7d4991b3fe03b93ccc7de005c1","unresolved":false,"context_lines":[{"line_number":317,"context_line":"    sub_parser \u003d subparsers.add_parser("},{"line_number":318,"context_line":"        \u0027add\u0027, help\u003d\"Create new object in table\","},{"line_number":319,"context_line":"        description\u003d\"object should be json (string/file) that\""},{"line_number":320,"context_line":"                    \"describe object.The object should be matched to\""},{"line_number":321,"context_line":"                    \" the table model definition, as defined by dragonflow\""},{"line_number":322,"context_line":"                    \"datamodel\")"},{"line_number":323,"context_line":"    sub_parser.add_argument(\u0027table\u0027, help\u003d\u0027The name of the table.\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_a425485e","line":320,"range":{"start_line":320,"start_character":55,"end_line":320,"end_character":68},"updated":"2018-01-07 09:53:38.000000000","message":"match","commit_id":"e54a2d2807a91159bf599d6be0c4e6a5188a9df4"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"9e2e6dc5b1fd6878c39957da78662bd0c6a8b7dc","unresolved":false,"context_lines":[{"line_number":317,"context_line":"    sub_parser \u003d subparsers.add_parser("},{"line_number":318,"context_line":"        \u0027add\u0027, help\u003d\"Create new object in table\","},{"line_number":319,"context_line":"        description\u003d\"object should be json (string/file) that\""},{"line_number":320,"context_line":"                    \"describe object.The object should be matched to\""},{"line_number":321,"context_line":"                    \" the table model definition, as defined by dragonflow\""},{"line_number":322,"context_line":"                    \"datamodel\")"},{"line_number":323,"context_line":"    sub_parser.add_argument(\u0027table\u0027, help\u003d\u0027The name of the table.\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_389078ed","line":320,"range":{"start_line":320,"start_character":55,"end_line":320,"end_character":68},"in_reply_to":"9f91af0f_a425485e","updated":"2018-01-07 14:58:54.000000000","message":"done","commit_id":"e54a2d2807a91159bf599d6be0c4e6a5188a9df4"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"eb13eba1e0b2ba7d4991b3fe03b93ccc7de005c1","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                    \" the table model definition, as defined by dragonflow\""},{"line_number":322,"context_line":"                    \"datamodel\")"},{"line_number":323,"context_line":"    sub_parser.add_argument(\u0027table\u0027, help\u003d\u0027The name of the table.\u0027)"},{"line_number":324,"context_line":"    sub_parser.add_argument("},{"line_number":325,"context_line":"        \u0027-j\u0027, \u0027--json\u0027, help\u003d\"object represented by json string\")"},{"line_number":326,"context_line":"    sub_parser.add_argument("},{"line_number":327,"context_line":"        \u0027-f\u0027, \u0027--file\u0027, help\u003d\"path to file with object json representation\")"},{"line_number":328,"context_line":"    sub_parser.set_defaults(handle\u003dhandle)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_04c3d45e","line":327,"range":{"start_line":324,"start_character":1,"end_line":327,"end_character":19},"updated":"2018-01-07 09:53:38.000000000","message":"I think that -j and -f should be mutually exclusive.\nTo do that you can use something like:\n    group \u003d sub_parser.add_mutually_exclusive_group()\n    group.add_argument(\u0027-j\u0027, \u0027--json\u0027, ...)\n    group.add_argument(\u0027-f\u0027, \u0027--file\u0027, ...)","commit_id":"e54a2d2807a91159bf599d6be0c4e6a5188a9df4"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"9e2e6dc5b1fd6878c39957da78662bd0c6a8b7dc","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                    \" the table model definition, as defined by dragonflow\""},{"line_number":322,"context_line":"                    \"datamodel\")"},{"line_number":323,"context_line":"    sub_parser.add_argument(\u0027table\u0027, help\u003d\u0027The name of the table.\u0027)"},{"line_number":324,"context_line":"    sub_parser.add_argument("},{"line_number":325,"context_line":"        \u0027-j\u0027, \u0027--json\u0027, help\u003d\"object represented by json string\")"},{"line_number":326,"context_line":"    sub_parser.add_argument("},{"line_number":327,"context_line":"        \u0027-f\u0027, \u0027--file\u0027, help\u003d\"path to file with object json representation\")"},{"line_number":328,"context_line":"    sub_parser.set_defaults(handle\u003dhandle)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_988744b6","line":327,"range":{"start_line":324,"start_character":1,"end_line":327,"end_character":19},"in_reply_to":"9f91af0f_04c3d45e","updated":"2018-01-07 14:58:54.000000000","message":"done , it\u0027s indeed better :)","commit_id":"e54a2d2807a91159bf599d6be0c4e6a5188a9df4"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"7569fcadb2dfbfa9feb3199051f44d513a055824","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    try:"},{"line_number":192,"context_line":"        with open(file_path, \u0027rb\u0027) as f:"},{"line_number":193,"context_line":"            json_str \u003d f.read()"},{"line_number":194,"context_line":"            add_object_from_json(json_str, table)"},{"line_number":195,"context_line":"    except IOError:"},{"line_number":196,"context_line":"        print(\"Can\u0027t read data from file \" + file_path)"},{"line_number":197,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9f91af0f_4246a7c2","line":194,"range":{"start_line":194,"start_character":0,"end_line":194,"end_character":49},"updated":"2018-01-08 06:51:10.000000000","message":"nit: Can be done out of the with block","commit_id":"d523df16dcffb9425aaf6df949d2b895dc28b8b4"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"cd1efdadc638dbbbf57429a3b3516f2e94f610af","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    sub_parser \u003d subparsers.add_parser("},{"line_number":319,"context_line":"        \u0027add\u0027, help\u003d\"Create new object in table\","},{"line_number":320,"context_line":"        description\u003d\"object should be json (string/file) that \""},{"line_number":321,"context_line":"                    \"describing an object.The object should match \""},{"line_number":322,"context_line":"                    \"the table model definition, as defined by dragonflow \""},{"line_number":323,"context_line":"                    \"datamodel\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f91af0f_e76fcdf9","line":320,"range":{"start_line":320,"start_character":57,"end_line":320,"end_character":61},"updated":"2018-01-08 06:12:31.000000000","message":"remove the \"that\"","commit_id":"d523df16dcffb9425aaf6df949d2b895dc28b8b4"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"67616111822a44f29038d4ec1e3da50707bfbd29","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    \"\"\"add a new object that described by json"},{"line_number":154,"context_line":"     string to dragonflow db."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    :param json_str: json string that describe the object to be added"},{"line_number":157,"context_line":"    :param table: table name"},{"line_number":158,"context_line":"    :return: None"},{"line_number":159,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f91af0f_283ec68a","line":156,"range":{"start_line":156,"start_character":38,"end_line":156,"end_character":46},"updated":"2018-01-09 06:10:25.000000000","message":"describes","commit_id":"3c1ea2c961c22151cd594dac453516a60b1ca38b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"67616111822a44f29038d4ec1e3da50707bfbd29","unresolved":false,"context_lines":[{"line_number":154,"context_line":"     string to dragonflow db."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    :param json_str: json string that describe the object to be added"},{"line_number":157,"context_line":"    :param table: table name"},{"line_number":158,"context_line":"    :return: None"},{"line_number":159,"context_line":"    \"\"\""},{"line_number":160,"context_line":"    nb_api \u003d api_nb.NbApi.get_instance(False)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f91af0f_48430a14","line":157,"range":{"start_line":157,"start_character":18,"end_line":157,"end_character":28},"updated":"2018-01-09 06:10:25.000000000","message":"table name where object should be added","commit_id":"3c1ea2c961c22151cd594dac453516a60b1ca38b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"67616111822a44f29038d4ec1e3da50707bfbd29","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    try:"},{"line_number":162,"context_line":"        model \u003d model_framework.get_model(table)"},{"line_number":163,"context_line":"    except KeyError:"},{"line_number":164,"context_line":"        print(\"Model {} not found in models list\".format(table))"},{"line_number":165,"context_line":"        return"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f91af0f_0849822f","line":164,"range":{"start_line":164,"start_character":23,"end_line":164,"end_character":27},"updated":"2018-01-09 06:10:25.000000000","message":"is not","commit_id":"3c1ea2c961c22151cd594dac453516a60b1ca38b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"67616111822a44f29038d4ec1e3da50707bfbd29","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    file to dragonflow db."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    :param file_path: path to the file"},{"line_number":187,"context_line":"    :param table: table name"},{"line_number":188,"context_line":"    :return:"},{"line_number":189,"context_line":"    \"\"\""},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f91af0f_c84e3a37","line":187,"range":{"start_line":187,"start_character":18,"end_line":187,"end_character":28},"updated":"2018-01-09 06:10:25.000000000","message":"same as in previous method","commit_id":"3c1ea2c961c22151cd594dac453516a60b1ca38b"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"b0230ecf710e9236c30ce524e081bfa1d18f5f3b","unresolved":false,"context_lines":[{"line_number":312,"context_line":"            json_str \u003d args.json"},{"line_number":313,"context_line":"            add_object_from_json(json_str, table)"},{"line_number":314,"context_line":"        else:"},{"line_number":315,"context_line":"            print(\"json or file argument must be supplied \""},{"line_number":316,"context_line":"                  \"(use \u0027-h\u0027 for details)\")"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    sub_parser \u003d subparsers.add_parser("}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_1a868414","line":315,"range":{"start_line":315,"start_character":19,"end_line":315,"end_character":23},"updated":"2018-01-10 09:45:14.000000000","message":"JSON","commit_id":"9ab942905c131e40d1b3c043eadf74fd8edc929e"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"841a231b133e70dfa7e44854fd45f9388803c89c","unresolved":false,"context_lines":[{"line_number":312,"context_line":"            json_str \u003d args.json"},{"line_number":313,"context_line":"            add_object_from_json(json_str, table)"},{"line_number":314,"context_line":"        else:"},{"line_number":315,"context_line":"            print(\"json or file argument must be supplied \""},{"line_number":316,"context_line":"                  \"(use \u0027-h\u0027 for details)\")"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    sub_parser \u003d subparsers.add_parser("}],"source_content_type":"text/x-python","patch_set":9,"id":"7f96bb07_fe79212f","line":315,"range":{"start_line":315,"start_character":19,"end_line":315,"end_character":23},"in_reply_to":"9f91af0f_1a868414","updated":"2018-01-11 15:44:37.000000000","message":"done","commit_id":"9ab942905c131e40d1b3c043eadf74fd8edc929e"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"b0230ecf710e9236c30ce524e081bfa1d18f5f3b","unresolved":false,"context_lines":[{"line_number":318,"context_line":"    sub_parser \u003d subparsers.add_parser("},{"line_number":319,"context_line":"        \u0027add\u0027, help\u003d\"Add new record to table\","},{"line_number":320,"context_line":"        description\u003d\"Adds a new record to a table in the db\""},{"line_number":321,"context_line":"                    \" (from JSON string or file). The record MUST \""},{"line_number":322,"context_line":"                    \"match the table data-model as defined by dragonflow\""},{"line_number":323,"context_line":"    )"},{"line_number":324,"context_line":"    sub_parser.add_argument(\u0027table\u0027, help\u003d\u0027The name of the table.\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_badf5867","line":321,"range":{"start_line":321,"start_character":61,"end_line":321,"end_character":65},"updated":"2018-01-10 09:45:14.000000000","message":"If you require users legal JSON file which match our DB models, you should add reference here and documentation to where they can learn what is a legal table, and what is not (e.g by adding this to our docs, by adding reference to our models, and by using df-model).","commit_id":"9ab942905c131e40d1b3c043eadf74fd8edc929e"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"841a231b133e70dfa7e44854fd45f9388803c89c","unresolved":false,"context_lines":[{"line_number":318,"context_line":"    sub_parser \u003d subparsers.add_parser("},{"line_number":319,"context_line":"        \u0027add\u0027, help\u003d\"Add new record to table\","},{"line_number":320,"context_line":"        description\u003d\"Adds a new record to a table in the db\""},{"line_number":321,"context_line":"                    \" (from JSON string or file). The record MUST \""},{"line_number":322,"context_line":"                    \"match the table data-model as defined by dragonflow\""},{"line_number":323,"context_line":"    )"},{"line_number":324,"context_line":"    sub_parser.add_argument(\u0027table\u0027, help\u003d\u0027The name of the table.\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f96bb07_be73994d","line":321,"range":{"start_line":321,"start_character":61,"end_line":321,"end_character":65},"in_reply_to":"9f91af0f_badf5867","updated":"2018-01-11 15:44:37.000000000","message":"done","commit_id":"9ab942905c131e40d1b3c043eadf74fd8edc929e"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"b0230ecf710e9236c30ce524e081bfa1d18f5f3b","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        \u0027add\u0027, help\u003d\"Add new record to table\","},{"line_number":320,"context_line":"        description\u003d\"Adds a new record to a table in the db\""},{"line_number":321,"context_line":"                    \" (from JSON string or file). The record MUST \""},{"line_number":322,"context_line":"                    \"match the table data-model as defined by dragonflow\""},{"line_number":323,"context_line":"    )"},{"line_number":324,"context_line":"    sub_parser.add_argument(\u0027table\u0027, help\u003d\u0027The name of the table.\u0027)"},{"line_number":325,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_9afcd4b5","line":322,"range":{"start_line":322,"start_character":62,"end_line":322,"end_character":72},"updated":"2018-01-10 09:45:14.000000000","message":"Dragonflow","commit_id":"9ab942905c131e40d1b3c043eadf74fd8edc929e"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"841a231b133e70dfa7e44854fd45f9388803c89c","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        \u0027add\u0027, help\u003d\"Add new record to table\","},{"line_number":320,"context_line":"        description\u003d\"Adds a new record to a table in the db\""},{"line_number":321,"context_line":"                    \" (from JSON string or file). The record MUST \""},{"line_number":322,"context_line":"                    \"match the table data-model as defined by dragonflow\""},{"line_number":323,"context_line":"    )"},{"line_number":324,"context_line":"    sub_parser.add_argument(\u0027table\u0027, help\u003d\u0027The name of the table.\u0027)"},{"line_number":325,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7f96bb07_5e8e1528","line":322,"range":{"start_line":322,"start_character":62,"end_line":322,"end_character":72},"in_reply_to":"9f91af0f_9afcd4b5","updated":"2018-01-11 15:44:37.000000000","message":"done","commit_id":"9ab942905c131e40d1b3c043eadf74fd8edc929e"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"b0230ecf710e9236c30ce524e081bfa1d18f5f3b","unresolved":false,"context_lines":[{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    group \u003d sub_parser.add_mutually_exclusive_group(required\u003dTrue)"},{"line_number":327,"context_line":"    group.add_argument("},{"line_number":328,"context_line":"        \u0027-j\u0027, \u0027--json\u0027, help\u003d\"object represented by json string\")"},{"line_number":329,"context_line":"    group.add_argument("},{"line_number":330,"context_line":"        \u0027-f\u0027, \u0027--file\u0027, help\u003d\"path to file with object json representation\")"},{"line_number":331,"context_line":"    sub_parser.set_defaults(handle\u003dhandle)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_1aad249a","line":328,"range":{"start_line":328,"start_character":52,"end_line":328,"end_character":56},"updated":"2018-01-10 09:45:14.000000000","message":"JSON","commit_id":"9ab942905c131e40d1b3c043eadf74fd8edc929e"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"b0230ecf710e9236c30ce524e081bfa1d18f5f3b","unresolved":false,"context_lines":[{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    group \u003d sub_parser.add_mutually_exclusive_group(required\u003dTrue)"},{"line_number":327,"context_line":"    group.add_argument("},{"line_number":328,"context_line":"        \u0027-j\u0027, \u0027--json\u0027, help\u003d\"object represented by json string\")"},{"line_number":329,"context_line":"    group.add_argument("},{"line_number":330,"context_line":"        \u0027-f\u0027, \u0027--file\u0027, help\u003d\"path to file with object json representation\")"},{"line_number":331,"context_line":"    sub_parser.set_defaults(handle\u003dhandle)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_9a15b4e7","line":328,"range":{"start_line":328,"start_character":30,"end_line":328,"end_character":36},"updated":"2018-01-10 09:45:14.000000000","message":"Object","commit_id":"9ab942905c131e40d1b3c043eadf74fd8edc929e"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"841a231b133e70dfa7e44854fd45f9388803c89c","unresolved":false,"context_lines":[{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    group \u003d sub_parser.add_mutually_exclusive_group(required\u003dTrue)"},{"line_number":327,"context_line":"    group.add_argument("},{"line_number":328,"context_line":"        \u0027-j\u0027, \u0027--json\u0027, help\u003d\"object represented by json string\")"},{"line_number":329,"context_line":"    group.add_argument("},{"line_number":330,"context_line":"        \u0027-f\u0027, \u0027--file\u0027, help\u003d\"path to file with object json representation\")"},{"line_number":331,"context_line":"    sub_parser.set_defaults(handle\u003dhandle)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f96bb07_7e93d150","line":328,"range":{"start_line":328,"start_character":52,"end_line":328,"end_character":56},"in_reply_to":"9f91af0f_1aad249a","updated":"2018-01-11 15:44:37.000000000","message":"done","commit_id":"9ab942905c131e40d1b3c043eadf74fd8edc929e"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"841a231b133e70dfa7e44854fd45f9388803c89c","unresolved":false,"context_lines":[{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    group \u003d sub_parser.add_mutually_exclusive_group(required\u003dTrue)"},{"line_number":327,"context_line":"    group.add_argument("},{"line_number":328,"context_line":"        \u0027-j\u0027, \u0027--json\u0027, help\u003d\"object represented by json string\")"},{"line_number":329,"context_line":"    group.add_argument("},{"line_number":330,"context_line":"        \u0027-f\u0027, \u0027--file\u0027, help\u003d\"path to file with object json representation\")"},{"line_number":331,"context_line":"    sub_parser.set_defaults(handle\u003dhandle)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f96bb07_1e988d68","line":328,"range":{"start_line":328,"start_character":30,"end_line":328,"end_character":36},"in_reply_to":"9f91af0f_9a15b4e7","updated":"2018-01-11 15:44:37.000000000","message":"done","commit_id":"9ab942905c131e40d1b3c043eadf74fd8edc929e"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"b0230ecf710e9236c30ce524e081bfa1d18f5f3b","unresolved":false,"context_lines":[{"line_number":327,"context_line":"    group.add_argument("},{"line_number":328,"context_line":"        \u0027-j\u0027, \u0027--json\u0027, help\u003d\"object represented by json string\")"},{"line_number":329,"context_line":"    group.add_argument("},{"line_number":330,"context_line":"        \u0027-f\u0027, \u0027--file\u0027, help\u003d\"path to file with object json representation\")"},{"line_number":331,"context_line":"    sub_parser.set_defaults(handle\u003dhandle)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_ba975848","line":330,"range":{"start_line":330,"start_character":55,"end_line":330,"end_character":59},"updated":"2018-01-10 09:45:14.000000000","message":"JSON","commit_id":"9ab942905c131e40d1b3c043eadf74fd8edc929e"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"b0230ecf710e9236c30ce524e081bfa1d18f5f3b","unresolved":false,"context_lines":[{"line_number":327,"context_line":"    group.add_argument("},{"line_number":328,"context_line":"        \u0027-j\u0027, \u0027--json\u0027, help\u003d\"object represented by json string\")"},{"line_number":329,"context_line":"    group.add_argument("},{"line_number":330,"context_line":"        \u0027-f\u0027, \u0027--file\u0027, help\u003d\"path to file with object json representation\")"},{"line_number":331,"context_line":"    sub_parser.set_defaults(handle\u003dhandle)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_7a1a3017","line":330,"range":{"start_line":330,"start_character":30,"end_line":330,"end_character":34},"updated":"2018-01-10 09:45:14.000000000","message":"Path","commit_id":"9ab942905c131e40d1b3c043eadf74fd8edc929e"}]}
