)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1773,"name":"oliver-leahy-l","email":"oliver.leahy@hpe.com","username":"oliver-leahy-l"},"change_message_id":"ca5a03b13d053391596119ea312730180e5995e9","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"3. Proposed file structure for flows is more clean and helps to find and reuse"},{"line_number":15,"context_line":"common code."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partially implements: blueprint create-volume-flow"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I63473f549f0c501fe0f373830bc1080239d01892"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAATn%2F8844%3D","line":16,"updated":"2013-12-18 13:14:26.000000000","message":"Should you mention that the unused _exception_to_unicode() has been removed","commit_id":"ec6b23c9e829debd56380215f27a960152dd9932"},{"author":{"_account_id":7349,"name":"Anastasia Karpinska","email":"akarpinska@griddynamics.com","username":"anastasia-karpinska"},"change_message_id":"0eb22f47032d0286c96233646b771ddceed4e4ae","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"3. Proposed file structure for flows is more clean and helps to find and reuse"},{"line_number":15,"context_line":"common code."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partially implements: blueprint create-volume-flow"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I63473f549f0c501fe0f373830bc1080239d01892"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAATn%2F8ybY%3D","line":16,"in_reply_to":"AAAATn%2F8844%3D","updated":"2013-12-20 10:06:28.000000000","message":"Done","commit_id":"ec6b23c9e829debd56380215f27a960152dd9932"}],"cinder/scheduler/flows/__init__.py":[{"author":{"_account_id":8895,"name":"Stanislav Kudriashev","email":"stas.kudriashev@gmail.com","username":"skudriashev"},"change_message_id":"59a38ac989fd51d380e5ad008442a55be5f27943","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"#    Copyright (C) 2013 Yahoo! Inc. All Rights Reserved."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":8,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9Bpo%3D","line":5,"updated":"2013-12-17 15:21:51.000000000","message":"#    Copyright (c) 2013 OpenStack Foundation?","commit_id":"66f650c0c2a693c2e01173cf928263d86189553d"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"641da12c085f96e10b745a1585664d072c358329","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2F%2FkI%3D","line":1,"updated":"2014-01-04 13:36:24.000000000","message":"empty files shouldn\u0027t have license header","commit_id":"694070d356425805d9aabc539b0a48911727e38a"},{"author":{"_account_id":7349,"name":"Anastasia Karpinska","email":"akarpinska@griddynamics.com","username":"anastasia-karpinska"},"change_message_id":"9da9758291b2cf352dab5e56bdde575becd6cfc1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2F8vw%3D","line":1,"in_reply_to":"AAAAUH%2F%2F%2FkI%3D","updated":"2014-01-06 10:55:53.000000000","message":"Done","commit_id":"694070d356425805d9aabc539b0a48911727e38a"}],"cinder/scheduler/flows/create_volume.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"f1d90d8ea7cb5be4a8f0844fa0cc6fd0125d8018","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        db,"},{"line_number":121,"context_line":"        rebind\u003d{\u0027request_spec\u0027: \u0027raw_request_spec\u0027}))"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def schedule_create_volume(context, request_spec, filter_properties):"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        def _log_failure(cause):"},{"line_number":126,"context_line":"            LOG.error(_(\"Failed to schedule_create_volume: %(cause)s\") %"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F8zWU%3D","line":123,"updated":"2013-12-20 06:40:41.000000000","message":"I think using this as a nested function will make it hard to be able to persist the location of this function (since its not accessible from the module level, and its not accessible as a class name) so we might not want to make it a nested task function but its own function instead, what do u think?","commit_id":"ec6b23c9e829debd56380215f27a960152dd9932"},{"author":{"_account_id":7349,"name":"Anastasia Karpinska","email":"akarpinska@griddynamics.com","username":"anastasia-karpinska"},"change_message_id":"0eb22f47032d0286c96233646b771ddceed4e4ae","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        db,"},{"line_number":121,"context_line":"        rebind\u003d{\u0027request_spec\u0027: \u0027raw_request_spec\u0027}))"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def schedule_create_volume(context, request_spec, filter_properties):"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        def _log_failure(cause):"},{"line_number":126,"context_line":"            LOG.error(_(\"Failed to schedule_create_volume: %(cause)s\") %"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F8ybM%3D","line":123,"in_reply_to":"AAAATn%2F8zWU%3D","updated":"2013-12-20 10:06:28.000000000","message":"I want to make a separate task class from this function in next commit.","commit_id":"ec6b23c9e829debd56380215f27a960152dd9932"}],"cinder/volume/flows/api/create_volume.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"f1d90d8ea7cb5be4a8f0844fa0cc6fd0125d8018","unresolved":false,"context_lines":[{"line_number":404,"context_line":"    default_provides \u003d set([\u0027volume_properties\u0027, \u0027volume_id\u0027, \u0027volume\u0027])"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    def __init__(self, db):"},{"line_number":407,"context_line":"        requires \u003d [\u0027availability_zone\u0027, \u0027description\u0027, \u0027metadata\u0027,"},{"line_number":408,"context_line":"                    \u0027name\u0027, \u0027reservations\u0027, \u0027size\u0027, \u0027snapshot_id\u0027,"},{"line_number":409,"context_line":"                    \u0027source_volid\u0027, \u0027volume_type_id\u0027, \u0027encryption_key_id\u0027]"},{"line_number":410,"context_line":"        super(EntryCreateTask, self).__init__(addons\u003d[ACTION],"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F8zVM%3D","line":407,"updated":"2013-12-20 06:40:41.000000000","message":"An idea for taskflow, maybe we should allow a default_requires that gets added onto to the ones found by examining the args of execute.","commit_id":"ec6b23c9e829debd56380215f27a960152dd9932"},{"author":{"_account_id":7349,"name":"Anastasia Karpinska","email":"akarpinska@griddynamics.com","username":"anastasia-karpinska"},"change_message_id":"0eb22f47032d0286c96233646b771ddceed4e4ae","unresolved":false,"context_lines":[{"line_number":404,"context_line":"    default_provides \u003d set([\u0027volume_properties\u0027, \u0027volume_id\u0027, \u0027volume\u0027])"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    def __init__(self, db):"},{"line_number":407,"context_line":"        requires \u003d [\u0027availability_zone\u0027, \u0027description\u0027, \u0027metadata\u0027,"},{"line_number":408,"context_line":"                    \u0027name\u0027, \u0027reservations\u0027, \u0027size\u0027, \u0027snapshot_id\u0027,"},{"line_number":409,"context_line":"                    \u0027source_volid\u0027, \u0027volume_type_id\u0027, \u0027encryption_key_id\u0027]"},{"line_number":410,"context_line":"        super(EntryCreateTask, self).__init__(addons\u003d[ACTION],"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F8yZM%3D","line":407,"in_reply_to":"AAAATn%2F8zVM%3D","updated":"2013-12-20 10:06:28.000000000","message":"This patch is just splits __init__.py on several packages. All refactorings of flows and tasks will be done after that one.","commit_id":"ec6b23c9e829debd56380215f27a960152dd9932"},{"author":{"_account_id":7366,"name":"Ivan Melnikov","email":"imelnikov@griddynamics.com","username":"imelnikov"},"change_message_id":"7f0dc420582103a872377588124729f237a6e3ba","unresolved":false,"context_lines":[{"line_number":404,"context_line":"    default_provides \u003d set([\u0027volume_properties\u0027, \u0027volume_id\u0027, \u0027volume\u0027])"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    def __init__(self, db):"},{"line_number":407,"context_line":"        requires \u003d [\u0027availability_zone\u0027, \u0027description\u0027, \u0027metadata\u0027,"},{"line_number":408,"context_line":"                    \u0027name\u0027, \u0027reservations\u0027, \u0027size\u0027, \u0027snapshot_id\u0027,"},{"line_number":409,"context_line":"                    \u0027source_volid\u0027, \u0027volume_type_id\u0027, \u0027encryption_key_id\u0027]"},{"line_number":410,"context_line":"        super(EntryCreateTask, self).__init__(addons\u003d[ACTION],"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F8yYQ%3D","line":407,"in_reply_to":"AAAATn%2F8zVM%3D","updated":"2013-12-20 10:09:28.000000000","message":"Well, default provides appeared as a compensation for lack of naming for function results -- as we can\u0027t infer result names from function signature. So, suggested functionality is more or less already in taskflow -- just move requirements to execute argument list and admit that you have a method with HUGE argument list. AFAIK Anastasia has plans to get rid of this hugeness in farther refactorings, which she will do in follow-up changesets.","commit_id":"ec6b23c9e829debd56380215f27a960152dd9932"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"53c3bf57885760dc413ba9d6b3b50d83e81071c2","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            if CONF.default_availability_zone:"},{"line_number":249,"context_line":"                availability_zone \u003d CONF.default_availability_zone"},{"line_number":250,"context_line":"            else:"},{"line_number":251,"context_line":"                # For backwards compatibility use the storge_availability_zone"},{"line_number":252,"context_line":"                availability_zone \u003d CONF.storage_availability_zone"},{"line_number":253,"context_line":"        if not self.az_check_functor(availability_zone):"},{"line_number":254,"context_line":"            msg \u003d _(\"Availability zone \u0027%s\u0027 is invalid\") % (availability_zone)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BvKQ%3D","line":251,"updated":"2014-01-22 18:31:46.000000000","message":"Looks like you accidentally deleted a character here.","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7349,"name":"Anastasia Karpinska","email":"akarpinska@griddynamics.com","username":"anastasia-karpinska"},"change_message_id":"5a82141b367fcb19f38c48446dc520aacba20416","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            if CONF.default_availability_zone:"},{"line_number":249,"context_line":"                availability_zone \u003d CONF.default_availability_zone"},{"line_number":250,"context_line":"            else:"},{"line_number":251,"context_line":"                # For backwards compatibility use the storge_availability_zone"},{"line_number":252,"context_line":"                availability_zone \u003d CONF.storage_availability_zone"},{"line_number":253,"context_line":"        if not self.az_check_functor(availability_zone):"},{"line_number":254,"context_line":"            msg \u003d _(\"Availability zone \u0027%s\u0027 is invalid\") % (availability_zone)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BqKg%3D","line":251,"in_reply_to":"AAAAUH%2F%2BvKQ%3D","updated":"2014-01-24 13:00:50.000000000","message":"Done","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"53c3bf57885760dc413ba9d6b3b50d83e81071c2","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        Accesses the database and creates a new entry for the to be created"},{"line_number":409,"context_line":"        volume using the given volume properties which are extracted from the"},{"line_number":410,"context_line":"        input kwargs (and associated requirements this task needs). These"},{"line_number":411,"context_line":"        requirements should be previously satisifed and validated by a"},{"line_number":412,"context_line":"        pre-cursor task."},{"line_number":413,"context_line":"        \"\"\""},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BvKE%3D","line":411,"updated":"2014-01-22 18:31:46.000000000","message":"Another accidental typo.","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7349,"name":"Anastasia Karpinska","email":"akarpinska@griddynamics.com","username":"anastasia-karpinska"},"change_message_id":"5a82141b367fcb19f38c48446dc520aacba20416","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        Accesses the database and creates a new entry for the to be created"},{"line_number":409,"context_line":"        volume using the given volume properties which are extracted from the"},{"line_number":410,"context_line":"        input kwargs (and associated requirements this task needs). These"},{"line_number":411,"context_line":"        requirements should be previously satisifed and validated by a"},{"line_number":412,"context_line":"        pre-cursor task."},{"line_number":413,"context_line":"        \"\"\""},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BqKc%3D","line":411,"in_reply_to":"AAAAUH%2F%2BvKE%3D","updated":"2014-01-24 13:00:50.000000000","message":"Done","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"53c3bf57885760dc413ba9d6b3b50d83e81071c2","unresolved":false,"context_lines":[{"line_number":434,"context_line":"            \u0027volume_properties\u0027: volume_properties,"},{"line_number":435,"context_line":"            # NOTE(harlowja): it appears like further usage of this volume"},{"line_number":436,"context_line":"            # result actually depend on it being a sqlalchemy object and not"},{"line_number":437,"context_line":"            # just a plain dictionary so thats why we are storing this here."},{"line_number":438,"context_line":"            #"},{"line_number":439,"context_line":"            # In the future where this task results can be serialized and"},{"line_number":440,"context_line":"            # restored automatically for continued running we will need to"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BvKA%3D","line":437,"updated":"2014-01-22 18:31:46.000000000","message":"Another accidental deletion.","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7349,"name":"Anastasia Karpinska","email":"akarpinska@griddynamics.com","username":"anastasia-karpinska"},"change_message_id":"5a82141b367fcb19f38c48446dc520aacba20416","unresolved":false,"context_lines":[{"line_number":434,"context_line":"            \u0027volume_properties\u0027: volume_properties,"},{"line_number":435,"context_line":"            # NOTE(harlowja): it appears like further usage of this volume"},{"line_number":436,"context_line":"            # result actually depend on it being a sqlalchemy object and not"},{"line_number":437,"context_line":"            # just a plain dictionary so thats why we are storing this here."},{"line_number":438,"context_line":"            #"},{"line_number":439,"context_line":"            # In the future where this task results can be serialized and"},{"line_number":440,"context_line":"            # restored automatically for continued running we will need to"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BqKU%3D","line":437,"in_reply_to":"AAAAUH%2F%2BvKA%3D","updated":"2014-01-24 13:00:50.000000000","message":"Done","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"}],"cinder/volume/flows/manager/create_volume.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"53c3bf57885760dc413ba9d6b3b50d83e81071c2","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                \u0027status\u0027: \u0027creating\u0027,"},{"line_number":139,"context_line":"                \u0027scheduled_at\u0027: timeutils.utcnow(),"},{"line_number":140,"context_line":"            }"},{"line_number":141,"context_line":"            LOG.debug(_(\"Updating volume %(volume_id)s with %(update)s\") %"},{"line_number":142,"context_line":"                      {\u0027update\u0027: update, \u0027volume_id\u0027: volume_id})"},{"line_number":143,"context_line":"            self.db.volume_update(context, volume_id, update)"},{"line_number":144,"context_line":"        except exception.CinderException:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BvAM%3D","line":141,"updated":"2014-01-22 18:31:46.000000000","message":"Suggest ending this with a \u0027.\u0027","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7349,"name":"Anastasia Karpinska","email":"akarpinska@griddynamics.com","username":"anastasia-karpinska"},"change_message_id":"5a82141b367fcb19f38c48446dc520aacba20416","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                \u0027status\u0027: \u0027creating\u0027,"},{"line_number":139,"context_line":"                \u0027scheduled_at\u0027: timeutils.utcnow(),"},{"line_number":140,"context_line":"            }"},{"line_number":141,"context_line":"            LOG.debug(_(\"Updating volume %(volume_id)s with %(update)s\") %"},{"line_number":142,"context_line":"                      {\u0027update\u0027: update, \u0027volume_id\u0027: volume_id})"},{"line_number":143,"context_line":"            self.db.volume_update(context, volume_id, update)"},{"line_number":144,"context_line":"        except exception.CinderException:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BqJ4%3D","line":141,"in_reply_to":"AAAAUH%2F%2BvAM%3D","updated":"2014-01-24 13:00:50.000000000","message":"Done","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"53c3bf57885760dc413ba9d6b3b50d83e81071c2","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        \"\"\""},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        log_template \u003d _(\"Copying metadata from %(src_type)s %(src_id)s to \""},{"line_number":397,"context_line":"                         \"%(vol_id)s\")"},{"line_number":398,"context_line":"        exception_template \u003d _(\"Failed updating volume %(vol_id)s metadata\""},{"line_number":399,"context_line":"                               \" using the provided %(src_type)s\""},{"line_number":400,"context_line":"                               \" %(src_id)s metadata\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2Bu%2BI%3D","line":397,"updated":"2014-01-22 18:31:46.000000000","message":"Suggest ending this with a \u0027.\u0027 .","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7349,"name":"Anastasia Karpinska","email":"akarpinska@griddynamics.com","username":"anastasia-karpinska"},"change_message_id":"5a82141b367fcb19f38c48446dc520aacba20416","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        \"\"\""},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        log_template \u003d _(\"Copying metadata from %(src_type)s %(src_id)s to \""},{"line_number":397,"context_line":"                         \"%(vol_id)s\")"},{"line_number":398,"context_line":"        exception_template \u003d _(\"Failed updating volume %(vol_id)s metadata\""},{"line_number":399,"context_line":"                               \" using the provided %(src_type)s\""},{"line_number":400,"context_line":"                               \" %(src_id)s metadata\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BqJo%3D","line":397,"in_reply_to":"AAAAUH%2F%2Bu%2BI%3D","updated":"2014-01-24 13:00:50.000000000","message":"Done","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"53c3bf57885760dc413ba9d6b3b50d83e81071c2","unresolved":false,"context_lines":[{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    def _enable_bootable_flag(self, context, volume_id):"},{"line_number":468,"context_line":"        try:"},{"line_number":469,"context_line":"            LOG.debug(_(\u0027Marking volume %s as bootable\u0027), volume_id)"},{"line_number":470,"context_line":"            self.db.volume_update(context, volume_id, {\u0027bootable\u0027: True})"},{"line_number":471,"context_line":"        except exception.CinderException as ex:"},{"line_number":472,"context_line":"            LOG.exception(_(\"Failed updating volume %(volume_id)s bootable\""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2Bu9c%3D","line":469,"updated":"2014-01-22 18:31:46.000000000","message":"Suggest ending this with \u0027.\u0027 .","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"53c3bf57885760dc413ba9d6b3b50d83e81071c2","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        copy_image_to_volume \u003d self.driver.copy_image_to_volume"},{"line_number":498,"context_line":"        volume_id \u003d volume_ref[\u0027id\u0027]"},{"line_number":499,"context_line":"        LOG.debug(_(\"Attempting download of %(image_id)s (%(image_location)s)\""},{"line_number":500,"context_line":"                    \" to volume %(volume_id)s\") %"},{"line_number":501,"context_line":"                  {\u0027image_id\u0027: image_id, \u0027volume_id\u0027: volume_id,"},{"line_number":502,"context_line":"                   \u0027image_location\u0027: image_location})"},{"line_number":503,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2Bu9Q%3D","line":500,"updated":"2014-01-22 18:31:46.000000000","message":"Suggest ending this with a \u0027.\u0027 .","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7349,"name":"Anastasia Karpinska","email":"akarpinska@griddynamics.com","username":"anastasia-karpinska"},"change_message_id":"5a82141b367fcb19f38c48446dc520aacba20416","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        copy_image_to_volume \u003d self.driver.copy_image_to_volume"},{"line_number":498,"context_line":"        volume_id \u003d volume_ref[\u0027id\u0027]"},{"line_number":499,"context_line":"        LOG.debug(_(\"Attempting download of %(image_id)s (%(image_location)s)\""},{"line_number":500,"context_line":"                    \" to volume %(volume_id)s\") %"},{"line_number":501,"context_line":"                  {\u0027image_id\u0027: image_id, \u0027volume_id\u0027: volume_id,"},{"line_number":502,"context_line":"                   \u0027image_location\u0027: image_location})"},{"line_number":503,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BqIs%3D","line":500,"in_reply_to":"AAAAUH%2F%2Bu9Q%3D","updated":"2014-01-24 13:00:50.000000000","message":"Done","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"53c3bf57885760dc413ba9d6b3b50d83e81071c2","unresolved":false,"context_lines":[{"line_number":524,"context_line":"                raise"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        LOG.debug(_(\"Downloaded image %(image_id)s (%(image_location)s)\""},{"line_number":527,"context_line":"                    \" to volume %(volume_id)s successfully\") %"},{"line_number":528,"context_line":"                  {\u0027image_id\u0027: image_id, \u0027volume_id\u0027: volume_id,"},{"line_number":529,"context_line":"                   \u0027image_location\u0027: image_location})"},{"line_number":530,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2Bu9E%3D","line":527,"updated":"2014-01-22 18:31:46.000000000","message":"Suggest ending this with a \u0027.\u0027 .","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7349,"name":"Anastasia Karpinska","email":"akarpinska@griddynamics.com","username":"anastasia-karpinska"},"change_message_id":"5a82141b367fcb19f38c48446dc520aacba20416","unresolved":false,"context_lines":[{"line_number":524,"context_line":"                raise"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        LOG.debug(_(\"Downloaded image %(image_id)s (%(image_location)s)\""},{"line_number":527,"context_line":"                    \" to volume %(volume_id)s successfully\") %"},{"line_number":528,"context_line":"                  {\u0027image_id\u0027: image_id, \u0027volume_id\u0027: volume_id,"},{"line_number":529,"context_line":"                   \u0027image_location\u0027: image_location})"},{"line_number":530,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BqI0%3D","line":527,"in_reply_to":"AAAAUH%2F%2Bu9E%3D","updated":"2014-01-24 13:00:50.000000000","message":"Done","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"53c3bf57885760dc413ba9d6b3b50d83e81071c2","unresolved":false,"context_lines":[{"line_number":575,"context_line":"                           image_location, image_id, image_meta,"},{"line_number":576,"context_line":"                           image_service, **kwargs):"},{"line_number":577,"context_line":"        LOG.debug(_(\"Cloning %(volume_id)s from image %(image_id)s \""},{"line_number":578,"context_line":"                    \" at location %(image_location)s\") %"},{"line_number":579,"context_line":"                  {\u0027volume_id\u0027: volume_ref[\u0027id\u0027],"},{"line_number":580,"context_line":"                   \u0027image_location\u0027: image_location, \u0027image_id\u0027: image_id})"},{"line_number":581,"context_line":"        # Create the volume from an image."}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2Bu88%3D","line":578,"updated":"2014-01-22 18:31:46.000000000","message":"Suggest ending this with a \u0027.\u0027 .","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7349,"name":"Anastasia Karpinska","email":"akarpinska@griddynamics.com","username":"anastasia-karpinska"},"change_message_id":"5a82141b367fcb19f38c48446dc520aacba20416","unresolved":false,"context_lines":[{"line_number":575,"context_line":"                           image_location, image_id, image_meta,"},{"line_number":576,"context_line":"                           image_service, **kwargs):"},{"line_number":577,"context_line":"        LOG.debug(_(\"Cloning %(volume_id)s from image %(image_id)s \""},{"line_number":578,"context_line":"                    \" at location %(image_location)s\") %"},{"line_number":579,"context_line":"                  {\u0027volume_id\u0027: volume_ref[\u0027id\u0027],"},{"line_number":580,"context_line":"                   \u0027image_location\u0027: image_location, \u0027image_id\u0027: image_id})"},{"line_number":581,"context_line":"        # Create the volume from an image."}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BqIo%3D","line":578,"in_reply_to":"AAAAUH%2F%2Bu88%3D","updated":"2014-01-24 13:00:50.000000000","message":"Done","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"53c3bf57885760dc413ba9d6b3b50d83e81071c2","unresolved":false,"context_lines":[{"line_number":623,"context_line":"        if not self.driver.initialized:"},{"line_number":624,"context_line":"            driver_name \u003d self.driver.__class__.__name__"},{"line_number":625,"context_line":"            LOG.error(_(\"Unable to create volume. \""},{"line_number":626,"context_line":"                        \"Volume driver %s not initialized\") % driver_name)"},{"line_number":627,"context_line":"            # NOTE(flaper87): Set the error status before"},{"line_number":628,"context_line":"            # raising any exception."},{"line_number":629,"context_line":"            self.db.volume_update(context, volume_id, dict(status\u003d\u0027error\u0027))"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2Bu8w%3D","line":626,"updated":"2014-01-22 18:31:46.000000000","message":"Suggest ending this with a \u0027.\u0027 .","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"},{"author":{"_account_id":7349,"name":"Anastasia Karpinska","email":"akarpinska@griddynamics.com","username":"anastasia-karpinska"},"change_message_id":"5a82141b367fcb19f38c48446dc520aacba20416","unresolved":false,"context_lines":[{"line_number":623,"context_line":"        if not self.driver.initialized:"},{"line_number":624,"context_line":"            driver_name \u003d self.driver.__class__.__name__"},{"line_number":625,"context_line":"            LOG.error(_(\"Unable to create volume. \""},{"line_number":626,"context_line":"                        \"Volume driver %s not initialized\") % driver_name)"},{"line_number":627,"context_line":"            # NOTE(flaper87): Set the error status before"},{"line_number":628,"context_line":"            # raising any exception."},{"line_number":629,"context_line":"            self.db.volume_update(context, volume_id, dict(status\u003d\u0027error\u0027))"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2BqIk%3D","line":626,"in_reply_to":"AAAAUH%2F%2Bu8w%3D","updated":"2014-01-24 13:00:50.000000000","message":"Done","commit_id":"56c2dddd5dfd88e4e4e6786409f6e8ec33250d3d"}]}
