)]}'
{"nailgun/nailgun/api/v1/validators/network.py":[{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"46d1f4b69622c93c18616b5da2260dc47883cd62","unresolved":false,"context_lines":[{"line_number":463,"context_line":"            )"},{"line_number":464,"context_line":"        if sriov_db[\u0027sriov_totalvfs\u0027] \u003c sriov_new[\u0027sriov_numvfs\u0027]:"},{"line_number":465,"context_line":"            raise errors.InvalidData("},{"line_number":466,"context_line":"                \"Node \u0027{0}\u0027 interface \u0027{1}\u0027: \u0027{2}\u0027 virtual functions was\""},{"line_number":467,"context_line":"                \"requested but just \u0027{3}\u0027 are available\".format("},{"line_number":468,"context_line":"                    node_id, iface.name, sriov_new[\u0027sriov_numvfs\u0027],"},{"line_number":469,"context_line":"                    sriov_db[\u0027sriov_totalvfs\u0027]),"},{"line_number":470,"context_line":"                log_message\u003dTrue"}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_062005f6","line":467,"range":{"start_line":466,"start_character":72,"end_line":467,"end_character":17},"updated":"2016-03-10 15:08:11.000000000","message":"space is missing","commit_id":"a8496a0bf63646ba53e193dc339ba0d302afd587"}],"nailgun/nailgun/network/manager.py":[{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"d32ca9d68244122b6ceecb43cd207eff5fa8f635","unresolved":false,"context_lines":[{"line_number":523,"context_line":"                \u0027sriov_totalvfs\u0027: 0,"},{"line_number":524,"context_line":"                \u0027available\u0027: False,"},{"line_number":525,"context_line":"                \u0027pci_id\u0027: \u0027\u0027,"},{"line_number":526,"context_line":"                \u0027physnet\u0027: \u0027physnet2\u0027"},{"line_number":527,"context_line":"            }"},{"line_number":528,"context_line":"        }"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5aef4532_3edab717","line":526,"updated":"2016-03-09 13:56:58.000000000","message":"Better move \"physnet2\" to some consts.py and use it everywhere in the code (and we use that name). Obviously, could be done in separate patch.","commit_id":"6baa059b0e3d6aba2c75c39351b06eaca4b2c331"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"da3d072393a978580ef565d1eacf2094f653c469","unresolved":false,"context_lines":[{"line_number":523,"context_line":"                \u0027sriov_totalvfs\u0027: 0,"},{"line_number":524,"context_line":"                \u0027available\u0027: False,"},{"line_number":525,"context_line":"                \u0027pci_id\u0027: \u0027\u0027,"},{"line_number":526,"context_line":"                \u0027physnet\u0027: \u0027physnet2\u0027"},{"line_number":527,"context_line":"            }"},{"line_number":528,"context_line":"        }"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5aef4532_50c32ced","line":526,"in_reply_to":"5aef4532_3edab717","updated":"2016-03-09 14:59:59.000000000","message":"Will do in separate patch.","commit_id":"6baa059b0e3d6aba2c75c39351b06eaca4b2c331"}],"nailgun/nailgun/objects/interface.py":[{"author":{"_account_id":10959,"name":"Alexander Kislitsky","email":"akislitsky@mirantis.com","username":"akislitsky"},"change_message_id":"c083f9ceaa7bad1928df0c2e98665aed2b5560f1","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        db().flush()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @classmethod"},{"line_number":46,"context_line":"    def get_sriov_enabled(cls, instance):"},{"line_number":47,"context_line":"        sriov \u003d instance.interface_properties.get(\u0027sriov\u0027, {})"},{"line_number":48,"context_line":"        return sriov and sriov[\u0027available\u0027] and sriov[\u0027enabled\u0027]"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7af24918_5c721612","line":46,"updated":"2016-03-03 12:34:39.000000000","message":"IMO is_sriov_active is more appropriate name because\nSRIOV should be not only enabled but also available for True result.","commit_id":"5b04cb2ea7f70e9b6e4cc6e8f90d204138fc7810"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"9f937f9436ea7e500b15a39ceb57c230cb63cce7","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        db().flush()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @classmethod"},{"line_number":46,"context_line":"    def get_sriov_enabled(cls, instance):"},{"line_number":47,"context_line":"        sriov \u003d instance.interface_properties.get(\u0027sriov\u0027, {})"},{"line_number":48,"context_line":"        return sriov and sriov[\u0027available\u0027] and sriov[\u0027enabled\u0027]"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7af24918_470afd26","line":46,"in_reply_to":"7af24918_5c721612","updated":"2016-03-04 11:28:44.000000000","message":"Done","commit_id":"5b04cb2ea7f70e9b6e4cc6e8f90d204138fc7810"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"e6034e83536a362cb782d655ca2972fc6682d86a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    @classmethod"},{"line_number":46,"context_line":"    def is_sriov_active(cls, instance):"},{"line_number":47,"context_line":"        sriov \u003d instance.interface_properties.get(\u0027sriov\u0027, {})"},{"line_number":48,"context_line":"        return sriov and sriov[\u0027available\u0027] and sriov[\u0027enabled\u0027]"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class NICCollection(NailgunCollection):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_fa9460e9","line":48,"updated":"2016-03-07 11:28:23.000000000","message":"I\u0027ll check \u0027enabled\u0027 only as consistency is checked in API already.","commit_id":"89f8714b0a50e6061f6fbbf978f097d903240ba8"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"d32ca9d68244122b6ceecb43cd207eff5fa8f635","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        db().flush()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @classmethod"},{"line_number":46,"context_line":"    def is_sriov_enabled(cls, instance):"},{"line_number":47,"context_line":"        sriov \u003d instance.interface_properties.get(\u0027sriov\u0027)"},{"line_number":48,"context_line":"        return sriov and sriov[\u0027enabled\u0027]"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5aef4532_1eeedbb3","line":46,"updated":"2016-03-09 13:56:58.000000000","message":"Em.. Could be just one line:\n\n  return instance.interface_properties.get(\u0027sriov\u0027, False)","commit_id":"6baa059b0e3d6aba2c75c39351b06eaca4b2c331"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"b1483b8bbff51fe2a1576feb1a619020386c857d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        db().flush()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @classmethod"},{"line_number":46,"context_line":"    def is_sriov_enabled(cls, instance):"},{"line_number":47,"context_line":"        sriov \u003d instance.interface_properties.get(\u0027sriov\u0027)"},{"line_number":48,"context_line":"        return sriov and sriov[\u0027enabled\u0027]"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5aef4532_50ce8c2e","line":46,"in_reply_to":"5aef4532_1eeedbb3","updated":"2016-03-09 14:59:15.000000000","message":"Yes, it\u0027s more like\n\nreturn instance.interface_properties.get(\u0027sriov\u0027, {}).get(\u0027enabled\u0027, False))","commit_id":"6baa059b0e3d6aba2c75c39351b06eaca4b2c331"}],"nailgun/nailgun/orchestrator/base_serializers.py":[{"author":{"_account_id":10959,"name":"Alexander Kislitsky","email":"akislitsky@mirantis.com","username":"akislitsky"},"change_message_id":"c083f9ceaa7bad1928df0c2e98665aed2b5560f1","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        It will take global provider if it is omitted here"},{"line_number":381,"context_line":"        Port name can be in form \"XX\" or \"XX.YY\", where XX - NIC name,"},{"line_number":382,"context_line":"        YY - vlan id. E.g. \"eth0\", \"eth0.1021\". This will create corresponding"},{"line_number":383,"context_line":"        interface if name includes vlan id."},{"line_number":384,"context_line":"        \"\"\""},{"line_number":385,"context_line":"        port \u003d {"},{"line_number":386,"context_line":"            \u0027action\u0027: \u0027add-port\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7af24918_5cfe96ae","line":383,"updated":"2016-03-03 12:34:39.000000000","message":"Minor: Please add parameters description to the function docstring.","commit_id":"5b04cb2ea7f70e9b6e4cc6e8f90d204138fc7810"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"9f937f9436ea7e500b15a39ceb57c230cb63cce7","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        It will take global provider if it is omitted here"},{"line_number":381,"context_line":"        Port name can be in form \"XX\" or \"XX.YY\", where XX - NIC name,"},{"line_number":382,"context_line":"        YY - vlan id. E.g. \"eth0\", \"eth0.1021\". This will create corresponding"},{"line_number":383,"context_line":"        interface if name includes vlan id."},{"line_number":384,"context_line":"        \"\"\""},{"line_number":385,"context_line":"        port \u003d {"},{"line_number":386,"context_line":"            \u0027action\u0027: \u0027add-port\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7af24918_670f3937","line":383,"in_reply_to":"7af24918_5cfe96ae","updated":"2016-03-04 11:28:44.000000000","message":"Okay. It is very formal as parameters just form the dict w/o any specific logic.","commit_id":"5b04cb2ea7f70e9b6e4cc6e8f90d204138fc7810"}],"nailgun/nailgun/orchestrator/neutron_serializers.py":[{"author":{"_account_id":10443,"name":"Fedor Zhadaev","email":"fzhadaev@mirantis.com","username":"fzhadaev"},"change_message_id":"56d1779c7e1dfb47e89dc1396915c8f7f7fa05e8","unresolved":false,"context_lines":[{"line_number":1421,"context_line":"                node, nm, nets_by_ifaces, is_public, prv_base_ep))"},{"line_number":1422,"context_line":""},{"line_number":1423,"context_line":"        # serialize SR-IOV enabled interfaces"},{"line_number":1424,"context_line":"        for iface in node.interfaces:"},{"line_number":1425,"context_line":"            if iface.type \u003d\u003d consts.NETWORK_INTERFACE_TYPES.ether:"},{"line_number":1426,"context_line":"                # add ports with SR-IOV settings for SR-IOV enabled NICs"},{"line_number":1427,"context_line":"                if (not iface.bond and iface.name not in nets_by_ifaces and"},{"line_number":1428,"context_line":"                        objects.NIC.get_sriov_enabled(iface)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_75fe0eaf","line":1425,"range":{"start_line":1424,"start_character":8,"end_line":1425,"end_character":66},"updated":"2016-03-03 10:24:44.000000000","message":"since you do nothing with bond interfaces, you can just iterate over node.nic_interfaces","commit_id":"672b9771838e0295720a5e32950e9b3178c58479"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"5bc97452882b6ccdb9727221213a7bb08bdd54cf","unresolved":false,"context_lines":[{"line_number":1421,"context_line":"                node, nm, nets_by_ifaces, is_public, prv_base_ep))"},{"line_number":1422,"context_line":""},{"line_number":1423,"context_line":"        # serialize SR-IOV enabled interfaces"},{"line_number":1424,"context_line":"        for iface in node.interfaces:"},{"line_number":1425,"context_line":"            if iface.type \u003d\u003d consts.NETWORK_INTERFACE_TYPES.ether:"},{"line_number":1426,"context_line":"                # add ports with SR-IOV settings for SR-IOV enabled NICs"},{"line_number":1427,"context_line":"                if (not iface.bond and iface.name not in nets_by_ifaces and"},{"line_number":1428,"context_line":"                        objects.NIC.get_sriov_enabled(iface)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_15e6aaaf","line":1425,"range":{"start_line":1424,"start_character":8,"end_line":1425,"end_character":66},"in_reply_to":"7af24918_75fe0eaf","updated":"2016-03-03 10:28:31.000000000","message":"Done","commit_id":"672b9771838e0295720a5e32950e9b3178c58479"}]}
