)]}'
{"ironic/api/controllers/v1/port.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ca8f939938226bd7f5f7944b6a773166a9d59109","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        self._check_allowed_port_fields(pdict)"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        if (not pecan.request.rpcapi.can_send_create_port() and"},{"line_number":534,"context_line":"                pdict.get(\u0027portgroup_uuid\u0027)):"},{"line_number":535,"context_line":"            # NOTE(mgoddard): In RPC API v1.41, port creation was moved to the"},{"line_number":536,"context_line":"            # conductor service to facilitate validation of the physical"},{"line_number":537,"context_line":"            # network field of ports in portgroups. During a rolling upgrade,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_e0f17403","line":534,"updated":"2017-07-20 21:47:23.000000000","message":"what about physical_network? if that is set, even if portgroup_uuid is not, do we want to create still? (or is the physical_network thing checked elsewhere)","commit_id":"e6e6e9c5efad768e1e54420f69f6956d9a6c369f"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"2a6abce9828d59c3b4d53519e02eb39cdca93e09","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        self._check_allowed_port_fields(pdict)"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        if (not pecan.request.rpcapi.can_send_create_port() and"},{"line_number":534,"context_line":"                pdict.get(\u0027portgroup_uuid\u0027)):"},{"line_number":535,"context_line":"            # NOTE(mgoddard): In RPC API v1.41, port creation was moved to the"},{"line_number":536,"context_line":"            # conductor service to facilitate validation of the physical"},{"line_number":537,"context_line":"            # network field of ports in portgroups. During a rolling upgrade,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_4636e9b6","line":534,"in_reply_to":"1f1a1f67_e0f17403","updated":"2017-07-21 13:23:48.000000000","message":"physical_network is blocked by _check_allowed_port_fields().","commit_id":"e6e6e9c5efad768e1e54420f69f6956d9a6c369f"}],"ironic/conductor/rpcapi.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ca8f939938226bd7f5f7944b6a773166a9d59109","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        :param version: The version to check."},{"line_number":160,"context_line":"        :returns: Whether the version can be sent."},{"line_number":161,"context_line":"        \"\"\""},{"line_number":162,"context_line":"        return self.client.can_send_version(version)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def can_send_create_port(self):"},{"line_number":165,"context_line":"        \"\"\"Return whether the RPCAPI supports the create_port method.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_40fee8ae","line":162,"updated":"2017-07-20 21:47:23.000000000","message":"I\u0027m not convinced it is worth having this method, given that it is only one line of code. I don\u0027t feel strongly either way (at least not now).","commit_id":"e6e6e9c5efad768e1e54420f69f6956d9a6c369f"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"2a6abce9828d59c3b4d53519e02eb39cdca93e09","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        :param version: The version to check."},{"line_number":160,"context_line":"        :returns: Whether the version can be sent."},{"line_number":161,"context_line":"        \"\"\""},{"line_number":162,"context_line":"        return self.client.can_send_version(version)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def can_send_create_port(self):"},{"line_number":165,"context_line":"        \"\"\"Return whether the RPCAPI supports the create_port method.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_a61dbd10","line":162,"in_reply_to":"1f1a1f67_40fee8ae","updated":"2017-07-21 13:23:48.000000000","message":"I don\u0027t feel too strongly about it either :)","commit_id":"e6e6e9c5efad768e1e54420f69f6956d9a6c369f"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ca8f939938226bd7f5f7944b6a773166a9d59109","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def can_send_create_port(self):"},{"line_number":165,"context_line":"        \"\"\"Return whether the RPCAPI supports the create_port method.\"\"\""},{"line_number":166,"context_line":"        return self._can_send_version(\"1.41\")"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def create_node(self, context, node_obj, topic\u003dNone):"},{"line_number":169,"context_line":"        \"\"\"Synchronously, have a conductor validate and create a node."}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_00d7d025","line":166,"updated":"2017-07-20 21:47:23.000000000","message":"I want to think about this, whether it makes sense for it to be here, or for it to be in the api/v1/port.py file. Although I guess we don\u0027t want to expose the 1.41 outside this file.","commit_id":"e6e6e9c5efad768e1e54420f69f6956d9a6c369f"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"2a6abce9828d59c3b4d53519e02eb39cdca93e09","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def can_send_create_port(self):"},{"line_number":165,"context_line":"        \"\"\"Return whether the RPCAPI supports the create_port method.\"\"\""},{"line_number":166,"context_line":"        return self._can_send_version(\"1.41\")"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def create_node(self, context, node_obj, topic\u003dNone):"},{"line_number":169,"context_line":"        \"\"\"Synchronously, have a conductor validate and create a node."}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_e6129509","line":166,"in_reply_to":"1f1a1f67_00d7d025","updated":"2017-07-21 13:23:48.000000000","message":"That was my thinking - it provides some context for the reader much like the api.utils.allow_* functions.","commit_id":"e6e6e9c5efad768e1e54420f69f6956d9a6c369f"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fa98a5c4f7ca3325bed2834afc9374b1b2812faa","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def can_send_create_port(self):"},{"line_number":165,"context_line":"        \"\"\"Return whether the RPCAPI supports the create_port method.\"\"\""},{"line_number":166,"context_line":"        return self._can_send_version(\"1.41\")"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def create_node(self, context, node_obj, topic\u003dNone):"},{"line_number":169,"context_line":"        \"\"\"Synchronously, have a conductor validate and create a node."}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_2689b974","line":166,"updated":"2017-07-24 20:12:09.000000000","message":"I\u0027m good with this method, but I can\u0027t seem to justify having _can_send_version(). It adds a level of indirection for no gain except the docstring I guess. Which ought to be fairly obvious, given that the method name seems self-explanatory.","commit_id":"b13a7eed0d787c593f6c9182d28753821ec28d85"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"4d9bbf8e639e367c90a87af6d40e6aabc81670b7","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def can_send_create_port(self):"},{"line_number":165,"context_line":"        \"\"\"Return whether the RPCAPI supports the create_port method.\"\"\""},{"line_number":166,"context_line":"        return self._can_send_version(\"1.41\")"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def create_node(self, context, node_obj, topic\u003dNone):"},{"line_number":169,"context_line":"        \"\"\"Synchronously, have a conductor validate and create a node."}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_5b4b642a","line":166,"in_reply_to":"ff346bd7_2689b974","updated":"2017-07-25 14:10:05.000000000","message":"I\u0027ll remove _can_send_version.","commit_id":"b13a7eed0d787c593f6c9182d28753821ec28d85"}],"ironic/tests/unit/api/v1/test_ports.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fa98a5c4f7ca3325bed2834afc9374b1b2812faa","unresolved":false,"context_lines":[{"line_number":1562,"context_line":"        mock_cscp.return_value \u003d False"},{"line_number":1563,"context_line":"        pdict \u003d post_get_test_port("},{"line_number":1564,"context_line":"            node_uuid\u003dself.node.uuid"},{"line_number":1565,"context_line":"        )"},{"line_number":1566,"context_line":"        response \u003d self.post_json(\u0027/ports\u0027, pdict, headers\u003dself.headers)"},{"line_number":1567,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":1568,"context_line":"        self.assertEqual(http_client.CREATED, response.status_int)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_869e2561","line":1565,"updated":"2017-07-24 20:12:09.000000000","message":"i think this adds a portgroup_uuid which you probably don\u0027t want.","commit_id":"b13a7eed0d787c593f6c9182d28753821ec28d85"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"4d9bbf8e639e367c90a87af6d40e6aabc81670b7","unresolved":false,"context_lines":[{"line_number":1562,"context_line":"        mock_cscp.return_value \u003d False"},{"line_number":1563,"context_line":"        pdict \u003d post_get_test_port("},{"line_number":1564,"context_line":"            node_uuid\u003dself.node.uuid"},{"line_number":1565,"context_line":"        )"},{"line_number":1566,"context_line":"        response \u003d self.post_json(\u0027/ports\u0027, pdict, headers\u003dself.headers)"},{"line_number":1567,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":1568,"context_line":"        self.assertEqual(http_client.CREATED, response.status_int)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_b2070a1d","line":1565,"in_reply_to":"ff346bd7_869e2561","updated":"2017-07-25 14:10:05.000000000","message":"You\u0027re right, and that\u0027s why the test is failing. I was sure I had seen this passing before pushing...","commit_id":"b13a7eed0d787c593f6c9182d28753821ec28d85"}],"ironic/tests/unit/conductor/test_rpcapi.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"66f9ae49eb49e036ff28176be935c7f3388f1eff","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        self.assertEqual(\u0027fake-topic.fake-host\u0027,"},{"line_number":147,"context_line":"                         rpcapi.get_topic_for_driver(\u0027fake-driver\u0027))"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _test__can_send_create_port(self, can_send):"},{"line_number":150,"context_line":"        rpcapi \u003d conductor_rpcapi.ConductorAPI(topic\u003d\u0027fake-topic\u0027)"},{"line_number":151,"context_line":"        with mock.patch.object(rpcapi.client,"},{"line_number":152,"context_line":"                               \"can_send_version\") as mock_can_send_version:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff346bd7_7775e2ca","line":149,"updated":"2017-07-26 16:32:51.000000000","message":"the method is \u0027can_send_create_port()\u0027, so s/test__/test_/","commit_id":"8ed906464aa7ed1d214441e9c7a14de6fd4f37a4"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"ec584e09bac306cf69ccaba5eb7b3a96beeba9b1","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        self.assertEqual(\u0027fake-topic.fake-host\u0027,"},{"line_number":147,"context_line":"                         rpcapi.get_topic_for_driver(\u0027fake-driver\u0027))"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _test__can_send_create_port(self, can_send):"},{"line_number":150,"context_line":"        rpcapi \u003d conductor_rpcapi.ConductorAPI(topic\u003d\u0027fake-topic\u0027)"},{"line_number":151,"context_line":"        with mock.patch.object(rpcapi.client,"},{"line_number":152,"context_line":"                               \"can_send_version\") as mock_can_send_version:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff346bd7_098b1a6e","line":149,"in_reply_to":"ff346bd7_7775e2ca","updated":"2017-07-26 16:38:17.000000000","message":"Doh.","commit_id":"8ed906464aa7ed1d214441e9c7a14de6fd4f37a4"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"66f9ae49eb49e036ff28176be935c7f3388f1eff","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            self.assertEqual(can_send, result)"},{"line_number":156,"context_line":"            mock_can_send_version.assert_called_once_with(\"1.41\")"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def test__can_send_create_port_True(self):"},{"line_number":159,"context_line":"        self._test__can_send_create_port(True)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def test__can_send_create_port_False(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff346bd7_f769d2f8","line":158,"updated":"2017-07-26 16:32:51.000000000","message":"the method is \u0027can_send_create_port()\u0027, so s/test__/test_/","commit_id":"8ed906464aa7ed1d214441e9c7a14de6fd4f37a4"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"66f9ae49eb49e036ff28176be935c7f3388f1eff","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    def test__can_send_create_port_True(self):"},{"line_number":159,"context_line":"        self._test__can_send_create_port(True)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def test__can_send_create_port_False(self):"},{"line_number":162,"context_line":"        self._test__can_send_create_port(False)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def _test_rpcapi(self, method, rpc_method, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff346bd7_b76fcafa","line":161,"updated":"2017-07-26 16:32:51.000000000","message":"ditto","commit_id":"8ed906464aa7ed1d214441e9c7a14de6fd4f37a4"}],"releasenotes/notes/port-physical-network-a7009dc514353796.yaml":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"03c93b508196ea5c8e7284a39828d6d465d436f5","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    continue to function as in the previous release until any ports have their"},{"line_number":34,"context_line":"    physical network field set."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    During a live upgrade to this release, the ``physical_network`` field will"},{"line_number":37,"context_line":"    not be available.  It will also not be possible to create ports which are"},{"line_number":38,"context_line":"    members of a port group during a live upgrade, as the API service will be"},{"line_number":39,"context_line":"    unable to validate the consistency of the request."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ff346bd7_6a05d010","line":36,"updated":"2017-07-27 14:21:33.000000000","message":"I was just thinking, maybe s/live/rolling/ since we refer to it as \u0027rolling upgrade\u0027, not \u0027live upgrade\u0027. (Not sure there is a difference...)","commit_id":"fc1e18e3e4a28b1163e7a597ee8b07d465d7a174"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ec944b65cfeb65416cd04697d9d129126f4a57c9","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    continue to function as in the previous release until any ports have their"},{"line_number":34,"context_line":"    physical network field set."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    During a live upgrade to this release, the ``physical_network`` field will"},{"line_number":37,"context_line":"    not be available.  It will also not be possible to create ports which are"},{"line_number":38,"context_line":"    members of a port group during a live upgrade, as the API service will be"},{"line_number":39,"context_line":"    unable to validate the consistency of the request."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ff346bd7_8a4eb46c","line":36,"in_reply_to":"ff346bd7_6a05d010","updated":"2017-07-27 14:23:05.000000000","message":"Rolling is likely a better word, likely best for a follow-up job wise.","commit_id":"fc1e18e3e4a28b1163e7a597ee8b07d465d7a174"}]}
