)]}'
{"cinder/db/sqlalchemy/migrate_repo/versions/005_snapshots_add_provider_location.py":[{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"1308d35f081dff5d9ad7d95b7713ebc7a1dbf513","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from sqlalchemy import Column, DateTime, Text, Boolean"},{"line_number":18,"context_line":"from sqlalchemy import MetaData, Integer, String, Table, ForeignKey"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F1TE%3D","line":16,"updated":"2013-01-03 05:40:08.000000000","message":"DateTime, Text and Boolean are not used.","commit_id":"6628795adebfe5ae29fde5b407c1ce03eccd9de6"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"1308d35f081dff5d9ad7d95b7713ebc7a1dbf513","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from sqlalchemy import Column, DateTime, Text, Boolean"},{"line_number":18,"context_line":"from sqlalchemy import MetaData, Integer, String, Table, ForeignKey"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cinder.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F1TA%3D","line":17,"updated":"2013-01-03 05:40:08.000000000","message":"String and Table are not used.","commit_id":"6628795adebfe5ae29fde5b407c1ce03eccd9de6"}],"cinder/db/sqlalchemy/migrate_repo/versions/006_sqlite_downgrade.sql":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9bf54e493b8eb3d51a3ed1568e746e1c16d19f9c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"SELECT \u0027noop\u0027;"}],"source_content_type":"text/x-sql","patch_set":3,"id":"AAAAM3%2F%2Fzpo%3D","line":1,"updated":"2013-01-04 13:34:20.000000000","message":"Maybe add a comment to say that sqlite does not support dropping foreign keys","commit_id":"28ad0912d766401d67d80d50610998f2d181b00e"}],"cinder/db/sqlalchemy/migrate_repo/versions/006_sqlite_upgrade.sql":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9bf54e493b8eb3d51a3ed1568e746e1c16d19f9c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"SELECT \u0027noop\u0027;"}],"source_content_type":"text/x-sql","patch_set":3,"id":"AAAAM3%2F%2Fzps%3D","line":1,"updated":"2013-01-04 13:34:20.000000000","message":"Should we really have this?","commit_id":"28ad0912d766401d67d80d50610998f2d181b00e"}],"cinder/db/sqlalchemy/models.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1c960532451710d0ec33b6157764030f55252d94","unresolved":false,"context_lines":[{"line_number":307,"context_line":"    user_id \u003d Column(String(255))"},{"line_number":308,"context_line":"    project_id \u003d Column(String(255))"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    volume_id \u003d Column(String(36))"},{"line_number":311,"context_line":"    status \u003d Column(String(255))"},{"line_number":312,"context_line":"    progress \u003d Column(String(255))"},{"line_number":313,"context_line":"    volume_size \u003d Column(Integer)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F2mQ%3D","line":310,"updated":"2013-01-02 11:41:41.000000000","message":"Re other comment, maybe this should be a relationship, as used above for volumemetadata ?","commit_id":"6628795adebfe5ae29fde5b407c1ce03eccd9de6"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"c63702d590c086c738a246f823803c2fbf22745b","unresolved":false,"context_lines":[{"line_number":307,"context_line":"    user_id \u003d Column(String(255))"},{"line_number":308,"context_line":"    project_id \u003d Column(String(255))"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    volume_id \u003d Column(String(36))"},{"line_number":311,"context_line":"    status \u003d Column(String(255))"},{"line_number":312,"context_line":"    progress \u003d Column(String(255))"},{"line_number":313,"context_line":"    volume_size \u003d Column(Integer)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F2l0%3D","line":310,"in_reply_to":"AAAAM3%2F%2F2mQ%3D","updated":"2013-01-02 11:56:26.000000000","message":"will do.","commit_id":"6628795adebfe5ae29fde5b407c1ce03eccd9de6"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1c960532451710d0ec33b6157764030f55252d94","unresolved":false,"context_lines":[{"line_number":315,"context_line":"    display_name \u003d Column(String(255))"},{"line_number":316,"context_line":"    display_description \u003d Column(String(255))"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    provider_location \u003d Column(String(255))"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"class IscsiTarget(BASE, CinderBase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F2mM%3D","line":318,"updated":"2013-01-02 11:41:41.000000000","message":"To be consistent with volume, you should probably also add: provider_auth","commit_id":"6628795adebfe5ae29fde5b407c1ce03eccd9de6"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"c63702d590c086c738a246f823803c2fbf22745b","unresolved":false,"context_lines":[{"line_number":315,"context_line":"    display_name \u003d Column(String(255))"},{"line_number":316,"context_line":"    display_description \u003d Column(String(255))"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    provider_location \u003d Column(String(255))"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"class IscsiTarget(BASE, CinderBase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F2l4%3D","line":318,"in_reply_to":"AAAAM3%2F%2F2mM%3D","updated":"2013-01-02 11:56:26.000000000","message":"yagni","commit_id":"6628795adebfe5ae29fde5b407c1ce03eccd9de6"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"dc2b9a353f3929a23be2a7c5c1ee96786b1a33a5","unresolved":false,"context_lines":[{"line_number":315,"context_line":"    display_name \u003d Column(String(255))"},{"line_number":316,"context_line":"    display_description \u003d Column(String(255))"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    provider_location \u003d Column(String(255))"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    volume \u003d relationship(Volume, backref\u003d\"snapshots\","},{"line_number":321,"context_line":"                          foreign_keys\u003dvolume_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FzqU%3D","line":318,"updated":"2013-01-04 13:23:04.000000000","message":"I still think it is worth adding provider_auth here too?","commit_id":"28ad0912d766401d67d80d50610998f2d181b00e"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"a3f3a92fdf4ac0dd004e5729ab0c321790dbe076","unresolved":false,"context_lines":[{"line_number":315,"context_line":"    display_name \u003d Column(String(255))"},{"line_number":316,"context_line":"    display_description \u003d Column(String(255))"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    provider_location \u003d Column(String(255))"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    volume \u003d relationship(Volume, backref\u003d\"snapshots\","},{"line_number":321,"context_line":"                          foreign_keys\u003dvolume_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Fujk%3D","line":318,"in_reply_to":"AAAAM3%2F%2Fzp4%3D","updated":"2013-01-08 15:27:55.000000000","message":"If it\u0027s not needed in the patch I\u0027d leave it out.  Adding it here can/should be a separate patch.","commit_id":"28ad0912d766401d67d80d50610998f2d181b00e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9bf54e493b8eb3d51a3ed1568e746e1c16d19f9c","unresolved":false,"context_lines":[{"line_number":315,"context_line":"    display_name \u003d Column(String(255))"},{"line_number":316,"context_line":"    display_description \u003d Column(String(255))"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    provider_location \u003d Column(String(255))"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    volume \u003d relationship(Volume, backref\u003d\"snapshots\","},{"line_number":321,"context_line":"                          foreign_keys\u003dvolume_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Fzpk%3D","line":318,"in_reply_to":"AAAAM3%2F%2FzqU%3D","updated":"2013-01-04 13:34:20.000000000","message":"I will accept it might not be needed, I am good either way.","commit_id":"28ad0912d766401d67d80d50610998f2d181b00e"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"e63e00b12401a9cdb32a1375dd4b97e2cf91bb73","unresolved":false,"context_lines":[{"line_number":315,"context_line":"    display_name \u003d Column(String(255))"},{"line_number":316,"context_line":"    display_description \u003d Column(String(255))"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    provider_location \u003d Column(String(255))"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    volume \u003d relationship(Volume, backref\u003d\"snapshots\","},{"line_number":321,"context_line":"                          foreign_keys\u003dvolume_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Fzp4%3D","line":318,"in_reply_to":"AAAAM3%2F%2FzqU%3D","updated":"2013-01-04 13:36:58.000000000","message":"we don\u0027t need it, and it\u0027s one less line of code to maintain: YAGNI\nIf anyone needs it, he will add it.","commit_id":"28ad0912d766401d67d80d50610998f2d181b00e"}],"cinder/volume/drivers/xenapi/lib.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1c960532451710d0ec33b6157764030f55252d94","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                    vdi_uuid\u003dsession.VDI.get_uuid(target_vdi_ref)"},{"line_number":351,"context_line":"                )"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"            session.unplug_pbds_and_forget_sr(src_refs[\u0027sr_ref\u0027])"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"            return dst_refs"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F2m0%3D","line":353,"updated":"2013-01-02 11:41:41.000000000","message":"looks like if the above copy_vdi_to_sr fails, would this mean the unplug is never called? maybe the connect_volume should be wrapped in some kind of with clause, or an appropriate finally clause is added?","commit_id":"6628795adebfe5ae29fde5b407c1ce03eccd9de6"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"c63702d590c086c738a246f823803c2fbf22745b","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                    vdi_uuid\u003dsession.VDI.get_uuid(target_vdi_ref)"},{"line_number":351,"context_line":"                )"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"            session.unplug_pbds_and_forget_sr(src_refs[\u0027sr_ref\u0027])"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"            return dst_refs"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F2ls%3D","line":353,"in_reply_to":"AAAAM3%2F%2F2m0%3D","updated":"2013-01-02 11:56:26.000000000","message":"That\u0027s true, I am missing that cleanup","commit_id":"6628795adebfe5ae29fde5b407c1ce03eccd9de6"}],"cinder/volume/drivers/xenapi/sm.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1c960532451710d0ec33b6157764030f55252d94","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            FLAGS.xenapi_connection_password"},{"line_number":58,"context_line":"        )"},{"line_number":59,"context_line":"        self.nfs_ops \u003d xenapi_lib.NFSBasedVolumeOperations(session_factory)"},{"line_number":60,"context_line":"        self.context \u003d context"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def create_volume(self, volume):"},{"line_number":63,"context_line":"        volume_details \u003d self.nfs_ops.create_volume("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F2nA%3D","line":60,"updated":"2013-01-02 11:41:41.000000000","message":"This looks dodgy","commit_id":"6628795adebfe5ae29fde5b407c1ce03eccd9de6"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"c63702d590c086c738a246f823803c2fbf22745b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            FLAGS.xenapi_connection_password"},{"line_number":58,"context_line":"        )"},{"line_number":59,"context_line":"        self.nfs_ops \u003d xenapi_lib.NFSBasedVolumeOperations(session_factory)"},{"line_number":60,"context_line":"        self.context \u003d context"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def create_volume(self, volume):"},{"line_number":63,"context_line":"        volume_details \u003d self.nfs_ops.create_volume("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F2lo%3D","line":60,"in_reply_to":"AAAAM3%2F%2F2nA%3D","updated":"2013-01-02 11:56:26.000000000","message":"will remove.","commit_id":"6628795adebfe5ae29fde5b407c1ce03eccd9de6"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1c960532451710d0ec33b6157764030f55252d94","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":117,"context_line":"        volume_id \u003d snapshot[\u0027volume_id\u0027]"},{"line_number":118,"context_line":"        volume \u003d self.db.volume_get(self.context, volume_id)"},{"line_number":119,"context_line":"        return self._copy_volume("},{"line_number":120,"context_line":"            volume, snapshot[\u0027display_name\u0027], snapshot[\u0027display_description\u0027])"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F2m8%3D","line":118,"updated":"2013-01-02 11:41:41.000000000","message":"should probably not do these db operations here. Might be better to change the snapshot object to be able to get the volume information in some way, or pass the volume into here.","commit_id":"6628795adebfe5ae29fde5b407c1ce03eccd9de6"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"c63702d590c086c738a246f823803c2fbf22745b","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":117,"context_line":"        volume_id \u003d snapshot[\u0027volume_id\u0027]"},{"line_number":118,"context_line":"        volume \u003d self.db.volume_get(self.context, volume_id)"},{"line_number":119,"context_line":"        return self._copy_volume("},{"line_number":120,"context_line":"            volume, snapshot[\u0027display_name\u0027], snapshot[\u0027display_description\u0027])"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F2lk%3D","line":118,"in_reply_to":"AAAAM3%2F%2F2m8%3D","updated":"2013-01-02 11:56:26.000000000","message":"y.","commit_id":"6628795adebfe5ae29fde5b407c1ce03eccd9de6"}]}
