)]}'
{"manila/api/v1/share_manage.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0663d0dc66f973ea4c9229f01534a912a2964ba5","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            share_ref \u003d self.share_api.manage(context, share, driver_options)"},{"line_number":59,"context_line":"        except exception.PolicyNotAuthorized as e:"},{"line_number":60,"context_line":"            raise exc.HTTPForbidden(explanation\u003dsix.text_type(e))"},{"line_number":61,"context_line":"        except exception.InvalidShare as e:"},{"line_number":62,"context_line":"            raise exc.HTTPConflict(explanation\u003dsix.text_type(e))"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        return self._view_builder.detail(req, share_ref)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_f67b07bc","line":61,"range":{"start_line":61,"start_character":42,"end_line":61,"end_character":43},"updated":"2016-03-24 14:02:41.000000000","message":"InvalidHost as well?","commit_id":"07504c3af6397a31ac4d9799f37d66ae48c9dd0a"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"b77a7fbdd04d42eed9e5878296ffb13c3e67b09c","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            share_ref \u003d self.share_api.manage(context, share, driver_options)"},{"line_number":59,"context_line":"        except exception.PolicyNotAuthorized as e:"},{"line_number":60,"context_line":"            raise exc.HTTPForbidden(explanation\u003dsix.text_type(e))"},{"line_number":61,"context_line":"        except exception.InvalidShare as e:"},{"line_number":62,"context_line":"            raise exc.HTTPConflict(explanation\u003dsix.text_type(e))"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        return self._view_builder.detail(req, share_ref)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_1dca131b","line":61,"range":{"start_line":61,"start_character":42,"end_line":61,"end_character":43},"in_reply_to":"fa0719c6_f67b07bc","updated":"2016-03-24 16:01:37.000000000","message":"Done","commit_id":"07504c3af6397a31ac4d9799f37d66ae48c9dd0a"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"35d1a5244f458b88281b16fe9ff8aea0fc704fc0","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            share_ref \u003d self.share_api.manage(context, share, driver_options)"},{"line_number":59,"context_line":"        except exception.PolicyNotAuthorized as e:"},{"line_number":60,"context_line":"            raise exc.HTTPForbidden(explanation\u003dsix.text_type(e))"},{"line_number":61,"context_line":"        except exception.InvalidShare as e:"},{"line_number":62,"context_line":"            raise exc.HTTPConflict(explanation\u003dsix.text_type(e))"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        return self._view_builder.detail(req, share_ref)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_4dddcf41","line":61,"updated":"2016-03-28 22:02:05.000000000","message":"It\u0027s probably obvious, but I don\u0027t understand right off why you no longer catch InvalidHost (as in patch set 7).","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c2601656756f8893a609edc857d22192ef7a44b7","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            share_ref \u003d self.share_api.manage(context, share, driver_options)"},{"line_number":59,"context_line":"        except exception.PolicyNotAuthorized as e:"},{"line_number":60,"context_line":"            raise exc.HTTPForbidden(explanation\u003dsix.text_type(e))"},{"line_number":61,"context_line":"        except exception.InvalidShare as e:"},{"line_number":62,"context_line":"            raise exc.HTTPConflict(explanation\u003dsix.text_type(e))"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        return self._view_builder.detail(req, share_ref)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_ef2c7ead","line":61,"in_reply_to":"ba0121b8_4dddcf41","updated":"2016-03-29 19:25:10.000000000","message":"Because InvalidHost exception is not thrown in share/api.py anymore.","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a1d95907fccfc12ab5419403f2b39b82df60000e","unresolved":false,"context_lines":[{"line_number":1474,"context_line":""},{"line_number":1475,"context_line":"@require_context"},{"line_number":1476,"context_line":"def share_create(context, share_values, create_share_instance\u003dTrue):"},{"line_number":1477,"context_line":"    values \u003d copy.deepcopy(share_values)"},{"line_number":1478,"context_line":"    values \u003d ensure_model_dict_has_id(values)"},{"line_number":1479,"context_line":"    values[\u0027share_metadata\u0027] \u003d _metadata_refs(values.get(\u0027metadata\u0027),"},{"line_number":1480,"context_line":"                                              models.ShareMetadata)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_d5e84b19","line":1477,"range":{"start_line":1477,"start_character":4,"end_line":1477,"end_character":40},"updated":"2016-03-28 18:59:26.000000000","message":"+1","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"}],"manila/share/api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ac20ab4cf55120f7af4e4a0d70c63881a336e14b","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        try:"},{"line_number":509,"context_line":"            self.scheduler_rpcapi.manage_share(context, share_data[\u0027host\u0027],"},{"line_number":510,"context_line":"                                               request_spec)"},{"line_number":511,"context_line":"        except Exception:"},{"line_number":512,"context_line":"            msg \u003d _(\u0027Host %(host)s did not pass validation for managing share \u0027"},{"line_number":513,"context_line":"                    \u0027with type %(type)s.\u0027) % {"},{"line_number":514,"context_line":"                \u0027host\u0027: share_data[\u0027host\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_6015893e","line":511,"range":{"start_line":511,"start_character":15,"end_line":511,"end_character":24},"updated":"2016-03-24 00:20:35.000000000","message":"There are other exceptions that are possible.. you should except NoValidHost specifically..","commit_id":"7d62757b49c0411ff6e4f57b38bcbaf3251ec374"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5adff15b9b33ca604d7d40f5d5050d2c9425d9e2","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        try:"},{"line_number":509,"context_line":"            self.scheduler_rpcapi.manage_share(context, share_data[\u0027host\u0027],"},{"line_number":510,"context_line":"                                               request_spec)"},{"line_number":511,"context_line":"        except Exception:"},{"line_number":512,"context_line":"            msg \u003d _(\u0027Host %(host)s did not pass validation for managing share \u0027"},{"line_number":513,"context_line":"                    \u0027with type %(type)s.\u0027) % {"},{"line_number":514,"context_line":"                \u0027host\u0027: share_data[\u0027host\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_3d50c231","line":511,"range":{"start_line":511,"start_character":15,"end_line":511,"end_character":24},"in_reply_to":"fa0719c6_6015893e","updated":"2016-03-24 13:45:16.000000000","message":"Done","commit_id":"7d62757b49c0411ff6e4f57b38bcbaf3251ec374"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ac20ab4cf55120f7af4e4a0d70c63881a336e14b","unresolved":false,"context_lines":[{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        request_spec \u003d self._get_request_spec_dict(None, share_type)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        try:"},{"line_number":509,"context_line":"            self.scheduler_rpcapi.manage_share(context, share_data[\u0027host\u0027],"},{"line_number":510,"context_line":"                                               request_spec)"},{"line_number":511,"context_line":"        except Exception:"},{"line_number":512,"context_line":"            msg \u003d _(\u0027Host %(host)s did not pass validation for managing share \u0027"},{"line_number":513,"context_line":"                    \u0027with type %(type)s.\u0027) % {"},{"line_number":514,"context_line":"                \u0027host\u0027: share_data[\u0027host\u0027],"},{"line_number":515,"context_line":"                \u0027type\u0027: share_data[\u0027share_type_id\u0027]}"},{"line_number":516,"context_line":"            raise exception.InvalidHost(reason\u003dmsg)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        shares \u003d self.get_all(context, {"},{"line_number":519,"context_line":"            \u0027host\u0027: share_data[\u0027host\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_25fc4371","line":516,"range":{"start_line":508,"start_character":7,"end_line":516,"end_character":51},"updated":"2016-03-24 00:20:35.000000000","message":"It would be nice to include a comment above to say why you\u0027re doing this..","commit_id":"7d62757b49c0411ff6e4f57b38bcbaf3251ec374"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5adff15b9b33ca604d7d40f5d5050d2c9425d9e2","unresolved":false,"context_lines":[{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        request_spec \u003d self._get_request_spec_dict(None, share_type)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        try:"},{"line_number":509,"context_line":"            self.scheduler_rpcapi.manage_share(context, share_data[\u0027host\u0027],"},{"line_number":510,"context_line":"                                               request_spec)"},{"line_number":511,"context_line":"        except Exception:"},{"line_number":512,"context_line":"            msg \u003d _(\u0027Host %(host)s did not pass validation for managing share \u0027"},{"line_number":513,"context_line":"                    \u0027with type %(type)s.\u0027) % {"},{"line_number":514,"context_line":"                \u0027host\u0027: share_data[\u0027host\u0027],"},{"line_number":515,"context_line":"                \u0027type\u0027: share_data[\u0027share_type_id\u0027]}"},{"line_number":516,"context_line":"            raise exception.InvalidHost(reason\u003dmsg)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        shares \u003d self.get_all(context, {"},{"line_number":519,"context_line":"            \u0027host\u0027: share_data[\u0027host\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_9d43ce6b","line":516,"range":{"start_line":508,"start_character":7,"end_line":516,"end_character":51},"in_reply_to":"fa0719c6_25fc4371","updated":"2016-03-24 13:45:16.000000000","message":"Done","commit_id":"7d62757b49c0411ff6e4f57b38bcbaf3251ec374"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ac20ab4cf55120f7af4e4a0d70c63881a336e14b","unresolved":false,"context_lines":[{"line_number":593,"context_line":"                \u0027status\u0027: kwargs.get(\u0027status\u0027, share_instance[\u0027status\u0027]),"},{"line_number":594,"context_line":"            }"},{"line_number":595,"context_line":"        else:"},{"line_number":596,"context_line":"            share_properties \u003d {\u0027size\u0027: 0}"},{"line_number":597,"context_line":"            share_instance_properties \u003d {}"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        request_spec \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_e5efeb84","line":596,"range":{"start_line":596,"start_character":12,"end_line":596,"end_character":28},"updated":"2016-03-24 00:20:35.000000000","message":"same here.. please specify why size is required to be 0.. \n\nor modify manila/scheduler/drivers/simple.py to not expect size to be set... \n\nLine 51 on that can be:\n\n share_size \u003d share_properties.get(\u0027size\u0027) or 0\n\nhttps://github.com/openstack/manila/blob/af2e103/manila/scheduler/drivers/simple.py#L51","commit_id":"7d62757b49c0411ff6e4f57b38bcbaf3251ec374"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5adff15b9b33ca604d7d40f5d5050d2c9425d9e2","unresolved":false,"context_lines":[{"line_number":593,"context_line":"                \u0027status\u0027: kwargs.get(\u0027status\u0027, share_instance[\u0027status\u0027]),"},{"line_number":594,"context_line":"            }"},{"line_number":595,"context_line":"        else:"},{"line_number":596,"context_line":"            share_properties \u003d {\u0027size\u0027: 0}"},{"line_number":597,"context_line":"            share_instance_properties \u003d {}"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        request_spec \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_204b755a","line":596,"range":{"start_line":596,"start_character":12,"end_line":596,"end_character":28},"in_reply_to":"fa0719c6_e5efeb84","updated":"2016-03-24 13:45:16.000000000","message":"I prefer to write down a note here because changing the scheduler would affect every request that goes through the capacity filter, and here we are being specific when creating the minimal request spec so we want the share to be empty. If there is another scenario where a share is supplied but size is empty, this would mask errors that should be detected in the scheduler.","commit_id":"7d62757b49c0411ff6e4f57b38bcbaf3251ec374"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0663d0dc66f973ea4c9229f01534a912a2964ba5","unresolved":false,"context_lines":[{"line_number":510,"context_line":"            # provided."},{"line_number":511,"context_line":"            self.scheduler_rpcapi.manage_share(context, share_data[\u0027host\u0027],"},{"line_number":512,"context_line":"                                               request_spec)"},{"line_number":513,"context_line":"        except exception.NoValidHost:"},{"line_number":514,"context_line":"            msg \u003d _(\u0027Host %(host)s did not pass validation for managing share \u0027"},{"line_number":515,"context_line":"                    \u0027with type %(type)s.\u0027) % {"},{"line_number":516,"context_line":"                \u0027host\u0027: share_data[\u0027host\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_766ff7fb","line":513,"range":{"start_line":513,"start_character":25,"end_line":513,"end_character":36},"updated":"2016-03-24 14:02:41.000000000","message":"This will give you HTTPBadRequest.. are we fine with that? You\u0027re expecting HTTPConflict in the tempest test.. \n\nhttps://github.com/openstack/manila/blob/master/manila_tempest_tests/tests/api/admin/test_share_manage.py#L164","commit_id":"07504c3af6397a31ac4d9799f37d66ae48c9dd0a"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"b77a7fbdd04d42eed9e5878296ffb13c3e67b09c","unresolved":false,"context_lines":[{"line_number":510,"context_line":"            # provided."},{"line_number":511,"context_line":"            self.scheduler_rpcapi.manage_share(context, share_data[\u0027host\u0027],"},{"line_number":512,"context_line":"                                               request_spec)"},{"line_number":513,"context_line":"        except exception.NoValidHost:"},{"line_number":514,"context_line":"            msg \u003d _(\u0027Host %(host)s did not pass validation for managing share \u0027"},{"line_number":515,"context_line":"                    \u0027with type %(type)s.\u0027) % {"},{"line_number":516,"context_line":"                \u0027host\u0027: share_data[\u0027host\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_3d8557ce","line":513,"range":{"start_line":513,"start_character":25,"end_line":513,"end_character":36},"in_reply_to":"fa0719c6_766ff7fb","updated":"2016-03-24 16:01:37.000000000","message":"Fixed in API catch block.","commit_id":"07504c3af6397a31ac4d9799f37d66ae48c9dd0a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"47b76c32a4b5764efb02dad67a4c34a520ff44f8","unresolved":false,"context_lines":[{"line_number":503,"context_line":"        if share_type_id:"},{"line_number":504,"context_line":"            share_type \u003d share_types.get_share_type(context, share_type_id)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        request_spec \u003d self._get_request_spec_dict(None, share_type)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        try:"},{"line_number":509,"context_line":"            # NOTE(ganso): Validating if share type provided can fit in host"}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_bf9adfc3","line":506,"range":{"start_line":506,"start_character":51,"end_line":506,"end_character":55},"updated":"2016-03-24 17:39:09.000000000","message":"share_data info should be used instead of None. For the moment, it is possible to schedule \"CIFS\" share on NFS-only backend.","commit_id":"3498742c7ef077e21bea2647d8da018f547ce1e7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"3acd67aa2b3ef2121f28ebac6d5618060fb8862f","unresolved":false,"context_lines":[{"line_number":503,"context_line":"        if share_type_id:"},{"line_number":504,"context_line":"            share_type \u003d share_types.get_share_type(context, share_type_id)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        request_spec \u003d self._get_request_spec_dict(None, share_type)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        try:"},{"line_number":509,"context_line":"            # NOTE(ganso): Validating if share type provided can fit in host"}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_6226e717","line":506,"range":{"start_line":506,"start_character":51,"end_line":506,"end_character":55},"in_reply_to":"da0c15f0_bf9adfc3","updated":"2016-03-24 19:46:51.000000000","message":"Done","commit_id":"3498742c7ef077e21bea2647d8da018f547ce1e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a1d95907fccfc12ab5419403f2b39b82df60000e","unresolved":false,"context_lines":[{"line_number":498,"context_line":"    def manage(self, context, share_data, driver_options):"},{"line_number":499,"context_line":"        policy.check_policy(context, \u0027share\u0027, \u0027manage\u0027)"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        share_type \u003d {}"},{"line_number":502,"context_line":"        share_type_id \u003d share_data[\u0027share_type_id\u0027]"},{"line_number":503,"context_line":"        if share_type_id:"},{"line_number":504,"context_line":"            share_type \u003d share_types.get_share_type(context, share_type_id)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        shares \u003d self.get_all(context, {"},{"line_number":507,"context_line":"            \u0027host\u0027: share_data[\u0027host\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_58963295","line":504,"range":{"start_line":501,"start_character":8,"end_line":504,"end_character":75},"updated":"2016-03-28 18:59:26.000000000","message":"Is this move relevant any more?","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a1d95907fccfc12ab5419403f2b39b82df60000e","unresolved":false,"context_lines":[{"line_number":498,"context_line":"    def manage(self, context, share_data, driver_options):"},{"line_number":499,"context_line":"        policy.check_policy(context, \u0027share\u0027, \u0027manage\u0027)"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        share_type \u003d {}"},{"line_number":502,"context_line":"        share_type_id \u003d share_data[\u0027share_type_id\u0027]"},{"line_number":503,"context_line":"        if share_type_id:"},{"line_number":504,"context_line":"            share_type \u003d share_types.get_share_type(context, share_type_id)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        shares \u003d self.get_all(context, {"},{"line_number":507,"context_line":"            \u0027host\u0027: share_data[\u0027host\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_78b6963e","line":504,"range":{"start_line":501,"start_character":8,"end_line":504,"end_character":75},"updated":"2016-03-28 18:59:26.000000000","message":"is this move (","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c2601656756f8893a609edc857d22192ef7a44b7","unresolved":false,"context_lines":[{"line_number":498,"context_line":"    def manage(self, context, share_data, driver_options):"},{"line_number":499,"context_line":"        policy.check_policy(context, \u0027share\u0027, \u0027manage\u0027)"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        share_type \u003d {}"},{"line_number":502,"context_line":"        share_type_id \u003d share_data[\u0027share_type_id\u0027]"},{"line_number":503,"context_line":"        if share_type_id:"},{"line_number":504,"context_line":"            share_type \u003d share_types.get_share_type(context, share_type_id)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        shares \u003d self.get_all(context, {"},{"line_number":507,"context_line":"            \u0027host\u0027: share_data[\u0027host\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_afc72644","line":504,"range":{"start_line":501,"start_character":8,"end_line":504,"end_character":75},"in_reply_to":"ba0121b8_0a18dd83","updated":"2016-03-29 19:25:10.000000000","message":"Done","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"35d1a5244f458b88281b16fe9ff8aea0fc704fc0","unresolved":false,"context_lines":[{"line_number":498,"context_line":"    def manage(self, context, share_data, driver_options):"},{"line_number":499,"context_line":"        policy.check_policy(context, \u0027share\u0027, \u0027manage\u0027)"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        share_type \u003d {}"},{"line_number":502,"context_line":"        share_type_id \u003d share_data[\u0027share_type_id\u0027]"},{"line_number":503,"context_line":"        if share_type_id:"},{"line_number":504,"context_line":"            share_type \u003d share_types.get_share_type(context, share_type_id)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        shares \u003d self.get_all(context, {"},{"line_number":507,"context_line":"            \u0027host\u0027: share_data[\u0027host\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_0a18dd83","line":504,"range":{"start_line":501,"start_character":8,"end_line":504,"end_character":75},"in_reply_to":"ba0121b8_78b6963e","updated":"2016-03-28 22:02:05.000000000","message":"Agree: now moving this block of code doesn\u0027t make any difference and therefore obscures the changes that do make a difference.","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a1d95907fccfc12ab5419403f2b39b82df60000e","unresolved":false,"context_lines":[{"line_number":596,"context_line":"            \u0027share_properties\u0027: share_properties,"},{"line_number":597,"context_line":"            \u0027share_instance_properties\u0027: share_instance_properties,"},{"line_number":598,"context_line":"            \u0027share_type\u0027: share_type,"},{"line_number":599,"context_line":"            \u0027share_id\u0027: share.get(\u0027id\u0027)"},{"line_number":600,"context_line":"        }"},{"line_number":601,"context_line":"        return request_spec"},{"line_number":602,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_1512c362","line":599,"range":{"start_line":599,"start_character":37,"end_line":599,"end_character":39},"updated":"2016-03-28 18:59:26.000000000","message":"add trailing comma","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c2601656756f8893a609edc857d22192ef7a44b7","unresolved":false,"context_lines":[{"line_number":596,"context_line":"            \u0027share_properties\u0027: share_properties,"},{"line_number":597,"context_line":"            \u0027share_instance_properties\u0027: share_instance_properties,"},{"line_number":598,"context_line":"            \u0027share_type\u0027: share_type,"},{"line_number":599,"context_line":"            \u0027share_id\u0027: share.get(\u0027id\u0027)"},{"line_number":600,"context_line":"        }"},{"line_number":601,"context_line":"        return request_spec"},{"line_number":602,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_cfd1bafd","line":599,"range":{"start_line":599,"start_character":37,"end_line":599,"end_character":39},"in_reply_to":"ba0121b8_1512c362","updated":"2016-03-29 19:25:10.000000000","message":"Done","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"}],"manila/tests/api/v1/test_share_manage.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0663d0dc66f973ea4c9229f01534a912a2964ba5","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        body \u003d get_fake_manage_body()"},{"line_number":117,"context_line":"        self._setup_manage_mocks()"},{"line_number":118,"context_line":"        self.mock_object(share_api.API, \u0027manage\u0027,"},{"line_number":119,"context_line":"                         mock.Mock(side_effect\u003dexception.InvalidShare(\"fake\")))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        self.assertRaises(webob.exc.HTTPConflict,"},{"line_number":122,"context_line":"                          self.controller.create,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_561bd380","line":119,"range":{"start_line":119,"start_character":57,"end_line":119,"end_character":69},"updated":"2016-03-24 14:02:41.000000000","message":"reason\u003d\u0027fake\u0027","commit_id":"07504c3af6397a31ac4d9799f37d66ae48c9dd0a"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"b77a7fbdd04d42eed9e5878296ffb13c3e67b09c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        body \u003d get_fake_manage_body()"},{"line_number":117,"context_line":"        self._setup_manage_mocks()"},{"line_number":118,"context_line":"        self.mock_object(share_api.API, \u0027manage\u0027,"},{"line_number":119,"context_line":"                         mock.Mock(side_effect\u003dexception.InvalidShare(\"fake\")))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        self.assertRaises(webob.exc.HTTPConflict,"},{"line_number":122,"context_line":"                          self.controller.create,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_3d14374b","line":119,"range":{"start_line":119,"start_character":57,"end_line":119,"end_character":69},"in_reply_to":"fa0719c6_561bd380","updated":"2016-03-24 16:01:37.000000000","message":"Done","commit_id":"07504c3af6397a31ac4d9799f37d66ae48c9dd0a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"47b76c32a4b5764efb02dad67a4c34a520ff44f8","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    def test_share_manage_duplicate_share(self):"},{"line_number":116,"context_line":"        body \u003d get_fake_manage_body()"},{"line_number":117,"context_line":"        self._setup_manage_mocks()"},{"line_number":118,"context_line":"        self.mock_object("},{"line_number":119,"context_line":"            share_api.API, \u0027manage\u0027,"},{"line_number":120,"context_line":"            mock.Mock(side_effect\u003dexception.InvalidShare(reason\u003d\"fake\")))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self.assertRaises(webob.exc.HTTPConflict,"},{"line_number":123,"context_line":"                          self.controller.create,"}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_3f688fba","line":120,"range":{"start_line":118,"start_character":8,"end_line":120,"end_character":73},"updated":"2016-03-24 17:39:09.000000000","message":"you catch there two different exceptions, so, need to cover both.","commit_id":"3498742c7ef077e21bea2647d8da018f547ce1e7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"3acd67aa2b3ef2121f28ebac6d5618060fb8862f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    def test_share_manage_duplicate_share(self):"},{"line_number":116,"context_line":"        body \u003d get_fake_manage_body()"},{"line_number":117,"context_line":"        self._setup_manage_mocks()"},{"line_number":118,"context_line":"        self.mock_object("},{"line_number":119,"context_line":"            share_api.API, \u0027manage\u0027,"},{"line_number":120,"context_line":"            mock.Mock(side_effect\u003dexception.InvalidShare(reason\u003d\"fake\")))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self.assertRaises(webob.exc.HTTPConflict,"},{"line_number":123,"context_line":"                          self.controller.create,"}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_023a8b36","line":120,"range":{"start_line":118,"start_character":8,"end_line":120,"end_character":73},"in_reply_to":"da0c15f0_3f688fba","updated":"2016-03-24 19:46:51.000000000","message":"Done","commit_id":"3498742c7ef077e21bea2647d8da018f547ce1e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a1d95907fccfc12ab5419403f2b39b82df60000e","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        body \u003d get_fake_manage_body()"},{"line_number":117,"context_line":"        self._setup_manage_mocks()"},{"line_number":118,"context_line":"        self.mock_object(share_api.API, \u0027manage\u0027,"},{"line_number":119,"context_line":"                         mock.Mock(side_effect\u003dexception.InvalidShare("},{"line_number":120,"context_line":"                             reason\u003d\"fake\")))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self.assertRaises(webob.exc.HTTPConflict,"},{"line_number":123,"context_line":"                          self.controller.create,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_f85bc62c","line":120,"range":{"start_line":119,"start_character":58,"end_line":120,"end_character":42},"updated":"2016-03-28 18:59:26.000000000","message":"nit: Assign this to a variable so that the wrapping isn\u0027t wonky.. \n\n    exc \u003d exception.InvalidShare(reason\u003d\u0027fake\u0027)\n    self.mock_object(share_api.API, \u0027manage\u0027, mock.Mock(side_effect\u003dexc))","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c2601656756f8893a609edc857d22192ef7a44b7","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        body \u003d get_fake_manage_body()"},{"line_number":117,"context_line":"        self._setup_manage_mocks()"},{"line_number":118,"context_line":"        self.mock_object(share_api.API, \u0027manage\u0027,"},{"line_number":119,"context_line":"                         mock.Mock(side_effect\u003dexception.InvalidShare("},{"line_number":120,"context_line":"                             reason\u003d\"fake\")))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self.assertRaises(webob.exc.HTTPConflict,"},{"line_number":123,"context_line":"                          self.controller.create,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_8f0ce295","line":120,"range":{"start_line":119,"start_character":58,"end_line":120,"end_character":42},"in_reply_to":"ba0121b8_f85bc62c","updated":"2016-03-29 19:25:10.000000000","message":"Done","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"}],"manila/tests/api/v2/test_shares.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0663d0dc66f973ea4c9229f01534a912a2964ba5","unresolved":false,"context_lines":[{"line_number":1817,"context_line":"        body \u003d get_fake_manage_body()"},{"line_number":1818,"context_line":"        self._setup_manage_mocks()"},{"line_number":1819,"context_line":"        self.mock_object(share_api.API, \u0027manage\u0027,"},{"line_number":1820,"context_line":"                         mock.Mock(side_effect\u003dexception.InvalidShare(\"fake\")))"},{"line_number":1821,"context_line":""},{"line_number":1822,"context_line":"        self.assertRaises(webob.exc.HTTPConflict,"},{"line_number":1823,"context_line":"                          self.controller.manage,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_7614174c","line":1820,"range":{"start_line":1820,"start_character":71,"end_line":1820,"end_character":75},"updated":"2016-03-24 14:02:41.000000000","message":"reason\u003d\u0027fake\u0027","commit_id":"07504c3af6397a31ac4d9799f37d66ae48c9dd0a"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"b77a7fbdd04d42eed9e5878296ffb13c3e67b09c","unresolved":false,"context_lines":[{"line_number":1817,"context_line":"        body \u003d get_fake_manage_body()"},{"line_number":1818,"context_line":"        self._setup_manage_mocks()"},{"line_number":1819,"context_line":"        self.mock_object(share_api.API, \u0027manage\u0027,"},{"line_number":1820,"context_line":"                         mock.Mock(side_effect\u003dexception.InvalidShare(\"fake\")))"},{"line_number":1821,"context_line":""},{"line_number":1822,"context_line":"        self.assertRaises(webob.exc.HTTPConflict,"},{"line_number":1823,"context_line":"                          self.controller.manage,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_1d1b3382","line":1820,"range":{"start_line":1820,"start_character":71,"end_line":1820,"end_character":75},"in_reply_to":"fa0719c6_7614174c","updated":"2016-03-24 16:01:37.000000000","message":"Done","commit_id":"07504c3af6397a31ac4d9799f37d66ae48c9dd0a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"47b76c32a4b5764efb02dad67a4c34a520ff44f8","unresolved":false,"context_lines":[{"line_number":1816,"context_line":"    def test_share_manage_duplicate_share(self):"},{"line_number":1817,"context_line":"        body \u003d get_fake_manage_body()"},{"line_number":1818,"context_line":"        self._setup_manage_mocks()"},{"line_number":1819,"context_line":"        self.mock_object("},{"line_number":1820,"context_line":"            share_api.API, \u0027manage\u0027,"},{"line_number":1821,"context_line":"            mock.Mock(side_effect\u003dexception.InvalidShare(reason\u003d\"fake\")))"},{"line_number":1822,"context_line":""},{"line_number":1823,"context_line":"        self.assertRaises(webob.exc.HTTPConflict,"},{"line_number":1824,"context_line":"                          self.controller.manage,"}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_fff29705","line":1821,"range":{"start_line":1819,"start_character":8,"end_line":1821,"end_character":73},"updated":"2016-03-24 17:39:09.000000000","message":"same as in https://review.openstack.org/#/c/296706/6/manila/tests/api/v1/test_share_manage.py","commit_id":"3498742c7ef077e21bea2647d8da018f547ce1e7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"3acd67aa2b3ef2121f28ebac6d5618060fb8862f","unresolved":false,"context_lines":[{"line_number":1816,"context_line":"    def test_share_manage_duplicate_share(self):"},{"line_number":1817,"context_line":"        body \u003d get_fake_manage_body()"},{"line_number":1818,"context_line":"        self._setup_manage_mocks()"},{"line_number":1819,"context_line":"        self.mock_object("},{"line_number":1820,"context_line":"            share_api.API, \u0027manage\u0027,"},{"line_number":1821,"context_line":"            mock.Mock(side_effect\u003dexception.InvalidShare(reason\u003d\"fake\")))"},{"line_number":1822,"context_line":""},{"line_number":1823,"context_line":"        self.assertRaises(webob.exc.HTTPConflict,"},{"line_number":1824,"context_line":"                          self.controller.manage,"}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_423c832f","line":1821,"range":{"start_line":1819,"start_character":8,"end_line":1821,"end_character":73},"in_reply_to":"da0c15f0_fff29705","updated":"2016-03-24 19:46:51.000000000","message":"Done","commit_id":"3498742c7ef077e21bea2647d8da018f547ce1e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a1d95907fccfc12ab5419403f2b39b82df60000e","unresolved":false,"context_lines":[{"line_number":1818,"context_line":"        self._setup_manage_mocks()"},{"line_number":1819,"context_line":"        self.mock_object(share_api.API, \u0027manage\u0027,"},{"line_number":1820,"context_line":"                         mock.Mock(side_effect\u003dexception.InvalidShare("},{"line_number":1821,"context_line":"                             reason\u003d\"fake\")))"},{"line_number":1822,"context_line":""},{"line_number":1823,"context_line":"        self.assertRaises(webob.exc.HTTPConflict,"},{"line_number":1824,"context_line":"                          self.controller.manage,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_58411239","line":1821,"range":{"start_line":1821,"start_character":31,"end_line":1821,"end_character":43},"updated":"2016-03-28 18:59:26.000000000","message":"same","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c2601656756f8893a609edc857d22192ef7a44b7","unresolved":false,"context_lines":[{"line_number":1818,"context_line":"        self._setup_manage_mocks()"},{"line_number":1819,"context_line":"        self.mock_object(share_api.API, \u0027manage\u0027,"},{"line_number":1820,"context_line":"                         mock.Mock(side_effect\u003dexception.InvalidShare("},{"line_number":1821,"context_line":"                             reason\u003d\"fake\")))"},{"line_number":1822,"context_line":""},{"line_number":1823,"context_line":"        self.assertRaises(webob.exc.HTTPConflict,"},{"line_number":1824,"context_line":"                          self.controller.manage,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_2f7e76e4","line":1821,"range":{"start_line":1821,"start_character":31,"end_line":1821,"end_character":43},"in_reply_to":"ba0121b8_58411239","updated":"2016-03-29 19:25:10.000000000","message":"Done","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"}],"manila/tests/scheduler/test_manager.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ac20ab4cf55120f7af4e4a0d70c63881a336e14b","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        self.manager.manage_share(self.context, \u0027host\u0027, {}, None)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        base.Scheduler.host_passes_filters.assert_called_once_with("},{"line_number":253,"context_line":"            self.context, \u0027host\u0027, {}, None)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def test_create_share_replica_exception_path(self):"},{"line_number":256,"context_line":"        \"\"\"Test \u0027raisable\u0027 exceptions for create_share_replica.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_25428368","line":253,"range":{"start_line":253,"start_character":0,"end_line":253,"end_character":43},"updated":"2016-03-24 00:20:35.000000000","message":"You should add the exception path unit test here..","commit_id":"7d62757b49c0411ff6e4f57b38bcbaf3251ec374"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5adff15b9b33ca604d7d40f5d5050d2c9425d9e2","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        self.manager.manage_share(self.context, \u0027host\u0027, {}, None)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        base.Scheduler.host_passes_filters.assert_called_once_with("},{"line_number":253,"context_line":"            self.context, \u0027host\u0027, {}, None)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def test_create_share_replica_exception_path(self):"},{"line_number":256,"context_line":"        \"\"\"Test \u0027raisable\u0027 exceptions for create_share_replica.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_a0f2e503","line":253,"range":{"start_line":253,"start_character":0,"end_line":253,"end_character":43},"in_reply_to":"fa0719c6_25428368","updated":"2016-03-24 13:45:16.000000000","message":"Done","commit_id":"7d62757b49c0411ff6e4f57b38bcbaf3251ec374"}],"manila/tests/share/test_api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ac20ab4cf55120f7af4e4a0d70c63881a336e14b","unresolved":false,"context_lines":[{"line_number":754,"context_line":""},{"line_number":755,"context_line":"        if exc:"},{"line_number":756,"context_line":"            self.mock_object(self.scheduler_rpcapi, \u0027manage_share\u0027,"},{"line_number":757,"context_line":"                             mock.Mock(side_effect\u003dexception.NoValidHost))"},{"line_number":758,"context_line":"        else:"},{"line_number":759,"context_line":"            self.mock_object(self.share_rpcapi, \u0027manage_share\u0027)"},{"line_number":760,"context_line":"            self.mock_object(db_api, \u0027share_create\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_65275bca","line":757,"range":{"start_line":757,"start_character":51,"end_line":757,"end_character":72},"updated":"2016-03-24 00:20:35.000000000","message":"This isn\u0027t the only kind of exception possible..","commit_id":"7d62757b49c0411ff6e4f57b38bcbaf3251ec374"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5adff15b9b33ca604d7d40f5d5050d2c9425d9e2","unresolved":false,"context_lines":[{"line_number":754,"context_line":""},{"line_number":755,"context_line":"        if exc:"},{"line_number":756,"context_line":"            self.mock_object(self.scheduler_rpcapi, \u0027manage_share\u0027,"},{"line_number":757,"context_line":"                             mock.Mock(side_effect\u003dexception.NoValidHost))"},{"line_number":758,"context_line":"        else:"},{"line_number":759,"context_line":"            self.mock_object(self.share_rpcapi, \u0027manage_share\u0027)"},{"line_number":760,"context_line":"            self.mock_object(db_api, \u0027share_create\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_a0fdc56f","line":757,"range":{"start_line":757,"start_character":51,"end_line":757,"end_character":72},"in_reply_to":"fa0719c6_65275bca","updated":"2016-03-24 13:45:16.000000000","message":"Done","commit_id":"7d62757b49c0411ff6e4f57b38bcbaf3251ec374"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0663d0dc66f973ea4c9229f01534a912a2964ba5","unresolved":false,"context_lines":[{"line_number":755,"context_line":"        if exc \u003d\u003d \u0027no_valid_host\u0027:"},{"line_number":756,"context_line":"            self.mock_object(self.scheduler_rpcapi, \u0027manage_share\u0027,"},{"line_number":757,"context_line":"                             mock.Mock("},{"line_number":758,"context_line":"                                 side_effect\u003dexception.NoValidHost(\"fake\")))"},{"line_number":759,"context_line":"        elif exc \u003d\u003d \u0027other_exception\u0027:"},{"line_number":760,"context_line":"            self.mock_object(self.scheduler_rpcapi, \u0027manage_share\u0027,"},{"line_number":761,"context_line":"                             mock.Mock("}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_963a8be5","line":758,"range":{"start_line":758,"start_character":55,"end_line":758,"end_character":66},"updated":"2016-03-24 14:02:41.000000000","message":"reason\u003d\u0027fake\u0027","commit_id":"07504c3af6397a31ac4d9799f37d66ae48c9dd0a"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"b77a7fbdd04d42eed9e5878296ffb13c3e67b09c","unresolved":false,"context_lines":[{"line_number":755,"context_line":"        if exc \u003d\u003d \u0027no_valid_host\u0027:"},{"line_number":756,"context_line":"            self.mock_object(self.scheduler_rpcapi, \u0027manage_share\u0027,"},{"line_number":757,"context_line":"                             mock.Mock("},{"line_number":758,"context_line":"                                 side_effect\u003dexception.NoValidHost(\"fake\")))"},{"line_number":759,"context_line":"        elif exc \u003d\u003d \u0027other_exception\u0027:"},{"line_number":760,"context_line":"            self.mock_object(self.scheduler_rpcapi, \u0027manage_share\u0027,"},{"line_number":761,"context_line":"                             mock.Mock("}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_5d6c8b07","line":758,"range":{"start_line":758,"start_character":55,"end_line":758,"end_character":66},"in_reply_to":"fa0719c6_963a8be5","updated":"2016-03-24 16:01:37.000000000","message":"Done","commit_id":"07504c3af6397a31ac4d9799f37d66ae48c9dd0a"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"35d1a5244f458b88281b16fe9ff8aea0fc704fc0","unresolved":false,"context_lines":[{"line_number":733,"context_line":"            \u0027host\u0027: \u0027fake\u0027,"},{"line_number":734,"context_line":"            \u0027export_location\u0027: \u0027fake\u0027,"},{"line_number":735,"context_line":"            \u0027share_proto\u0027: \u0027fake\u0027,"},{"line_number":736,"context_line":"            \u0027share_type_id\u0027: \u0027fake\u0027,"},{"line_number":737,"context_line":"        }"},{"line_number":738,"context_line":"        driver_options \u003d {}"},{"line_number":739,"context_line":"        date \u003d datetime.datetime(1, 1, 1, 1, 1, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_8d77e7d3","line":736,"updated":"2016-03-28 22:02:05.000000000","message":"Just FYI: b/c we are using oslo versioned objects in Cinder, we are having to go through and change these fake uuid fields to use (still fake but) valid uuid values.","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c2601656756f8893a609edc857d22192ef7a44b7","unresolved":false,"context_lines":[{"line_number":733,"context_line":"            \u0027host\u0027: \u0027fake\u0027,"},{"line_number":734,"context_line":"            \u0027export_location\u0027: \u0027fake\u0027,"},{"line_number":735,"context_line":"            \u0027share_proto\u0027: \u0027fake\u0027,"},{"line_number":736,"context_line":"            \u0027share_type_id\u0027: \u0027fake\u0027,"},{"line_number":737,"context_line":"        }"},{"line_number":738,"context_line":"        driver_options \u003d {}"},{"line_number":739,"context_line":"        date \u003d datetime.datetime(1, 1, 1, 1, 1, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_af5ba653","line":736,"in_reply_to":"ba0121b8_8d77e7d3","updated":"2016-03-29 19:25:10.000000000","message":"thanks for pointing this out. We usually have new code using db_utils which create DB model objects, with proper uuid values. I guess whoever adds a uuid validation will have to fix the unit tests in the related change.","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a1d95907fccfc12ab5419403f2b39b82df60000e","unresolved":false,"context_lines":[{"line_number":896,"context_line":"            \u0027share_properties\u0027: share_properties,"},{"line_number":897,"context_line":"            \u0027share_instance_properties\u0027: share_instance_properties,"},{"line_number":898,"context_line":"            \u0027share_type\u0027: share_type,"},{"line_number":899,"context_line":"            \u0027share_id\u0027: share.get(\u0027id\u0027)"},{"line_number":900,"context_line":"        }"},{"line_number":901,"context_line":"        return request_spec"},{"line_number":902,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_785fb60e","line":899,"range":{"start_line":899,"start_character":37,"end_line":899,"end_character":39},"updated":"2016-03-28 18:59:26.000000000","message":"trailing comma","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c2601656756f8893a609edc857d22192ef7a44b7","unresolved":false,"context_lines":[{"line_number":896,"context_line":"            \u0027share_properties\u0027: share_properties,"},{"line_number":897,"context_line":"            \u0027share_instance_properties\u0027: share_instance_properties,"},{"line_number":898,"context_line":"            \u0027share_type\u0027: share_type,"},{"line_number":899,"context_line":"            \u0027share_id\u0027: share.get(\u0027id\u0027)"},{"line_number":900,"context_line":"        }"},{"line_number":901,"context_line":"        return request_spec"},{"line_number":902,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_cf025a3e","line":899,"range":{"start_line":899,"start_character":37,"end_line":899,"end_character":39},"in_reply_to":"ba0121b8_785fb60e","updated":"2016-03-29 19:25:10.000000000","message":"Done","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"}],"manila_tempest_tests/tests/api/admin/test_share_manage.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4861d739d89c1faa2e77d4db079f95568162c0f","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                share_type_id\u003dshare_type_id)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"            # Add managed share to cleanup queue"},{"line_number":175,"context_line":"            self.method_resources.insert("},{"line_number":176,"context_line":"                0, {\u0027type\u0027: \u0027share\u0027, \u0027id\u0027: share[\u0027id\u0027],"},{"line_number":177,"context_line":"                    \u0027client\u0027: self.shares_v2_client})"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"            # Wait for success"},{"line_number":180,"context_line":"            self.shares_v2_client.wait_for_share_status(share[\u0027id\u0027], status)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_e2dcb71a","line":177,"range":{"start_line":175,"start_character":12,"end_line":177,"end_character":53},"updated":"2016-03-28 18:19:12.000000000","message":"This will conflict with line 183.","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c2601656756f8893a609edc857d22192ef7a44b7","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                share_type_id\u003dshare_type_id)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"            # Add managed share to cleanup queue"},{"line_number":175,"context_line":"            self.method_resources.insert("},{"line_number":176,"context_line":"                0, {\u0027type\u0027: \u0027share\u0027, \u0027id\u0027: share[\u0027id\u0027],"},{"line_number":177,"context_line":"                    \u0027client\u0027: self.shares_v2_client})"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"            # Wait for success"},{"line_number":180,"context_line":"            self.shares_v2_client.wait_for_share_status(share[\u0027id\u0027], status)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_eaee2ceb","line":177,"range":{"start_line":175,"start_character":12,"end_line":177,"end_character":53},"in_reply_to":"ba0121b8_e2dcb71a","updated":"2016-03-29 19:25:10.000000000","message":"Humm I just reverted this test to before the initial fix, guess this problem was already here, but did not have cleanup problems before? o_O","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4861d739d89c1faa2e77d4db079f95568162c0f","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        self._test_manage(share\u003dself.shares[0])"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    @test.attr(type\u003d[\"gate\", \"smoke\"])"},{"line_number":160,"context_line":"    def test_manage_retry(self):"},{"line_number":161,"context_line":"        # Manage share with invalid parameters"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        share \u003d None"},{"line_number":164,"context_line":"        parameters \u003d [(self.st_invalid[\u0027share_type\u0027][\u0027id\u0027], \u0027manage_error\u0027),"},{"line_number":165,"context_line":"                      (self.st[\u0027share_type\u0027][\u0027id\u0027], \u0027available\u0027)]"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        for share_type_id, status in parameters:"},{"line_number":168,"context_line":"            share \u003d self.shares_v2_client.manage_share("},{"line_number":169,"context_line":"                service_host\u003dself.shares[1][\u0027host\u0027],"},{"line_number":170,"context_line":"                export_path\u003dself.shares[1][\u0027export_locations\u0027][0],"},{"line_number":171,"context_line":"                protocol\u003dself.shares[1][\u0027share_proto\u0027],"},{"line_number":172,"context_line":"                share_type_id\u003dshare_type_id)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"            # Add managed share to cleanup queue"},{"line_number":175,"context_line":"            self.method_resources.insert("},{"line_number":176,"context_line":"                0, {\u0027type\u0027: \u0027share\u0027, \u0027id\u0027: share[\u0027id\u0027],"},{"line_number":177,"context_line":"                    \u0027client\u0027: self.shares_v2_client})"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"            # Wait for success"},{"line_number":180,"context_line":"            self.shares_v2_client.wait_for_share_status(share[\u0027id\u0027], status)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # Delete share"},{"line_number":183,"context_line":"        self.shares_v2_client.delete_share(share[\u0027id\u0027])"},{"line_number":184,"context_line":"        self.shares_v2_client.wait_for_resource_deletion(share_id\u003dshare[\u0027id\u0027])"},{"line_number":185,"context_line":"        self.assertRaises(lib_exc.NotFound,"},{"line_number":186,"context_line":"                          self.shares_v2_client.get_share,"},{"line_number":187,"context_line":"                          share[\u0027id\u0027])"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"class ManageCIFSShareTest(ManageNFSShareTest):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_42c76345","line":187,"range":{"start_line":159,"start_character":0,"end_line":187,"end_character":38},"updated":"2016-03-28 18:19:12.000000000","message":"This needs to be two separate tests... \n\n    test_manage_invalid_share_type\n\nand \n\n\n    test_manage_with_share_type","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"35d1a5244f458b88281b16fe9ff8aea0fc704fc0","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        self._test_manage(share\u003dself.shares[0])"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    @test.attr(type\u003d[\"gate\", \"smoke\"])"},{"line_number":160,"context_line":"    def test_manage_retry(self):"},{"line_number":161,"context_line":"        # Manage share with invalid parameters"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        share \u003d None"},{"line_number":164,"context_line":"        parameters \u003d [(self.st_invalid[\u0027share_type\u0027][\u0027id\u0027], \u0027manage_error\u0027),"},{"line_number":165,"context_line":"                      (self.st[\u0027share_type\u0027][\u0027id\u0027], \u0027available\u0027)]"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        for share_type_id, status in parameters:"},{"line_number":168,"context_line":"            share \u003d self.shares_v2_client.manage_share("},{"line_number":169,"context_line":"                service_host\u003dself.shares[1][\u0027host\u0027],"},{"line_number":170,"context_line":"                export_path\u003dself.shares[1][\u0027export_locations\u0027][0],"},{"line_number":171,"context_line":"                protocol\u003dself.shares[1][\u0027share_proto\u0027],"},{"line_number":172,"context_line":"                share_type_id\u003dshare_type_id)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"            # Add managed share to cleanup queue"},{"line_number":175,"context_line":"            self.method_resources.insert("},{"line_number":176,"context_line":"                0, {\u0027type\u0027: \u0027share\u0027, \u0027id\u0027: share[\u0027id\u0027],"},{"line_number":177,"context_line":"                    \u0027client\u0027: self.shares_v2_client})"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"            # Wait for success"},{"line_number":180,"context_line":"            self.shares_v2_client.wait_for_share_status(share[\u0027id\u0027], status)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # Delete share"},{"line_number":183,"context_line":"        self.shares_v2_client.delete_share(share[\u0027id\u0027])"},{"line_number":184,"context_line":"        self.shares_v2_client.wait_for_resource_deletion(share_id\u003dshare[\u0027id\u0027])"},{"line_number":185,"context_line":"        self.assertRaises(lib_exc.NotFound,"},{"line_number":186,"context_line":"                          self.shares_v2_client.get_share,"},{"line_number":187,"context_line":"                          share[\u0027id\u0027])"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"class ManageCIFSShareTest(ManageNFSShareTest):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_10264aba","line":187,"range":{"start_line":159,"start_character":0,"end_line":187,"end_character":38},"in_reply_to":"ba0121b8_42c76345","updated":"2016-03-28 22:02:05.000000000","message":"+1","commit_id":"3ab2e53f1f196dc5453f4918dca38da142ea3d52"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e54de2ac7edbb4e2611708169728ee3ff7ecf698","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                          share[\u0027id\u0027])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    @test.attr(type\u003d[\"gate\", \"smoke\", ])"},{"line_number":181,"context_line":"    def test_manage_with_type(self):"},{"line_number":182,"context_line":"        # Manage share with type"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        share \u003d self.shares_v2_client.manage_share("}],"source_content_type":"text/x-python","patch_set":11,"id":"ba0121b8_6a5d8714","line":181,"range":{"start_line":181,"start_character":8,"end_line":181,"end_character":29},"updated":"2016-03-31 07:15:19.000000000","message":"1) This test and above one will always run in one thread.\n\n2) This one will always run first.\n\n3) You use same share for both tests (self.shares[1]).\n\n4) Share after this test is deleted.\n\n5) Above test will return \"manage_error\" always. As share that is going to be managed is deleted in this test, always.\n\n6) Negative test should not be this this test module.","commit_id":"165b03e02102e7ab760ccb7f9bb24ff771d4b408"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"809eb9eaebbe71bed7d2df31683325b27c252fb7","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                          share[\u0027id\u0027])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    @test.attr(type\u003d[\"gate\", \"smoke\", ])"},{"line_number":181,"context_line":"    def test_manage_with_type(self):"},{"line_number":182,"context_line":"        # Manage share with type"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        share \u003d self.shares_v2_client.manage_share("}],"source_content_type":"text/x-python","patch_set":11,"id":"ba0121b8_f666924f","line":181,"range":{"start_line":181,"start_character":8,"end_line":181,"end_character":29},"in_reply_to":"ba0121b8_50f78558","updated":"2016-03-31 12:26:47.000000000","message":"I still think that a single negative test does not warrant a new file. We\u0027ve examples of this in other test files in manila_tempest_tests. \n\nHowever, Valeriy\u0027s right. My bad. Logs reveal that test_manage_with_type ran first and then cleaned up the share, so the other request (test_manage_type_invalid) went to manage_error in the share manager and not the scheduler as expected.. \n\n\nMaybe we should use a different share..","commit_id":"165b03e02102e7ab760ccb7f9bb24ff771d4b408"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c852a5defc025fcf7b38a2e7aa6a93980bcf1965","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                          share[\u0027id\u0027])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    @test.attr(type\u003d[\"gate\", \"smoke\", ])"},{"line_number":181,"context_line":"    def test_manage_with_type(self):"},{"line_number":182,"context_line":"        # Manage share with type"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        share \u003d self.shares_v2_client.manage_share("}],"source_content_type":"text/x-python","patch_set":11,"id":"ba0121b8_aa44adb6","line":181,"range":{"start_line":181,"start_character":8,"end_line":181,"end_character":29},"in_reply_to":"ba0121b8_5c42ff68","updated":"2016-03-31 13:24:32.000000000","message":"Thanks a lot for pointing it out! I missed it! the resources in the backend are deleted :(\n\nI will fix this in another patch.","commit_id":"165b03e02102e7ab760ccb7f9bb24ff771d4b408"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"b7e699042523f123aa02712cff2464316d739841","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                          share[\u0027id\u0027])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    @test.attr(type\u003d[\"gate\", \"smoke\", ])"},{"line_number":181,"context_line":"    def test_manage_with_type(self):"},{"line_number":182,"context_line":"        # Manage share with type"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        share \u003d self.shares_v2_client.manage_share("}],"source_content_type":"text/x-python","patch_set":11,"id":"ba0121b8_50f78558","line":181,"range":{"start_line":181,"start_character":8,"end_line":181,"end_character":29},"in_reply_to":"ba0121b8_6a5d8714","updated":"2016-03-31 12:14:25.000000000","message":"1) yes, because it in same class. But since the test is now split, should not take much longer than previous test as it was before.\n2) yes, due to name ordering.\n3) yes, it uses parameters of the previously created share because they are valid, but they do not delete or modify the share.\n4) the share created by this test is deleted, but the share created in class (self.share) is deleted during class teardown.\n5) not true, unless I am missing something. Assuming by \"above test\" you mean \"test_manage_with_type_invalid\". Also, if class share was deleted during the end of this test, it would crash the following test which uses it, it would not get to the point of manage_error.\n6) Agreed, but this was discussed in IRC and people involved in the discussion agreed that for a single test this is acceptable. I also assumed that cores who +2\u0027ed this also find this acceptable.","commit_id":"165b03e02102e7ab760ccb7f9bb24ff771d4b408"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf272f089a0663c908e8694425649de09ddf3c81","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                          share[\u0027id\u0027])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    @test.attr(type\u003d[\"gate\", \"smoke\", ])"},{"line_number":181,"context_line":"    def test_manage_with_type(self):"},{"line_number":182,"context_line":"        # Manage share with type"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        share \u003d self.shares_v2_client.manage_share("}],"source_content_type":"text/x-python","patch_set":11,"id":"ba0121b8_854d5a40","line":181,"range":{"start_line":181,"start_character":8,"end_line":181,"end_character":29},"in_reply_to":"ba0121b8_aa44adb6","updated":"2016-03-31 13:32:23.000000000","message":"Valeriy: was looking at an older log. :| Thanks for working on this again Rodrigo!","commit_id":"165b03e02102e7ab760ccb7f9bb24ff771d4b408"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cfa0d30cc3612a2ba254d510236f9309029850b6","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                          share[\u0027id\u0027])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    @test.attr(type\u003d[\"gate\", \"smoke\", ])"},{"line_number":181,"context_line":"    def test_manage_with_type(self):"},{"line_number":182,"context_line":"        # Manage share with type"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        share \u003d self.shares_v2_client.manage_share("}],"source_content_type":"text/x-python","patch_set":11,"id":"ba0121b8_5c42ff68","line":181,"range":{"start_line":181,"start_character":8,"end_line":181,"end_character":29},"in_reply_to":"ba0121b8_f666924f","updated":"2016-03-31 13:09:12.000000000","message":"Rodrigo, you \"manage\" share, then perform \"delete\" operation! You delete just managed resources. Negative test (test_manage_with_type_invalid) will always pass in this case.\n\nGoutham, I don\u0027t know where do you see errors in share manager instead of scheduler, but the point is in test that \"always passes\". Because nonexistent export location is always provided.\n\nRodrigo, to test mentioned scenario just do following:\n\n1) create share\n\n2) unmanage share (1)\n\n3) manage share (1)\n\n4) delete newly managed share (3)\n\n5) try manage share using path from step (1).","commit_id":"165b03e02102e7ab760ccb7f9bb24ff771d4b408"}]}
