)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"0db316f97f63d1618c64575b01305fba0fc26b65","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, the code pass \"nics\u003dNone\" when create mongos and config-server"},{"line_number":10,"context_line":"during creating mongodb cluster. If we didn\u0027t specify the parameter"},{"line_number":11,"context_line":"`default_neutron_networks` in trove-taskmnanager.conf, the value \"None\""},{"line_number":12,"context_line":"will pass in nova.server.create() eventually, and in a multi network"},{"line_number":13,"context_line":"openstack environments, this could raise a “Multiple possible networks"},{"line_number":14,"context_line":"found, use a Network ID to be more specific\" conflict."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"df7087c5_3877893d","line":11,"range":{"start_line":11,"start_character":30,"end_line":11,"end_character":53},"updated":"2018-03-08 03:40:26.000000000","message":"Just figured out this part is inside the API side, so normally the configuration properties will be parsed from \u0027trove.conf\u0027, however we may not assume every deployment use the same file names (or locations) for Trove services. So I think we could just use \u0027configuration\u0027 here.","commit_id":"ca31bd61fc92f4141020dcada17f039771e46012"}],"trove/common/strategies/cluster/experimental/mongodb/api.py":[{"author":{"_account_id":13562,"name":"Samuel Matzek","email":"smatzek@us.ibm.com","username":"smatzek"},"change_message_id":"b6837f11fc4658588f774b77859824babbb88574","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                        datastore_version,"},{"line_number":149,"context_line":"                                        volume_size, None,"},{"line_number":150,"context_line":"                                        availability_zone\u003dNone,"},{"line_number":151,"context_line":"                                        nics\u003dnics[i],"},{"line_number":152,"context_line":"                                        configuration_id\u003dNone,"},{"line_number":153,"context_line":"                                        cluster_config\u003dconfigsvr_config,"},{"line_number":154,"context_line":"                                        locality\u003dlocality,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_b438f0ed","line":151,"updated":"2017-10-23 18:44:10.000000000","message":"As Jian Song noted, if you choose to have a different number of confgsvr and mongos other than the default configuration, I believe you can cause index out of bound here.\n\nI would like to see this patch merged with the other patch mentioned that addresses the loop.","commit_id":"b0175ff03acd157d740b4eb4854f959c06bd2677"}],"trove/tests/unittests/cluster/test_mongodb_cluster.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"0db316f97f63d1618c64575b01305fba0fc26b65","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    @mock.patch.object(inst_models.Instance, \u0027create\u0027)"},{"line_number":218,"context_line":"    @mock.patch.object(models.DBCluster, \u0027create\u0027)"},{"line_number":219,"context_line":"    @mock.patch.object(QUOTAS, \u0027check_quotas\u0027)"},{"line_number":220,"context_line":"    @mock.patch.object(remote, \u0027create_nova_client\u0027)"},{"line_number":221,"context_line":"    @mock.patch.object(remote, \u0027create_neutron_client\u0027)"},{"line_number":222,"context_line":"    def test_create_passed_nics(self, mock_neutron_client, mock_nova_client,"},{"line_number":223,"context_line":"                                mock_check_quotas, mock_db_create,"},{"line_number":224,"context_line":"                                mock_ins_create, mock_task_api):"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_78f8a1c3","line":221,"range":{"start_line":220,"start_character":0,"end_line":221,"end_character":55},"updated":"2018-03-08 03:40:26.000000000","message":"These two lines could be replaced with:\n\n    @mock.patch.object(models, \u0027validate_instance_flavors\u0027)\n    @mock.patch.object(models, \u0027validate_instance_nics\u0027)","commit_id":"ca31bd61fc92f4141020dcada17f039771e46012"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"465a2fd6b569a131fcb546f4efe8c5b533674876","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    @mock.patch.object(inst_models.Instance, \u0027create\u0027)"},{"line_number":218,"context_line":"    @mock.patch.object(models.DBCluster, \u0027create\u0027)"},{"line_number":219,"context_line":"    @mock.patch.object(QUOTAS, \u0027check_quotas\u0027)"},{"line_number":220,"context_line":"    @mock.patch.object(remote, \u0027create_nova_client\u0027)"},{"line_number":221,"context_line":"    @mock.patch.object(remote, \u0027create_neutron_client\u0027)"},{"line_number":222,"context_line":"    def test_create_passed_nics(self, mock_neutron_client, mock_nova_client,"},{"line_number":223,"context_line":"                                mock_check_quotas, mock_db_create,"},{"line_number":224,"context_line":"                                mock_ins_create, mock_task_api):"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_bb563306","line":221,"range":{"start_line":220,"start_character":0,"end_line":221,"end_character":55},"in_reply_to":"df7087c5_78f8a1c3","updated":"2018-03-08 04:35:44.000000000","message":"Done","commit_id":"ca31bd61fc92f4141020dcada17f039771e46012"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"0db316f97f63d1618c64575b01305fba0fc26b65","unresolved":false,"context_lines":[{"line_number":219,"context_line":"    @mock.patch.object(QUOTAS, \u0027check_quotas\u0027)"},{"line_number":220,"context_line":"    @mock.patch.object(remote, \u0027create_nova_client\u0027)"},{"line_number":221,"context_line":"    @mock.patch.object(remote, \u0027create_neutron_client\u0027)"},{"line_number":222,"context_line":"    def test_create_passed_nics(self, mock_neutron_client, mock_nova_client,"},{"line_number":223,"context_line":"                                mock_check_quotas, mock_db_create,"},{"line_number":224,"context_line":"                                mock_ins_create, mock_task_api):"},{"line_number":225,"context_line":"        instances \u003d self.instances"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_7821814d","line":222,"range":{"start_line":222,"start_character":8,"end_line":222,"end_character":31},"updated":"2018-03-08 03:40:26.000000000","message":"May \u0027test_create_with_correct_nics\u0027 or something be better?","commit_id":"ca31bd61fc92f4141020dcada17f039771e46012"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"465a2fd6b569a131fcb546f4efe8c5b533674876","unresolved":false,"context_lines":[{"line_number":219,"context_line":"    @mock.patch.object(QUOTAS, \u0027check_quotas\u0027)"},{"line_number":220,"context_line":"    @mock.patch.object(remote, \u0027create_nova_client\u0027)"},{"line_number":221,"context_line":"    @mock.patch.object(remote, \u0027create_neutron_client\u0027)"},{"line_number":222,"context_line":"    def test_create_passed_nics(self, mock_neutron_client, mock_nova_client,"},{"line_number":223,"context_line":"                                mock_check_quotas, mock_db_create,"},{"line_number":224,"context_line":"                                mock_ins_create, mock_task_api):"},{"line_number":225,"context_line":"        instances \u003d self.instances"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_db5be72b","line":222,"range":{"start_line":222,"start_character":8,"end_line":222,"end_character":31},"in_reply_to":"df7087c5_7821814d","updated":"2018-03-08 04:35:44.000000000","message":"Done","commit_id":"ca31bd61fc92f4141020dcada17f039771e46012"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"0db316f97f63d1618c64575b01305fba0fc26b65","unresolved":false,"context_lines":[{"line_number":219,"context_line":"    @mock.patch.object(QUOTAS, \u0027check_quotas\u0027)"},{"line_number":220,"context_line":"    @mock.patch.object(remote, \u0027create_nova_client\u0027)"},{"line_number":221,"context_line":"    @mock.patch.object(remote, \u0027create_neutron_client\u0027)"},{"line_number":222,"context_line":"    def test_create_passed_nics(self, mock_neutron_client, mock_nova_client,"},{"line_number":223,"context_line":"                                mock_check_quotas, mock_db_create,"},{"line_number":224,"context_line":"                                mock_ins_create, mock_task_api):"},{"line_number":225,"context_line":"        instances \u003d self.instances"},{"line_number":226,"context_line":"        flavors \u003d mock.Mock()"},{"line_number":227,"context_line":"        networks \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_d82c4d49","line":224,"range":{"start_line":222,"start_character":38,"end_line":224,"end_character":62},"updated":"2018-03-08 03:40:26.000000000","message":"As we\u0027re going to focus on the passed in \u0027nics\u0027 argument of instance.create, so only \u0027mock_ins_create\u0027 is needed here, the mock decorators and testing function arguments could be rearranged like:\n\n    @mock.patch.object(...)\n    ...\n    @mock.patch.object(inst_models.Instance, \u0027create)\n    def test_create_with_correct_nics(self, mock_inst_create, *args):","commit_id":"ca31bd61fc92f4141020dcada17f039771e46012"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"465a2fd6b569a131fcb546f4efe8c5b533674876","unresolved":false,"context_lines":[{"line_number":219,"context_line":"    @mock.patch.object(QUOTAS, \u0027check_quotas\u0027)"},{"line_number":220,"context_line":"    @mock.patch.object(remote, \u0027create_nova_client\u0027)"},{"line_number":221,"context_line":"    @mock.patch.object(remote, \u0027create_neutron_client\u0027)"},{"line_number":222,"context_line":"    def test_create_passed_nics(self, mock_neutron_client, mock_nova_client,"},{"line_number":223,"context_line":"                                mock_check_quotas, mock_db_create,"},{"line_number":224,"context_line":"                                mock_ins_create, mock_task_api):"},{"line_number":225,"context_line":"        instances \u003d self.instances"},{"line_number":226,"context_line":"        flavors \u003d mock.Mock()"},{"line_number":227,"context_line":"        networks \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_9b3d6fbd","line":224,"range":{"start_line":222,"start_character":38,"end_line":224,"end_character":62},"in_reply_to":"df7087c5_d82c4d49","updated":"2018-03-08 04:35:44.000000000","message":"Done","commit_id":"ca31bd61fc92f4141020dcada17f039771e46012"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"0db316f97f63d1618c64575b01305fba0fc26b65","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    def test_create_passed_nics(self, mock_neutron_client, mock_nova_client,"},{"line_number":223,"context_line":"                                mock_check_quotas, mock_db_create,"},{"line_number":224,"context_line":"                                mock_ins_create, mock_task_api):"},{"line_number":225,"context_line":"        instances \u003d self.instances"},{"line_number":226,"context_line":"        flavors \u003d mock.Mock()"},{"line_number":227,"context_line":"        networks \u003d mock.Mock()"},{"line_number":228,"context_line":"        mock_neutron_client.return_value.find_resource \u003d networks"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_381b091c","line":225,"updated":"2018-03-08 03:40:26.000000000","message":"As this temporary variable \u0027instances\u0027 only used once, this variable is not necessary, we could just pass \u0027self.instances\u0027 to \u0027self.cluster.create\u0027.","commit_id":"ca31bd61fc92f4141020dcada17f039771e46012"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"465a2fd6b569a131fcb546f4efe8c5b533674876","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    def test_create_passed_nics(self, mock_neutron_client, mock_nova_client,"},{"line_number":223,"context_line":"                                mock_check_quotas, mock_db_create,"},{"line_number":224,"context_line":"                                mock_ins_create, mock_task_api):"},{"line_number":225,"context_line":"        instances \u003d self.instances"},{"line_number":226,"context_line":"        flavors \u003d mock.Mock()"},{"line_number":227,"context_line":"        networks \u003d mock.Mock()"},{"line_number":228,"context_line":"        mock_neutron_client.return_value.find_resource \u003d networks"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_3b4a2355","line":225,"in_reply_to":"df7087c5_381b091c","updated":"2018-03-08 04:35:44.000000000","message":"Done","commit_id":"ca31bd61fc92f4141020dcada17f039771e46012"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"0db316f97f63d1618c64575b01305fba0fc26b65","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                                mock_check_quotas, mock_db_create,"},{"line_number":224,"context_line":"                                mock_ins_create, mock_task_api):"},{"line_number":225,"context_line":"        instances \u003d self.instances"},{"line_number":226,"context_line":"        flavors \u003d mock.Mock()"},{"line_number":227,"context_line":"        networks \u003d mock.Mock()"},{"line_number":228,"context_line":"        mock_neutron_client.return_value.find_resource \u003d networks"},{"line_number":229,"context_line":"        mock_nova_client.return_value.flavors \u003d flavors"},{"line_number":230,"context_line":"        self.cluster.create(mock.Mock(),"},{"line_number":231,"context_line":"                            self.cluster_name,"},{"line_number":232,"context_line":"                            self.datastore,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_f8bb51e2","line":229,"range":{"start_line":226,"start_character":0,"end_line":229,"end_character":55},"updated":"2018-03-08 03:40:26.000000000","message":"If \u0027validate_instance_flavors\u0027 and \u0027validate_instance_nics\u0027 are mocked instead, these lines could be removed.","commit_id":"ca31bd61fc92f4141020dcada17f039771e46012"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"465a2fd6b569a131fcb546f4efe8c5b533674876","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                                mock_check_quotas, mock_db_create,"},{"line_number":224,"context_line":"                                mock_ins_create, mock_task_api):"},{"line_number":225,"context_line":"        instances \u003d self.instances"},{"line_number":226,"context_line":"        flavors \u003d mock.Mock()"},{"line_number":227,"context_line":"        networks \u003d mock.Mock()"},{"line_number":228,"context_line":"        mock_neutron_client.return_value.find_resource \u003d networks"},{"line_number":229,"context_line":"        mock_nova_client.return_value.flavors \u003d flavors"},{"line_number":230,"context_line":"        self.cluster.create(mock.Mock(),"},{"line_number":231,"context_line":"                            self.cluster_name,"},{"line_number":232,"context_line":"                            self.datastore,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_5b47d74c","line":229,"range":{"start_line":226,"start_character":0,"end_line":229,"end_character":55},"in_reply_to":"df7087c5_f8bb51e2","updated":"2018-03-08 04:35:44.000000000","message":"Done","commit_id":"ca31bd61fc92f4141020dcada17f039771e46012"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"0db316f97f63d1618c64575b01305fba0fc26b65","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                            self.datastore,"},{"line_number":233,"context_line":"                            self.datastore_version,"},{"line_number":234,"context_line":"                            instances, {}, None, None)"},{"line_number":235,"context_line":"        mock_task_api.return_value.create_cluster.assert_called_with("},{"line_number":236,"context_line":"            mock_db_create.return_value.id)"},{"line_number":237,"context_line":"        nics \u003d [{\"net-id\": \"foo-bar\"}]"},{"line_number":238,"context_line":"        nics_count \u003d [kw.get(\u0027nics\u0027) for _, kw in"},{"line_number":239,"context_line":"                      mock_ins_create.call_args_list].count(nics)"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_78cf417f","line":236,"range":{"start_line":235,"start_character":0,"end_line":236,"end_character":43},"updated":"2018-03-08 03:40:26.000000000","message":"This assert seems not necessary neither, we\u0027re going to focus on the \u0027nics\u0027 argument(And so \u0027mock_task_api\u0027 could also be removed from the argument list of this testing function).","commit_id":"ca31bd61fc92f4141020dcada17f039771e46012"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"465a2fd6b569a131fcb546f4efe8c5b533674876","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                            self.datastore,"},{"line_number":233,"context_line":"                            self.datastore_version,"},{"line_number":234,"context_line":"                            instances, {}, None, None)"},{"line_number":235,"context_line":"        mock_task_api.return_value.create_cluster.assert_called_with("},{"line_number":236,"context_line":"            mock_db_create.return_value.id)"},{"line_number":237,"context_line":"        nics \u003d [{\"net-id\": \"foo-bar\"}]"},{"line_number":238,"context_line":"        nics_count \u003d [kw.get(\u0027nics\u0027) for _, kw in"},{"line_number":239,"context_line":"                      mock_ins_create.call_args_list].count(nics)"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_fb758b99","line":236,"range":{"start_line":235,"start_character":0,"end_line":236,"end_character":43},"in_reply_to":"df7087c5_78cf417f","updated":"2018-03-08 04:35:44.000000000","message":"Done","commit_id":"ca31bd61fc92f4141020dcada17f039771e46012"}]}
