)]}'
{"etc/glance-api.conf":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"61f24b15c2d9cd18a644f169b8a62ef0c5aa5a2d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# List of which store classes and store class locations are"},{"line_number":15,"context_line":"# currently known to glance at startup."},{"line_number":16,"context_line":"# Default: \u0027glance.store.filesystem.Store\u0027"},{"line_number":17,"context_line":"known_stores \u003d glance.store.filesystem.Store,"},{"line_number":18,"context_line":"               glance.store.http.Store,"},{"line_number":19,"context_line":"               glance.store.rbd.Store,"},{"line_number":20,"context_line":"               glance.store.s3.Store,"}],"source_content_type":"text/plain","patch_set":1,"id":"AAAAHX%2F%2F%2BVM%3D","line":17,"updated":"2012-05-09 02:27:13.000000000","message":"Cool, I didn\u0027t realize it was possible to do implicit multi-line config values.","commit_id":"275eaa65a059acc253fa0538b5a53cbc67c7540a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"d2494197ce39469d40d0cb2052d08826eeff311d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"known_stores \u003d glance.store.filesystem.Store,"},{"line_number":18,"context_line":"               glance.store.http.Store,"},{"line_number":19,"context_line":"               glance.store.rbd.Store,"},{"line_number":20,"context_line":"               glance.store.s3.Store,"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Address to bind the API server"},{"line_number":23,"context_line":"bind_host \u003d 0.0.0.0"}],"source_content_type":"text/plain","patch_set":3,"id":"AAAAHX%2F%2F93s%3D","line":20,"updated":"2012-05-09 21:27:02.000000000","message":"You\u0027re missing swift in this list. And the default doesn\u0027t seem quite applicable here...","commit_id":"eb168c8ef15ec8045b855b40eb50b09f4154180c"}],"glance/api/v1/images.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"61f24b15c2d9cd18a644f169b8a62ef0c5aa5a2d","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        \"\"\""},{"line_number":329,"context_line":"        Uploads the payload of the request to a backend store in"},{"line_number":330,"context_line":"        Glance. If the `x-image-meta-store` header is set, Glance"},{"line_number":331,"context_line":"        will attempt to use that scheme, if not, Glance will use the"},{"line_number":332,"context_line":"        scheme set by the flag `default_store` to find the backing store."},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        :param req: The WSGI/Webob Request object"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F%2BVk%3D","line":331,"updated":"2012-05-09 02:27:13.000000000","message":"Run-on sentence - consider using \u0027scheme;\u0027 or \u0027scheme.  If not\u0027 instead of \u0027scheme,\u0027.","commit_id":"275eaa65a059acc253fa0538b5a53cbc67c7540a"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"61f24b15c2d9cd18a644f169b8a62ef0c5aa5a2d","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                image_size \u003d 0"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        scheme \u003d req.headers.get(\u0027x-image-meta-store\u0027,"},{"line_number":366,"context_line":"                                     self.conf.default_store)"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        store \u003d self.get_store_or_400(req, scheme)"},{"line_number":369,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F%2BVg%3D","line":366,"updated":"2012-05-09 02:27:13.000000000","message":"PEP8 vertical alignment","commit_id":"275eaa65a059acc253fa0538b5a53cbc67c7540a"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"61f24b15c2d9cd18a644f169b8a62ef0c5aa5a2d","unresolved":false,"context_lines":[{"line_number":373,"context_line":"                                       {\u0027status\u0027: \u0027saving\u0027})"},{"line_number":374,"context_line":"        try:"},{"line_number":375,"context_line":"            logger.debug(_(\"Uploading image data for image %(image_id)s \""},{"line_number":376,"context_line":"                         \"to %(scheme)s store\"), locals())"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"            if image_size \u003e IMAGE_SIZE_CAP:"},{"line_number":379,"context_line":"                max_image_size \u003d IMAGE_SIZE_CAP"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F%2BVc%3D","line":376,"updated":"2012-05-09 02:27:13.000000000","message":"PEP8 vertical alignment - second line\u0027s opening quote should line up with the first line\u0027s opening quote.","commit_id":"275eaa65a059acc253fa0538b5a53cbc67c7540a"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"61f24b15c2d9cd18a644f169b8a62ef0c5aa5a2d","unresolved":false,"context_lines":[{"line_number":759,"context_line":"            return get_store_from_scheme(scheme)"},{"line_number":760,"context_line":"        except exception.UnknownScheme:"},{"line_number":761,"context_line":"            msg \u003d (_((\"Requested store for scheme %s \""},{"line_number":762,"context_line":"                       \"not available on this server\"))"},{"line_number":763,"context_line":"                   % scheme)"},{"line_number":764,"context_line":"            logger.error(msg)"},{"line_number":765,"context_line":"            raise HTTPBadRequest(msg, request\u003drequest,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F%2BVY%3D","line":762,"updated":"2012-05-09 02:27:13.000000000","message":"PEP8 vertical alignment","commit_id":"275eaa65a059acc253fa0538b5a53cbc67c7540a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce7a42b36c2a09f6ce8302fd6a989baef667425c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.conf \u003d conf"},{"line_number":89,"context_line":"        self.conf.register_opt(self.default_store_opt)"},{"line_number":90,"context_line":"        glance.store.create_stores(conf)"},{"line_number":91,"context_line":"        self.verify_scheme_or_exit(self.conf.default_store)"},{"line_number":92,"context_line":"        self.notifier \u003d notifier.Notifier(conf)"},{"line_number":93,"context_line":"        registry.configure_registry_client(conf)"},{"line_number":94,"context_line":"        self.policy \u003d policy.Enforcer(conf)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F99c%3D","line":91,"updated":"2012-05-09 19:02:45.000000000","message":"Why was it necessary to change store to scheme?","commit_id":"94066e5368f55ee0c19d9b225e8428fad5ac7859"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"c154f1c42608d287fe2e61ac6168244dcdbd3d11","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                image_size \u003d 0"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        scheme \u003d req.headers.get(\u0027x-image-meta-store\u0027,"},{"line_number":366,"context_line":"                                     self.conf.default_store)"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        store \u003d self.get_store_or_400(req, scheme)"},{"line_number":369,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F%2BBg%3D","line":366,"updated":"2012-05-09 17:57:17.000000000","message":"PEP8 vertical alignment","commit_id":"94066e5368f55ee0c19d9b225e8428fad5ac7859"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"d2494197ce39469d40d0cb2052d08826eeff311d","unresolved":false,"context_lines":[{"line_number":758,"context_line":"        try:"},{"line_number":759,"context_line":"            return get_store_from_scheme(scheme)"},{"line_number":760,"context_line":"        except exception.UnknownScheme:"},{"line_number":761,"context_line":"            msg \u003d (_((\"Requested store for scheme %s \""},{"line_number":762,"context_line":"                      \"not available on this server\"))"},{"line_number":763,"context_line":"                   % scheme)"},{"line_number":764,"context_line":"            logger.error(msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAHX%2F%2F93o%3D","line":761,"updated":"2012-05-09 21:27:02.000000000","message":"This can look a little cleaner if you remove the inner and outer parens and move the \u0027% scheme\u0027 into the log line.","commit_id":"eb168c8ef15ec8045b855b40eb50b09f4154180c"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"d2494197ce39469d40d0cb2052d08826eeff311d","unresolved":false,"context_lines":[{"line_number":775,"context_line":"        try:"},{"line_number":776,"context_line":"            get_store_from_scheme(scheme)"},{"line_number":777,"context_line":"        except exception.UnknownScheme:"},{"line_number":778,"context_line":"            msg \u003d (_((\"Default store for scheme %s \""},{"line_number":779,"context_line":"                      \"not available on this server\"))"},{"line_number":780,"context_line":"                   % scheme)"},{"line_number":781,"context_line":"            logger.error(msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAHX%2F%2F93k%3D","line":778,"updated":"2012-05-09 21:27:02.000000000","message":"Why is \u0027Default\u0027 in this sentence? I know its a bit orthogonal to this patch, but it seems wrong...","commit_id":"eb168c8ef15ec8045b855b40eb50b09f4154180c"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"13d2dc933dd3347efe954e060df26bb2baff1a5e","unresolved":false,"context_lines":[{"line_number":759,"context_line":"            return get_store_from_scheme(scheme)"},{"line_number":760,"context_line":"        except exception.UnknownScheme:"},{"line_number":761,"context_line":"            msg \u003d (_((\"Requested store for scheme %s \""},{"line_number":762,"context_line":"                      \"not available on this server\")) % scheme)"},{"line_number":763,"context_line":"            logger.error(msg)"},{"line_number":764,"context_line":"            raise HTTPBadRequest(msg, request\u003drequest,"},{"line_number":765,"context_line":"                                 content_type\u003d\u0027text/plain\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAHX%2F%2F9xU%3D","line":762,"updated":"2012-05-10 02:22:47.000000000","message":"Two things here:\n\n1) This should match the similar error below, no reason for them to be different\n\n2) I was thinking this would be cleaner if you do something more like this:\n msg \u003d _(\"Store for scheme % not found\")\nlogger.error(msg % scheme)","commit_id":"7ff1009e0bd6f820d42ffddfc27e98b6f1c8e874"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"13d2dc933dd3347efe954e060df26bb2baff1a5e","unresolved":false,"context_lines":[{"line_number":774,"context_line":"        try:"},{"line_number":775,"context_line":"            get_store_from_scheme(scheme)"},{"line_number":776,"context_line":"        except exception.UnknownScheme:"},{"line_number":777,"context_line":"            msg \u003d (_((\"Store for scheme %s \""},{"line_number":778,"context_line":"                      \"not available on this server\")) % scheme)"},{"line_number":779,"context_line":"            logger.error(msg)"},{"line_number":780,"context_line":"            # message on stderr will only be visible if started directly via"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAHX%2F%2F9xY%3D","line":777,"updated":"2012-05-10 02:22:47.000000000","message":"This would be easier to read if you break it up a bit more:\n\n  msg \u003d _(\"Store for scheme %s not found\")\n  logger.error(msg % scheme)","commit_id":"7ff1009e0bd6f820d42ffddfc27e98b6f1c8e874"}],"glance/api/v2/image_data.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"597c1d8310cf650de24c826e7c7ad97d9b3f7370","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        else:"},{"line_number":37,"context_line":"            # Assume not already good to go"},{"line_number":38,"context_line":"            self.store_api \u003d store_api"},{"line_number":39,"context_line":"            self.store_api.create_stores(conf)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def _get_image(self, context, image_id):"},{"line_number":42,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHX%2F%2F8jE%3D","line":39,"updated":"2012-05-13 16:08:53.000000000","message":"Why not just make the create_stores() call idempotent? That would mean there would be no need to do anything here other than remove the imports of all the stores...","commit_id":"f19f277a5ee1127269c2342c3528e56f397fc972"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b3d85378277b252c1daa0b85fca621eefdbba27c","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        else:"},{"line_number":37,"context_line":"            # Assume not already good to go"},{"line_number":38,"context_line":"            self.store_api \u003d store_api"},{"line_number":39,"context_line":"            self.store_api.create_stores(conf)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def _get_image(self, context, image_id):"},{"line_number":42,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHX%2F%2F8ZY%3D","line":39,"in_reply_to":"AAAAHX%2F%2F8fk%3D","updated":"2012-05-14 14:33:18.000000000","message":"Remove import glance.store as well, then...","commit_id":"f19f277a5ee1127269c2342c3528e56f397fc972"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"0ab48b24aae1976bd43845352faa9cf6e8312b65","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        else:"},{"line_number":37,"context_line":"            # Assume not already good to go"},{"line_number":38,"context_line":"            self.store_api \u003d store_api"},{"line_number":39,"context_line":"            self.store_api.create_stores(conf)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def _get_image(self, context, image_id):"},{"line_number":42,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHX%2F%2F8fk%3D","line":39,"in_reply_to":"AAAAHX%2F%2F8jE%3D","updated":"2012-05-14 03:38:00.000000000","message":"It was sort of like that before, except when http://paste.openstack.org/show/16879/ started happening, if the cfg opt registration is done inside the method where they are used, then stuff like that happens.","commit_id":"f19f277a5ee1127269c2342c3528e56f397fc972"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2fee5566c1a2a5a6bd4191bfc221da828dfef07b","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        super(ImageDataController, self).__init__(conf)"},{"line_number":28,"context_line":"        # TODO(harlowja) this needs to be fixed."},{"line_number":29,"context_line":"        # It seems to be only used for tests (ie dependency injection)"},{"line_number":30,"context_line":"        # But maybe tests should just mock these instead?"},{"line_number":31,"context_line":"        self.db_api \u003d db_api or glance.registry.db.api"},{"line_number":32,"context_line":"        self.db_api.configure_db(conf)"},{"line_number":33,"context_line":"        self.store_api \u003d store_api or glance.store"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAHX%2F%2F8I8%3D","line":30,"updated":"2012-05-14 20:00:42.000000000","message":"You can remove this :) I\u0027ve had this debate with Sir Glancelot and this is just the way it\u0027s going to be!","commit_id":"2567cb7eea59bbdb6e63fea52f95ede30f1893fb"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"050587d48886f70a1fa0cf646a20d7499a92560f","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        super(ImageDataController, self).__init__(conf)"},{"line_number":28,"context_line":"        # TODO(harlowja) this needs to be fixed."},{"line_number":29,"context_line":"        # It seems to be only used for tests (ie dependency injection)"},{"line_number":30,"context_line":"        # But maybe tests should just mock these instead?"},{"line_number":31,"context_line":"        self.db_api \u003d db_api or glance.registry.db.api"},{"line_number":32,"context_line":"        self.db_api.configure_db(conf)"},{"line_number":33,"context_line":"        self.store_api \u003d store_api or glance.store"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAHX%2F%2F8IQ%3D","line":30,"in_reply_to":"AAAAHX%2F%2F8I8%3D","updated":"2012-05-14 20:06:51.000000000","message":"Yes, this is only used for tests. But it makes the tests awesome. I would be open to hearing suggestions as to how we can clean up our use of DI, but until then, it stays!","commit_id":"2567cb7eea59bbdb6e63fea52f95ede30f1893fb"}],"glance/common/config.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"597c1d8310cf650de24c826e7c7ad97d9b3f7370","unresolved":false,"context_lines":[{"line_number":44,"context_line":"delete_opts \u003d ["},{"line_number":45,"context_line":"    cfg.BoolOpt(\u0027delayed_delete\u0027, default\u003dFalse),"},{"line_number":46,"context_line":"    cfg.IntOpt(\u0027scrub_time\u0027, default\u003d0)"},{"line_number":47,"context_line":"    ]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"default_store_opt \u003d cfg.StrOpt(\u0027default_store\u0027, default\u003d\u0027file\u0027)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHX%2F%2F8jA%3D","line":47,"updated":"2012-05-13 16:08:53.000000000","message":"OK for now, I guess, but I would rather this have been in a separate commit and that the options above would be defined where the scrubber is defined.","commit_id":"f19f277a5ee1127269c2342c3528e56f397fc972"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"597c1d8310cf650de24c826e7c7ad97d9b3f7370","unresolved":false,"context_lines":[{"line_number":49,"context_line":"default_store_opt \u003d cfg.StrOpt(\u0027default_store\u0027, default\u003d\u0027file\u0027)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"known_stores_opt \u003d cfg.ListOpt(\u0027known_stores\u0027,"},{"line_number":52,"context_line":"                               default\u003d[\u0027glance.store.filesystem.Store\u0027])"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class GlanceConfigOpts(cfg.CommonConfigOpts):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHX%2F%2F8i4%3D","line":52,"updated":"2012-05-13 16:08:53.000000000","message":"Why not have these defined in glance.store.__init__?","commit_id":"f19f277a5ee1127269c2342c3528e56f397fc972"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b3d85378277b252c1daa0b85fca621eefdbba27c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"default_store_opt \u003d cfg.StrOpt(\u0027default_store\u0027, default\u003d\u0027file\u0027)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"known_stores_opt \u003d cfg.ListOpt(\u0027known_stores\u0027,"},{"line_number":52,"context_line":"                               default\u003d[\u0027glance.store.filesystem.Store\u0027])"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class GlanceConfigOpts(cfg.CommonConfigOpts):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHX%2F%2F8Z0%3D","line":52,"in_reply_to":"AAAAHX%2F%2F8fw%3D","updated":"2012-05-14 14:33:18.000000000","message":"But you don\u0027t need to import glance.store in this module...","commit_id":"f19f277a5ee1127269c2342c3528e56f397fc972"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"ebaebeb617e3f43fb78bf59faf661e65d89853f7","unresolved":false,"context_lines":[{"line_number":49,"context_line":"default_store_opt \u003d cfg.StrOpt(\u0027default_store\u0027, default\u003d\u0027file\u0027)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"known_stores_opt \u003d cfg.ListOpt(\u0027known_stores\u0027,"},{"line_number":52,"context_line":"                               default\u003d[\u0027glance.store.filesystem.Store\u0027])"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class GlanceConfigOpts(cfg.CommonConfigOpts):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHX%2F%2F8fw%3D","line":52,"in_reply_to":"AAAAHX%2F%2F8i4%3D","updated":"2012-05-14 03:33:20.000000000","message":"I didn\u0027t think python handle recursive import very well. Hard to define those there if this module includes that module....","commit_id":"f19f277a5ee1127269c2342c3528e56f397fc972"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"597c1d8310cf650de24c826e7c7ad97d9b3f7370","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    conf.register_opts(delete_opts)"},{"line_number":178,"context_line":"    conf.register_opt(known_stores_opt)"},{"line_number":179,"context_line":"    conf.register_opt(default_store_opt)"},{"line_number":180,"context_line":"    store.create_stores(conf)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"def load_paste_app(conf, app_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHX%2F%2F8i8%3D","line":180,"updated":"2012-05-13 16:08:53.000000000","message":"Why not have this method in glance.store.__init__?","commit_id":"f19f277a5ee1127269c2342c3528e56f397fc972"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b3d85378277b252c1daa0b85fca621eefdbba27c","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    conf.register_opts(delete_opts)"},{"line_number":178,"context_line":"    conf.register_opt(known_stores_opt)"},{"line_number":179,"context_line":"    conf.register_opt(default_store_opt)"},{"line_number":180,"context_line":"    store.create_stores(conf)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"def load_paste_app(conf, app_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHX%2F%2F8Zg%3D","line":180,"in_reply_to":"AAAAHX%2F%2F8fc%3D","updated":"2012-05-14 14:33:18.000000000","message":"See comment above. If you had this method in the glance.store module, you wouldn\u0027t need to import that module here...","commit_id":"f19f277a5ee1127269c2342c3528e56f397fc972"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"9a67e44868187d18a2d21fe9c3d1a58f0d4b5432","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    conf.register_opts(delete_opts)"},{"line_number":178,"context_line":"    conf.register_opt(known_stores_opt)"},{"line_number":179,"context_line":"    conf.register_opt(default_store_opt)"},{"line_number":180,"context_line":"    store.create_stores(conf)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"def load_paste_app(conf, app_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHX%2F%2F8fc%3D","line":180,"in_reply_to":"AAAAHX%2F%2F8fs%3D","updated":"2012-05-14 03:39:32.000000000","message":"Moving it was done to solve, http://paste.openstack.org/show/16879/, one place where stores are created seems to make sense also, instead of different modules setting up the storage classes. But then if this module will call into the store module, then the store module can\u0027t import this cfg module.... Pain in the butt.","commit_id":"f19f277a5ee1127269c2342c3528e56f397fc972"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"ebaebeb617e3f43fb78bf59faf661e65d89853f7","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    conf.register_opts(delete_opts)"},{"line_number":178,"context_line":"    conf.register_opt(known_stores_opt)"},{"line_number":179,"context_line":"    conf.register_opt(default_store_opt)"},{"line_number":180,"context_line":"    store.create_stores(conf)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"def load_paste_app(conf, app_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAHX%2F%2F8fs%3D","line":180,"in_reply_to":"AAAAHX%2F%2F8i8%3D","updated":"2012-05-14 03:33:20.000000000","message":"I didn\u0027t think python handle recursive import very well. Hard to define those there if this module includes that module....","commit_id":"f19f277a5ee1127269c2342c3528e56f397fc972"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from glance import version"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# Defined at module level due to _is_opt_registered"},{"line_number":35,"context_line":"# identity check (not equality)."},{"line_number":36,"context_line":"paste_deploy_group \u003d cfg.OptGroup(\u0027paste_deploy\u0027)"},{"line_number":37,"context_line":"paste_deploy_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8Gk%3D","line":34,"updated":"2012-05-14 20:45:18.000000000","message":"Remove this.","commit_id":"4ec870d2bfba1ee1031c37b057a791562a72bcd6"}],"glance/openstack/common/cfg.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2fee5566c1a2a5a6bd4191bfc221da828dfef07b","unresolved":false,"context_lines":[{"line_number":423,"context_line":"    \"\"\""},{"line_number":424,"context_line":"    if opt.dest in opts:"},{"line_number":425,"context_line":"        # TODO(harlowja) this may be a bug since it is"},{"line_number":426,"context_line":"        # doing identity checks and not equality checks??"},{"line_number":427,"context_line":"        if opts[opt.dest][\u0027opt\u0027] is not opt:"},{"line_number":428,"context_line":"            raise DuplicateOptError(opt.name)"},{"line_number":429,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAHX%2F%2F8I0%3D","line":426,"updated":"2012-05-14 20:00:42.000000000","message":"Never edit anything in glance/openstack/common/*. This code is copied in from the openstack-common project, so if this is a bug, you should definitely report it there.","commit_id":"2567cb7eea59bbdb6e63fea52f95ede30f1893fb"}],"glance/store/__init__.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"61f24b15c2d9cd18a644f169b8a62ef0c5aa5a2d","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        store_cls \u003d utils.import_class(store_entry)"},{"line_number":133,"context_line":"    except exception.NotFound:"},{"line_number":134,"context_line":"        raise BackendException(\u0027Unable to load store. \u0027"},{"line_number":135,"context_line":"                       \u0027Could not find a class named %s.\u0027"},{"line_number":136,"context_line":"                       % store_entry)"},{"line_number":137,"context_line":"    return store_cls"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F%2BV4%3D","line":135,"updated":"2012-05-09 02:27:13.000000000","message":"PEP8 vertical alignment","commit_id":"275eaa65a059acc253fa0538b5a53cbc67c7540a"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"61f24b15c2d9cd18a644f169b8a62ef0c5aa5a2d","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"# Should this be at the top of the file?? (harlowja)"},{"line_number":141,"context_line":"known_stores_opt \u003d cfg.ListOpt(\u0027known_stores\u0027,"},{"line_number":142,"context_line":"    default\u003d[\u0027glance.store.filesystem.Store\u0027])"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def create_stores(conf):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F%2BV0%3D","line":142,"updated":"2012-05-09 02:27:13.000000000","message":"PEP8 vertical alignment","commit_id":"275eaa65a059acc253fa0538b5a53cbc67c7540a"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"61f24b15c2d9cd18a644f169b8a62ef0c5aa5a2d","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        schemes \u003d store_instance.get_schemes()"},{"line_number":160,"context_line":"        if not schemes:"},{"line_number":161,"context_line":"            raise BackendException(\u0027Unable to register store %s. \u0027"},{"line_number":162,"context_line":"                            \u0027No schemes associated with it.\u0027"},{"line_number":163,"context_line":"                           % store_cls)"},{"line_number":164,"context_line":"        else:"},{"line_number":165,"context_line":"            logger.debug(\"Registering store %s with schemes %s\","}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F%2BVw%3D","line":162,"updated":"2012-05-09 02:27:13.000000000","message":"PEP8 vertical alignment","commit_id":"275eaa65a059acc253fa0538b5a53cbc67c7540a"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"61f24b15c2d9cd18a644f169b8a62ef0c5aa5a2d","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                           % store_cls)"},{"line_number":164,"context_line":"        else:"},{"line_number":165,"context_line":"            logger.debug(\"Registering store %s with schemes %s\","},{"line_number":166,"context_line":"                store_cls, schemes)"},{"line_number":167,"context_line":"            STORES[store_cls] \u003d store_instance"},{"line_number":168,"context_line":"            scheme_map \u003d {}"},{"line_number":169,"context_line":"            for scheme in schemes:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F%2BVs%3D","line":166,"updated":"2012-05-09 02:27:13.000000000","message":"PEP8 vertical alignment","commit_id":"275eaa65a059acc253fa0538b5a53cbc67c7540a"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"c154f1c42608d287fe2e61ac6168244dcdbd3d11","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"# Should this be at the top of the file?? (harlowja)"},{"line_number":141,"context_line":"known_stores_opt \u003d cfg.ListOpt(\u0027known_stores\u0027,"},{"line_number":142,"context_line":"                                default\u003d[\u0027glance.store.filesystem.Store\u0027])"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def create_stores(conf):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F%2BBo%3D","line":142,"updated":"2012-05-09 17:57:17.000000000","message":"Align with beginning of first line\u0027s argument (\u0027).","commit_id":"94066e5368f55ee0c19d9b225e8428fad5ac7859"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"c154f1c42608d287fe2e61ac6168244dcdbd3d11","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                                   % store_cls)"},{"line_number":164,"context_line":"        else:"},{"line_number":165,"context_line":"            logger.debug(\"Registering store %s with schemes %s\","},{"line_number":166,"context_line":"                          store_cls, schemes)"},{"line_number":167,"context_line":"            STORES[store_cls] \u003d store_instance"},{"line_number":168,"context_line":"            scheme_map \u003d {}"},{"line_number":169,"context_line":"            for scheme in schemes:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F%2BBk%3D","line":166,"updated":"2012-05-09 17:57:17.000000000","message":"Align with beginning of first line\u0027s argument (\").","commit_id":"94066e5368f55ee0c19d9b225e8428fad5ac7859"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"d2494197ce39469d40d0cb2052d08826eeff311d","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"# Should this be at the top of the file?? (harlowja)"},{"line_number":141,"context_line":"known_stores_opt \u003d cfg.ListOpt(\u0027known_stores\u0027,"},{"line_number":142,"context_line":"                               default\u003d[\u0027glance.store.filesystem.Store\u0027])"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAHX%2F%2F93c%3D","line":141,"updated":"2012-05-09 21:27:02.000000000","message":"This can live within the create_stores method since its the only code that needs it.","commit_id":"eb168c8ef15ec8045b855b40eb50b09f4154180c"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"d2494197ce39469d40d0cb2052d08826eeff311d","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def create_stores(conf):"},{"line_number":146,"context_line":"    \"\"\""},{"line_number":147,"context_line":"    Registers a store module and a set of schemes"},{"line_number":148,"context_line":"    for which a particular URI request should be routed."},{"line_number":149,"context_line":"    \"\"\""},{"line_number":150,"context_line":"    conf.register_opt(known_stores_opt)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAHX%2F%2F93g%3D","line":147,"updated":"2012-05-09 21:27:02.000000000","message":"This docstring is a bit wrong. It registers *all* store modules, right?","commit_id":"eb168c8ef15ec8045b855b40eb50b09f4154180c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2fee5566c1a2a5a6bd4191bfc221da828dfef07b","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"# Defined at module level due to _is_opt_registered"},{"line_number":247,"context_line":"# identity check (not equality)."},{"line_number":248,"context_line":"scrubber_datadir_opt \u003d cfg.StrOpt(\u0027scrubber_datadir\u0027,"},{"line_number":249,"context_line":"                                  default\u003d\u0027/var/lib/glance/scrubber\u0027)"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAHX%2F%2F8Iw%3D","line":247,"updated":"2012-05-14 20:00:42.000000000","message":"I\u0027m pretty sure these repeated comments aren\u0027t necessary, Josh :)","commit_id":"2567cb7eea59bbdb6e63fea52f95ede30f1893fb"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"009dd83d2f34965857d4ab7ed2218355c9faf391","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"# Defined at module level due to _is_opt_registered"},{"line_number":247,"context_line":"# identity check (not equality)."},{"line_number":248,"context_line":"scrubber_datadir_opt \u003d cfg.StrOpt(\u0027scrubber_datadir\u0027,"},{"line_number":249,"context_line":"                                  default\u003d\u0027/var/lib/glance/scrubber\u0027)"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAHX%2F%2F8IA%3D","line":247,"in_reply_to":"AAAAHX%2F%2F8Iw%3D","updated":"2012-05-14 20:08:11.000000000","message":"What if there is bit rot, and like a bit gets flipped, we need comment backups. haha","commit_id":"2567cb7eea59bbdb6e63fea52f95ede30f1893fb"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from glance.common import exception"},{"line_number":24,"context_line":"from glance.common import utils"},{"line_number":25,"context_line":"from glance import registry"},{"line_number":26,"context_line":"from glance.openstack.common import cfg"},{"line_number":27,"context_line":"from glance.store import location"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"logger \u003d logging.getLogger(\u0027glance.store\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8Fc%3D","line":26,"updated":"2012-05-14 20:45:18.000000000","message":"Undo this change. It was correct.","commit_id":"4ec870d2bfba1ee1031c37b057a791562a72bcd6"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":146,"context_line":"def create_stores(conf):"},{"line_number":147,"context_line":"    \"\"\""},{"line_number":148,"context_line":"    Registers all store modules and all schemes"},{"line_number":149,"context_line":"    for which a particular URI request should be routed."},{"line_number":150,"context_line":"    \"\"\""},{"line_number":151,"context_line":"    conf.register_opt(known_stores_opt)"},{"line_number":152,"context_line":"    store_count \u003d 0"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8GY%3D","line":149,"updated":"2012-05-14 20:45:18.000000000","message":"I wouldn\u0027t really call this \u0027routing\u0027. I don\u0027t think you need to add this.","commit_id":"4ec870d2bfba1ee1031c37b057a791562a72bcd6"}],"glance/store/location.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"61f24b15c2d9cd18a644f169b8a62ef0c5aa5a2d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        raise exception.UnknownScheme(pieces.scheme)"},{"line_number":73,"context_line":"    scheme_info \u003d SCHEME_TO_CLS_MAP[pieces.scheme]"},{"line_number":74,"context_line":"    return Location(pieces.scheme, uri\u003duri,"},{"line_number":75,"context_line":"            store_location_class\u003dscheme_info[\u0027location_class\u0027])"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def register_scheme_map(scheme_map):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F%2BVU%3D","line":75,"updated":"2012-05-09 02:27:13.000000000","message":"PEP8 vertical alignment","commit_id":"275eaa65a059acc253fa0538b5a53cbc67c7540a"}],"glance/tests/unit/base.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                   \u0027default_store\u0027: \u0027filesystem\u0027,"},{"line_number":45,"context_line":"                   \u0027filesystem_store_datadir\u0027: os.path.join(self.test_dir),"},{"line_number":46,"context_line":"                   \u0027policy_file\u0027: policy_file}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.conf \u003d test_utils.TestConfigOpts(options)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def _copy_data_file(self, file_name, dst_dir):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8FY%3D","side":"PARENT","line":47,"updated":"2012-05-14 20:45:18.000000000","message":"Not sure why this is a relevant change to make.","commit_id":"09ec351b34f01c2dc05f0afb059833d176b0805e"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from glance import store"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from glance.store import location"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class StoreClearingUnitTest(unittest.TestCase):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8GQ%3D","line":30,"updated":"2012-05-14 20:45:18.000000000","message":"Put these imports above line 25.","commit_id":"4ec870d2bfba1ee1031c37b057a791562a72bcd6"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b8aef5d71bb655f85b29277028e7849a1f4882fa","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from glance import store"},{"line_number":26,"context_line":"from glance.store import location"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from glance.tests import stubs"},{"line_number":29,"context_line":"from glance.tests import utils as test_utils"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAHX%2F%2F78c%3D","line":27,"updated":"2012-05-15 03:12:39.000000000","message":"Empty line not necessary. Please see HACKING for an explanation of our import usage.","commit_id":"9e3773824c1a02eea17c85ffccee29e2adf8948a"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"fb40efaf68addd6472e7379a66320b35f2c05abb","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from glance import store"},{"line_number":26,"context_line":"from glance.store import location"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from glance.tests import stubs"},{"line_number":29,"context_line":"from glance.tests import utils as test_utils"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAHX%2F%2F7rU%3D","line":27,"in_reply_to":"AAAAHX%2F%2F78c%3D","updated":"2012-05-15 17:40:49.000000000","message":"Gosh I wish there was a little helper tool that would check the things PEP8 can\u0027t (like this). I\u0027m seeing if the openstack-common can help with this, its a pain to have to wait for this stage to run these little validations. Especially if you work in multiple python projects and they don\u0027t follow this.","commit_id":"9e3773824c1a02eea17c85ffccee29e2adf8948a"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"4b09f2a09f2eac09ce8758dd914949888716e6a7","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from glance import store"},{"line_number":26,"context_line":"from glance.store import location"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from glance.tests import stubs"},{"line_number":29,"context_line":"from glance.tests import utils as test_utils"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAHX%2F%2F7qw%3D","line":27,"in_reply_to":"AAAAHX%2F%2F7q8%3D","updated":"2012-05-15 17:45:55.000000000","message":"I\u0027m pretty sure it\u0027s something that can be checked pretty easily with some simple little script to at least achieve 95% of the cases (ie no dynamic imports via some string or some other junk).","commit_id":"9e3773824c1a02eea17c85ffccee29e2adf8948a"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"35d7c2c3e5e9f817974d5f2c8d8007487da9c700","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from glance import store"},{"line_number":26,"context_line":"from glance.store import location"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from glance.tests import stubs"},{"line_number":29,"context_line":"from glance.tests import utils as test_utils"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAHX%2F%2F7q8%3D","line":27,"in_reply_to":"AAAAHX%2F%2F7rI%3D","updated":"2012-05-15 17:44:10.000000000","message":"Ya, u shouldn\u0027t have to be that utility, there should be this thing called code that helps with this ;)","commit_id":"9e3773824c1a02eea17c85ffccee29e2adf8948a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"5feccdee02f22022af0df9e3997580ce6926706e","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from glance import store"},{"line_number":26,"context_line":"from glance.store import location"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from glance.tests import stubs"},{"line_number":29,"context_line":"from glance.tests import utils as test_utils"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAHX%2F%2F7rI%3D","line":27,"in_reply_to":"AAAAHX%2F%2F7rU%3D","updated":"2012-05-15 17:43:09.000000000","message":"I would like to point out that *I* have been that utility. All you have to do is look over your diff before you submit it. Don\u0027t assume it\u0027s perfect just because pep8 and the tests pass.","commit_id":"9e3773824c1a02eea17c85ffccee29e2adf8948a"}],"glance/tests/unit/test_clients.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from glance.registry.db import api as db_api"},{"line_number":29,"context_line":"from glance.registry.db import models as db_models"},{"line_number":30,"context_line":"from glance.registry import client as rclient"},{"line_number":31,"context_line":"from glance.tests.unit import base"},{"line_number":32,"context_line":"from glance.tests import utils as test_utils"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d {\u0027sql_connection\u0027: \u0027sqlite://\u0027}"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8GM%3D","side":"PARENT","line":31,"updated":"2012-05-14 20:45:18.000000000","message":"This was correct. \u0027glance.tests.unit.base\u0027 is less than \u0027glance.tests.utils\u0027","commit_id":"09ec351b34f01c2dc05f0afb059833d176b0805e"}],"glance/tests/unit/test_http_store.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        loc \u003d get_location_from_uri(uri)"},{"line_number":103,"context_line":"        (image_file, image_size) \u003d self.store.get(loc)"},{"line_number":104,"context_line":"        self.assertEqual(image_size, 31)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        chunks \u003d [c for c in image_file]"},{"line_number":107,"context_line":"        self.assertEqual(chunks, expected_returns)"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8FU%3D","side":"PARENT","line":105,"updated":"2012-05-14 20:45:18.000000000","message":"Undo this.","commit_id":"09ec351b34f01c2dc05f0afb059833d176b0805e"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from glance.store.http import Store"},{"line_number":30,"context_line":"from glance.store.location import get_location_from_uri"},{"line_number":31,"context_line":"from glance.tests import utils, stubs as test_stubs"},{"line_number":32,"context_line":"from glance.tests.unit import base"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def stub_out_http_backend(stubs):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8GI%3D","line":32,"updated":"2012-05-14 20:45:18.000000000","message":"Swap this with the line above.","commit_id":"4ec870d2bfba1ee1031c37b057a791562a72bcd6"}],"glance/tests/unit/test_s3_store.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from glance.store.location import get_location_from_uri"},{"line_number":31,"context_line":"from glance.store.s3 import Store, get_s3_location"},{"line_number":32,"context_line":"from glance.tests import utils as test_utils"},{"line_number":33,"context_line":"from glance.tests.unit import base"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"FAKE_UUID \u003d utils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8GE%3D","line":33,"updated":"2012-05-14 20:45:18.000000000","message":"Swap this with the line above it.","commit_id":"4ec870d2bfba1ee1031c37b057a791562a72bcd6"}],"glance/tests/unit/test_store_location.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":25,"context_line":"import glance.store.swift"},{"line_number":26,"context_line":"import glance.store.s3"},{"line_number":27,"context_line":"from glance.tests import utils"},{"line_number":28,"context_line":"from glance.tests.unit import base"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class TestStoreLocation(base.StoreClearingUnitTest):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8F8%3D","line":28,"updated":"2012-05-14 20:45:18.000000000","message":"Swap this with the line above it.","commit_id":"4ec870d2bfba1ee1031c37b057a791562a72bcd6"}],"glance/tests/unit/test_swift_store.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":32,"context_line":"import glance.store.swift"},{"line_number":33,"context_line":"from glance.store.location import get_location_from_uri"},{"line_number":34,"context_line":"from glance.tests import utils as test_utils"},{"line_number":35,"context_line":"from glance.tests.unit import base"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"FAKE_UUID \u003d utils.generate_uuid"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8F0%3D","line":35,"updated":"2012-05-14 20:45:18.000000000","message":"Swap this with the line above it.","commit_id":"4ec870d2bfba1ee1031c37b057a791562a72bcd6"}],"glance/tests/unit/v2/test_image_data_resource.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":27,"context_line":"class TestImagesController(unittest.TestCase):"},{"line_number":28,"context_line":"    def setUp(self):"},{"line_number":29,"context_line":"        super(TestImagesController, self).setUp()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        conf \u003d glance.tests.utils.TestConfigOpts({"},{"line_number":32,"context_line":"                \u0027verbose\u0027: True,"},{"line_number":33,"context_line":"                \u0027debug\u0027: True,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8Fs%3D","side":"PARENT","line":30,"updated":"2012-05-14 20:45:18.000000000","message":"Undo this.","commit_id":"09ec351b34f01c2dc05f0afb059833d176b0805e"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from glance.common import utils"},{"line_number":23,"context_line":"import glance.tests.unit.utils as test_utils"},{"line_number":24,"context_line":"import glance.tests.utils"},{"line_number":25,"context_line":"from glance.tests.unit import base"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class TestImagesController(base.StoreClearingUnitTest):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8Fw%3D","line":25,"updated":"2012-05-14 20:45:18.000000000","message":"Swap this with the import above it.","commit_id":"4ec870d2bfba1ee1031c37b057a791562a72bcd6"}],"glance/tests/utils.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from glance.common import config"},{"line_number":31,"context_line":"from glance.common import utils"},{"line_number":32,"context_line":"from glance.common import wsgi"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def get_isolated_test_env():"},{"line_number":36,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8Fo%3D","side":"PARENT","line":33,"updated":"2012-05-14 20:45:18.000000000","message":"Delete this line.","commit_id":"09ec351b34f01c2dc05f0afb059833d176b0805e"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        self._test_values \u003d test_values"},{"line_number":78,"context_line":"        self._test_groups \u003d groups"},{"line_number":79,"context_line":"        self.clean \u003d clean"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        self.temp_file \u003d os.path.join(tempfile.mkdtemp(), \u0027testcfg.conf\u0027)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        self()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8Fk%3D","side":"PARENT","line":80,"updated":"2012-05-14 20:45:18.000000000","message":"Undo this.","commit_id":"09ec351b34f01c2dc05f0afb059833d176b0805e"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"b9636b1ba228d9da648e149cb143d405eab35983","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.clean \u003d clean"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        self.temp_file \u003d os.path.join(tempfile.mkdtemp(), \u0027testcfg.conf\u0027)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        self()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def __call__(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAHX%2F%2F8Fg%3D","side":"PARENT","line":82,"updated":"2012-05-14 20:45:18.000000000","message":"Undo this.","commit_id":"09ec351b34f01c2dc05f0afb059833d176b0805e"}]}
