)]}'
{"bin/glance":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"7cbde9085452a84c33e9867e4a040587528c2abb","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"def get_copy_from(fields):"},{"line_number":152,"context_line":"    source, features \u003d (None, None)"},{"line_number":153,"context_line":"    if \u0027location\u0027 not in fields and \u0027copy_from\u0027 in fields:"},{"line_number":154,"context_line":"        features \u003d {}"},{"line_number":155,"context_line":"        source \u003d fields.pop(\u0027copy_from\u0027)"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAEn%2F%2F16U%3D","line":152,"updated":"2012-02-26 21:24:57.000000000","message":"Rather than redefine features here, how about you pass it in as an arg and modify it in place?","commit_id":"8abeb1187f2fe5e35b41f77fea305fe10339c394"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"f6bfda7ebd10018a9f0954d098fe064a6e04d959","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"def get_copy_from(fields):"},{"line_number":152,"context_line":"    source, features \u003d (None, None)"},{"line_number":153,"context_line":"    if \u0027location\u0027 not in fields and \u0027copy_from\u0027 in fields:"},{"line_number":154,"context_line":"        features \u003d {}"},{"line_number":155,"context_line":"        source \u003d fields.pop(\u0027copy_from\u0027)"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAEn%2F%2F12U%3D","line":152,"in_reply_to":"AAAAEn%2F%2F16U%3D","updated":"2012-02-27 10:11:10.000000000","message":"Yep, that\u0027s marginally neater.","commit_id":"8abeb1187f2fe5e35b41f77fea305fe10339c394"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"7cbde9085452a84c33e9867e4a040587528c2abb","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            fields.pop(field)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    def _external_source(fields, image_data):"},{"line_number":254,"context_line":"        source, features \u003d (None, None)"},{"line_number":255,"context_line":"        if \u0027location\u0027 in fields.keys():"},{"line_number":256,"context_line":"            source \u003d fields.pop(\u0027location\u0027)"},{"line_number":257,"context_line":"            image_meta[\u0027location\u0027] \u003d source"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAEn%2F%2F16Y%3D","line":254,"updated":"2012-02-26 21:24:57.000000000","message":"If you take my suggestion above, you should default features here to a dict.","commit_id":"8abeb1187f2fe5e35b41f77fea305fe10339c394"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"de9a5b825bb5c7444110c35fb7ad6ff460ba5f7b","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    if \u0027location\u0027 not in fields and \u0027copy_from\u0027 in fields:"},{"line_number":153,"context_line":"        source \u003d fields.pop(\u0027copy_from\u0027)"},{"line_number":154,"context_line":"        features[\u0027x-glance-api-copy-from\u0027] \u003d source"},{"line_number":155,"context_line":"        return source"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"def image_add(options, args):"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAEn%2F%2F1vo%3D","line":155,"updated":"2012-02-27 18:29:38.000000000","message":"I\u0027m not a huge fan of changing the value of supplied parameters -- instead, I think parameters should be treated as immutable as much as possible. Can we change the above so that it returns either None or the value of the copy_from field (as long as location is not also set)?\n\nIf you really want to modify the contents of supplied params, then I think you should change the method name to indicate that. Something like insert_copy_from_into_features()?","commit_id":"b10654140daec8e0e88fc4bc805fa91e6531e6d1"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"07d93d888d20e5795d77ea536c4b09140548e903","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    if \u0027location\u0027 not in fields and \u0027copy_from\u0027 in fields:"},{"line_number":153,"context_line":"        source \u003d fields.pop(\u0027copy_from\u0027)"},{"line_number":154,"context_line":"        features[\u0027x-glance-api-copy-from\u0027] \u003d source"},{"line_number":155,"context_line":"        return source"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"def image_add(options, args):"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAEn%2F%2F1uo%3D","line":155,"in_reply_to":"AAAAEn%2F%2F1vo%3D","updated":"2012-02-27 19:00:27.000000000","message":"++ on Jay\u0027s comment. Having the function return the value of the copy_from field or None feels cleaner to me, but renaming the function works too.","commit_id":"b10654140daec8e0e88fc4bc805fa91e6531e6d1"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"3e13200924caba903f353bbdcb757ce5f1862219","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    if \u0027location\u0027 not in fields and \u0027copy_from\u0027 in fields:"},{"line_number":153,"context_line":"        source \u003d fields.pop(\u0027copy_from\u0027)"},{"line_number":154,"context_line":"        features[\u0027x-glance-api-copy-from\u0027] \u003d source"},{"line_number":155,"context_line":"        return source"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"def image_add(options, args):"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAEn%2F%2F1qE%3D","line":155,"in_reply_to":"AAAAEn%2F%2F1vo%3D","updated":"2012-02-27 19:46:23.000000000","message":"That get_copy_from() method is just getting in the way, and has out-lived it usefulness - removed from the latest patch set.","commit_id":"b10654140daec8e0e88fc4bc805fa91e6531e6d1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"de9a5b825bb5c7444110c35fb7ad6ff460ba5f7b","unresolved":false,"context_lines":[{"line_number":255,"context_line":"            source \u003d fields.pop(\u0027location\u0027)"},{"line_number":256,"context_line":"            image_meta[\u0027location\u0027] \u003d source"},{"line_number":257,"context_line":"        elif \u0027copy_from\u0027 in fields.keys():"},{"line_number":258,"context_line":"            source \u003d get_copy_from(fields, features)"},{"line_number":259,"context_line":"        return source, features"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    # We need either a location or image data/stream to add..."}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAEn%2F%2F1vk%3D","line":258,"updated":"2012-02-27 18:29:38.000000000","message":"And if you change the method as suggested above, add:\n\n if source:\n     features[\u0027x-glance-api-copy-from\u0027] \u003d source","commit_id":"b10654140daec8e0e88fc4bc805fa91e6531e6d1"}]}
