)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"96858c2d2a91df395ca8c21f88009e772aab2e70","unresolved":false,"context_lines":[{"line_number":9,"context_line":"dragonflow/cli/df_db.py uses db driver directly all over the file."},{"line_number":10,"context_line":"It should instead use NbApi: `NbApi.get_instance(False)` and convert"},{"line_number":11,"context_line":"all the direct calls to db driver (Where possible)."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Id2b04aec0bd325c411b16639dc5061e24e677351"},{"line_number":14,"context_line":"Closes-Bug: #1698653"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9f91af0f_28b3260c","line":12,"updated":"2018-01-09 06:16:34.000000000","message":"Please add also that the patch performs some refactoring on the existing code","commit_id":"e141bd362749a6e6e330392f3fa234d2087b1837"}],"dragonflow/cli/df_db.py":[{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"d08731599bb4c6fd1c195c911aeac62598964f9e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"nb_api \u003d None"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _x_get_model(table):"},{"line_number":31,"context_line":"    try:"},{"line_number":32,"context_line":"        return model_framework.get_model(table)"},{"line_number":33,"context_line":"    except KeyError:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_6496604f","line":30,"updated":"2018-01-07 10:10:09.000000000","message":"_get_table_model???","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"c8bf9090097ecee96b87ce9dad1e5ba1d490ce41","unresolved":false,"context_lines":[{"line_number":27,"context_line":"nb_api \u003d None"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _x_get_model(table):"},{"line_number":31,"context_line":"    try:"},{"line_number":32,"context_line":"        return model_framework.get_model(table)"},{"line_number":33,"context_line":"    except KeyError:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_a4e788ac","line":30,"in_reply_to":"9f91af0f_6496604f","updated":"2018-01-07 11:49:43.000000000","message":"+1","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"164b0281c42865a188062d0f3b31487442e8856a","unresolved":false,"context_lines":[{"line_number":27,"context_line":"nb_api \u003d None"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _x_get_model(table):"},{"line_number":31,"context_line":"    try:"},{"line_number":32,"context_line":"        return model_framework.get_model(table)"},{"line_number":33,"context_line":"    except KeyError:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_f82c5003","line":30,"in_reply_to":"9f91af0f_9868a4b9","updated":"2018-01-07 14:08:05.000000000","message":"Is that python convention ? didn\u0027t find that by google ..","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"22e38b0370020ec975f7771fda9438b2ce37cf16","unresolved":false,"context_lines":[{"line_number":27,"context_line":"nb_api \u003d None"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _x_get_model(table):"},{"line_number":31,"context_line":"    try:"},{"line_number":32,"context_line":"        return model_framework.get_model(table)"},{"line_number":33,"context_line":"    except KeyError:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_9868a4b9","line":30,"in_reply_to":"9f91af0f_a4e788ac","updated":"2018-01-07 13:58:30.000000000","message":"The _x_ signifies that the function exits on failure.","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ec5d116b91a8e50269d7292508a291b3da27cdae","unresolved":false,"context_lines":[{"line_number":27,"context_line":"nb_api \u003d None"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _x_get_model(table):"},{"line_number":31,"context_line":"    try:"},{"line_number":32,"context_line":"        return model_framework.get_model(table)"},{"line_number":33,"context_line":"    except KeyError:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_983d042d","line":30,"in_reply_to":"9f91af0f_f82c5003","updated":"2018-01-07 14:20:36.000000000","message":"I took it from something similar in (I think) inetutils.","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"c8bf9090097ecee96b87ce9dad1e5ba1d490ce41","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def print_table(table):"},{"line_number":49,"context_line":"    model \u003d _x_get_model(table)"},{"line_number":50,"context_line":"    values \u003d nb_api.get_all(model)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    if not values:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_24fb7847","line":49,"updated":"2018-01-07 11:49:43.000000000","message":"Is unique key isn\u0027t supported here?","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"22e38b0370020ec975f7771fda9438b2ce37cf16","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def print_table(table):"},{"line_number":49,"context_line":"    model \u003d _x_get_model(table)"},{"line_number":50,"context_line":"    values \u003d nb_api.get_all(model)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    if not values:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_18a254fe","line":49,"in_reply_to":"9f91af0f_24fb7847","updated":"2018-01-07 13:58:30.000000000","message":"Done","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"d08731599bb4c6fd1c195c911aeac62598964f9e","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def print_table(table):"},{"line_number":49,"context_line":"    model \u003d _x_get_model(table)"},{"line_number":50,"context_line":"    values \u003d nb_api.get_all(model)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    if not values:"},{"line_number":53,"context_line":"        print(\u0027Table is empty: \u0027 + table)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_4499dc76","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":10},"updated":"2018-01-07 10:10:09.000000000","message":"entries?","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"22e38b0370020ec975f7771fda9438b2ce37cf16","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def print_table(table):"},{"line_number":49,"context_line":"    model \u003d _x_get_model(table)"},{"line_number":50,"context_line":"    values \u003d nb_api.get_all(model)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    if not values:"},{"line_number":53,"context_line":"        print(\u0027Table is empty: \u0027 + table)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_787fe014","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":10},"in_reply_to":"9f91af0f_4499dc76","updated":"2018-01-07 13:58:30.000000000","message":"Done","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"d08731599bb4c6fd1c195c911aeac62598964f9e","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        return"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    model \u003d _x_get_model(table)"},{"line_number":78,"context_line":"    value_models \u003d nb_api.get_all(model)"},{"line_number":79,"context_line":"    values \u003d [value.to_struct() for value in value_models]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    if not values:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_2475b832","line":78,"range":{"start_line":78,"start_character":4,"end_line":78,"end_character":16},"updated":"2018-01-07 10:10:09.000000000","message":"entries? or at least use the same notation as above...","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"22e38b0370020ec975f7771fda9438b2ce37cf16","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        return"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    model \u003d _x_get_model(table)"},{"line_number":78,"context_line":"    value_models \u003d nb_api.get_all(model)"},{"line_number":79,"context_line":"    values \u003d [value.to_struct() for value in value_models]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    if not values:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_987c2420","line":78,"range":{"start_line":78,"start_character":4,"end_line":78,"end_character":16},"in_reply_to":"9f91af0f_2475b832","updated":"2018-01-07 13:58:30.000000000","message":"Done","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"d08731599bb4c6fd1c195c911aeac62598964f9e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    value_models \u003d nb_api.get_all(model)"},{"line_number":79,"context_line":"    values \u003d [value.to_struct() for value in value_models]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    if not values:"},{"line_number":82,"context_line":"        print(\u0027Table is empty: \u0027 + table)"},{"line_number":83,"context_line":"        return"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_44723c4b","line":81,"updated":"2018-01-07 10:10:09.000000000","message":"can this move up to be the same as in print_table ?","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"22e38b0370020ec975f7771fda9438b2ce37cf16","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    value_models \u003d nb_api.get_all(model)"},{"line_number":79,"context_line":"    values \u003d [value.to_struct() for value in value_models]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    if not values:"},{"line_number":82,"context_line":"        print(\u0027Table is empty: \u0027 + table)"},{"line_number":83,"context_line":"        return"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_d8f5ccee","line":81,"in_reply_to":"9f91af0f_44723c4b","updated":"2018-01-07 13:58:30.000000000","message":"No. I need the variable \u0027values\u0027. I can use \u0027value_models\u0027, but that would only move one line down, and I think it breaks the flow of the code. Additioanly, since this case only exists if values is empty, the performance impact is negligible.","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"9d23ebbec8dda6dac910cda85fefe840484d19d9","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    value_models \u003d nb_api.get_all(model)"},{"line_number":79,"context_line":"    values \u003d [value.to_struct() for value in value_models]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    if not values:"},{"line_number":82,"context_line":"        print(\u0027Table is empty: \u0027 + table)"},{"line_number":83,"context_line":"        return"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_2386fbdc","line":81,"in_reply_to":"9f91af0f_d8f5ccee","updated":"2018-01-08 16:11:26.000000000","message":"can\u0027t this become:\nif not value_models:\n   ....\n   return\nAnyway, this is just a nit and pickyness on my side","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"d08731599bb4c6fd1c195c911aeac62598964f9e","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                         field_labels\u003dlabels)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"def print_key(table, key):"},{"line_number":93,"context_line":"    model \u003d _x_get_model(table)"},{"line_number":94,"context_line":"    try:"},{"line_number":95,"context_line":"        value \u003d nb_api.get(model(id\u003dkey))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_04967440","line":92,"range":{"start_line":92,"start_character":4,"end_line":92,"end_character":13},"updated":"2018-01-07 10:10:09.000000000","message":"_print_key ?","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"c8bf9090097ecee96b87ce9dad1e5ba1d490ce41","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                         field_labels\u003dlabels)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"def print_key(table, key):"},{"line_number":93,"context_line":"    model \u003d _x_get_model(table)"},{"line_number":94,"context_line":"    try:"},{"line_number":95,"context_line":"        value \u003d nb_api.get(model(id\u003dkey))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_a49c680e","line":92,"range":{"start_line":92,"start_character":4,"end_line":92,"end_character":13},"in_reply_to":"9f91af0f_04967440","updated":"2018-01-07 11:49:43.000000000","message":"It\u0027s the same convention for all handler. \nIf changed here all need to be changed ..","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"c8bf9090097ecee96b87ce9dad1e5ba1d490ce41","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"def bind_port_to_localhost(port_id):"},{"line_number":110,"context_line":"    lport \u003d nb_api.get(models.LogicalPort(id\u003dport_id))"},{"line_number":111,"context_line":"    chassis_name \u003d socket.gethostname()"},{"line_number":112,"context_line":"    lport.chassis \u003d chassis_name"},{"line_number":113,"context_line":"    nb_api.update(lport)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_6478a0c3","line":110,"updated":"2018-01-07 11:49:43.000000000","message":"need to handle lport not found","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"22e38b0370020ec975f7771fda9438b2ce37cf16","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"def bind_port_to_localhost(port_id):"},{"line_number":110,"context_line":"    lport \u003d nb_api.get(models.LogicalPort(id\u003dport_id))"},{"line_number":111,"context_line":"    chassis_name \u003d socket.gethostname()"},{"line_number":112,"context_line":"    lport.chassis \u003d chassis_name"},{"line_number":113,"context_line":"    nb_api.update(lport)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_b8a248fb","line":110,"in_reply_to":"9f91af0f_6478a0c3","updated":"2018-01-07 13:58:30.000000000","message":"Original code doesn\u0027t","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"c8bf9090097ecee96b87ce9dad1e5ba1d490ce41","unresolved":false,"context_lines":[{"line_number":109,"context_line":"def bind_port_to_localhost(port_id):"},{"line_number":110,"context_line":"    lport \u003d nb_api.get(models.LogicalPort(id\u003dport_id))"},{"line_number":111,"context_line":"    chassis_name \u003d socket.gethostname()"},{"line_number":112,"context_line":"    lport.chassis \u003d chassis_name"},{"line_number":113,"context_line":"    nb_api.update(lport)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_a46a28ea","line":112,"updated":"2018-01-07 11:49:43.000000000","message":"I think that should be the correct way :\n lport.binding \u003d l2.PortBinding(type\u003dl2.BINDING_CHASSIS, chassis\u003dchassis)","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"22e38b0370020ec975f7771fda9438b2ce37cf16","unresolved":false,"context_lines":[{"line_number":109,"context_line":"def bind_port_to_localhost(port_id):"},{"line_number":110,"context_line":"    lport \u003d nb_api.get(models.LogicalPort(id\u003dport_id))"},{"line_number":111,"context_line":"    chassis_name \u003d socket.gethostname()"},{"line_number":112,"context_line":"    lport.chassis \u003d chassis_name"},{"line_number":113,"context_line":"    nb_api.update(lport)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_78b04044","line":112,"in_reply_to":"9f91af0f_a46a28ea","updated":"2018-01-07 13:58:30.000000000","message":"This entire code is out-of-date!\n\nI\u0027ll fix it here, but I\u0027m removing this function in a followup!","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"c8bf9090097ecee96b87ce9dad1e5ba1d490ce41","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def clean_whole_table(table):"},{"line_number":117,"context_line":"    model \u003d _x_get_model(table)"},{"line_number":118,"context_line":"    values \u003d nb_api.get_all(model)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    for value in values:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_8475a4cd","line":117,"updated":"2018-01-07 11:49:43.000000000","message":"unique key support here needed ?","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"22e38b0370020ec975f7771fda9438b2ce37cf16","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def clean_whole_table(table):"},{"line_number":117,"context_line":"    model \u003d _x_get_model(table)"},{"line_number":118,"context_line":"    values \u003d nb_api.get_all(model)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    for value in values:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_f838d0a0","line":117,"in_reply_to":"9f91af0f_8475a4cd","updated":"2018-01-07 13:58:30.000000000","message":"Done","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"d08731599bb4c6fd1c195c911aeac62598964f9e","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def clean_whole_table(table):"},{"line_number":117,"context_line":"    model \u003d _x_get_model(table)"},{"line_number":118,"context_line":"    values \u003d nb_api.get_all(model)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    for value in values:"},{"line_number":121,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_c49bac63","line":118,"updated":"2018-01-07 10:10:09.000000000","message":"entries?","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"22e38b0370020ec975f7771fda9438b2ce37cf16","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def clean_whole_table(table):"},{"line_number":117,"context_line":"    model \u003d _x_get_model(table)"},{"line_number":118,"context_line":"    values \u003d nb_api.get_all(model)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    for value in values:"},{"line_number":121,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_3875d832","line":118,"in_reply_to":"9f91af0f_c49bac63","updated":"2018-01-07 13:58:30.000000000","message":"Done","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"d08731599bb4c6fd1c195c911aeac62598964f9e","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    for value in values:"},{"line_number":121,"context_line":"        try:"},{"line_number":122,"context_line":"            nb_api.delete(value)"},{"line_number":123,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":124,"context_line":"            print(\u0027Instance not found: \u0027 + value)"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_84a12497","line":122,"updated":"2018-01-07 10:10:09.000000000","message":"Why not reuse remove_record ?","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"22e38b0370020ec975f7771fda9438b2ce37cf16","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    for value in values:"},{"line_number":121,"context_line":"        try:"},{"line_number":122,"context_line":"            nb_api.delete(value)"},{"line_number":123,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":124,"context_line":"            print(\u0027Instance not found: \u0027 + value)"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_98ad04eb","line":122,"in_reply_to":"9f91af0f_84a12497","updated":"2018-01-07 13:58:30.000000000","message":"I don\u0027t need to recreate the model instance (already in value).","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"c8bf9090097ecee96b87ce9dad1e5ba1d490ce41","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    df_utils.config_parse()"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    global nb_api"},{"line_number":270,"context_line":"    nb_api \u003d api_nb.NbApi.get_instance(False)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    args.handle(args)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_e44d909a","line":269,"updated":"2018-01-07 11:49:43.000000000","message":"I prefer the previous way (passing as argument to the handler ).","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ec5d116b91a8e50269d7292508a291b3da27cdae","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    df_utils.config_parse()"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    global nb_api"},{"line_number":270,"context_line":"    nb_api \u003d api_nb.NbApi.get_instance(False)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    args.handle(args)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_5843fcaf","line":269,"in_reply_to":"9f91af0f_18325460","updated":"2018-01-07 14:20:36.000000000","message":"That\u0027s a lot of unnecessary code repetition.\n\nI agree that in general globals are a necessary evil, but in this case I think it makes sense.","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"164b0281c42865a188062d0f3b31487442e8856a","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    df_utils.config_parse()"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    global nb_api"},{"line_number":270,"context_line":"    nb_api \u003d api_nb.NbApi.get_instance(False)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    args.handle(args)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_18325460","line":269,"in_reply_to":"9f91af0f_58b3fc4d","updated":"2018-01-07 14:08:05.000000000","message":"So maybe it\u0027s the get_instance in every handler ?","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"22e38b0370020ec975f7771fda9438b2ce37cf16","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    df_utils.config_parse()"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    global nb_api"},{"line_number":270,"context_line":"    nb_api \u003d api_nb.NbApi.get_instance(False)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    args.handle(args)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_58b3fc4d","line":269,"in_reply_to":"9f91af0f_e44d909a","updated":"2018-01-07 13:58:30.000000000","message":"This makes less sense now since nb_api is a singleton.","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"d08731599bb4c6fd1c195c911aeac62598964f9e","unresolved":false,"context_lines":[{"line_number":267,"context_line":"    df_utils.config_parse()"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    global nb_api"},{"line_number":270,"context_line":"    nb_api \u003d api_nb.NbApi.get_instance(False)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    args.handle(args)"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_04bf54b0","line":270,"range":{"start_line":270,"start_character":4,"end_line":270,"end_character":38},"updated":"2018-01-07 10:10:09.000000000","message":"Any chance this may fail?\nAny validation it is not none or something?","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"22e38b0370020ec975f7771fda9438b2ce37cf16","unresolved":false,"context_lines":[{"line_number":267,"context_line":"    df_utils.config_parse()"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    global nb_api"},{"line_number":270,"context_line":"    nb_api \u003d api_nb.NbApi.get_instance(False)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    args.handle(args)"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_38b63840","line":270,"range":{"start_line":270,"start_character":4,"end_line":270,"end_character":38},"in_reply_to":"9f91af0f_04bf54b0","updated":"2018-01-07 13:58:30.000000000","message":"Should never fail. Otherwise we have Bigger Problems.","commit_id":"f2d83c052594687585e6c0219a4feec81d847073"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"3ce775cab659a707e27da416467c334e9ebe13cd","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        return model_framework.get_model(table)"},{"line_number":37,"context_line":"    except KeyError:"},{"line_number":38,"context_line":"        print(\u0027Table not found: \u0027 + table)"},{"line_number":39,"context_line":"        sys.exit(1)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def _print_list(columns, values, label0\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_38d8781c","line":39,"range":{"start_line":39,"start_character":19,"end_line":39,"end_character":19},"updated":"2018-01-07 14:03:18.000000000","message":"Somehow it seems wrong to me that method supposedly the getter, exits the process","commit_id":"c3bf881b8b8de9f4839623213310c4a5e5010b4c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ec5d116b91a8e50269d7292508a291b3da27cdae","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        return model_framework.get_model(table)"},{"line_number":37,"context_line":"    except KeyError:"},{"line_number":38,"context_line":"        print(\u0027Table not found: \u0027 + table)"},{"line_number":39,"context_line":"        sys.exit(1)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def _print_list(columns, values, label0\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_d8106cab","line":39,"range":{"start_line":39,"start_character":19,"end_line":39,"end_character":19},"in_reply_to":"9f91af0f_38d8781c","updated":"2018-01-07 14:20:36.000000000","message":"Will rename","commit_id":"c3bf881b8b8de9f4839623213310c4a5e5010b4c"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"3ce775cab659a707e27da416467c334e9ebe13cd","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        sys.exit(1)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def _print_list(columns, values, label0\u003dNone):"},{"line_number":43,"context_line":"    labels, formatters \u003d \\"},{"line_number":44,"context_line":"        cli_utils.get_list_table_columns_and_formatters(columns, values)"},{"line_number":45,"context_line":"    if label0:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_f8077081","line":42,"range":{"start_line":42,"start_character":32,"end_line":42,"end_character":39},"updated":"2018-01-07 14:03:18.000000000","message":"what is label0? Docstring can be useful","commit_id":"c3bf881b8b8de9f4839623213310c4a5e5010b4c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ec5d116b91a8e50269d7292508a291b3da27cdae","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        sys.exit(1)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def _print_list(columns, values, label0\u003dNone):"},{"line_number":43,"context_line":"    labels, formatters \u003d \\"},{"line_number":44,"context_line":"        cli_utils.get_list_table_columns_and_formatters(columns, values)"},{"line_number":45,"context_line":"    if label0:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f91af0f_782920e4","line":42,"range":{"start_line":42,"start_character":32,"end_line":42,"end_character":39},"in_reply_to":"9f91af0f_f8077081","updated":"2018-01-07 14:20:36.000000000","message":"Will rename","commit_id":"c3bf881b8b8de9f4839623213310c4a5e5010b4c"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"96858c2d2a91df395ca8c21f88009e772aab2e70","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def _get_model_or_exit(table):"},{"line_number":30,"context_line":"    \"\"\""},{"line_number":31,"context_line":"    Return the model by table name. If no such model is found, exit the"},{"line_number":32,"context_line":"    process."},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f91af0f_a8ff36a9","line":31,"range":{"start_line":31,"start_character":63,"end_line":31,"end_character":67},"updated":"2018-01-09 06:16:34.000000000","message":"raise","commit_id":"e141bd362749a6e6e330392f3fa234d2087b1837"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"96858c2d2a91df395ca8c21f88009e772aab2e70","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        raise SystemExit(1)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def _print_list(columns, values, first_label\u003dNone):"},{"line_number":42,"context_line":"    \"\"\""},{"line_number":43,"context_line":"    Print the given columns from the given values. You can override the label"},{"line_number":44,"context_line":"    of the first column with \u0027first_label\u0027."}],"source_content_type":"text/x-python","patch_set":5,"id":"9f91af0f_68d4ce20","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":14},"updated":"2018-01-09 06:16:34.000000000","message":"The name is a bit unclear, does not explain well the intention of the method.","commit_id":"e141bd362749a6e6e330392f3fa234d2087b1837"}]}
