)]}'
{"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"493c0addd298e87611ddcafd812afad3ec582235","unresolved":false,"context_lines":[{"line_number":3562,"context_line":""},{"line_number":3563,"context_line":"@require_context"},{"line_number":3564,"context_line":"def _instance_type_get_id_from_flavor_id(context, flavor_id, session\u003dNone):"},{"line_number":3565,"context_line":"    instance_type_id \u003d model_query(context, models.InstanceTypes.id,"},{"line_number":3566,"context_line":"                                   read_deleted\u003d\"no\", session\u003dsession,"},{"line_number":3567,"context_line":"                                   base_model\u003dmodels.InstanceTypes).\\"},{"line_number":3568,"context_line":"                filter_by(flavorid\u003dflavor_id).\\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F6Bg%3D","line":3565,"updated":"2013-04-12 00:21:25.000000000","message":"I would prefer to see \"result\" instead of \"instance_type_id\" for consistency. Perhaps this is a bit verbose, but I think it is more clearly expressed like so:\n\n  result \u003d model_query...\n  \n  if not result:\n    raise ...\n\n  instance_type_id \u003d result[0]\n  return instance_type_id","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"af5b80cadeb98d79a7f1f3fb60cf7fc3e0a6aead","unresolved":false,"context_lines":[{"line_number":3566,"context_line":"                                   read_deleted\u003d\"no\", session\u003dsession,"},{"line_number":3567,"context_line":"                                   base_model\u003dmodels.InstanceTypes).\\"},{"line_number":3568,"context_line":"                filter_by(flavorid\u003dflavor_id).\\"},{"line_number":3569,"context_line":"                first()"},{"line_number":3570,"context_line":"    if not instance_type_id:"},{"line_number":3571,"context_line":"        raise exception.FlavorNotFound(flavor_id\u003dflavor_id)"},{"line_number":3572,"context_line":"    return instance_type_id[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F%2FbI%3D","line":3569,"updated":"2013-04-08 23:02:53.000000000","message":"I think this should be one(), not first(), as first() will return an arbitrary value if there is more than one.\nso\ntry:\n   return ....one()[0]\nexcept NoResultFound:\n    raise exception.FlavorNotFound(flavor_id\u003dflavor_id)","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"2d56088888276db6bfde5bac6c48821c57359cdc","unresolved":false,"context_lines":[{"line_number":3566,"context_line":"                                   read_deleted\u003d\"no\", session\u003dsession,"},{"line_number":3567,"context_line":"                                   base_model\u003dmodels.InstanceTypes).\\"},{"line_number":3568,"context_line":"                filter_by(flavorid\u003dflavor_id).\\"},{"line_number":3569,"context_line":"                first()"},{"line_number":3570,"context_line":"    if not instance_type_id:"},{"line_number":3571,"context_line":"        raise exception.FlavorNotFound(flavor_id\u003dflavor_id)"},{"line_number":3572,"context_line":"    return instance_type_id[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F%2FCU%3D","line":3569,"in_reply_to":"AAAAOn%2F%2F%2FbI%3D","updated":"2013-04-09 04:53:18.000000000","message":"yeah it seems to be cleaner.","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"727c259a3362da4e6f563815f4c4464791f22a4e","unresolved":false,"context_lines":[{"line_number":3569,"context_line":"                first()"},{"line_number":3570,"context_line":"    if not instance_type_id:"},{"line_number":3571,"context_line":"        raise exception.FlavorNotFound(flavor_id\u003dflavor_id)"},{"line_number":3572,"context_line":"    return instance_type_id[0]"},{"line_number":3573,"context_line":""},{"line_number":3574,"context_line":""},{"line_number":3575,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOX%2F%2F8Zs%3D","line":3572,"updated":"2013-04-04 22:58:56.000000000","message":"Won\u0027t `first()` return a singleton, meaning we don\u0027t need to index into it?","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"addd54a0041472ba978e262fbcabe9b3839b8d94","unresolved":false,"context_lines":[{"line_number":3569,"context_line":"                first()"},{"line_number":3570,"context_line":"    if not instance_type_id:"},{"line_number":3571,"context_line":"        raise exception.FlavorNotFound(flavor_id\u003dflavor_id)"},{"line_number":3572,"context_line":"    return instance_type_id[0]"},{"line_number":3573,"context_line":""},{"line_number":3574,"context_line":""},{"line_number":3575,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOX%2F%2F8W8%3D","line":3572,"in_reply_to":"AAAAOX%2F%2F8X4%3D","updated":"2013-04-04 23:20:00.000000000","message":"Oh I see, makes sense!\n\nStill, that might deserve a comment given how dubious a `first` and `[0]` look together :)","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"77f0990226ec1c42e3643972990d191ddfb8f6c9","unresolved":false,"context_lines":[{"line_number":3569,"context_line":"                first()"},{"line_number":3570,"context_line":"    if not instance_type_id:"},{"line_number":3571,"context_line":"        raise exception.FlavorNotFound(flavor_id\u003dflavor_id)"},{"line_number":3572,"context_line":"    return instance_type_id[0]"},{"line_number":3573,"context_line":""},{"line_number":3574,"context_line":""},{"line_number":3575,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOX%2F%2F8X4%3D","line":3572,"in_reply_to":"AAAAOX%2F%2F8Zs%3D","updated":"2013-04-04 23:11:00.000000000","message":"Yes you are right first() will return only one element. But this eleemnt will look like (instance_type_id,) and I have to get instance_type_id not tuple with it.","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"af5b80cadeb98d79a7f1f3fb60cf7fc3e0a6aead","unresolved":false,"context_lines":[{"line_number":3592,"context_line":"                    first()"},{"line_number":3593,"context_line":"    if not inst_type:"},{"line_number":3594,"context_line":"        raise exception.InstanceTypeNotFoundByName(instance_type_name\u003dname)"},{"line_number":3595,"context_line":"    return _dict_with_extra_specs(inst_type)"},{"line_number":3596,"context_line":""},{"line_number":3597,"context_line":""},{"line_number":3598,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F%2Fa0%3D","line":3595,"updated":"2013-04-08 23:02:53.000000000","message":"the change from result-\u003einst_type here is spurious and inconsistent with the rest of the file; could you revert it please, so that we\u0027re focused on the actual changes?","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"493c0addd298e87611ddcafd812afad3ec582235","unresolved":false,"context_lines":[{"line_number":3592,"context_line":"                    first()"},{"line_number":3593,"context_line":"    if not inst_type:"},{"line_number":3594,"context_line":"        raise exception.InstanceTypeNotFoundByName(instance_type_name\u003dname)"},{"line_number":3595,"context_line":"    return _dict_with_extra_specs(inst_type)"},{"line_number":3596,"context_line":""},{"line_number":3597,"context_line":""},{"line_number":3598,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F6Bk%3D","line":3595,"in_reply_to":"AAAAOn%2F%2F%2Fa0%3D","updated":"2013-04-12 00:21:25.000000000","message":"I also don\u0027t see any reason for the whitespace changes here.","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"af5b80cadeb98d79a7f1f3fb60cf7fc3e0a6aead","unresolved":false,"context_lines":[{"line_number":3624,"context_line":"                soft_delete()"},{"line_number":3625,"context_line":"        model_query(context, models.InstanceTypeProjects).\\"},{"line_number":3626,"context_line":"                filter_by(instance_type_id\u003dref[\u0027id\u0027]).\\"},{"line_number":3627,"context_line":"                soft_delete()"},{"line_number":3628,"context_line":""},{"line_number":3629,"context_line":""},{"line_number":3630,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F%2Fas%3D","line":3627,"updated":"2013-04-08 23:02:53.000000000","message":"I don\u0027t understand the point of the change to this function; it doesn\u0027t seem to be more correct, but it is longer.","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"2d56088888276db6bfde5bac6c48821c57359cdc","unresolved":false,"context_lines":[{"line_number":3624,"context_line":"                soft_delete()"},{"line_number":3625,"context_line":"        model_query(context, models.InstanceTypeProjects).\\"},{"line_number":3626,"context_line":"                filter_by(instance_type_id\u003dref[\u0027id\u0027]).\\"},{"line_number":3627,"context_line":"                soft_delete()"},{"line_number":3628,"context_line":""},{"line_number":3629,"context_line":""},{"line_number":3630,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F%2FCQ%3D","line":3627,"in_reply_to":"AAAAOn%2F%2F%2Fas%3D","updated":"2013-04-09 04:53:18.000000000","message":"It is well described in commit message:\n\ninstance_type_destroy performance optimization:\n  Get instance_type_ref without unnecessary extra specs\n\ninstance_type_destroy fix bug:\n  We didn\u0027t delete instance_type_projects when we destroy instance_type\n\nSo yes it is loneger.. But it is reasonable.","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"727c259a3362da4e6f563815f4c4464791f22a4e","unresolved":false,"context_lines":[{"line_number":3686,"context_line":"def _instance_type_extra_specs_get_query(context, flavor_id,"},{"line_number":3687,"context_line":"                                         session\u003dNone):"},{"line_number":3688,"context_line":"    # Two queries necessary because join with update doesn\u0027t work."},{"line_number":3689,"context_line":"    t \u003d model_query(context, models.InstanceTypes.id,"},{"line_number":3690,"context_line":"                    base_model\u003dmodels.InstanceTypes, session\u003dsession,"},{"line_number":3691,"context_line":"                    read_deleted\u003d\"no\").\\"},{"line_number":3692,"context_line":"              filter(models.InstanceTypes.flavorid \u003d\u003d flavor_id).\\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOX%2F%2F8Z0%3D","line":3689,"updated":"2013-04-04 22:58:56.000000000","message":"Femto-nit but, mind changing `t` to something a little longer/more-descriptive?","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"77f0990226ec1c42e3643972990d191ddfb8f6c9","unresolved":false,"context_lines":[{"line_number":3686,"context_line":"def _instance_type_extra_specs_get_query(context, flavor_id,"},{"line_number":3687,"context_line":"                                         session\u003dNone):"},{"line_number":3688,"context_line":"    # Two queries necessary because join with update doesn\u0027t work."},{"line_number":3689,"context_line":"    t \u003d model_query(context, models.InstanceTypes.id,"},{"line_number":3690,"context_line":"                    base_model\u003dmodels.InstanceTypes, session\u003dsession,"},{"line_number":3691,"context_line":"                    read_deleted\u003d\"no\").\\"},{"line_number":3692,"context_line":"              filter(models.InstanceTypes.flavorid \u003d\u003d flavor_id).\\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOX%2F%2F8Xs%3D","line":3689,"in_reply_to":"AAAAOX%2F%2F8Z0%3D","updated":"2013-04-04 23:11:00.000000000","message":"Yes I agree that it should be replaced.","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"af5b80cadeb98d79a7f1f3fb60cf7fc3e0a6aead","unresolved":false,"context_lines":[{"line_number":3707,"context_line":""},{"line_number":3708,"context_line":"@require_context"},{"line_number":3709,"context_line":"def instance_type_extra_specs_delete(context, flavor_id, key):"},{"line_number":3710,"context_line":"    # Don\u0027t need synchronize the session since we will not use the query result"},{"line_number":3711,"context_line":"    _instance_type_extra_specs_get_query(context, flavor_id).\\"},{"line_number":3712,"context_line":"            filter(models.InstanceTypeExtraSpecs.key \u003d\u003d key).\\"},{"line_number":3713,"context_line":"            soft_delete(synchronize_session\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F%2FaU%3D","line":3710,"updated":"2013-04-08 23:02:53.000000000","message":"I believe this comment about the session is false, because the session is a global and we don\u0027t know what other things the calling code will do before the next synchronisation. Or does soft_delete flush the session?","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"2d56088888276db6bfde5bac6c48821c57359cdc","unresolved":false,"context_lines":[{"line_number":3707,"context_line":""},{"line_number":3708,"context_line":"@require_context"},{"line_number":3709,"context_line":"def instance_type_extra_specs_delete(context, flavor_id, key):"},{"line_number":3710,"context_line":"    # Don\u0027t need synchronize the session since we will not use the query result"},{"line_number":3711,"context_line":"    _instance_type_extra_specs_get_query(context, flavor_id).\\"},{"line_number":3712,"context_line":"            filter(models.InstanceTypeExtraSpecs.key \u003d\u003d key).\\"},{"line_number":3713,"context_line":"            soft_delete(synchronize_session\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F%2FBs%3D","line":3710,"in_reply_to":"AAAAOn%2F%2F%2FaU%3D","updated":"2013-04-09 04:53:18.000000000","message":"I don\u0027t believe \u003d)\n\nFirst of all this code is pretty old and in this patch it is only moved. \n\nAnd second reason is that:\n\nSession is not global at all. \nSessionMaker is global, so when we call get_session() it will return new session instance. Sessions are used independently. \nIn this session we are able to create 1 or more transactions. In each transaction we are able to run 1 or more sql requests.\nThe main task of session instance is to track all instances of models that are in pending or persistance state (in this current session). \n\nSo the algorithm of this method is next:\n\n  1) _instance_type_extra_specs_get_query\n  a) call model_query that will create new session instance and create in this session query for instance_type_extra_specs table.\n  b) return query with filter by flavor_id \n  2) soft_delete will update all entries in DB that match this query. \n   3) synchronize_session means that we don\u0027t want (have to) use result of this query in our current session. So sqlalchemy won\u0027t do any other db request (to sync mode instances in this session)\n\nAnd as you see we are using our session only to run only this query, and don\u0027t use result. So there is no reason to do synchronization_session and comment is ok.","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"af5b80cadeb98d79a7f1f3fb60cf7fc3e0a6aead","unresolved":false,"context_lines":[{"line_number":4088,"context_line":"        bwusage.last_ctr_in \u003d last_ctr_in"},{"line_number":4089,"context_line":"        bwusage.last_ctr_out \u003d last_ctr_out"},{"line_number":4090,"context_line":"        bwusage.save(session\u003dsession)"},{"line_number":4091,"context_line":""},{"line_number":4092,"context_line":""},{"line_number":4093,"context_line":"####################"},{"line_number":4094,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F%2FaE%3D","line":4091,"updated":"2013-04-08 23:02:53.000000000","message":"Ugh, I see why I had some confusion - you moved code. Our review system doesn\u0027t handle that well, so where possible please *either* move, *or* change, or failing that explain what you moved and what you changed.","commit_id":"2d42fa91106124f9f5b1ab106dc004d7f4e82cb2"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"de49d2afe8c0d4de6b6f5c16b00dd7e7faad4474","unresolved":false,"context_lines":[{"line_number":3652,"context_line":"def _instance_type_get_query(context, session\u003dNone, read_deleted\u003dNone):"},{"line_number":3653,"context_line":"    return model_query(context, models.InstanceTypes, session\u003dsession,"},{"line_number":3654,"context_line":"                       read_deleted\u003dread_deleted).\\"},{"line_number":3655,"context_line":"                    options(joinedload(\u0027extra_specs\u0027))"},{"line_number":3656,"context_line":""},{"line_number":3657,"context_line":""},{"line_number":3658,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2F4Yw%3D","line":3655,"updated":"2013-04-14 21:20:13.000000000","message":"I feel like this line should be indented inline with the line above.","commit_id":"92e621448733aa0e08861aa99d1bbc645a1aa676"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"98a66e3030fc0a35da9463537e224f94612d5585","unresolved":false,"context_lines":[{"line_number":3652,"context_line":"def _instance_type_get_query(context, session\u003dNone, read_deleted\u003dNone):"},{"line_number":3653,"context_line":"    return model_query(context, models.InstanceTypes, session\u003dsession,"},{"line_number":3654,"context_line":"                       read_deleted\u003dread_deleted).\\"},{"line_number":3655,"context_line":"                    options(joinedload(\u0027extra_specs\u0027))"},{"line_number":3656,"context_line":""},{"line_number":3657,"context_line":""},{"line_number":3658,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2F39A%3D","line":3655,"in_reply_to":"AAAAOn%2F%2F4RE%3D","updated":"2013-04-15 18:40:15.000000000","message":"Actually, I misread this line. This is fine.","commit_id":"92e621448733aa0e08861aa99d1bbc645a1aa676"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"6432f8ab09b924cd9a7036d03d94bf5f23bd4123","unresolved":false,"context_lines":[{"line_number":3652,"context_line":"def _instance_type_get_query(context, session\u003dNone, read_deleted\u003dNone):"},{"line_number":3653,"context_line":"    return model_query(context, models.InstanceTypes, session\u003dsession,"},{"line_number":3654,"context_line":"                       read_deleted\u003dread_deleted).\\"},{"line_number":3655,"context_line":"                    options(joinedload(\u0027extra_specs\u0027))"},{"line_number":3656,"context_line":""},{"line_number":3657,"context_line":""},{"line_number":3658,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2F4RE%3D","line":3655,"in_reply_to":"AAAAOn%2F%2F4Yw%3D","updated":"2013-04-15 05:00:43.000000000","message":"Usually we are using separate line for model_query and then for each operations: options, filter and one of operations: one, first, all.. separate line. \n\nSo I really don\u0027t know when we use only one thing what is correct style.","commit_id":"92e621448733aa0e08861aa99d1bbc645a1aa676"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"de49d2afe8c0d4de6b6f5c16b00dd7e7faad4474","unresolved":false,"context_lines":[{"line_number":3719,"context_line":""},{"line_number":3720,"context_line":""},{"line_number":3721,"context_line":"@require_context"},{"line_number":3722,"context_line":"def instance_type_get(context, id):"},{"line_number":3723,"context_line":"    \"\"\"Returns a dict describing specific instance_type.\"\"\""},{"line_number":3724,"context_line":"    try:"},{"line_number":3725,"context_line":"        result \u003d _instance_type_get_query(context).\\"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2F4Yo%3D","line":3722,"updated":"2013-04-14 21:20:13.000000000","message":"Is this id a UUID? Should this arg be renamed?","commit_id":"92e621448733aa0e08861aa99d1bbc645a1aa676"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"98a66e3030fc0a35da9463537e224f94612d5585","unresolved":false,"context_lines":[{"line_number":3719,"context_line":""},{"line_number":3720,"context_line":""},{"line_number":3721,"context_line":"@require_context"},{"line_number":3722,"context_line":"def instance_type_get(context, id):"},{"line_number":3723,"context_line":"    \"\"\"Returns a dict describing specific instance_type.\"\"\""},{"line_number":3724,"context_line":"    try:"},{"line_number":3725,"context_line":"        result \u003d _instance_type_get_query(context).\\"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2F384%3D","line":3722,"in_reply_to":"AAAAOn%2F%2F4RM%3D","updated":"2013-04-15 18:40:15.000000000","message":"Fair enough.","commit_id":"92e621448733aa0e08861aa99d1bbc645a1aa676"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"6432f8ab09b924cd9a7036d03d94bf5f23bd4123","unresolved":false,"context_lines":[{"line_number":3719,"context_line":""},{"line_number":3720,"context_line":""},{"line_number":3721,"context_line":"@require_context"},{"line_number":3722,"context_line":"def instance_type_get(context, id):"},{"line_number":3723,"context_line":"    \"\"\"Returns a dict describing specific instance_type.\"\"\""},{"line_number":3724,"context_line":"    try:"},{"line_number":3725,"context_line":"        result \u003d _instance_type_get_query(context).\\"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2F4RM%3D","line":3722,"in_reply_to":"AAAAOn%2F%2F4Yo%3D","updated":"2013-04-15 05:00:43.000000000","message":"As you see above we are filtering by ID (i didn\u0027t change it) not UUID so nope we shouldn\u0027t rename parameter.","commit_id":"92e621448733aa0e08861aa99d1bbc645a1aa676"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"de49d2afe8c0d4de6b6f5c16b00dd7e7faad4474","unresolved":false,"context_lines":[{"line_number":3738,"context_line":"                        filter_by(name\u003dname).\\"},{"line_number":3739,"context_line":"                        one()"},{"line_number":3740,"context_line":"    except NoResultFound:"},{"line_number":3741,"context_line":"        raise exception.InstanceTypeNotFoundByName(instance_type_name\u003dname)"},{"line_number":3742,"context_line":"    return _dict_with_extra_specs(result)"},{"line_number":3743,"context_line":""},{"line_number":3744,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2F4Ys%3D","line":3741,"updated":"2013-04-14 21:20:13.000000000","message":"I know it was pre-existing, but I wonder if there is any value in having a different exception if the lookup fails by name instead of by id?","commit_id":"92e621448733aa0e08861aa99d1bbc645a1aa676"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"f618cd0c75b9ce100809f90523a1ca647e8855cd","unresolved":false,"context_lines":[{"line_number":3738,"context_line":"                        filter_by(name\u003dname).\\"},{"line_number":3739,"context_line":"                        one()"},{"line_number":3740,"context_line":"    except NoResultFound:"},{"line_number":3741,"context_line":"        raise exception.InstanceTypeNotFoundByName(instance_type_name\u003dname)"},{"line_number":3742,"context_line":"    return _dict_with_extra_specs(result)"},{"line_number":3743,"context_line":""},{"line_number":3744,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2F38k%3D","line":3741,"in_reply_to":"AAAAOn%2F%2F388%3D","updated":"2013-04-15 18:49:16.000000000","message":"I think that it is better to use separated Exceptions. \nThey have different messages that pass to situation..\nFor example:\nin nova.cmd.manage.py\nWe are using error message. And it will be cleaner for user to say that there is no instance_type with such name, then just there is no such instance..\n\n  def unset_key(self, name, key):\n        \"\"\"Delete the specified extra spec for instance type.\"\"\"\n        try:\n            try:\n                inst_type \u003d instance_types.get_instance_type_by_name(name)\n            except exception.InstanceTypeNotFoundByName, e:\n                print e\n                return(2)\n   ...\n\nSo probably we shouldn\u0027t change it.","commit_id":"92e621448733aa0e08861aa99d1bbc645a1aa676"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"98a66e3030fc0a35da9463537e224f94612d5585","unresolved":false,"context_lines":[{"line_number":3738,"context_line":"                        filter_by(name\u003dname).\\"},{"line_number":3739,"context_line":"                        one()"},{"line_number":3740,"context_line":"    except NoResultFound:"},{"line_number":3741,"context_line":"        raise exception.InstanceTypeNotFoundByName(instance_type_name\u003dname)"},{"line_number":3742,"context_line":"    return _dict_with_extra_specs(result)"},{"line_number":3743,"context_line":""},{"line_number":3744,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2F388%3D","line":3741,"in_reply_to":"AAAAOn%2F%2F4Qk%3D","updated":"2013-04-15 18:40:15.000000000","message":"I\u0027m asking if it makes sense to have to different exceptions. Surely the caller knew what they were trying to do when they called the method? Why do we need to different exceptions?","commit_id":"92e621448733aa0e08861aa99d1bbc645a1aa676"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"6432f8ab09b924cd9a7036d03d94bf5f23bd4123","unresolved":false,"context_lines":[{"line_number":3738,"context_line":"                        filter_by(name\u003dname).\\"},{"line_number":3739,"context_line":"                        one()"},{"line_number":3740,"context_line":"    except NoResultFound:"},{"line_number":3741,"context_line":"        raise exception.InstanceTypeNotFoundByName(instance_type_name\u003dname)"},{"line_number":3742,"context_line":"    return _dict_with_extra_specs(result)"},{"line_number":3743,"context_line":""},{"line_number":3744,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2F4Qk%3D","line":3741,"in_reply_to":"AAAAOn%2F%2F4Ys%3D","updated":"2013-04-15 05:00:43.000000000","message":"What is the question? I think that it is right, if we are trying to filter by name we raise One exception if by ID another..","commit_id":"92e621448733aa0e08861aa99d1bbc645a1aa676"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"d542ed61956633805c7297450d1686ecac3ef4d8","unresolved":false,"context_lines":[{"line_number":3850,"context_line":""},{"line_number":3851,"context_line":"@require_context"},{"line_number":3852,"context_line":"def instance_type_extra_specs_delete(context, flavor_id, key):"},{"line_number":3853,"context_line":"    # Don\u0027t need synchronize the session since we will not use the query result"},{"line_number":3854,"context_line":"    _instance_type_extra_specs_get_query("},{"line_number":3855,"context_line":"                            context, flavor_id).\\"},{"line_number":3856,"context_line":"        filter(models.InstanceTypeExtraSpecs.key \u003d\u003d key).\\"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtMk%3D","side":"PARENT","line":3853,"updated":"2013-04-26 19:57:30.000000000","message":"It seems pertinent to leave this comment here.","commit_id":"13c085bc9605447c4ff39ed903e0ef5bffd965d0"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"d542ed61956633805c7297450d1686ecac3ef4d8","unresolved":false,"context_lines":[{"line_number":3661,"context_line":"def _instance_type_get_query(context, session\u003dNone, read_deleted\u003dNone):"},{"line_number":3662,"context_line":"    return model_query(context, models.InstanceTypes, session\u003dsession,"},{"line_number":3663,"context_line":"                       read_deleted\u003dread_deleted).\\"},{"line_number":3664,"context_line":"                    options(joinedload(\u0027extra_specs\u0027))"},{"line_number":3665,"context_line":""},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtLU%3D","line":3664,"updated":"2013-04-26 19:57:30.000000000","message":"unnecessary whitespace change?","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"3f844026783375a6690ae785c0cfed634d8f810b","unresolved":false,"context_lines":[{"line_number":3661,"context_line":"def _instance_type_get_query(context, session\u003dNone, read_deleted\u003dNone):"},{"line_number":3662,"context_line":"    return model_query(context, models.InstanceTypes, session\u003dsession,"},{"line_number":3663,"context_line":"                       read_deleted\u003dread_deleted).\\"},{"line_number":3664,"context_line":"                    options(joinedload(\u0027extra_specs\u0027))"},{"line_number":3665,"context_line":""},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtJw%3D","line":3664,"in_reply_to":"AAAAOn%2F%2FtK4%3D","updated":"2013-04-26 20:19:57.000000000","message":"ah, great. hard to tell from this ui :)","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"0753cc12ba357340d2d99d90404c242f16134332","unresolved":false,"context_lines":[{"line_number":3661,"context_line":"def _instance_type_get_query(context, session\u003dNone, read_deleted\u003dNone):"},{"line_number":3662,"context_line":"    return model_query(context, models.InstanceTypes, session\u003dsession,"},{"line_number":3663,"context_line":"                       read_deleted\u003dread_deleted).\\"},{"line_number":3664,"context_line":"                    options(joinedload(\u0027extra_specs\u0027))"},{"line_number":3665,"context_line":""},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtK4%3D","line":3664,"in_reply_to":"AAAAOn%2F%2FtLU%3D","updated":"2013-04-26 20:04:11.000000000","message":"tab align","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"d542ed61956633805c7297450d1686ecac3ef4d8","unresolved":false,"context_lines":[{"line_number":3791,"context_line":"@require_admin_context"},{"line_number":3792,"context_line":"def instance_type_access_get_by_flavor_id(context, flavor_id):"},{"line_number":3793,"context_line":"    \"\"\"Get flavor access list by flavor id.\"\"\""},{"line_number":3794,"context_line":"    it_id_query \u003d _instance_type_get_id_from_flavor_query(context, flavor_id)"},{"line_number":3795,"context_line":"    access_refs \u003d _instance_type_access_query(context).\\"},{"line_number":3796,"context_line":"                        filter_by(instance_type_id\u003dit_id_query).\\"},{"line_number":3797,"context_line":"                        all()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtO8%3D","line":3794,"updated":"2013-04-26 19:57:30.000000000","message":"tiny nit, but since this will be used in a subquery, please indicate that in the variable name, eg:\n\n  instance_type_id_subq \u003d ...","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"0753cc12ba357340d2d99d90404c242f16134332","unresolved":false,"context_lines":[{"line_number":3791,"context_line":"@require_admin_context"},{"line_number":3792,"context_line":"def instance_type_access_get_by_flavor_id(context, flavor_id):"},{"line_number":3793,"context_line":"    \"\"\"Get flavor access list by flavor id.\"\"\""},{"line_number":3794,"context_line":"    it_id_query \u003d _instance_type_get_id_from_flavor_query(context, flavor_id)"},{"line_number":3795,"context_line":"    access_refs \u003d _instance_type_access_query(context).\\"},{"line_number":3796,"context_line":"                        filter_by(instance_type_id\u003dit_id_query).\\"},{"line_number":3797,"context_line":"                        all()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtK0%3D","line":3794,"in_reply_to":"AAAAOn%2F%2FtO8%3D","updated":"2013-04-26 20:04:11.000000000","message":"ok","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"d542ed61956633805c7297450d1686ecac3ef4d8","unresolved":false,"context_lines":[{"line_number":3793,"context_line":"    \"\"\"Get flavor access list by flavor id.\"\"\""},{"line_number":3794,"context_line":"    it_id_query \u003d _instance_type_get_id_from_flavor_query(context, flavor_id)"},{"line_number":3795,"context_line":"    access_refs \u003d _instance_type_access_query(context).\\"},{"line_number":3796,"context_line":"                        filter_by(instance_type_id\u003dit_id_query).\\"},{"line_number":3797,"context_line":"                        all()"},{"line_number":3798,"context_line":"    return access_refs"},{"line_number":3799,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtMs%3D","line":3796,"updated":"2013-04-26 19:57:30.000000000","message":"I think you may need to say .subquery() or .as_scalar() here","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"7c7fbfa5b9b71ecfd204649d972332da355aef5e","unresolved":false,"context_lines":[{"line_number":3793,"context_line":"    \"\"\"Get flavor access list by flavor id.\"\"\""},{"line_number":3794,"context_line":"    it_id_query \u003d _instance_type_get_id_from_flavor_query(context, flavor_id)"},{"line_number":3795,"context_line":"    access_refs \u003d _instance_type_access_query(context).\\"},{"line_number":3796,"context_line":"                        filter_by(instance_type_id\u003dit_id_query).\\"},{"line_number":3797,"context_line":"                        all()"},{"line_number":3798,"context_line":"    return access_refs"},{"line_number":3799,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FrFs%3D","line":3796,"in_reply_to":"AAAAOn%2F%2FrH4%3D","updated":"2013-04-29 17:23:43.000000000","message":"I stand corrected :)","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"273ddb6afae3379be21653be6f461468319892a5","unresolved":false,"context_lines":[{"line_number":3793,"context_line":"    \"\"\"Get flavor access list by flavor id.\"\"\""},{"line_number":3794,"context_line":"    it_id_query \u003d _instance_type_get_id_from_flavor_query(context, flavor_id)"},{"line_number":3795,"context_line":"    access_refs \u003d _instance_type_access_query(context).\\"},{"line_number":3796,"context_line":"                        filter_by(instance_type_id\u003dit_id_query).\\"},{"line_number":3797,"context_line":"                        all()"},{"line_number":3798,"context_line":"    return access_refs"},{"line_number":3799,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FrH4%3D","line":3796,"in_reply_to":"AAAAOn%2F%2FtKw%3D","updated":"2013-04-29 16:54:35.000000000","message":"In this case there is no difference between current variant, subquery and as_scalar take a look at http://pastebin.com/vvkdEXSd","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"0753cc12ba357340d2d99d90404c242f16134332","unresolved":false,"context_lines":[{"line_number":3793,"context_line":"    \"\"\"Get flavor access list by flavor id.\"\"\""},{"line_number":3794,"context_line":"    it_id_query \u003d _instance_type_get_id_from_flavor_query(context, flavor_id)"},{"line_number":3795,"context_line":"    access_refs \u003d _instance_type_access_query(context).\\"},{"line_number":3796,"context_line":"                        filter_by(instance_type_id\u003dit_id_query).\\"},{"line_number":3797,"context_line":"                        all()"},{"line_number":3798,"context_line":"    return access_refs"},{"line_number":3799,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtKw%3D","line":3796,"in_reply_to":"AAAAOn%2F%2FtMs%3D","updated":"2013-04-26 20:04:11.000000000","message":"investigating\u003d)","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"d542ed61956633805c7297450d1686ecac3ef4d8","unresolved":false,"context_lines":[{"line_number":3795,"context_line":"    access_refs \u003d _instance_type_access_query(context).\\"},{"line_number":3796,"context_line":"                        filter_by(instance_type_id\u003dit_id_query).\\"},{"line_number":3797,"context_line":"                        all()"},{"line_number":3798,"context_line":"    return access_refs"},{"line_number":3799,"context_line":""},{"line_number":3800,"context_line":""},{"line_number":3801,"context_line":"@require_admin_context"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtOk%3D","line":3798,"updated":"2013-04-26 19:57:30.000000000","message":"I think the returned object here should be a list, not a sqlalchemy object.","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"0753cc12ba357340d2d99d90404c242f16134332","unresolved":false,"context_lines":[{"line_number":3795,"context_line":"    access_refs \u003d _instance_type_access_query(context).\\"},{"line_number":3796,"context_line":"                        filter_by(instance_type_id\u003dit_id_query).\\"},{"line_number":3797,"context_line":"                        all()"},{"line_number":3798,"context_line":"    return access_refs"},{"line_number":3799,"context_line":""},{"line_number":3800,"context_line":""},{"line_number":3801,"context_line":"@require_admin_context"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtKs%3D","line":3798,"in_reply_to":"AAAAOn%2F%2FtOk%3D","updated":"2013-04-26 20:04:11.000000000","message":"sure","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"d542ed61956633805c7297450d1686ecac3ef4d8","unresolved":false,"context_lines":[{"line_number":3802,"context_line":"def instance_type_access_add(context, flavor_id, project_id):"},{"line_number":3803,"context_line":"    \"\"\"Add given tenant to the flavor access list.\"\"\""},{"line_number":3804,"context_line":"    session \u003d get_session()"},{"line_number":3805,"context_line":"    with session.begin():"},{"line_number":3806,"context_line":"        it_id \u003d _instance_type_get_id_from_flavor(context, flavor_id, session)"},{"line_number":3807,"context_line":""},{"line_number":3808,"context_line":"        access_ref \u003d models.InstanceTypeProjects()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtNM%3D","line":3805,"updated":"2013-04-26 19:57:30.000000000","message":"Session is not necessary here -- there is only a single write statement (INSERT) and, if it hits a duplicate key error, the database will not need to be rolled back anyway.","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"3f844026783375a6690ae785c0cfed634d8f810b","unresolved":false,"context_lines":[{"line_number":3802,"context_line":"def instance_type_access_add(context, flavor_id, project_id):"},{"line_number":3803,"context_line":"    \"\"\"Add given tenant to the flavor access list.\"\"\""},{"line_number":3804,"context_line":"    session \u003d get_session()"},{"line_number":3805,"context_line":"    with session.begin():"},{"line_number":3806,"context_line":"        it_id \u003d _instance_type_get_id_from_flavor(context, flavor_id, session)"},{"line_number":3807,"context_line":""},{"line_number":3808,"context_line":"        access_ref \u003d models.InstanceTypeProjects()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtJg%3D","line":3805,"in_reply_to":"AAAAOn%2F%2FtKg%3D","updated":"2013-04-26 20:19:57.000000000","message":"I think we\u0027re both right... DB integrity will be fine without an explicit session object here, but SQLA will probably use two session objects, resulting in a little bit more network traffic (one extra BEGIN statement).\n\nIt\u0027s up to you :)","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"0753cc12ba357340d2d99d90404c242f16134332","unresolved":false,"context_lines":[{"line_number":3802,"context_line":"def instance_type_access_add(context, flavor_id, project_id):"},{"line_number":3803,"context_line":"    \"\"\"Add given tenant to the flavor access list.\"\"\""},{"line_number":3804,"context_line":"    session \u003d get_session()"},{"line_number":3805,"context_line":"    with session.begin():"},{"line_number":3806,"context_line":"        it_id \u003d _instance_type_get_id_from_flavor(context, flavor_id, session)"},{"line_number":3807,"context_line":""},{"line_number":3808,"context_line":"        access_ref \u003d models.InstanceTypeProjects()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtKg%3D","line":3805,"in_reply_to":"AAAAOn%2F%2FtNM%3D","updated":"2013-04-26 20:04:11.000000000","message":"We are making here 2 requests.. \nSo if we don\u0027t create explicit session it will create two session and make 2 transactions.. I think that in this case it is better to use one session with one transaction. What do you think?","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"d542ed61956633805c7297450d1686ecac3ef4d8","unresolved":false,"context_lines":[{"line_number":3819,"context_line":"@require_admin_context"},{"line_number":3820,"context_line":"def instance_type_access_remove(context, flavor_id, project_id):"},{"line_number":3821,"context_line":"    \"\"\"Remove given tenant from the flavor access list.\"\"\""},{"line_number":3822,"context_line":"    it_id \u003d _instance_type_get_id_from_flavor(context, flavor_id)"},{"line_number":3823,"context_line":""},{"line_number":3824,"context_line":"    count \u003d _instance_type_access_query(context).\\"},{"line_number":3825,"context_line":"                    filter_by(instance_type_id\u003dit_id).\\"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtNk%3D","line":3822,"updated":"2013-04-26 19:57:30.000000000","message":"again, a tiny nit, but I think the longer variable name (instance_type_id) is more readable","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"d542ed61956633805c7297450d1686ecac3ef4d8","unresolved":false,"context_lines":[{"line_number":3831,"context_line":""},{"line_number":3832,"context_line":""},{"line_number":3833,"context_line":"def _instance_type_extra_specs_get_query(context, flavor_id, session\u003dNone):"},{"line_number":3834,"context_line":"    it_id_query \u003d _instance_type_get_id_from_flavor_query(context, flavor_id)"},{"line_number":3835,"context_line":""},{"line_number":3836,"context_line":"    return model_query(context, models.InstanceTypeExtraSpecs, session\u003dsession,"},{"line_number":3837,"context_line":"                       read_deleted\u003d\"no\").\\"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtNE%3D","line":3834,"updated":"2013-04-26 19:57:30.000000000","message":"again, I would prefer a longer variable name which indicates this will be used as a subquery.","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"d542ed61956633805c7297450d1686ecac3ef4d8","unresolved":false,"context_lines":[{"line_number":3835,"context_line":""},{"line_number":3836,"context_line":"    return model_query(context, models.InstanceTypeExtraSpecs, session\u003dsession,"},{"line_number":3837,"context_line":"                       read_deleted\u003d\"no\").\\"},{"line_number":3838,"context_line":"        filter(models.InstanceTypeExtraSpecs.instance_type_id \u003d\u003d it_id_query)"},{"line_number":3839,"context_line":""},{"line_number":3840,"context_line":""},{"line_number":3841,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtMw%3D","line":3838,"updated":"2013-04-26 19:57:30.000000000","message":"I think you may need to say .subquery() or .as_scalar() here, too","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"d542ed61956633805c7297450d1686ecac3ef4d8","unresolved":false,"context_lines":[{"line_number":3859,"context_line":"    #                 possible after bp/db-unique-keys implementation."},{"line_number":3860,"context_line":"    session \u003d get_session()"},{"line_number":3861,"context_line":"    with session.begin():"},{"line_number":3862,"context_line":"        it_id \u003d _instance_type_get_id_from_flavor(context, flavor_id, session)"},{"line_number":3863,"context_line":""},{"line_number":3864,"context_line":"        spec_refs \u003d model_query(context, models.InstanceTypeExtraSpecs,"},{"line_number":3865,"context_line":"                                session\u003dsession, read_deleted\u003d\"no\").\\"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtMo%3D","line":3862,"updated":"2013-04-26 19:57:30.000000000","message":"again, i would prefer long names","commit_id":"1ab67d03bffae0c46b4f33253773a9f3a8ca8def"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"5fda422f66c996afe227c290b57fc1b48a07efc2","unresolved":false,"context_lines":[{"line_number":3796,"context_line":"    access_refs \u003d _instance_type_access_query(context).\\"},{"line_number":3797,"context_line":"                        filter_by(instance_type_id\u003dinstance_type_id_subq).\\"},{"line_number":3798,"context_line":"                        all()"},{"line_number":3799,"context_line":"    return access_refs"},{"line_number":3800,"context_line":""},{"line_number":3801,"context_line":""},{"line_number":3802,"context_line":"@require_admin_context"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2Fq4I%3D","line":3799,"updated":"2013-04-29 19:31:24.000000000","message":"I think this should return a list, not a sqla object","commit_id":"2d0ffa088392a2bc6eaa5468cef683db374632ee"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"2557ceedaa0eefa6d28a8d9b12fd683ab0145e61","unresolved":false,"context_lines":[{"line_number":3796,"context_line":"    access_refs \u003d _instance_type_access_query(context).\\"},{"line_number":3797,"context_line":"                        filter_by(instance_type_id\u003dinstance_type_id_subq).\\"},{"line_number":3798,"context_line":"                        all()"},{"line_number":3799,"context_line":"    return access_refs"},{"line_number":3800,"context_line":""},{"line_number":3801,"context_line":""},{"line_number":3802,"context_line":"@require_admin_context"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2Fq1A%3D","line":3799,"in_reply_to":"AAAAOn%2F%2Fq4I%3D","updated":"2013-04-29 20:02:32.000000000","message":"Gah! Ignore that -- this is fine :)\n\nFTR, .all() does return a list....","commit_id":"2d0ffa088392a2bc6eaa5468cef683db374632ee"}]}
