)]}'
{"manilaclient/tests/functional/client.py":[{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@chainguard.dev","username":"toabctl"},"change_message_id":"c4892918f2985f252110f5d543cc701236577ef9","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            SHARE_TYPE, res_id\u003dshare_type, interval\u003d2, timeout\u003d6)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def get_project_id(self, name_or_id):"},{"line_number":159,"context_line":"        project_raw \u003d self.openstack(\u0027project show %s\u0027 % name_or_id)"},{"line_number":160,"context_line":"        project_data \u003d output_parser.listing(project_raw)"},{"line_number":161,"context_line":"        for datum in project_data:"},{"line_number":162,"context_line":"            if datum[\u0027Field\u0027].lower() \u003d\u003d \u0027id\u0027:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3acd31a7_5be79440","line":159,"updated":"2015-04-29 16:21:13.000000000","message":"You can get the id with \"openstack project show -f value -c id %s\". Then you don\u0027t need the output_parser and the loop","commit_id":"a3bea3b6726278233c3aee9ccb0b316b8e296b40"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"22fc4c84334c74f3b91eb6ab0e07837f7b1ba372","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            SHARE_TYPE, res_id\u003dshare_type, interval\u003d2, timeout\u003d6)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def get_project_id(self, name_or_id):"},{"line_number":159,"context_line":"        project_raw \u003d self.openstack(\u0027project show %s\u0027 % name_or_id)"},{"line_number":160,"context_line":"        project_data \u003d output_parser.listing(project_raw)"},{"line_number":161,"context_line":"        for datum in project_data:"},{"line_number":162,"context_line":"            if datum[\u0027Field\u0027].lower() \u003d\u003d \u0027id\u0027:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3acd31a7_7ecb5e73","line":159,"in_reply_to":"3acd31a7_5be79440","updated":"2015-04-29 16:41:52.000000000","message":"Thanks! Done.","commit_id":"a3bea3b6726278233c3aee9ccb0b316b8e296b40"}],"manilaclient/tests/functional/test_share_types.py":[{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"e967f38d78e15c194dc9cd8e8855f6d2eaa0a194","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            is_public\u003dFalse)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # Verify response body"},{"line_number":108,"context_line":"        for key in self.create_keys:"},{"line_number":109,"context_line":"            self.assertIn(key, share_type)"},{"line_number":110,"context_line":"        self.assertEqual(share_type_name, share_type[\u0027Name\u0027])"},{"line_number":111,"context_line":"        self.assertEqual(dhss_expected, share_type[\u0027required_extra_specs\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ad32947_1d969b4c","line":108,"updated":"2015-04-28 09:19:04.000000000","message":"I think these copy-pasted assertions could be removed without any harm for this test because share type creation already have checked in the previous test, so no need to do duplication. Furthermore, one particular test should check only one thing, so it\u0027s bad practice to check \"everything\" in one test.","commit_id":"ebfc96cb5b05bc47536bb18568b292faaab6a82f"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4ce869c3930b3e179dca7bbe8e4e7e296fc5eeaa","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            is_public\u003dFalse)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # Verify response body"},{"line_number":108,"context_line":"        for key in self.create_keys:"},{"line_number":109,"context_line":"            self.assertIn(key, share_type)"},{"line_number":110,"context_line":"        self.assertEqual(share_type_name, share_type[\u0027Name\u0027])"},{"line_number":111,"context_line":"        self.assertEqual(dhss_expected, share_type[\u0027required_extra_specs\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ad0253b_b9a7bb4e","line":108,"in_reply_to":"5ad0253b_94897dcd","updated":"2015-04-29 10:01:53.000000000","message":"Cause is in overlapping of used functionality.\n\nAnyway, splitted it to two tests.","commit_id":"ebfc96cb5b05bc47536bb18568b292faaab6a82f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"7169aed1d33788421d003d248855f57be5422854","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            is_public\u003dFalse)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # Verify response body"},{"line_number":108,"context_line":"        for key in self.create_keys:"},{"line_number":109,"context_line":"            self.assertIn(key, share_type)"},{"line_number":110,"context_line":"        self.assertEqual(share_type_name, share_type[\u0027Name\u0027])"},{"line_number":111,"context_line":"        self.assertEqual(dhss_expected, share_type[\u0027required_extra_specs\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ad0253b_94897dcd","line":108,"in_reply_to":"7ad32947_0094ee88","updated":"2015-04-28 19:39:03.000000000","message":"I don\u0027t understand why a large number of tests consumes more resources. Is it because allowing the tests to run in parallel can cause more actual objects to get created?","commit_id":"ebfc96cb5b05bc47536bb18568b292faaab6a82f"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"80c062238768ed46b33f39511b3d6c96a09cddab","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            is_public\u003dFalse)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # Verify response body"},{"line_number":108,"context_line":"        for key in self.create_keys:"},{"line_number":109,"context_line":"            self.assertIn(key, share_type)"},{"line_number":110,"context_line":"        self.assertEqual(share_type_name, share_type[\u0027Name\u0027])"},{"line_number":111,"context_line":"        self.assertEqual(dhss_expected, share_type[\u0027required_extra_specs\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ad32947_0094ee88","line":108,"in_reply_to":"7ad32947_1d969b4c","updated":"2015-04-28 09:39:24.000000000","message":"Outputs for \"public\" and \"private\" share types can differ. That is why it is tested here too.\n\nAnd this test is designed for covering \"life cycle of private share type\". See name of test. If we do a lot of small tests we will eat too many resources. There is no real need in it in this particular case.","commit_id":"ebfc96cb5b05bc47536bb18568b292faaab6a82f"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"18ce1f28b75c1d12a8e68b2d4006e4bd0d429f53","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \u0027ID\u0027, \u0027Name\u0027, \u0027Visibility\u0027, \u0027is_default\u0027, \u0027required_extra_specs\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @ddt.data(\u0027false\u0027, \u0027False\u0027, \u00270\u0027, \u0027True\u0027, \u0027true\u0027, \u00271\u0027)"},{"line_number":42,"context_line":"    def est_create_delete_public_share_type(self, dhss):"},{"line_number":43,"context_line":"        share_type_name \u003d data_utils.rand_name(\u0027manilaclient_functional_test\u0027)"},{"line_number":44,"context_line":"        dhss_expected \u003d \u0027driver_handles_share_servers : %s\u0027 % six.text_type("},{"line_number":45,"context_line":"            strutils.bool_from_string(dhss))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5ad0253b_bb76863c","line":42,"updated":"2015-04-29 14:07:00.000000000","message":"Typo","commit_id":"3dd676643379f42d07d7bef8997bbb1a53bc5d17"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"a5028b4ca0019e5803ed9435c153bd8b20534467","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \u0027ID\u0027, \u0027Name\u0027, \u0027Visibility\u0027, \u0027is_default\u0027, \u0027required_extra_specs\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @ddt.data(\u0027false\u0027, \u0027False\u0027, \u00270\u0027, \u0027True\u0027, \u0027true\u0027, \u00271\u0027)"},{"line_number":42,"context_line":"    def est_create_delete_public_share_type(self, dhss):"},{"line_number":43,"context_line":"        share_type_name \u003d data_utils.rand_name(\u0027manilaclient_functional_test\u0027)"},{"line_number":44,"context_line":"        dhss_expected \u003d \u0027driver_handles_share_servers : %s\u0027 % six.text_type("},{"line_number":45,"context_line":"            strutils.bool_from_string(dhss))"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_344e30c2","line":42,"in_reply_to":"5ad0253b_bb76863c","updated":"2015-04-29 14:27:18.000000000","message":"nice catch!","commit_id":"3dd676643379f42d07d7bef8997bbb1a53bc5d17"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"18ce1f28b75c1d12a8e68b2d4006e4bd0d429f53","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self.assertFalse(self._listed_by(share_type_id, True, False))"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @ddt.data(\u0027false\u0027, \u0027False\u0027, \u00270\u0027, \u0027True\u0027, \u0027true\u0027, \u00271\u0027)"},{"line_number":96,"context_line":"    def test_create_delete_private_share_type(self, dhss):"},{"line_number":97,"context_line":"        share_type_name \u003d data_utils.rand_name(\u0027manilaclient_functional_test\u0027)"},{"line_number":98,"context_line":"        dhss_expected \u003d \u0027driver_handles_share_servers : %s\u0027 % six.text_type("},{"line_number":99,"context_line":"            strutils.bool_from_string(dhss))"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_94450419","line":96,"updated":"2015-04-29 14:07:00.000000000","message":"This test could be easily combined with previous one and it will reduce the code duplication in this file.","commit_id":"3dd676643379f42d07d7bef8997bbb1a53bc5d17"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"a5028b4ca0019e5803ed9435c153bd8b20534467","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self.assertFalse(self._listed_by(share_type_id, True, False))"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @ddt.data(\u0027false\u0027, \u0027False\u0027, \u00270\u0027, \u0027True\u0027, \u0027true\u0027, \u00271\u0027)"},{"line_number":96,"context_line":"    def test_create_delete_private_share_type(self, dhss):"},{"line_number":97,"context_line":"        share_type_name \u003d data_utils.rand_name(\u0027manilaclient_functional_test\u0027)"},{"line_number":98,"context_line":"        dhss_expected \u003d \u0027driver_handles_share_servers : %s\u0027 % six.text_type("},{"line_number":99,"context_line":"            strutils.bool_from_string(dhss))"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_9702a66e","line":96,"in_reply_to":"3acd31a7_94450419","updated":"2015-04-29 14:27:18.000000000","message":"Done","commit_id":"3dd676643379f42d07d7bef8997bbb1a53bc5d17"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"ef42e75836e72da104e9ec6c3845b7be56391e9b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    create_keys \u003d ("},{"line_number":39,"context_line":"        \u0027ID\u0027, \u0027Name\u0027, \u0027Visibility\u0027, \u0027is_default\u0027, \u0027required_extra_specs\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def _listed_by(self, share_type_id, by_admin\u003dFalse, list_all\u003dFalse):"},{"line_number":42,"context_line":"        if by_admin:"},{"line_number":43,"context_line":"            client \u003d self.admin_client"},{"line_number":44,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_f330d009","line":41,"updated":"2015-05-06 01:20:59.000000000","message":"_share_type_listed_by might be more intuitive.","commit_id":"21ad7252b6581622de3b8e1ee99466b9bc514259"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bc8011496c3856f33851b72c798330a3da428e1c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    create_keys \u003d ("},{"line_number":39,"context_line":"        \u0027ID\u0027, \u0027Name\u0027, \u0027Visibility\u0027, \u0027is_default\u0027, \u0027required_extra_specs\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def _listed_by(self, share_type_id, by_admin\u003dFalse, list_all\u003dFalse):"},{"line_number":42,"context_line":"        if by_admin:"},{"line_number":43,"context_line":"            client \u003d self.admin_client"},{"line_number":44,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_5474f8fb","line":41,"in_reply_to":"1aca2d91_f330d009","updated":"2015-05-06 12:47:46.000000000","message":"Done","commit_id":"21ad7252b6581622de3b8e1ee99466b9bc514259"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"ef42e75836e72da104e9ec6c3845b7be56391e9b","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _verify_access(self, share_type_id):"},{"line_number":50,"context_line":"        # Verify that it is not listed for user"},{"line_number":51,"context_line":"        self.assertFalse(self._listed_by(share_type_id, False, True))"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # Verify it is listed for admin"},{"line_number":54,"context_line":"        self.assertTrue(self._listed_by(share_type_id, True, True))"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_3381a890","line":51,"updated":"2015-05-06 01:20:59.000000000","message":"These calls would be more readable if you used the argument names.","commit_id":"21ad7252b6581622de3b8e1ee99466b9bc514259"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bc8011496c3856f33851b72c798330a3da428e1c","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _verify_access(self, share_type_id):"},{"line_number":50,"context_line":"        # Verify that it is not listed for user"},{"line_number":51,"context_line":"        self.assertFalse(self._listed_by(share_type_id, False, True))"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # Verify it is listed for admin"},{"line_number":54,"context_line":"        self.assertTrue(self._listed_by(share_type_id, True, True))"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_b4022c3d","line":51,"in_reply_to":"1aca2d91_3381a890","updated":"2015-05-06 12:47:46.000000000","message":"Done","commit_id":"21ad7252b6581622de3b8e1ee99466b9bc514259"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"87d4299928fcb6e830323f47595403008ca42ec3","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @ddt.data("},{"line_number":60,"context_line":"        {\u0027is_public\u0027: True, \u0027dhss\u0027: \u0027False\u0027},"},{"line_number":61,"context_line":"        {\u0027is_public\u0027: False, \u0027dhss\u0027: \u0027True\u0027},"},{"line_number":62,"context_line":"    )"},{"line_number":63,"context_line":"    @ddt.unpack"},{"line_number":64,"context_line":"    def test_create_delete_share_type(self, is_public, dhss):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3acd31a7_bd0b9f23","line":61,"updated":"2015-05-05 20:27:09.000000000","message":"why not test True,True and False,False?","commit_id":"21ad7252b6581622de3b8e1ee99466b9bc514259"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bc8011496c3856f33851b72c798330a3da428e1c","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @ddt.data("},{"line_number":60,"context_line":"        {\u0027is_public\u0027: True, \u0027dhss\u0027: \u0027False\u0027},"},{"line_number":61,"context_line":"        {\u0027is_public\u0027: False, \u0027dhss\u0027: \u0027True\u0027},"},{"line_number":62,"context_line":"    )"},{"line_number":63,"context_line":"    @ddt.unpack"},{"line_number":64,"context_line":"    def test_create_delete_share_type(self, is_public, dhss):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_b4890ccd","line":61,"in_reply_to":"1aca2d91_b3b5b87f","updated":"2015-05-06 12:47:46.000000000","message":"Done","commit_id":"21ad7252b6581622de3b8e1ee99466b9bc514259"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"ef42e75836e72da104e9ec6c3845b7be56391e9b","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @ddt.data("},{"line_number":60,"context_line":"        {\u0027is_public\u0027: True, \u0027dhss\u0027: \u0027False\u0027},"},{"line_number":61,"context_line":"        {\u0027is_public\u0027: False, \u0027dhss\u0027: \u0027True\u0027},"},{"line_number":62,"context_line":"    )"},{"line_number":63,"context_line":"    @ddt.unpack"},{"line_number":64,"context_line":"    def test_create_delete_share_type(self, is_public, dhss):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_b3b5b87f","line":61,"in_reply_to":"3acd31a7_bd0b9f23","updated":"2015-05-06 01:20:59.000000000","message":"I had the same question.  Seems trivial using ddt.","commit_id":"21ad7252b6581622de3b8e1ee99466b9bc514259"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"87d4299928fcb6e830323f47595403008ca42ec3","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                any(st_id \u003d\u003d st[\u0027ID\u0027] for st in share_types))"},{"line_number":91,"context_line":"        else:"},{"line_number":92,"context_line":"            # Verify its access"},{"line_number":93,"context_line":"            self._verify_access(st_id)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # Delete share type"},{"line_number":96,"context_line":"        self.admin_client.delete_share_type(st_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3acd31a7_fd3d978f","line":93,"updated":"2015-05-05 20:27:09.000000000","message":"_verify_access should be renamed to indicate that it is only for non-public -- or better yet... I think it might be better if you moved the if/else into _verify_access and let it do both halves of this verify_access test.","commit_id":"21ad7252b6581622de3b8e1ee99466b9bc514259"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bc8011496c3856f33851b72c798330a3da428e1c","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                any(st_id \u003d\u003d st[\u0027ID\u0027] for st in share_types))"},{"line_number":91,"context_line":"        else:"},{"line_number":92,"context_line":"            # Verify its access"},{"line_number":93,"context_line":"            self._verify_access(st_id)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # Delete share type"},{"line_number":96,"context_line":"        self.admin_client.delete_share_type(st_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_3fff1503","line":93,"in_reply_to":"3acd31a7_fd3d978f","updated":"2015-05-06 12:47:46.000000000","message":"Done","commit_id":"21ad7252b6581622de3b8e1ee99466b9bc514259"}]}
