)]}'
{"heat/engine/resources/__init__.py":[{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"78c526d5a15cda0f8c81a8fd30a7b389d3e5eae4","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        env.register_class(res_name, res_class)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def _get_all_module_resources(module):"},{"line_number":37,"context_line":"    if callable(getattr(module, \u0027resource_mapping\u0027, None)):"},{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":"            return module.get_resources().iteritems()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2FvA%3D","line":36,"updated":"2014-02-07 21:08:39.000000000","message":"This would allow an easy access to all resource modules, even the ones without all dependencies satisfied.","commit_id":"151dd6080bfe13b128714d30aaa1d38eac017759"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"78c526d5a15cda0f8c81a8fd30a7b389d3e5eae4","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        return {}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def _get_available_module_resources(module):"},{"line_number":47,"context_line":"    try:"},{"line_number":48,"context_line":"        if callable(getattr(module, \u0027available_resources\u0027, None)):"},{"line_number":49,"context_line":"            return module.available_resources().iteritems()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2Fvk%3D","line":46,"updated":"2014-02-07 21:08:39.000000000","message":"The idea here is that available_resources() has priority over resource_mapping() to filter out resources whose dependencies are not met.\n\nIf it doesn\u0027t exist, resource_mapping() is used instead, thus keeping the previous behavior the same.","commit_id":"151dd6080bfe13b128714d30aaa1d38eac017759"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"78c526d5a15cda0f8c81a8fd30a7b389d3e5eae4","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    _load_all(_environment)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"def _global_modules():"},{"line_number":121,"context_line":"    import sys"},{"line_number":122,"context_line":"    from heat.common import plugin_loader"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2Fu4%3D","line":120,"updated":"2014-02-07 21:08:39.000000000","message":"A bit of refactoring to allow all modules to be grabbed when generating docs, for example.","commit_id":"151dd6080bfe13b128714d30aaa1d38eac017759"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"9d8562df8558d9bee204921fd6adf0b4ce153e20","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        env.register_class(res_name, res_class)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def _get_all_module_resources(module):"},{"line_number":37,"context_line":"    \u0027\u0027\u0027Returns all resource in `module`.\u0027\u0027\u0027"},{"line_number":38,"context_line":"    if callable(getattr(module, \u0027resource_mapping\u0027, None)):"},{"line_number":39,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FzMA%3D","line":36,"updated":"2014-02-10 18:39:19.000000000","message":"This will allow an easy access to all resource modules, even the ones without all dependencies satisfied.","commit_id":"aedbd451aaa5c26aea9ccdf019f82eb64cc75f81"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"9d8562df8558d9bee204921fd6adf0b4ce153e20","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        return {}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"def _get_available_module_resources(module):"},{"line_number":48,"context_line":"    \u0027\u0027\u0027"},{"line_number":49,"context_line":"    Returns resources in `module` available for registration"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FzLw%3D","line":47,"updated":"2014-02-10 18:39:19.000000000","message":"The idea here is that available_resources() has priority over resource_mapping() to filter out resources whose dependencies are not met.\n\nIf it doesn\u0027t exist, resource_mapping() is used instead, thus keeping the previous behavior the same.","commit_id":"aedbd451aaa5c26aea9ccdf019f82eb64cc75f81"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"9d8562df8558d9bee204921fd6adf0b4ce153e20","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    _load_all(_environment)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"def _global_modules():"},{"line_number":131,"context_line":"    \u0027\u0027\u0027Returns all core and plugin resource modules in Heat.\u0027\u0027\u0027"},{"line_number":132,"context_line":"    import sys"},{"line_number":133,"context_line":"    from heat.common import plugin_loader"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FzNc%3D","line":130,"updated":"2014-02-10 18:39:19.000000000","message":"A bit of refactoring to allow all modules to be grabbed when generating docs, for example.","commit_id":"aedbd451aaa5c26aea9ccdf019f82eb64cc75f81"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"ca480d70a3e4d2c55b1432b4ea9f7c8b8e44a5b0","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    plugin_pkg \u003d plugin_loader.create_subpackage(cfg.CONF.plugin_dirs,"},{"line_number":137,"context_line":"                                                 \u0027heat.engine\u0027)"},{"line_number":138,"context_line":"    return {"},{"line_number":139,"context_line":"        \u0027core\u0027: plugin_loader.load_modules(sys.modules[__name__]),"},{"line_number":140,"context_line":"        \u0027plugins\u0027: plugin_loader.load_modules(plugin_pkg, True),"},{"line_number":141,"context_line":"    }"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FyoY%3D","line":139,"updated":"2014-02-10 19:50:01.000000000","message":"Eventually we will have different kinds of plugins (functions, whole template parsers) in the same plugin directories, and probably wanting to use this function to retrieve them. So \u0027core\u0027 is probably not the most descriptive name, since it actually only refers to the core _resources_. How about we use the name of the package as they key? So:\n\n  {\n    __name__: plugin_loader.load_modules(sys.modules[__name__]),\n    plugin_pkg.__name__: plugin_loader.load_modules(plugin_pkg, True),\n  }\n\nThat would make me feel slightly better about referencing these keys using magic strings below.","commit_id":"cf32ec3d8ebaacaeb81f0e270021962a1bb7032c"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"ea12d6dd1106dee4be5affdcea6ce9de15190c35","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                                                 \u0027heat.engine\u0027)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    yield (__name__, plugin_loader.load_modules(sys.modules[__name__]))"},{"line_number":145,"context_line":"    yield (plugin_pkg.__name__, plugin_loader.load_modules(plugin_pkg, True))"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"def _load_global_resources(env):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2FyNU%3D","line":145,"updated":"2014-02-10 20:43:41.000000000","message":"FWIW the surrounding parentheses are redundant here. Tuples are defined by commas, not parentheses.","commit_id":"0fe2fe71fdf02d75f3c18b2a9f983c2792e90d2b"}],"heat/engine/resources/internet_gateway.py":[{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"78c526d5a15cda0f8c81a8fd30a7b389d3e5eae4","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                    raise ex"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"def resource_mapping():"},{"line_number":142,"context_line":"    return {"},{"line_number":143,"context_line":"        \u0027AWS::EC2::InternetGateway\u0027: InternetGateway,"},{"line_number":144,"context_line":"        \u0027AWS::EC2::VPCGatewayAttachment\u0027: VPCGatewayAttachment,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2FuQ%3D","line":141,"updated":"2014-02-07 21:08:39.000000000","message":"resource_mapping() is just what the name says: the mapping of the resource names and their classes.  This is useful if one needs to do things with resources that are not loaded, like generating docs, for example.\n\nIt\u0027s the fallback function used when heat loads all resources to keep backwards compatibility.","commit_id":"151dd6080bfe13b128714d30aaa1d38eac017759"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"78c526d5a15cda0f8c81a8fd30a7b389d3e5eae4","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    }"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"def available_resources():"},{"line_number":149,"context_line":"    if clients.neutronclient is None:"},{"line_number":150,"context_line":"        return {}"},{"line_number":151,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2F%2Ftw%3D","line":148,"updated":"2014-02-07 21:08:39.000000000","message":"available_resources() is to be used instead of resource_mapping() when there\u0027s some dependency checking before loading the resources.  This has priority over the old resource_mapping() and keeps the resource loading behavior the same.","commit_id":"151dd6080bfe13b128714d30aaa1d38eac017759"}]}
