)]}'
{"nova/api/ec2/cloud.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"2be9bfa56956cd3241e4b7a8727d11a7637b6f45","unresolved":false,"context_lines":[{"line_number":1219,"context_line":"            ec2_id \u003d None"},{"line_number":1220,"context_line":"            if floating_ip_ref[\u0027fixed_ip_id\u0027]:"},{"line_number":1221,"context_line":"                fixed_id \u003d floating_ip_ref[\u0027fixed_ip_id\u0027]"},{"line_number":1222,"context_line":"                fixed \u003d self.network_api.get_fixed_ip(context, fixed_id)"},{"line_number":1223,"context_line":"                if fixed[\u0027instance_id\u0027]:"},{"line_number":1224,"context_line":"                    ec2_id \u003d ec2utils.id_to_ec2_id(fixed[\u0027instance_id\u0027])"},{"line_number":1225,"context_line":"            address_rv \u003d {\u0027public_ip\u0027: address,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FIU%3D","line":1222,"updated":"2012-01-11 05:42:49.000000000","message":"These rpc calls make me unhappy. :(  This will be addressed soon?","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"},{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"8f793cd6da8b8daf8b1c03fbcb37eb3b019faa65","unresolved":false,"context_lines":[{"line_number":1219,"context_line":"            ec2_id \u003d None"},{"line_number":1220,"context_line":"            if floating_ip_ref[\u0027fixed_ip_id\u0027]:"},{"line_number":1221,"context_line":"                fixed_id \u003d floating_ip_ref[\u0027fixed_ip_id\u0027]"},{"line_number":1222,"context_line":"                fixed \u003d self.network_api.get_fixed_ip(context, fixed_id)"},{"line_number":1223,"context_line":"                if fixed[\u0027instance_id\u0027]:"},{"line_number":1224,"context_line":"                    ec2_id \u003d ec2utils.id_to_ec2_id(fixed[\u0027instance_id\u0027])"},{"line_number":1225,"context_line":"            address_rv \u003d {\u0027public_ip\u0027: address,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FCc%3D","line":1222,"in_reply_to":"AAAAD3%2F%2F%2FIU%3D","updated":"2012-01-11 15:14:05.000000000","message":"We were not planning on addressing the EC2 list ips directly. But once the model is being returned from the network layer, and then once we have eager loading built into the rpc calls, then yes this could be cut down to just the one. Personally I would hope that someone who knows how often the bare list ips is used by EC2 consumers would come in and implement the rest of the EC2 describe_addresses function using the openstack api filtering as an example.","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"},{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"a590d712baf5b4787c801ac6b5a7103b395cd515","unresolved":false,"context_lines":[{"line_number":1220,"context_line":"            if floating_ip_ref[\u0027fixed_ip_id\u0027]:"},{"line_number":1221,"context_line":"                fixed_id \u003d floating_ip_ref[\u0027fixed_ip_id\u0027]"},{"line_number":1222,"context_line":"                fixed \u003d self.network_api.get_fixed_ip(context, fixed_id)"},{"line_number":1223,"context_line":"                if fixed[\u0027instance_id\u0027]:"},{"line_number":1224,"context_line":"                    ec2_id \u003d ec2utils.id_to_ec2_id(fixed[\u0027instance_id\u0027])"},{"line_number":1225,"context_line":"            address_rv \u003d {\u0027public_ip\u0027: address,"},{"line_number":1226,"context_line":"                          \u0027instance_id\u0027: ec2_id}"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FSg%3D","line":1223,"updated":"2012-01-10 22:45:38.000000000","message":"Would this ever not be in the dictionary?","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"},{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"2e92dea9acddbf8fbc0fe7e712a7acf34318ede9","unresolved":false,"context_lines":[{"line_number":1220,"context_line":"            if floating_ip_ref[\u0027fixed_ip_id\u0027]:"},{"line_number":1221,"context_line":"                fixed_id \u003d floating_ip_ref[\u0027fixed_ip_id\u0027]"},{"line_number":1222,"context_line":"                fixed \u003d self.network_api.get_fixed_ip(context, fixed_id)"},{"line_number":1223,"context_line":"                if fixed[\u0027instance_id\u0027]:"},{"line_number":1224,"context_line":"                    ec2_id \u003d ec2utils.id_to_ec2_id(fixed[\u0027instance_id\u0027])"},{"line_number":1225,"context_line":"            address_rv \u003d {\u0027public_ip\u0027: address,"},{"line_number":1226,"context_line":"                          \u0027instance_id\u0027: ec2_id}"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FO4%3D","line":1223,"in_reply_to":"AAAAD3%2F%2F%2FSg%3D","updated":"2012-01-10 22:57:40.000000000","message":"Well it will always be in the dictionary, but it may be None if the fixed ip isn\u0027t allocated, but a floater is associated to it.","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"}],"nova/api/ec2/ec2utils.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3a908ebd7fe9bae505be2d7691e731bdfc1e8430","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        raise ValueError"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    cached_info \u003d instance[\u0027info_cache\u0027][\u0027network_info\u0027]"},{"line_number":76,"context_line":"    nw_info \u003d network_model.NetworkInfo.hydrate(cached_info)"},{"line_number":77,"context_line":"    ip_info \u003d dict(fixed_ips\u003d[], fixed_ip6s\u003d[], floating_ips\u003d[])"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    for vif in nw_info:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FEc%3D","line":76,"updated":"2012-01-11 14:34:50.000000000","message":"hydrate()? Guess I never noticed this in the previous networking patch(es?)... but is this really necessary to name methods like this? We need to not assume that only English-speaking developers are working with the code, and remember that when you name methods like this in a cute fashion, all that ends up happening is confusing our ESL brothers and sisters...\n\nI also see that we just decided to go the object-oriented route instead of the pure-dict route without any consensus in the community... but, whatever.","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e911f3517162214551f75f148425c85dda00138b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        raise ValueError"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    cached_info \u003d instance[\u0027info_cache\u0027][\u0027network_info\u0027]"},{"line_number":76,"context_line":"    nw_info \u003d network_model.NetworkInfo.hydrate(cached_info)"},{"line_number":77,"context_line":"    ip_info \u003d dict(fixed_ips\u003d[], fixed_ip6s\u003d[], floating_ips\u003d[])"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    for vif in nw_info:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FCQ%3D","line":76,"in_reply_to":"AAAAD3%2F%2F%2FC8%3D","updated":"2012-01-11 15:22:21.000000000","message":"I think load() or refresh() would be easier for ESL digestion :) Thanks!\n\nAs for the dict stuff, like I said, wasn\u0027t a particularly important thing to me; was just remarking that I hadn\u0027t seen any decision on the ML about it. I\u0027m actually fine with the approach you took. It isn\u0027t overbearing IMHO, I was just surprised to see it! :)","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"},{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"8f793cd6da8b8daf8b1c03fbcb37eb3b019faa65","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        raise ValueError"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    cached_info \u003d instance[\u0027info_cache\u0027][\u0027network_info\u0027]"},{"line_number":76,"context_line":"    nw_info \u003d network_model.NetworkInfo.hydrate(cached_info)"},{"line_number":77,"context_line":"    ip_info \u003d dict(fixed_ips\u003d[], fixed_ip6s\u003d[], floating_ips\u003d[])"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    for vif in nw_info:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FC8%3D","line":76,"in_reply_to":"AAAAD3%2F%2F%2FEc%3D","updated":"2012-01-11 15:14:05.000000000","message":"We never thought about ESL peeps. Since there are only a few places it is used, we can change this rather easily. We\u0027re open to suggestions as to what it should be named.\n\nThe models are actually lists and dicts. and can be treated as such. They just provide a wrapper of convince around accessing the data. I like to call them dict++ ;). We wanted to make sure that the return of the model over the rpc call could be used without the model, but if you wanted the extra functions that the model provides, you could turn it into a model instance \"with a quickness\" not having to massage it into some sort of kwargs or anything.","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e05496f175b3b977061928f74818fb2d87211066","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def get_ip_info_for_instance_from_cache(instance):"},{"line_number":69,"context_line":"    if not instance.get(\u0027info_cache\u0027) or \\"},{"line_number":70,"context_line":"       not instance[\u0027info_cache\u0027].get(\u0027network_info\u0027):"},{"line_number":71,"context_line":"        # NOTE(jkoelker) Raising ValueError so that we trigger the"},{"line_number":72,"context_line":"        #                fallback lookup"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAD3%2F%2F%2BpY%3D","line":69,"updated":"2012-01-12 16:57:47.000000000","message":"I\u0027d prefer that you surround this with parentheses rather than using \\ continuation...","commit_id":"7cf8dcdcec2d66705bd29b63dddcb1cba73edc22"},{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"2c00d5840df8f0eac568c34d8b2d0bd6e47810ac","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def get_ip_info_for_instance_from_cache(instance):"},{"line_number":69,"context_line":"    if not instance.get(\u0027info_cache\u0027) or \\"},{"line_number":70,"context_line":"       not instance[\u0027info_cache\u0027].get(\u0027network_info\u0027):"},{"line_number":71,"context_line":"        # NOTE(jkoelker) Raising ValueError so that we trigger the"},{"line_number":72,"context_line":"        #                fallback lookup"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAD3%2F%2F%2BpM%3D","line":69,"in_reply_to":"AAAAD3%2F%2F%2BpY%3D","updated":"2012-01-12 17:02:03.000000000","message":"Done","commit_id":"7cf8dcdcec2d66705bd29b63dddcb1cba73edc22"}],"nova/api/openstack/common.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"2be9bfa56956cd3241e4b7a8727d11a7637b6f45","unresolved":false,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"def get_networks_for_instance_from_nwinfo(context, instance):"},{"line_number":311,"context_line":"    # NOTE(jkoelker) When the network_api starts returning the model, this"},{"line_number":312,"context_line":"    #                can be refactored out into the above function"},{"line_number":313,"context_line":"    network_api \u003d network.API()"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def _get_floats(ip):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FIY%3D","line":312,"updated":"2012-01-11 05:42:49.000000000","message":"Comment not quite right anymore?  Probably want appropriate doc strings on these calls, instead.","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"},{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"8f793cd6da8b8daf8b1c03fbcb37eb3b019faa65","unresolved":false,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"def get_networks_for_instance_from_nwinfo(context, instance):"},{"line_number":311,"context_line":"    # NOTE(jkoelker) When the network_api starts returning the model, this"},{"line_number":312,"context_line":"    #                can be refactored out into the above function"},{"line_number":313,"context_line":"    network_api \u003d network.API()"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def _get_floats(ip):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FDI%3D","line":312,"in_reply_to":"AAAAD3%2F%2F%2FEQ%3D","updated":"2012-01-11 15:14:05.000000000","message":"That is correct, it is not returning the model. The doc string is correct.","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3a908ebd7fe9bae505be2d7691e731bdfc1e8430","unresolved":false,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"def get_networks_for_instance_from_nwinfo(context, instance):"},{"line_number":311,"context_line":"    # NOTE(jkoelker) When the network_api starts returning the model, this"},{"line_number":312,"context_line":"    #                can be refactored out into the above function"},{"line_number":313,"context_line":"    network_api \u003d network.API()"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def _get_floats(ip):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FEQ%3D","line":312,"in_reply_to":"AAAAD3%2F%2F%2FIY%3D","updated":"2012-01-11 14:34:50.000000000","message":"network_api.API() is not yet returning a model, AFAICT. It is still returning the direct results of a call to rpc.call()...","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e05496f175b3b977061928f74818fb2d87211066","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"def get_networks_for_instance_from_cache(instance):"},{"line_number":288,"context_line":"    if not instance.get(\u0027info_cache\u0027) or \\"},{"line_number":289,"context_line":"       not instance[\u0027info_cache\u0027].get(\u0027network_info\u0027):"},{"line_number":290,"context_line":"        # NOTE(jkoelker) Raising ValueError so that we trigger the"},{"line_number":291,"context_line":"        #                fallback lookup"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAD3%2F%2F%2BpU%3D","line":288,"updated":"2012-01-12 16:57:47.000000000","message":"Ibid.; yes parentheses, no backslash :)","commit_id":"7cf8dcdcec2d66705bd29b63dddcb1cba73edc22"},{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"2c00d5840df8f0eac568c34d8b2d0bd6e47810ac","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"def get_networks_for_instance_from_cache(instance):"},{"line_number":288,"context_line":"    if not instance.get(\u0027info_cache\u0027) or \\"},{"line_number":289,"context_line":"       not instance[\u0027info_cache\u0027].get(\u0027network_info\u0027):"},{"line_number":290,"context_line":"        # NOTE(jkoelker) Raising ValueError so that we trigger the"},{"line_number":291,"context_line":"        #                fallback lookup"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAD3%2F%2F%2BpE%3D","line":288,"in_reply_to":"AAAAD3%2F%2F%2BpU%3D","updated":"2012-01-12 17:02:03.000000000","message":"Done","commit_id":"7cf8dcdcec2d66705bd29b63dddcb1cba73edc22"}],"nova/api/openstack/v2/contrib/floating_ips.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"2be9bfa56956cd3241e4b7a8727d11a7637b6f45","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def _get_fixed_ip(self, context, fixed_ip_id):"},{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            return self.network_api.get_fixed_ip(context, fixed_ip_id)"},{"line_number":93,"context_line":"        except exception.FixedIpNotFound:"},{"line_number":94,"context_line":"            return None"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FIQ%3D","line":92,"updated":"2012-01-11 05:42:49.000000000","message":"Unhappy times.  At least it\u0027s in an extension that I *hope* is rarely used... and will be fixed up soon to use cache somehow.","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"},{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"8f793cd6da8b8daf8b1c03fbcb37eb3b019faa65","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def _get_fixed_ip(self, context, fixed_ip_id):"},{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            return self.network_api.get_fixed_ip(context, fixed_ip_id)"},{"line_number":93,"context_line":"        except exception.FixedIpNotFound:"},{"line_number":94,"context_line":"            return None"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FDM%3D","line":92,"in_reply_to":"AAAAD3%2F%2F%2FIQ%3D","updated":"2012-01-11 15:14:05.000000000","message":"Yea I hope those that are interested in this extension refactor it to use the instance cache. Note however they don\u0027t always have a reference for the instance, I added that in as well. Anyway I think it should only be our responsibility to make it work, not to optimize extensions.","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"}],"nova/tests/api/openstack/v2/test_servers.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3a908ebd7fe9bae505be2d7691e731bdfc1e8430","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"def return_servers(context, *args, **kwargs):"},{"line_number":105,"context_line":"    servers_list \u003d []"},{"line_number":106,"context_line":"    for i in xrange(5):"},{"line_number":107,"context_line":"        server \u003d fakes.stub_instance(i, \u0027fake\u0027, \u0027fake\u0027, uuid\u003dget_fake_uuid(i))"},{"line_number":108,"context_line":"        servers_list.append(server)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FEI%3D","line":105,"updated":"2012-01-11 14:34:50.000000000","message":"Was there a reason for all these variable name changes?","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"},{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"8f793cd6da8b8daf8b1c03fbcb37eb3b019faa65","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"def return_servers(context, *args, **kwargs):"},{"line_number":105,"context_line":"    servers_list \u003d []"},{"line_number":106,"context_line":"    for i in xrange(5):"},{"line_number":107,"context_line":"        server \u003d fakes.stub_instance(i, \u0027fake\u0027, \u0027fake\u0027, uuid\u003dget_fake_uuid(i))"},{"line_number":108,"context_line":"        servers_list.append(server)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FDQ%3D","line":105,"in_reply_to":"AAAAD3%2F%2F%2FEI%3D","updated":"2012-01-11 15:14:05.000000000","message":"Up above servers is imported from a module. Although its all overriden in  local scope pyflakes was complaining about it.","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"}],"nova/tests/test_db_api.py":[{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"a590d712baf5b4787c801ac6b5a7103b395cd515","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                                             self.project_id)"},{"line_number":68,"context_line":"        self.assertEqual(instance[\u0027id\u0027], result[\u0027id\u0027])"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_instance_get_project_vpn_joins(self):"},{"line_number":71,"context_line":"        values \u003d {\u0027instance_type_id\u0027: FLAGS.default_instance_type,"},{"line_number":72,"context_line":"                  \u0027image_ref\u0027: FLAGS.vpn_image_id,"},{"line_number":73,"context_line":"                  \u0027project_id\u0027: self.project_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FPM%3D","side":"PARENT","line":70,"updated":"2012-01-10 22:45:38.000000000","message":"Not often we remove a test outright... any reason?","commit_id":"fa43949c05ff4e5165baa2f0a0f1555e94bcf212"},{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"2e92dea9acddbf8fbc0fe7e712a7acf34318ede9","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                                             self.project_id)"},{"line_number":68,"context_line":"        self.assertEqual(instance[\u0027id\u0027], result[\u0027id\u0027])"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_instance_get_project_vpn_joins(self):"},{"line_number":71,"context_line":"        values \u003d {\u0027instance_type_id\u0027: FLAGS.default_instance_type,"},{"line_number":72,"context_line":"                  \u0027image_ref\u0027: FLAGS.vpn_image_id,"},{"line_number":73,"context_line":"                  \u0027project_id\u0027: self.project_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FO0%3D","side":"PARENT","line":70,"in_reply_to":"AAAAD3%2F%2F%2FPM%3D","updated":"2012-01-10 22:57:40.000000000","message":"its testing that instance_get_project_vpn has joins, but instance_get_project_vpn isn\u0027t used anywhere, so it was removed from the db api.","commit_id":"fa43949c05ff4e5165baa2f0a0f1555e94bcf212"}],"nova/virt/libvirt/firewall.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"2be9bfa56956cd3241e4b7a8727d11a7637b6f45","unresolved":false,"context_lines":[{"line_number":709,"context_line":"                    fw_rules +\u003d [\u0027 \u0027.join(args)]"},{"line_number":710,"context_line":"                else:"},{"line_number":711,"context_line":"                    if rule[\u0027grantee_group\u0027]:"},{"line_number":712,"context_line":"                        # NOTE(jkoelker) This needs to be ported up into"},{"line_number":713,"context_line":"                        #                the compute manager which already"},{"line_number":714,"context_line":"                        #                has access to a nw_api handle,"},{"line_number":715,"context_line":"                        #                and should be the only one making"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FII%3D","line":712,"updated":"2012-01-11 05:42:49.000000000","message":"FIXME vs NOTE plz.","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"},{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"8f793cd6da8b8daf8b1c03fbcb37eb3b019faa65","unresolved":false,"context_lines":[{"line_number":709,"context_line":"                    fw_rules +\u003d [\u0027 \u0027.join(args)]"},{"line_number":710,"context_line":"                else:"},{"line_number":711,"context_line":"                    if rule[\u0027grantee_group\u0027]:"},{"line_number":712,"context_line":"                        # NOTE(jkoelker) This needs to be ported up into"},{"line_number":713,"context_line":"                        #                the compute manager which already"},{"line_number":714,"context_line":"                        #                has access to a nw_api handle,"},{"line_number":715,"context_line":"                        #                and should be the only one making"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAD3%2F%2F%2FDU%3D","line":712,"in_reply_to":"AAAAD3%2F%2F%2FII%3D","updated":"2012-01-11 15:14:05.000000000","message":"Done","commit_id":"1cb622ac0b8dd492cadcc266bca135d60c25dcfc"}]}
