)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"7856185b92fa3d626bcb3588946d720b7c3185db","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Filter resource types by support status"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add processing of query parameter support_status"},{"line_number":10,"context_line":"to list_resource_types function in heat/api to filter resources"},{"line_number":11,"context_line":"by. List_resource_types return list of resources with certain"},{"line_number":12,"context_line":"status or list of all resource types by default."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"AAAATn%2F867M%3D","line":9,"updated":"2013-12-18 19:21:33.000000000","message":"The word wrapping on this is wrong. It should wrap at 72 chars. Not a -1 thing, but please do fix in next patch if there is one.","commit_id":"e7f5e7197084c4b84e90de3672f4d64a77b14549"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"7856185b92fa3d626bcb3588946d720b7c3185db","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add processing of query parameter support_status"},{"line_number":10,"context_line":"to list_resource_types function in heat/api to filter resources"},{"line_number":11,"context_line":"by. List_resource_types return list of resources with certain"},{"line_number":12,"context_line":"status or list of all resource types by default."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Add filtering on the server."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"AAAATn%2F866g%3D","line":11,"updated":"2013-12-18 19:21:33.000000000","message":"Grammar (also not a -1 problem) this would read better as \"List_resource_types returns a list of resources with a certain status or a list of all...\".","commit_id":"e7f5e7197084c4b84e90de3672f4d64a77b14549"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"7856185b92fa3d626bcb3588946d720b7c3185db","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Add changes to tests:"},{"line_number":17,"context_line":"- test_rpc_client.py"},{"line_number":18,"context_line":"- test_api_openstack_v1.py"},{"line_number":19,"context_line":"- test_engine_service.py"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Implements bp filter-resources-by-support"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"AAAATn%2F866M%3D","line":19,"updated":"2013-12-18 19:21:33.000000000","message":"What is a -1 problem is that there is no justification for the change in the commit message.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Information_in_commit_messages\n\nPlease include a brief explanation of why this change is necessary.","commit_id":"e7f5e7197084c4b84e90de3672f4d64a77b14549"}],"heat/api/openstack/v1/stacks.py":[{"author":{"_account_id":6506,"name":"Anastasia Guzikova","email":"aguzikova@mirantis.com","username":"aguzikova"},"change_message_id":"ccc768a3e1063d55a20775dcf9a2cd629c13a093","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        \"\"\""},{"line_number":304,"context_line":"        Returns a list of valid resource types that may be used in a template."},{"line_number":305,"context_line":"        \"\"\""},{"line_number":306,"context_line":"        support_status \u003d None"},{"line_number":307,"context_line":"        if \u0027support_status\u0027 in req.params:"},{"line_number":308,"context_line":"            support_status \u003d req.params.get(\u0027support_status\u0027)"},{"line_number":309,"context_line":"        return {\u0027resource_types\u0027: self.engine.list_resource_types("}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F91jk%3D","line":306,"updated":"2013-12-05 12:15:57.000000000","message":"the same result with less code:\n   support_status \u003d req.param.get(\u0027support_status\u0027, None)                        \n    return {                                                                      \n        \u0027resource_types\u0027:                                                         \n        self.engine.list_resource_types(req.context, support_status)              \n    }","commit_id":"b4b32b4847dd49138790cdf63ba98481f04854d7"}],"heat/engine/environment.py":[{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"5d69d5836e596e6b77ec8c9fff75c49d9c45615d","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        registry[name] \u003d info"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    def _is_plugin(self, key):"},{"line_number":213,"context_line":"            if isinstance(self._registry[key], ClassResourceInfo):"},{"line_number":214,"context_line":"                return True"},{"line_number":215,"context_line":"            return False"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FV%2BE%3D","line":213,"updated":"2013-11-08 20:24:10.000000000","message":"this whole def should be to the left 4 spaces.  Not sure why this passed pep gate.","commit_id":"cd95943b14c741273f3984b7bdc256e40c150072"},{"author":{"_account_id":6509,"name":"Roman Bogorodskiy","email":"rbogorodskiy@mirantis.com","username":"novel"},"change_message_id":"49bb79d2de50ec943994131480208360e010b9a7","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        registry[name] \u003d info"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    def _is_plugin(self, key):"},{"line_number":213,"context_line":"            if isinstance(self._registry[key], ClassResourceInfo):"},{"line_number":214,"context_line":"                return True"},{"line_number":215,"context_line":"            return False"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FVtw%3D","line":213,"in_reply_to":"AAAATn%2F%2FV%2BE%3D","updated":"2013-11-09 04:48:57.000000000","message":"Looking at this code, I\u0027m also wondering if we cannot  just replace this \u0027if\u0027 with \u0027return isinstance(..)\u0027?","commit_id":"cd95943b14c741273f3984b7bdc256e40c150072"},{"author":{"_account_id":6917,"name":"Bartosz Górski","email":"bartosz@codilime.com","username":"bartosz-gorski"},"change_message_id":"6ecc65b9a000cfbdff3cff6930f9c36030e2eae9","unresolved":false,"context_lines":[{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    def get_types(self):"},{"line_number":297,"context_line":"        \u0027\u0027\u0027Return a dict of valid resource types with its status.\u0027\u0027\u0027"},{"line_number":298,"context_line":"        def is_plugin(key):"},{"line_number":299,"context_line":"            if isinstance(self._registry[key], ClassResourceInfo):"},{"line_number":300,"context_line":"                return True"},{"line_number":301,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2BsE8%3D","line":298,"updated":"2013-11-21 14:52:02.000000000","message":"This function is unused.","commit_id":"7b7577be9fb4bf7489dba6427d0a839c1a7e8b25"},{"author":{"_account_id":6917,"name":"Bartosz Górski","email":"bartosz@codilime.com","username":"bartosz-gorski"},"change_message_id":"6ecc65b9a000cfbdff3cff6930f9c36030e2eae9","unresolved":false,"context_lines":[{"line_number":301,"context_line":"            return False"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        resource_types \u003d {}"},{"line_number":304,"context_line":"        for r in self._registry:"},{"line_number":305,"context_line":"            try:"},{"line_number":306,"context_line":"                if type(self._registry[r]) \u003d\u003d MapResourceInfo:"},{"line_number":307,"context_line":"                    resource_map \u003d self._registry[r].value"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2BsAk%3D","line":304,"updated":"2013-11-21 14:52:02.000000000","message":"if _registry is a dict you can iterate on key-value pairs instead of keys and then looking up for corresponding values.\n\nfor k, v in self._registry","commit_id":"7b7577be9fb4bf7489dba6427d0a839c1a7e8b25"},{"author":{"_account_id":6917,"name":"Bartosz Górski","email":"bartosz@codilime.com","username":"bartosz-gorski"},"change_message_id":"6ecc65b9a000cfbdff3cff6930f9c36030e2eae9","unresolved":false,"context_lines":[{"line_number":306,"context_line":"                if type(self._registry[r]) \u003d\u003d MapResourceInfo:"},{"line_number":307,"context_line":"                    resource_map \u003d self._registry[r].value"},{"line_number":308,"context_line":"                    resource_types[r] \u003d self._registry[resource_map].value.\\"},{"line_number":309,"context_line":"                        support_status.__dict__"},{"line_number":310,"context_line":"                else:"},{"line_number":311,"context_line":"                    resource_types[r] \u003d self._registry[r].value.\\"},{"line_number":312,"context_line":"                        support_status.__dict__"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Br%2Fw%3D","line":309,"updated":"2013-11-21 14:52:02.000000000","message":"Using __dict__ looks dirty. Why not just create dictionary here or even better add to_dict method in SupportStatus class?","commit_id":"7b7577be9fb4bf7489dba6427d0a839c1a7e8b25"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"f0621a2e2bf99325d24fdc956ab77edeef49edd1","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        for name, cls in self._registry.iteritems():"},{"line_number":300,"context_line":"            if isinstance(cls, ClassResourceInfo):"},{"line_number":301,"context_line":"                resource_types[name] \u003d cls.value.support_status.to_dict()"},{"line_number":302,"context_line":"        return resource_types"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"SECTIONS \u003d (PARAMETERS, RESOURCE_REGISTRY) \u003d \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BloU%3D","line":302,"updated":"2013-11-22 19:39:37.000000000","message":"Let\u0027s not go back to a procedural implementation if we don\u0027t have to. This could be implemented something like:\n\n    def is_plugin(cls):\n        return isinstance(cls, ClassResourceInfo)\n    def support(cls):\n        return cls.value.support_status.to_dict()\n    \n    return dict((name, support(cls)) for name, cls in self._registry.iteritems()\n                                     if is_plugin(cls))","commit_id":"5ac6e1b622debf8180318f11b4d017c9dacb6dcf"},{"author":{"_account_id":7331,"name":"Julia Varlamova","email":"jvarlamova@mirantis.com","username":"jvarlamova"},"change_message_id":"aa947bd3cbe1160038183882e18418a9c121fb53","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        for name, cls in self._registry.iteritems():"},{"line_number":300,"context_line":"            if isinstance(cls, ClassResourceInfo):"},{"line_number":301,"context_line":"                resource_types[name] \u003d cls.value.support_status.to_dict()"},{"line_number":302,"context_line":"        return resource_types"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"SECTIONS \u003d (PARAMETERS, RESOURCE_REGISTRY) \u003d \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BVb4%3D","line":302,"in_reply_to":"AAAATn%2F%2BloU%3D","updated":"2013-11-27 09:14:46.000000000","message":"Is there a point in doing so?\n\nI\u0027m afraid I don\u0027t understand why this implementation is better. Could you explain me please? Maybe i\u0027m wrong.","commit_id":"5ac6e1b622debf8180318f11b4d017c9dacb6dcf"},{"author":{"_account_id":6506,"name":"Anastasia Guzikova","email":"aguzikova@mirantis.com","username":"aguzikova"},"change_message_id":"ccc768a3e1063d55a20775dcf9a2cd629c13a093","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            return isinstance(self._registry[key], ClassResourceInfo)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        def status_matches(cls):"},{"line_number":303,"context_line":"            if support_status is None:"},{"line_number":304,"context_line":"                return True"},{"line_number":305,"context_line":"            return cls.value.support_status.status \u003d\u003d support_status.encode()"},{"line_number":306,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F91lc%3D","line":303,"updated":"2013-12-05 12:15:57.000000000","message":"the same result with:\nreturn support_status is None or \\\n    cls.value.support_status.status \u003d\u003d support_status.encode()","commit_id":"b4b32b4847dd49138790cdf63ba98481f04854d7"}],"heat/engine/resource.py":[{"author":{"_account_id":6917,"name":"Bartosz Górski","email":"bartosz@codilime.com","username":"bartosz-gorski"},"change_message_id":"6ecc65b9a000cfbdff3cff6930f9c36030e2eae9","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def get_types():"},{"line_number":39,"context_line":"    \u0027\u0027\u0027Return the dictionary of valid resource types and its status.\u0027\u0027\u0027"},{"line_number":40,"context_line":"    return resources.global_env().get_types()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def get_class(resource_type, resource_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Br%2FA%3D","line":40,"updated":"2013-11-21 14:52:02.000000000","message":"Why we removed iter?","commit_id":"7b7577be9fb4bf7489dba6427d0a839c1a7e8b25"},{"author":{"_account_id":7331,"name":"Julia Varlamova","email":"jvarlamova@mirantis.com","username":"jvarlamova"},"change_message_id":"b693f99a1c6c435947f30afbc4c5f81b991428a5","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def get_types():"},{"line_number":39,"context_line":"    \u0027\u0027\u0027Return the dictionary of valid resource types and its status.\u0027\u0027\u0027"},{"line_number":40,"context_line":"    return resources.global_env().get_types()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def get_class(resource_type, resource_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2BnBQ%3D","line":40,"in_reply_to":"AAAATn%2F%2Br%2FA%3D","updated":"2013-11-22 15:14:56.000000000","message":"We don\u0027t want to iterate just over resource types, we need to return support status as well.","commit_id":"7b7577be9fb4bf7489dba6427d0a839c1a7e8b25"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"f0621a2e2bf99325d24fdc956ab77edeef49edd1","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    Return an iterator over the dictionary of valid resource types"},{"line_number":41,"context_line":"    and its status."},{"line_number":42,"context_line":"    \u0027\u0027\u0027"},{"line_number":43,"context_line":"    return resources.global_env().get_types().iteritems()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def get_class(resource_type, resource_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BlmA%3D","line":43,"updated":"2013-11-22 19:39:37.000000000","message":"There\u0027s no reason not to just return the dictionary directly. Returning an iterator was a holdover from a previous implementation (before the global environment was introduced).","commit_id":"5ac6e1b622debf8180318f11b4d017c9dacb6dcf"}],"heat/engine/service.py":[{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"96bff06cfd71154b7976baead3d92a9d81e3a1ca","unresolved":false,"context_lines":[{"line_number":441,"context_line":"        arg1 -\u003e RPC context."},{"line_number":442,"context_line":"        arg2 -\u003e Status to filter resources by."},{"line_number":443,"context_line":"        \"\"\""},{"line_number":444,"context_line":"        if support_status.encode() \u003d\u003d \u0027ALL\u0027:"},{"line_number":445,"context_line":"            return list(resource.get_types())"},{"line_number":446,"context_line":"        else:"},{"line_number":447,"context_line":"            return list(resource.get_types_with_status(support_status))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FVBQ%3D","line":444,"updated":"2013-11-10 13:50:48.000000000","message":"How about combining functions of get_types and get_types_with_status as one, instead of doing the switch for the function caller?","commit_id":"cd95943b14c741273f3984b7bdc256e40c150072"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"61b3ce743eb3b0eb9561dd6f9a9219e0ef63e8f6","unresolved":false,"context_lines":[{"line_number":463,"context_line":""},{"line_number":464,"context_line":"        :param cnxt: RPC context."},{"line_number":465,"context_line":"        \"\"\""},{"line_number":466,"context_line":"        return resource.get_types(support_status)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def resource_schema(self, cnxt, type_name):"},{"line_number":469,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F9s7o%3D","line":466,"updated":"2013-12-06 23:45:00.000000000","message":"This is not backward compatible and will cause problems for upgrades. You will need to follow the guidelines for adding new parameters in openstack.common.rpc.dispatcher:\n\nhttps://git.openstack.org/cgit/openstack/heat/tree/heat/openstack/common/rpc/dispatcher.py#n68\n\nI don\u0027t think we have versioned the RPC API yet, but it is time to start doing so since we are expected to do in-place upgrades from Havana -\u003e Icehouse.","commit_id":"54d18f6a59a9cd9787e16195c5b646e6f218a7dd"},{"author":{"_account_id":7331,"name":"Julia Varlamova","email":"jvarlamova@mirantis.com","username":"jvarlamova"},"change_message_id":"a3b80da613c2399bd637ecee10e1ebc42dfdb554","unresolved":false,"context_lines":[{"line_number":463,"context_line":""},{"line_number":464,"context_line":"        :param cnxt: RPC context."},{"line_number":465,"context_line":"        \"\"\""},{"line_number":466,"context_line":"        return resource.get_types(support_status)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def resource_schema(self, cnxt, type_name):"},{"line_number":469,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F9dDw%3D","line":466,"in_reply_to":"AAAATn%2F9s7o%3D","updated":"2013-12-11 12:25:28.000000000","message":"Done","commit_id":"54d18f6a59a9cd9787e16195c5b646e6f218a7dd"}],"heat/tests/test_engine_service.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"f0621a2e2bf99325d24fdc956ab77edeef49edd1","unresolved":false,"context_lines":[{"line_number":1227,"context_line":"    def test_list_resource_types(self):"},{"line_number":1228,"context_line":"        resources \u003d self.eng.list_resource_types(self.ctx)"},{"line_number":1229,"context_line":"        self.assertTrue(isinstance(resources, dict))"},{"line_number":1230,"context_line":"        self.assertTrue(\u0027AWS::EC2::Instance\u0027 in resources)"},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"    def test_resource_schema(self):"},{"line_number":1233,"context_line":"        type_name \u003d \u0027ResourceWithPropsType\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2Blcs%3D","line":1230,"updated":"2013-11-22 19:39:37.000000000","message":"This needs more tests.","commit_id":"5ac6e1b622debf8180318f11b4d017c9dacb6dcf"},{"author":{"_account_id":7225,"name":"Serg Melikyan","email":"smelikyan@mirantis.com","username":"smelikyan"},"change_message_id":"dd010796e91bfdac0b17d4f2eee65ab179ea20a3","unresolved":false,"context_lines":[{"line_number":1298,"context_line":""},{"line_number":1299,"context_line":"    def test_list_resource_types_deprecated(self):"},{"line_number":1300,"context_line":"        resources \u003d self.eng.list_resource_types(self.ctx, \"DEPRECATED\")"},{"line_number":1301,"context_line":"        self.assertEqual([\u0027OS::Neutron::RouterGateway\u0027], resources)"},{"line_number":1302,"context_line":""},{"line_number":1303,"context_line":"    def test_list_resource_types_supported(self):"},{"line_number":1304,"context_line":"        resources \u003d self.eng.list_resource_types(self.ctx, \"SUPPORTED\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAT3%2F%2F2O0%3D","line":1301,"updated":"2013-12-30 10:20:44.000000000","message":"Here more logical seems usage of assertIn to check if some resource is in list like below.","commit_id":"1cb1c00fb636c89fbefcc56e60ed9fcbd25810e6"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"563157b672ea32df8f8e647d119168561cc2eed9","unresolved":false,"context_lines":[{"line_number":1298,"context_line":""},{"line_number":1299,"context_line":"    def test_list_resource_types_deprecated(self):"},{"line_number":1300,"context_line":"        resources \u003d self.eng.list_resource_types(self.ctx, \"DEPRECATED\")"},{"line_number":1301,"context_line":"        self.assertEqual([\u0027OS::Neutron::RouterGateway\u0027], resources)"},{"line_number":1302,"context_line":""},{"line_number":1303,"context_line":"    def test_list_resource_types_supported(self):"},{"line_number":1304,"context_line":"        resources \u003d self.eng.list_resource_types(self.ctx, \"SUPPORTED\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAT3%2F%2FuYQ%3D","line":1301,"in_reply_to":"AAAAT3%2F%2F2O0%3D","updated":"2014-01-02 21:17:57.000000000","message":"I disagree, this is a more accurate test to make sure that the list is _only_ this item.","commit_id":"1cb1c00fb636c89fbefcc56e60ed9fcbd25810e6"}]}
