)]}'
{"openstackclient/common/extension.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"97870e0db0a03228f4c7b047b14b2077adb8c466","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def get_parser(self, prog_name):"},{"line_number":31,"context_line":"        parser \u003d super(ListExtension, self).get_parser(prog_name)"},{"line_number":32,"context_line":"        parser.add_argument("},{"line_number":33,"context_line":"            \u0027--long\u0027,"},{"line_number":34,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":35,"context_line":"            default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_d45bf2f3","line":32,"updated":"2014-05-19 03:52:51.000000000","message":"another question, do we want to make the args mutually exclusive? or do we want to support multiple --service args?\n\ni.e., can someone issue list extensions --identity --volume \n\nand get back extensions for both?","commit_id":"3b6399e9a46bc9c67c48603ab98d89d14252ade0"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"97870e0db0a03228f4c7b047b14b2077adb8c466","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            default\u003dFalse,"},{"line_number":41,"context_line":"            help\u003d\u0027List extensions for the Identity API\u0027)"},{"line_number":42,"context_line":"        parser.add_argument("},{"line_number":43,"context_line":"            \u0027--network\u0027,"},{"line_number":44,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":45,"context_line":"            default\u003dFalse,"},{"line_number":46,"context_line":"            help\u003d\u0027List extensions for the Network API\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_f4146e45","line":43,"updated":"2014-05-19 03:52:51.000000000","message":"since network is not available yet, and block/volume is missing in the arg list, just replace network with volume?","commit_id":"3b6399e9a46bc9c67c48603ab98d89d14252ade0"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"97870e0db0a03228f4c7b047b14b2077adb8c466","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            default\u003dFalse,"},{"line_number":51,"context_line":"            help\u003d\u0027List extensions for the Compute API\u0027)"},{"line_number":52,"context_line":"        parser.add_argument("},{"line_number":53,"context_line":"            \u0027--all\u0027,"},{"line_number":54,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":55,"context_line":"            default\u003dFalse,"},{"line_number":56,"context_line":"            help\u003d\u0027List extensions for the all APIs\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_b45586fb","line":53,"updated":"2014-05-19 03:52:51.000000000","message":"get rid of all, make it list all by default.","commit_id":"3b6399e9a46bc9c67c48603ab98d89d14252ade0"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"97870e0db0a03228f4c7b047b14b2077adb8c466","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        data \u003d []"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        # Compute API extensions"},{"line_number":71,"context_line":"        if parsed_args.compute or parsed_args.all:"},{"line_number":72,"context_line":"            compute_client \u003d self.app.client_manager.compute"},{"line_number":73,"context_line":"            data +\u003d compute_client.extensions.list()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_4f182b75","line":70,"updated":"2014-05-19 03:52:51.000000000","message":"meh, i say get rid of these comments, it\u0027s pretty obvious","commit_id":"3b6399e9a46bc9c67c48603ab98d89d14252ade0"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"97870e0db0a03228f4c7b047b14b2077adb8c466","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        data \u003d []"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        # Compute API extensions"},{"line_number":71,"context_line":"        if parsed_args.compute or parsed_args.all:"},{"line_number":72,"context_line":"            compute_client \u003d self.app.client_manager.compute"},{"line_number":73,"context_line":"            data +\u003d compute_client.extensions.list()"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_afe52fdd","line":71,"updated":"2014-05-19 03:52:51.000000000","message":"so to list all extensions by default, i was thinking:\n\n  if parsed_args.compute or len(parsed_args) \u003d\u003d 0:","commit_id":"3b6399e9a46bc9c67c48603ab98d89d14252ade0"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"97870e0db0a03228f4c7b047b14b2077adb8c466","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # Block API extensions"},{"line_number":81,"context_line":"        if parsed_args.block or parsed_args.all:"},{"line_number":82,"context_line":"            block_client \u003d self.app.client_manager.block"},{"line_number":83,"context_line":"            data +\u003d block_client.extensions.list()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        # (mfisch) need to add network API here once it\u0027s"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_f4270e10","line":82,"updated":"2014-05-19 03:52:51.000000000","message":"i doubt block will work, volume perhaps?","commit_id":"3b6399e9a46bc9c67c48603ab98d89d14252ade0"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"97870e0db0a03228f4c7b047b14b2077adb8c466","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            block_client \u003d self.app.client_manager.block"},{"line_number":83,"context_line":"            data +\u003d block_client.extensions.list()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        # (mfisch) need to add network API here once it\u0027s"},{"line_number":86,"context_line":"        #  included in this client"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        return (columns,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_74c93e25","line":85,"updated":"2014-05-19 03:52:51.000000000","message":"mark this as a TODO\n\n# TODO(mfish) need to ..","commit_id":"3b6399e9a46bc9c67c48603ab98d89d14252ade0"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2bc132afc96cfda72b2e7061b87d2dea073ad9d9","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        # by default we want to show everything, unless the"},{"line_number":66,"context_line":"        # user specifies one or more of the APIs to show"},{"line_number":67,"context_line":"        show_all \u003d not parsed_args.compute and not \\"},{"line_number":68,"context_line":"            parsed_args.identity and not parsed_args.volume"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        if parsed_args.compute or show_all:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ae8d1ca_6dc0d77c","line":67,"updated":"2014-05-29 16:58:52.000000000","message":"wrap this with () instead of using \\","commit_id":"0321bd45f82af9b8e8c81b7811c6c587f5f698a3"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"0672927bc611a08f990c18817d32d027a3dbf08f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":35,"context_line":"            default\u003dFalse,"},{"line_number":36,"context_line":"            help\u003d\u0027List additional fields in output\u0027)"},{"line_number":37,"context_line":"        parser.add_argument("},{"line_number":38,"context_line":"            \u0027--identity\u0027,"},{"line_number":39,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":40,"context_line":"            default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_10df663c","line":37,"updated":"2014-05-29 17:36:58.000000000","message":"I had to update python-keystoneclient to get support.  Should this be dependent on updating the global requirements on python-keystoneclient?","commit_id":"c4d08265a42e07c7ca604b6967d9241dd4d1a3ba"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"0672927bc611a08f990c18817d32d027a3dbf08f","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            \u0027--volume\u0027,"},{"line_number":44,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":45,"context_line":"            default\u003dFalse,"},{"line_number":46,"context_line":"            help\u003d\u0027List extensions for the Volume API\u0027)"},{"line_number":47,"context_line":"        parser.add_argument("},{"line_number":48,"context_line":"            \u0027--compute\u0027,"},{"line_number":49,"context_line":"            action\u003d\u0027store_true\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_b016b2ef","line":46,"updated":"2014-05-29 17:36:58.000000000","message":"Running against devstack with latest python-cinderclient and python-novaclient and neither support extensions.  Basic devstack fires up cinder v1 nova v2.  Should these options be available?","commit_id":"c4d08265a42e07c7ca604b6967d9241dd4d1a3ba"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"0672927bc611a08f990c18817d32d027a3dbf08f","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        if parsed_args.compute or show_all:"},{"line_number":72,"context_line":"            compute_client \u003d self.app.client_manager.compute"},{"line_number":73,"context_line":"            data +\u003d compute_client.extensions.list()"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        if parsed_args.identity or show_all:"},{"line_number":76,"context_line":"            identity_client \u003d self.app.client_manager.identity"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_d0897e27","line":73,"updated":"2014-05-29 17:36:58.000000000","message":"I think these need to handle lack of support from the clients more gracefully.  If parsed_args.compute here and there is not support, a command error should be raised IMO.  Same with the next two.","commit_id":"c4d08265a42e07c7ca604b6967d9241dd4d1a3ba"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"55c0eb04051d047c2e585f298d58f0b1140041d8","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # by default we want to show everything, unless the"},{"line_number":67,"context_line":"        # user specifies one or more of the APIs to show"},{"line_number":68,"context_line":"        show_all \u003d (not parsed_args.compute and"},{"line_number":69,"context_line":"                    not parsed_args.identity and"},{"line_number":70,"context_line":"                    not parsed_args.volume)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        # TODO(mfisch) compute API doesn\u0027t support this yet"}],"source_content_type":"text/x-python","patch_set":10,"id":"3ae8d1ca_9168d588","line":69,"updated":"2014-05-29 20:21:12.000000000","message":"Since only identity is supported right now, maybe make only identity in the show_all for now with a TODO here.  That or chek if the user specified parse_args.compute or parsed_args.volume) before raising an exception in those cases.  As it stands now, it is always going to blow up unless the user specifies --identity.","commit_id":"4ad6c000227bc1499bc2c2b55161d68331744e72"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"aa2c5254c727e76f938fa9aabc8d664f52e9787e","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            try:"},{"line_number":75,"context_line":"                data +\u003d compute_client.extensions.list()"},{"line_number":76,"context_line":"            except Exception:"},{"line_number":77,"context_line":"                # TODO(mfisch) compute API doesn\u0027t support this yet"},{"line_number":78,"context_line":"                # therefore we only throw the exception if the user"},{"line_number":79,"context_line":"                # explicitly requests compute"},{"line_number":80,"context_line":"                if parsed_args.compute:"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_b4df710c","line":77,"updated":"2014-06-03 15:44:16.000000000","message":"nit: missing a :\n\nTODO(mfisch):","commit_id":"3850df8ac90861a00292337aa7d56d7c050bb4cf"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"aa2c5254c727e76f938fa9aabc8d664f52e9787e","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            except Exception:"},{"line_number":77,"context_line":"                # TODO(mfisch) compute API doesn\u0027t support this yet"},{"line_number":78,"context_line":"                # therefore we only throw the exception if the user"},{"line_number":79,"context_line":"                # explicitly requests compute"},{"line_number":80,"context_line":"                if parsed_args.compute:"},{"line_number":81,"context_line":"                    raise exc.CommandError("},{"line_number":82,"context_line":"                        \"Extensions list not supported by\""}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_14ebc5b0","line":79,"updated":"2014-06-03 15:44:16.000000000","message":"Is there a patch in progress, want to link it here?","commit_id":"3850df8ac90861a00292337aa7d56d7c050bb4cf"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"aa2c5254c727e76f938fa9aabc8d664f52e9787e","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            try:"},{"line_number":99,"context_line":"                data +\u003d volume_client.extensions.list()"},{"line_number":100,"context_line":"            except Exception:"},{"line_number":101,"context_line":"                # TODO(mfisch) volume API doesn\u0027t support this yet"},{"line_number":102,"context_line":"                # therefore we only throw the exception if the user"},{"line_number":103,"context_line":"                # explicitly requests volume"},{"line_number":104,"context_line":"                if parsed_args.volume:"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_34d36105","line":101,"updated":"2014-06-03 15:44:16.000000000","message":"same comments as above","commit_id":"3850df8ac90861a00292337aa7d56d7c050bb4cf"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"54b9f49867e8dd90bfd482b8604d099bd6d9510f","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            identity_client \u003d self.app.client_manager.identity"},{"line_number":89,"context_line":"            try:"},{"line_number":90,"context_line":"                data +\u003d identity_client.extensions.list()"},{"line_number":91,"context_line":"            except Exception:"},{"line_number":92,"context_line":"                raise exc.CommandError("},{"line_number":93,"context_line":"                    \"Extensions list not supported by\""},{"line_number":94,"context_line":"                    \" identity API\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_0976c806","line":91,"updated":"2014-06-06 22:23:54.000000000","message":"Do we need this try/catch?\nOnce our dependency of keystonclient is actually at 0.9.0, then this should always work.","commit_id":"a490aec80c62299f981843c9461e66ad059c470a"}],"openstackclient/tests/common/test_extension.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"97870e0db0a03228f4c7b047b14b2077adb8c466","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def test_extension_list_block(self):"},{"line_number":140,"context_line":"        arglist \u003d ["},{"line_number":141,"context_line":"            \u0027--block\u0027,"},{"line_number":142,"context_line":"        ]"},{"line_number":143,"context_line":"        verifylist \u003d ["},{"line_number":144,"context_line":"            (\u0027block\u0027, True),"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_2f1e7fbb","line":141,"updated":"2014-05-19 03:52:51.000000000","message":"we\u0027ve been using volume, so stick to that.","commit_id":"3b6399e9a46bc9c67c48603ab98d89d14252ade0"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2bc132afc96cfda72b2e7061b87d2dea073ad9d9","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            self.app.client_manager.compute.extensions"},{"line_number":48,"context_line":"        self.compute_extensions_mock.reset_mock()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        self.identity_extensions_mock \u003d \\"},{"line_number":51,"context_line":"            self.app.client_manager.identity.extensions"},{"line_number":52,"context_line":"        self.identity_extensions_mock.reset_mock()"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3ae8d1ca_ad301fe9","line":50,"updated":"2014-05-29 16:58:52.000000000","message":"use (\u0027s and )\u0027s instead of \\\n\nor just save self.app.client_manager.identity and others in a separate variable.\n\nthe slash police will find you","commit_id":"0321bd45f82af9b8e8c81b7811c6c587f5f698a3"}],"setup.cfg":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2bc132afc96cfda72b2e7061b87d2dea073ad9d9","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    limits_show \u003d openstackclient.common.limits:ShowLimits"},{"line_number":39,"context_line":"    quota_set \u003d openstackclient.common.quota:SetQuota"},{"line_number":40,"context_line":"    quota_show \u003d openstackclient.common.quota:ShowQuota"},{"line_number":41,"context_line":"    extension_list \u003d openstackclient.common.quota:ListExtension"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"openstack.compute.v2 \u003d"},{"line_number":44,"context_line":"    compute_agent_create \u003d openstackclient.compute.v2.agent:CreateAgent"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"3ae8d1ca_6a08bd2d","line":41,"updated":"2014-05-29 16:58:52.000000000","message":"s/quota/extension","commit_id":"0321bd45f82af9b8e8c81b7811c6c587f5f698a3"}]}
