)]}'
{"nova/api/openstack/v2/admin/extended_status.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"a1cfc1bd7cec11fe638b85e2bebda3d6a98666c4","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(\"nova.api.openstack.v2.contrib.admin.extendedstatus\")"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class Extended_status(extensions.ExtensionDescriptor):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F8qM%3D","line":28,"updated":"2011-12-15 06:58:25.000000000","message":"remove \u0027.contrib\u0027.","commit_id":"b10e1a8a1611feddd40280341b047fa53ab1ea0f"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"85bb0ba42ef5a3c6647a1157dddd287211d39bc8","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(\"nova.api.openstack.v2.contrib.admin.extendedstatus\")"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class Extended_status(extensions.ExtensionDescriptor):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F8n8%3D","line":28,"in_reply_to":"AAAAC3%2F%2F8qM%3D","updated":"2011-12-15 14:10:55.000000000","message":"Done","commit_id":"b10e1a8a1611feddd40280341b047fa53ab1ea0f"}],"nova/api/openstack/v2/admin/hosts.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"a1cfc1bd7cec11fe638b85e2bebda3d6a98666c4","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from nova.scheduler import api as scheduler_api"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(\"nova.api.openstack.v2.contrib.admin.hosts\")"},{"line_number":33,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F8qI%3D","line":32,"updated":"2011-12-15 06:58:25.000000000","message":"lose \u0027.contrib\u0027 here too.","commit_id":"b10e1a8a1611feddd40280341b047fa53ab1ea0f"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"85bb0ba42ef5a3c6647a1157dddd287211d39bc8","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from nova.scheduler import api as scheduler_api"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(\"nova.api.openstack.v2.contrib.admin.hosts\")"},{"line_number":33,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F8n4%3D","line":32,"in_reply_to":"AAAAC3%2F%2F8qI%3D","updated":"2011-12-15 14:10:55.000000000","message":"Done","commit_id":"b10e1a8a1611feddd40280341b047fa53ab1ea0f"}],"nova/api/openstack/v2/admin/simple_tenant_usage.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"a1cfc1bd7cec11fe638b85e2bebda3d6a98666c4","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        \"\"\"Retrive tenant_usage for all tenants\"\"\""},{"line_number":179,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        if not context.is_admin:"},{"line_number":182,"context_line":"            return webob.Response(status_int\u003d403)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        (period_start, period_stop, detailed) \u003d self._get_datetime_range(req)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F8qE%3D","line":181,"updated":"2011-12-15 06:58:25.000000000","message":"Think we should just disallow calls into these admin layers at a higher level if not context.is_admin?","commit_id":"b10e1a8a1611feddd40280341b047fa53ab1ea0f"}],"nova/api/openstack/v2/extensions.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"a1cfc1bd7cec11fe638b85e2bebda3d6a98666c4","unresolved":false,"context_lines":[{"line_number":552,"context_line":"        return ExtensionTemplate()"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"def admin_only(fnc):"},{"line_number":556,"context_line":"    @functools.wraps(fnc)"},{"line_number":557,"context_line":"    def _wrapped(self, *args, **kwargs):"},{"line_number":558,"context_line":"        if FLAGS.allow_admin_api:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F8p8%3D","side":"PARENT","line":555,"updated":"2011-12-15 06:58:25.000000000","message":"Remove.  Not used anymore.","commit_id":"548ae0bdbf70e425dd4aca65f98038c2ae65d1f4"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"85bb0ba42ef5a3c6647a1157dddd287211d39bc8","unresolved":false,"context_lines":[{"line_number":552,"context_line":"        return ExtensionTemplate()"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"def admin_only(fnc):"},{"line_number":556,"context_line":"    @functools.wraps(fnc)"},{"line_number":557,"context_line":"    def _wrapped(self, *args, **kwargs):"},{"line_number":558,"context_line":"        if FLAGS.allow_admin_api:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F8nw%3D","side":"PARENT","line":555,"in_reply_to":"AAAAC3%2F%2F8p8%3D","updated":"2011-12-15 14:10:55.000000000","message":"Done","commit_id":"548ae0bdbf70e425dd4aca65f98038c2ae65d1f4"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"a1cfc1bd7cec11fe638b85e2bebda3d6a98666c4","unresolved":false,"context_lines":[{"line_number":449,"context_line":"        LOG.debug(_(\"Loading extension %s\"), ext_factory)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        # Load the factory"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        factory \u003d utils.import_class(ext_factory)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        # Call it"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F8qA%3D","line":452,"updated":"2011-12-15 06:58:25.000000000","message":"This additional line adds a lot of value.","commit_id":"b10e1a8a1611feddd40280341b047fa53ab1ea0f"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"85bb0ba42ef5a3c6647a1157dddd287211d39bc8","unresolved":false,"context_lines":[{"line_number":449,"context_line":"        LOG.debug(_(\"Loading extension %s\"), ext_factory)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        # Load the factory"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        factory \u003d utils.import_class(ext_factory)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        # Call it"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F8n0%3D","line":452,"in_reply_to":"AAAAC3%2F%2F8qA%3D","updated":"2011-12-15 14:10:55.000000000","message":"Or does it?","commit_id":"b10e1a8a1611feddd40280341b047fa53ab1ea0f"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"55aa1ed61c2dc24c92de1a351a59f660ad7e2848","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    # This attribute causes the extension to load only when"},{"line_number":64,"context_line":"    # the admin api is enabled, and requires an admin"},{"line_number":65,"context_line":"    # context when calling any of its resources, methods, etc."},{"line_number":66,"context_line":"    admin_only \u003d False"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def __init__(self, ext_mgr):"},{"line_number":69,"context_line":"        \"\"\"Register extension with the extension manager.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAC3%2F%2F8G4%3D","line":66,"updated":"2011-12-17 20:25:35.000000000","message":"Except you didn\u0027t do the context part yet ;)   Maybe a \u0027TODO\u0027 on the context part?","commit_id":"2f78703620ca5e47dcf9e31807fffee49cae0611"}],"nova/flags.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"55aa1ed61c2dc24c92de1a351a59f660ad7e2848","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                   \u0027osapi extension to load\u0027)"},{"line_number":322,"context_line":"DEFINE_multistring(\u0027osapi_admin_extension\u0027,"},{"line_number":323,"context_line":"                   [\u0027nova.api.openstack.v2.admin.admin_extensions\u0027],"},{"line_number":324,"context_line":"                   \u0027osapi extensions to load when admin api is enabled\u0027)"},{"line_number":325,"context_line":"DEFINE_string(\u0027osapi_host\u0027, \u0027$my_ip\u0027, \u0027ip of api server\u0027)"},{"line_number":326,"context_line":"DEFINE_string(\u0027osapi_scheme\u0027, \u0027http\u0027, \u0027prefix for openstack\u0027)"},{"line_number":327,"context_line":"DEFINE_integer(\u0027osapi_port\u0027, 8774, \u0027OpenStack API port\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAC3%2F%2F8G0%3D","line":324,"updated":"2011-12-17 20:25:35.000000000","message":"Not used now?","commit_id":"2f78703620ca5e47dcf9e31807fffee49cae0611"}]}
