)]}'
{"neutron/plugins/ml2/drivers/mech_sriov/mech_driver/mech_driver.py":[{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"63b9b33a6379b419e03ed7ba9a9c6305ced99cb2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    resource_provider_uuid5_namespace \u003d uuid.UUID("},{"line_number":47,"context_line":"        \u002787f1895c-73bb-11e8-9008-c4d987b2a692\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def __init__(self,"},{"line_number":50,"context_line":"                 agent_type\u003dconstants.AGENT_TYPE_NIC_SWITCH,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_ef13ef00","line":47,"updated":"2018-10-12 21:38:07.000000000","message":"Is this UUID special in some way?  If so, how?\n\nIf it is special, then there should be a constant whose naming hints for us why that UUID is special.  If not, would a random UUID work?","commit_id":"c3a47d8cd48c308723e45fc0e61a5494ed027802"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"1d7036367f8433aa8957a284809af3ce58bc6c7e","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    resource_provider_uuid5_namespace \u003d uuid.UUID("},{"line_number":47,"context_line":"        \u002787f1895c-73bb-11e8-9008-c4d987b2a692\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def __init__(self,"},{"line_number":50,"context_line":"                 agent_type\u003dconstants.AGENT_TYPE_NIC_SWITCH,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_859a0573","line":47,"in_reply_to":"3f79a3b5_7511e95b","updated":"2018-10-17 15:31:36.000000000","message":"Thanks for the explanation.  So it isn\u0027t a special value in the sense that 127.0.0.1 is a \u0027special\u0027 IP address.  It\u0027s arbitrary but must remain fixed.\n\nWhen we have constant values that are unique, the same, and are defined identically in different files then I prefer to have those in something like neutron/common/constants.py.  In this particular case it helps any hypothetical future developer who might implement this logic in another mech driver or ML2 plugin.\n\nThat being said, I am fine with handling it in a follow-on change.","commit_id":"c3a47d8cd48c308723e45fc0e61a5494ed027802"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"fe6266a607b36b12f9dc479afb3ec66fcc9830f3","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    resource_provider_uuid5_namespace \u003d uuid.UUID("},{"line_number":47,"context_line":"        \u002787f1895c-73bb-11e8-9008-c4d987b2a692\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def __init__(self,"},{"line_number":50,"context_line":"                 agent_type\u003dconstants.AGENT_TYPE_NIC_SWITCH,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_7511e95b","line":47,"in_reply_to":"3f79a3b5_ef13ef00","updated":"2018-10-13 12:46:58.000000000","message":"\u003e Is this UUID special in some way?  If so, how?\n\nI believe this is explained in the mechanism driver API. Please see here: https://review.openstack.org/#/c/586567/11/neutron_lib/plugins/ml2/api.py@58. I did not want to repeat the explanation at multiple places.\n\n \u003e If it is special, then there should be a constant whose naming\n \u003e hints for us why that UUID is special.\n\nI can put this into a constants file, but since everybody should access this value through the mechanism driver API, that constant would be used at this one place exactly. I don\u0027t see how that would improve the code. But please correct me if you see another reason for introducing that constant.\n\n \u003e If not, would a random UUID work?\n\nThis is a v1 UUID, not a v4 (that is, it\u0027s not a random uuid). I used v1 because in my understanding that has a lower chance of collision. But even a random one should have extremely low chances of collision, so it should work too.\n\nOn the other hand this is a \"random\" uuid in the sense that it has no meaning to it. We just have to choose a unique one and stick to it.","commit_id":"c3a47d8cd48c308723e45fc0e61a5494ed027802"}],"neutron/plugins/ml2/drivers/openvswitch/mech_driver/mech_openvswitch.py":[{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"dfdb822f2fd523c1209e1d3a86c4fa43c89155ed","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    network."},{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    resource_provider_uuid5_namespace \u003d uuid.UUID("},{"line_number":50,"context_line":"        \u002787ee7d5c-73bb-11e8-9008-c4d987b2a692\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self):"},{"line_number":53,"context_line":"        sg_enabled \u003d securitygroups_rpc.is_firewall_enabled()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_daa37afe","line":50,"range":{"start_line":49,"start_character":4,"end_line":50,"end_character":47},"updated":"2018-09-28 21:32:41.000000000","message":"since a static uuid is set for mechanism_driver instance\ncan a test be added to make sure it exists.\n\nhttps://github.com/openstack/neutron/blob/master/neutron/tests/unit/plugins/ml2/drivers/openvswitch/mech_driver/test_mech_openvswitch.py#L65 \n\nself.assertIsNotNone(self.resource_provider_uuid5_namespace) ?","commit_id":"918fd7d153e5a4b3f49d1f67e1a91e9ec15981af"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"4e72c3b3ce95ab4b07df7a85ab6aedbfac77b56f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    network."},{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    resource_provider_uuid5_namespace \u003d uuid.UUID("},{"line_number":50,"context_line":"        \u002787ee7d5c-73bb-11e8-9008-c4d987b2a692\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self):"},{"line_number":53,"context_line":"        sg_enabled \u003d securitygroups_rpc.is_firewall_enabled()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_f55c47f1","line":50,"range":{"start_line":49,"start_character":4,"end_line":50,"end_character":47},"in_reply_to":"3f79a3b5_daa37afe","updated":"2018-10-11 12:08:05.000000000","message":"Done","commit_id":"918fd7d153e5a4b3f49d1f67e1a91e9ec15981af"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"63b9b33a6379b419e03ed7ba9a9c6305ced99cb2","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    resource_provider_uuid5_namespace \u003d uuid.UUID("},{"line_number":50,"context_line":"        \u002787ee7d5c-73bb-11e8-9008-c4d987b2a692\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self):"},{"line_number":53,"context_line":"        sg_enabled \u003d securitygroups_rpc.is_firewall_enabled()"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_afcf3789","line":50,"updated":"2018-10-12 21:38:07.000000000","message":"If this constant is truly special in some way, then let\u0027s not repeat it, let\u0027s put it in one of the various constants files.","commit_id":"c3a47d8cd48c308723e45fc0e61a5494ed027802"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"fe6266a607b36b12f9dc479afb3ec66fcc9830f3","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    resource_provider_uuid5_namespace \u003d uuid.UUID("},{"line_number":50,"context_line":"        \u002787ee7d5c-73bb-11e8-9008-c4d987b2a692\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self):"},{"line_number":53,"context_line":"        sg_enabled \u003d securitygroups_rpc.is_firewall_enabled()"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_501abb6a","line":50,"in_reply_to":"3f79a3b5_afcf3789","updated":"2018-10-13 12:46:58.000000000","message":"Please see in the previous file, in the sr-iov mech driver.","commit_id":"c3a47d8cd48c308723e45fc0e61a5494ed027802"}],"neutron/tests/unit/plugins/ml2/drivers/mech_sriov/mech_driver/test_mech_sriov_nic_switch.py":[{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"63b9b33a6379b419e03ed7ba9a9c6305ced99cb2","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            self.assertTrue(self.driver.check_segment_for_agent(segment))"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_resource_provider_uuid5_namespace(self):"},{"line_number":89,"context_line":"        self.assertIsNotNone(self.driver.resource_provider_uuid5_namespace)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"class SriovMechVlanTestCase(SriovNicSwitchMechanismBaseTestCase,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_0f118bf8","line":89,"updated":"2018-10-12 21:38:07.000000000","message":"Under what circumstances would the test fail?  How would that would be instructive in helping us ensure that Neutron keeps it\u0027s interface contract or has bug-free code?  I am definitely willing to be educated on scenarios where despite full test isolation this constant that gets set in the class initialization could become unset.  \n\nJust because we have a line of code doesn\u0027t mean we need a test for it, if the test adds zero value whatsoever.  Please help me to see the practical value this test has.","commit_id":"c3a47d8cd48c308723e45fc0e61a5494ed027802"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"fe6266a607b36b12f9dc479afb3ec66fcc9830f3","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            self.assertTrue(self.driver.check_segment_for_agent(segment))"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_resource_provider_uuid5_namespace(self):"},{"line_number":89,"context_line":"        self.assertIsNotNone(self.driver.resource_provider_uuid5_namespace)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"class SriovMechVlanTestCase(SriovNicSwitchMechanismBaseTestCase,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_b04eaf6b","line":89,"in_reply_to":"3f79a3b5_0f118bf8","updated":"2018-10-13 12:46:58.000000000","message":"Under no circumstances. I was too lazy to start debating the need for it when being asked.","commit_id":"c3a47d8cd48c308723e45fc0e61a5494ed027802"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"95171549274ab9a8eb98bd1cb3fe554239c0be31","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            self.assertTrue(self.driver.check_segment_for_agent(segment))"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_resource_provider_uuid5_namespace(self):"},{"line_number":89,"context_line":"        self.assertIsNotNone(self.driver.resource_provider_uuid5_namespace)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"class SriovMechVlanTestCase(SriovNicSwitchMechanismBaseTestCase,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_0577d53e","line":89,"in_reply_to":"3f79a3b5_b04eaf6b","updated":"2018-10-17 15:32:49.000000000","message":"I understand.  We\u0027ve all been there.  :-)","commit_id":"c3a47d8cd48c308723e45fc0e61a5494ed027802"}],"neutron/tests/unit/plugins/ml2/drivers/openvswitch/mech_driver/test_mech_openvswitch.py":[{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"63b9b33a6379b419e03ed7ba9a9c6305ced99cb2","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        OpenvswitchMechanismBaseTestCase):"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_resource_provider_uuid5_namespace(self):"},{"line_number":113,"context_line":"        self.assertIsNotNone(self.driver.resource_provider_uuid5_namespace)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class OpenvswitchMechanismSGDisabledBaseTestCase("}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_4f1b031b","line":113,"updated":"2018-10-12 21:38:07.000000000","message":"This test suffers from the same issues as the previous one.","commit_id":"c3a47d8cd48c308723e45fc0e61a5494ed027802"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"fe6266a607b36b12f9dc479afb3ec66fcc9830f3","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        OpenvswitchMechanismBaseTestCase):"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_resource_provider_uuid5_namespace(self):"},{"line_number":113,"context_line":"        self.assertIsNotNone(self.driver.resource_provider_uuid5_namespace)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class OpenvswitchMechanismSGDisabledBaseTestCase("}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_705497fd","line":113,"in_reply_to":"3f79a3b5_4f1b031b","updated":"2018-10-13 12:46:58.000000000","message":"Please see the previous file.","commit_id":"c3a47d8cd48c308723e45fc0e61a5494ed027802"}]}
