)]}'
{"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"68956efd88bcf09495c4d675c0ef91e1a6b2b8ff","unresolved":false,"context_lines":[{"line_number":577,"context_line":"            return"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"        search_opts \u003d {}"},{"line_number":580,"context_line":"        search_opts[\u0027deleted\u0027] \u003d False"},{"line_number":581,"context_line":"        if FLAGS.osapi_compute_unique_server_name_scope \u003d\u003d \u0027project\u0027:"},{"line_number":582,"context_line":"            if context.project_id:"},{"line_number":583,"context_line":"                search_opts[\u0027project_id\u0027] \u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2F8Zo%3D","line":580,"updated":"2012-10-25 18:37:00.000000000","message":"How about just search_opts \u003d {\u0027deleted\u0027: False}","commit_id":"6ded152ce13aba66a3329e72bef91ab49cb8444c"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"68956efd88bcf09495c4d675c0ef91e1a6b2b8ff","unresolved":false,"context_lines":[{"line_number":597,"context_line":"                                                 search_opts\u003dsearch_opts)"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        for instance in instance_list:"},{"line_number":600,"context_line":"            if instance[\u0027hostname\u0027].lower() \u003d\u003d name.lower():"},{"line_number":601,"context_line":"                msg \u003d _(\u0027Server name %servers already exists \u0027"},{"line_number":602,"context_line":"                        \u0027in project %projects\u0027) % {\u0027server\u0027: name,"},{"line_number":603,"context_line":"                                              \u0027project\u0027: context.project_id}"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2F8Zk%3D","line":600,"updated":"2012-10-25 18:37:00.000000000","message":"Since instance_list can be large, it\u0027s probably worth hoisting name.lower() outside the loop.","commit_id":"6ded152ce13aba66a3329e72bef91ab49cb8444c"}],"nova/config.py":[{"author":{"_account_id":1711,"name":"Yun Mao","email":"yunmao@gmail.com","username":"yunmao"},"change_message_id":"93e06a04e55d2efe3532d2e19ac6c1337e113653","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                    help\u003d\u0027osapi compute extension to load\u0027),"},{"line_number":168,"context_line":"    cfg.StrOpt(\u0027osapi_compute_unique_server_name_scope\u0027,"},{"line_number":169,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":170,"context_line":"               help\u003d\u0027When set, compute API will consider duplicate hostnames\u0027"},{"line_number":171,"context_line":"                    \u0027invalid within the specified scope, regardless of case. \u0027"},{"line_number":172,"context_line":"                    \u0027Should be empty, \"project\" or \"global\".\u0027),"},{"line_number":173,"context_line":"    cfg.StrOpt(\u0027osapi_path\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAMH%2F%2F2x0%3D","line":170,"updated":"2012-11-19 22:36:28.000000000","message":"A space is missed in the end.","commit_id":"db53abc3d88eb8c57679c9fb2dc7434164423671"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"b20e9fcd8f7e5d8866714692c9ad6e9396e64b89","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"    session \u003d get_session()"},{"line_number":1455,"context_line":"    with session.begin():"},{"line_number":1456,"context_line":"        if \u0027hostname\u0027 in values:"},{"line_number":1457,"context_line":"            _validate_unique_server_name(context, values[\u0027hostname\u0027])"},{"line_number":1458,"context_line":"        instance_ref.security_groups \u003d _get_sec_group_models(session,"},{"line_number":1459,"context_line":"                security_groups)"},{"line_number":1460,"context_line":"        instance_ref.save(session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALn%2F%2F4RY%3D","line":1457,"updated":"2012-10-31 00:42:41.000000000","message":"Now you\u0027ll want to pass \u0027session\u0027 into this call... and somehow figure out how to pass it into the get_all_by_filters call in this method... so that everything is using the same session.","commit_id":"2b719f27e664a9fe8a7ba6c839c8ce3d5b743146"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"b20e9fcd8f7e5d8866714692c9ad6e9396e64b89","unresolved":false,"context_lines":[{"line_number":1876,"context_line":""},{"line_number":1877,"context_line":"        if (\"hostname\" in values and"},{"line_number":1878,"context_line":"            values[\"hostname\"].lower() !\u003d instance_ref[\"hostname\"].lower()):"},{"line_number":1879,"context_line":"                _validate_unique_server_name(context, values[\u0027hostname\u0027])"},{"line_number":1880,"context_line":""},{"line_number":1881,"context_line":"        if copy_old_instance:"},{"line_number":1882,"context_line":"            old_instance_ref \u003d copy.copy(instance_ref)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALn%2F%2F4RU%3D","line":1879,"updated":"2012-10-31 00:42:41.000000000","message":"Same here.","commit_id":"2b719f27e664a9fe8a7ba6c839c8ce3d5b743146"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"a2e0b09837156fa912cb319dcd8fb7d6836e7d3d","unresolved":false,"context_lines":[{"line_number":1397,"context_line":"    if not FLAGS.osapi_compute_unique_server_name_scope:"},{"line_number":1398,"context_line":"        return"},{"line_number":1399,"context_line":""},{"line_number":1400,"context_line":"    search_opts \u003d {\u0027deleted\u0027: False}"},{"line_number":1401,"context_line":"    if FLAGS.osapi_compute_unique_server_name_scope \u003d\u003d \u0027project\u0027:"},{"line_number":1402,"context_line":"        instance_list \u003d instance_get_all_by_filters(context, search_opts,"},{"line_number":1403,"context_line":"                                                    \u0027created_at\u0027, \u0027desc\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2F3h0%3D","line":1400,"updated":"2012-10-31 16:24:22.000000000","message":"It\u0027s too bad that you want a case-insensitive match, because otherwise you could add \u0027hostname\u0027: name to this dict and let the matching happen completely DB-side without having to return all instances. :)","commit_id":"31b66ee048d3d9f8d7288ec05678c55a59660505"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"cd6447125754f6372f384c57e92d446cf9a6fdc7","unresolved":false,"context_lines":[{"line_number":1397,"context_line":"    if not FLAGS.osapi_compute_unique_server_name_scope:"},{"line_number":1398,"context_line":"        return"},{"line_number":1399,"context_line":""},{"line_number":1400,"context_line":"    search_opts \u003d {\u0027deleted\u0027: False}"},{"line_number":1401,"context_line":"    if FLAGS.osapi_compute_unique_server_name_scope \u003d\u003d \u0027project\u0027:"},{"line_number":1402,"context_line":"        instance_list \u003d instance_get_all_by_filters(context, search_opts,"},{"line_number":1403,"context_line":"                                                    \u0027created_at\u0027, \u0027desc\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2F3hY%3D","line":1400,"in_reply_to":"AAAALn%2F%2F3h0%3D","updated":"2012-10-31 16:27:19.000000000","message":"Could we do an insensitive search using a regexp?","commit_id":"31b66ee048d3d9f8d7288ec05678c55a59660505"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"a2e0b09837156fa912cb319dcd8fb7d6836e7d3d","unresolved":false,"context_lines":[{"line_number":1610,"context_line":"                    filter_by(deleted\u003dFalse).\\"},{"line_number":1611,"context_line":"                    filter(models.Instance.vm_state !\u003d vm_states.SOFT_DELETED)"},{"line_number":1612,"context_line":""},{"line_number":1613,"context_line":"    if not context.is_admin and not all_projects:"},{"line_number":1614,"context_line":"        # If we\u0027re not admin context, add appropriate filter.."},{"line_number":1615,"context_line":"        if context.project_id:"},{"line_number":1616,"context_line":"            filters[\u0027project_id\u0027] \u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2F3hk%3D","line":1613,"updated":"2012-10-31 16:24:22.000000000","message":"Instead of adding this keyword arg, etc... I think you might as well just raise the context in the caller to an admin context.\n\nIe, if you pass in context.elevated() in the \u0027global\u0027 case above... that\u0027ll give you the behavior you desire... yes?","commit_id":"31b66ee048d3d9f8d7288ec05678c55a59660505"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"cd6447125754f6372f384c57e92d446cf9a6fdc7","unresolved":false,"context_lines":[{"line_number":1610,"context_line":"                    filter_by(deleted\u003dFalse).\\"},{"line_number":1611,"context_line":"                    filter(models.Instance.vm_state !\u003d vm_states.SOFT_DELETED)"},{"line_number":1612,"context_line":""},{"line_number":1613,"context_line":"    if not context.is_admin and not all_projects:"},{"line_number":1614,"context_line":"        # If we\u0027re not admin context, add appropriate filter.."},{"line_number":1615,"context_line":"        if context.project_id:"},{"line_number":1616,"context_line":"            filters[\u0027project_id\u0027] \u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2F3hc%3D","line":1613,"in_reply_to":"AAAALn%2F%2F3hk%3D","updated":"2012-10-31 16:27:19.000000000","message":"Yep, I think it will.  I was worried that elevating a context would create an even bigger security hole than the way I did it... context.elevated() is fair game?","commit_id":"31b66ee048d3d9f8d7288ec05678c55a59660505"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"33d8d5b0b55e7f00492375921e01594b026bbb1e","unresolved":false,"context_lines":[{"line_number":1399,"context_line":""},{"line_number":1400,"context_line":"    search_opts \u003d {\u0027deleted\u0027: False}"},{"line_number":1401,"context_line":"    if FLAGS.osapi_compute_unique_server_name_scope \u003d\u003d \u0027project\u0027:"},{"line_number":1402,"context_line":"        instance_list \u003d instance_get_all_by_filters(context, search_opts,"},{"line_number":1403,"context_line":"                                                    \u0027created_at\u0027, \u0027desc\u0027,"},{"line_number":1404,"context_line":"                                                    session\u003dsession)"},{"line_number":1405,"context_line":"    elif FLAGS.osapi_compute_unique_server_name_scope \u003d\u003d \u0027global\u0027:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALn%2F%2Fw3Q%3D","line":1402,"updated":"2012-11-07 21:45:49.000000000","message":"What\u0027s the desired behavior if context happens to be an admin context already?  It should still only verify within its project, right?  If so, I think you need to add a line here:\nsearch_opts[\u0027project_id\u0027] \u003d context.project_id","commit_id":"f9818b55645f2153be16134be04fc2521a5f44b6"},{"author":{"_account_id":1711,"name":"Yun Mao","email":"yunmao@gmail.com","username":"yunmao"},"change_message_id":"3e055d82a40669706e28edaea3464bfdba9c9064","unresolved":false,"context_lines":[{"line_number":1411,"context_line":"    else:"},{"line_number":1412,"context_line":"        msg \u003d _(\u0027Unknown osapi_compute_unique_server_name_scope value: %s\u0027"},{"line_number":1413,"context_line":"                \u0027 Flag must be empty, \"global\" or\u0027"},{"line_number":1414,"context_line":"                \u0027\"project\"\u0027) % FLAGS.osapi_compute_unique_server_name_scope"},{"line_number":1415,"context_line":"        LOG.warn(msg)"},{"line_number":1416,"context_line":"        return"},{"line_number":1417,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAMH%2F%2F%2Bwk%3D","line":1414,"updated":"2012-11-13 04:45:29.000000000","message":"sorry to nit pick but seems we miss a space here.","commit_id":"b97d7d2879c83666bd8e85f295335ec485391949"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"f6fcaeb8cb9e0ae03bfbf4160c9797f56887e015","unresolved":false,"context_lines":[{"line_number":1154,"context_line":"@require_admin_context"},{"line_number":1155,"context_line":"def fixed_ip_get_by_address_detailed(context, address, session\u003dNone):"},{"line_number":1156,"context_line":"    # This method returns a tuple of (models.FixedIp, models.Network,"},{"line_number":1157,"context_line":"    # models.Instance)."},{"line_number":1158,"context_line":"    if not session:"},{"line_number":1159,"context_line":"        session \u003d get_session()"},{"line_number":1160,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAMH%2F%2F7NE%3D","line":1157,"updated":"2012-11-15 17:00:03.000000000","message":"This comment should be a docstring","commit_id":"241e5da412a1384e5537f8962e69250484833b80"}],"nova/flags.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"68956efd88bcf09495c4d675c0ef91e1a6b2b8ff","unresolved":false,"context_lines":[{"line_number":205,"context_line":"               help\u003d\u0027When set, compute API will consider duplicate hostnames\u0027"},{"line_number":206,"context_line":"                    \u0027invalid within the specified scope.\u0027"},{"line_number":207,"context_line":"                    \u0027Should be empty, \"project\" or \"global\".\u0027),"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    cfg.ListOpt(\u0027osapi_volume_ext_list\u0027,"},{"line_number":210,"context_line":"                default\u003d[],"},{"line_number":211,"context_line":"                help\u003d\u0027Specify list of extensions to load when using osapi_\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2F8Zw%3D","line":208,"updated":"2012-10-25 18:37:00.000000000","message":"Newline here is inconsistent with the others.","commit_id":"6ded152ce13aba66a3329e72bef91ab49cb8444c"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"03827ba7b213d50e985b8e5e9082fd067c5fa9a3","unresolved":false,"context_lines":[{"line_number":392,"context_line":"                help\u003d\u0027Whether to batch up the application of IPTables rules\u0027"},{"line_number":393,"context_line":"                     \u0027 during a host restart and apply all at the end of the\u0027"},{"line_number":394,"context_line":"                     \u0027 init phase\u0027),"},{"line_number":395,"context_line":"    cfg.StrOpt(\u0027compute_driver\u0027,"},{"line_number":396,"context_line":"               help\u003d\u0027Driver to use for controlling virtualization. Options \u0027"},{"line_number":397,"context_line":"                   \u0027include: libvirt.LibvirtDriver, xenapi.XenAPIDriver, \u0027"},{"line_number":398,"context_line":"                   \u0027fake.FakeDriver, baremetal.BareMetalDriver, \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2F3io%3D","line":395,"updated":"2012-10-31 16:15:03.000000000","message":"Should there be a default?","commit_id":"31b66ee048d3d9f8d7288ec05678c55a59660505"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"cd6447125754f6372f384c57e92d446cf9a6fdc7","unresolved":false,"context_lines":[{"line_number":392,"context_line":"                help\u003d\u0027Whether to batch up the application of IPTables rules\u0027"},{"line_number":393,"context_line":"                     \u0027 during a host restart and apply all at the end of the\u0027"},{"line_number":394,"context_line":"                     \u0027 init phase\u0027),"},{"line_number":395,"context_line":"    cfg.StrOpt(\u0027compute_driver\u0027,"},{"line_number":396,"context_line":"               help\u003d\u0027Driver to use for controlling virtualization. Options \u0027"},{"line_number":397,"context_line":"                   \u0027include: libvirt.LibvirtDriver, xenapi.XenAPIDriver, \u0027"},{"line_number":398,"context_line":"                   \u0027fake.FakeDriver, baremetal.BareMetalDriver, \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2F3hU%3D","line":395,"in_reply_to":"AAAALn%2F%2F3io%3D","updated":"2012-10-31 16:27:19.000000000","message":"?","commit_id":"31b66ee048d3d9f8d7288ec05678c55a59660505"}],"nova/tests/test_db_api.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"f6fcaeb8cb9e0ae03bfbf4160c9797f56887e015","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\"\"\"Unit tests for the DB API\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import datetime"},{"line_number":23,"context_line":"import uuid as uuidutils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from nova import config"},{"line_number":26,"context_line":"from nova import context"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAMH%2F%2F7NU%3D","line":23,"updated":"2012-11-15 17:00:03.000000000","message":"This is confusing. Why are you aliasing uuid to uuidutils?","commit_id":"241e5da412a1384e5537f8962e69250484833b80"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"46634ae8e78b250d687d5b85a2c6b84c62a8658e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\"\"\"Unit tests for the DB API\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import datetime"},{"line_number":23,"context_line":"import uuid as uuidutils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from nova import config"},{"line_number":26,"context_line":"from nova import context"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAMH%2F%2F6HM%3D","line":23,"in_reply_to":"AAAAMH%2F%2F6cI%3D","updated":"2012-11-16 03:14:57.000000000","message":"As mentioned earlier, this line is not part of my diff.  Y\u0027all are welcome to address your concerns in a separate patch.","commit_id":"241e5da412a1384e5537f8962e69250484833b80"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"981ef68e79a22d1e3c0b31bbf258f2c9b3ac78a2","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\"\"\"Unit tests for the DB API\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import datetime"},{"line_number":23,"context_line":"import uuid as uuidutils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from nova import config"},{"line_number":26,"context_line":"from nova import context"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAMH%2F%2F6cI%3D","line":23,"in_reply_to":"AAAAMH%2F%2F7NU%3D","updated":"2012-11-16 00:13:47.000000000","message":"Agreed. Especially when there\u0027s now a common module by that name...","commit_id":"241e5da412a1384e5537f8962e69250484833b80"}]}
