)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e85f8a6ed4f3efc4626bef16572f251efc11c49b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Chang Bo Guo \u003cguochbo@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-10-18 02:24:55 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix operatin failure with NoopFirewallDriver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"when set \u0027firewall_driver \u003d neutron.agent.firewall.NoopFirewallDriver\u0027"},{"line_number":10,"context_line":"in file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATH%2F%2FPgY%3D","line":7,"updated":"2013-10-19 17:50:23.000000000","message":"operatin \u003d\u003e operation","commit_id":"4b8f285b944aed2d074ab7ea7ad17ddec9a6cc95"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e85f8a6ed4f3efc4626bef16572f251efc11c49b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"in file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini,"},{"line_number":11,"context_line":"neutron client will raise NotFound exception when list security_group."},{"line_number":12,"context_line":"This exception isn\u0027t caught ,will lead nova operation(list/show) failure."},{"line_number":13,"context_line":"This patch cathes the exception ,return empty security_group."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Partial-Bug: #1232965"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATH%2F%2FPgU%3D","line":13,"updated":"2013-10-19 17:50:23.000000000","message":"cathes \u003d\u003e catches\n\nexception ,return empty \u003d\u003e exception, and returns an empty","commit_id":"4b8f285b944aed2d074ab7ea7ad17ddec9a6cc95"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5037e4a09b9fa164d23990a661f635a3e6bac3bb","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix operation failure with NoopFirewallDriver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"when set \u0027firewall_driver \u003d neutron.agent.firewall.NoopFirewallDriver\u0027"},{"line_number":10,"context_line":"in file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini,"},{"line_number":11,"context_line":"neutron client will raise NotFound exception when list security_group."},{"line_number":12,"context_line":"This exception isn\u0027t caught, will lead nova list/show failure."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAATn%2F%2Fe4s%3D","line":9,"updated":"2013-11-05 01:08:09.000000000","message":"There is a lot of detail in the neutronclient patch https://review.openstack.org/#/c/48879/ which would probably be valuable in this commit message to explain why it\u0027s not something that\u0027s going to be fixed in the neutron client (or server) code and nova just has to deal with it.","commit_id":"7e21e542dc56847bb77c93783fec0147973a32c8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5037e4a09b9fa164d23990a661f635a3e6bac3bb","unresolved":false,"context_lines":[{"line_number":12,"context_line":"This exception isn\u0027t caught, will lead nova list/show failure."},{"line_number":13,"context_line":"This patch catches the exception, and return an empty security_group."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Partial-Bug: #1232965"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I0c5032040f40518eebcdd78ebc2cc67580e00443"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAATn%2F%2Fe44%3D","line":15,"updated":"2013-11-05 01:08:09.000000000","message":"The neutronclient patch https://review.openstack.org/#/c/48879/ was abandoned so this would no longer be a partial fix, it would be the only fix from what I can tell, so this should be Closes-Bug rather than Partial-Bug.","commit_id":"7e21e542dc56847bb77c93783fec0147973a32c8"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e85f8a6ed4f3efc4626bef16572f251efc11c49b","unresolved":false,"context_lines":[{"line_number":275,"context_line":"            try:"},{"line_number":276,"context_line":"                user_security_groups \u003d neutron.list_security_groups("},{"line_number":277,"context_line":"                    **search_opts).get(\u0027security_groups\u0027)"},{"line_number":278,"context_line":"            except neutron_client_exc.NeutronClientException as e:"},{"line_number":279,"context_line":"                user_security_groups \u003d []"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        for security_group in security_groups:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FPgQ%3D","line":278,"updated":"2013-10-19 17:50:23.000000000","message":"You do not need the \"as e\" - it is not used. \nIt may be worth while logging a message here","commit_id":"4b8f285b944aed2d074ab7ea7ad17ddec9a6cc95"}],"nova/network/security_group/neutron_driver.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e85f8a6ed4f3efc4626bef16572f251efc11c49b","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        try:"},{"line_number":289,"context_line":"            security_groups \u003d neutron.list_security_groups().get("},{"line_number":290,"context_line":"                              \u0027security_groups\u0027)"},{"line_number":291,"context_line":"        except n_exc.NeutronClientException as e:"},{"line_number":292,"context_line":"            security_groups \u003d []"},{"line_number":293,"context_line":"        security_group_lookup \u003d {}"},{"line_number":294,"context_line":"        instances_security_group_bindings \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FPgM%3D","line":291,"updated":"2013-10-19 17:50:23.000000000","message":"\"as e\" not needed.","commit_id":"4b8f285b944aed2d074ab7ea7ad17ddec9a6cc95"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e85f8a6ed4f3efc4626bef16572f251efc11c49b","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        try:"},{"line_number":327,"context_line":"            security_groups \u003d neutron.list_security_groups().get("},{"line_number":328,"context_line":"                              \u0027security_groups\u0027)"},{"line_number":329,"context_line":"        except n_exc.NeutronClientException as e:"},{"line_number":330,"context_line":"            security_groups \u003d []"},{"line_number":331,"context_line":"        security_group_lookup \u003d {}"},{"line_number":332,"context_line":"        for security_group in security_groups:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FPgI%3D","line":329,"updated":"2013-10-19 17:50:23.000000000","message":"ditto","commit_id":"4b8f285b944aed2d074ab7ea7ad17ddec9a6cc95"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5037e4a09b9fa164d23990a661f635a3e6bac3bb","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        try:"},{"line_number":289,"context_line":"            security_groups \u003d neutron.list_security_groups().get("},{"line_number":290,"context_line":"                              \u0027security_groups\u0027)"},{"line_number":291,"context_line":"        except n_exc.NeutronClientException:"},{"line_number":292,"context_line":"            LOG.warn(_(\"Cannot get security groups\"))"},{"line_number":293,"context_line":"            security_groups \u003d []"},{"line_number":294,"context_line":"        security_group_lookup \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fe5E%3D","line":291,"updated":"2013-11-05 01:08:09.000000000","message":"From the bug report, this should at least be scoped to check that the status code is 404 before ignoring the exception.","commit_id":"7e21e542dc56847bb77c93783fec0147973a32c8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5037e4a09b9fa164d23990a661f635a3e6bac3bb","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        try:"},{"line_number":328,"context_line":"            security_groups \u003d neutron.list_security_groups().get("},{"line_number":329,"context_line":"                              \u0027security_groups\u0027)"},{"line_number":330,"context_line":"        except n_exc.NeutronClientException:"},{"line_number":331,"context_line":"            msg \u003d _(\"Cannot get security groups for %s\") % instance_uuid"},{"line_number":332,"context_line":"            LOG.warn(msg)"},{"line_number":333,"context_line":"            security_groups \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fe48%3D","line":330,"updated":"2013-11-05 01:08:09.000000000","message":"This should at least be checking the status code for 404.","commit_id":"7e21e542dc56847bb77c93783fec0147973a32c8"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ce6ccc1d66bc7d4fd48768c4e2f09921aa933b10","unresolved":false,"context_lines":[{"line_number":353,"context_line":"    def get_security_groups(self, context):"},{"line_number":354,"context_line":"        neutron \u003d neutronv2.get_client(context)"},{"line_number":355,"context_line":"        security_group_enabled \u003d False"},{"line_number":356,"context_line":"        for ext in neutron.list_extensions()[\u0027extensions\u0027]:"},{"line_number":357,"context_line":"            if ext[\u0027name\u0027] \u003d\u003d \u0027security-group\u0027:"},{"line_number":358,"context_line":"                security_group_enabled \u003d True"},{"line_number":359,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B%2BMU%3D","line":356,"updated":"2013-11-18 01:02:44.000000000","message":"The result of list_extensions or whether security-group is enabled should be cached. For more detail, please see network/api/neutron.py.\n\nHow about making the logic to check security group is enabled a separate method? I think it is simpler and easier to cache the result.","commit_id":"33a122a89992efd39fb810058e427a02e7717c18"},{"author":{"_account_id":6722,"name":"ChangBo Guo(gcb)","email":"guochbo@cn.ibm.com","username":"guochbo"},"change_message_id":"e1f20a8badc42f0ad431720df30826d261154bfd","unresolved":false,"context_lines":[{"line_number":353,"context_line":"    def get_security_groups(self, context):"},{"line_number":354,"context_line":"        neutron \u003d neutronv2.get_client(context)"},{"line_number":355,"context_line":"        security_group_enabled \u003d False"},{"line_number":356,"context_line":"        for ext in neutron.list_extensions()[\u0027extensions\u0027]:"},{"line_number":357,"context_line":"            if ext[\u0027name\u0027] \u003d\u003d \u0027security-group\u0027:"},{"line_number":358,"context_line":"                security_group_enabled \u003d True"},{"line_number":359,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B9mY%3D","line":356,"in_reply_to":"AAAATn%2F%2B%2BMU%3D","updated":"2013-11-18 02:25:30.000000000","message":"Yes, we need a new method.  Not sure security_group of nava need this method.  Is the new method only for neutron security_group ?","commit_id":"33a122a89992efd39fb810058e427a02e7717c18"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6564345b118b72155371062b9d6e6727e33092ab","unresolved":false,"context_lines":[{"line_number":353,"context_line":"    def get_security_groups(self, context):"},{"line_number":354,"context_line":"        neutron \u003d neutronv2.get_client(context)"},{"line_number":355,"context_line":"        security_group_enabled \u003d False"},{"line_number":356,"context_line":"        for ext in neutron.list_extensions()[\u0027extensions\u0027]:"},{"line_number":357,"context_line":"            if ext[\u0027name\u0027] \u003d\u003d \u0027security-group\u0027:"},{"line_number":358,"context_line":"                security_group_enabled \u003d True"},{"line_number":359,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B9jU%3D","line":356,"in_reply_to":"AAAATn%2F%2B9k0%3D","updated":"2013-11-18 02:44:23.000000000","message":"The method is only for neutron_driver. What in my mind is https://github.com/openstack/nova/blob/master/nova/network/neutronv2/api.py#L369 . Obviously it is not sufficient to call list_extensions for each security group related API call.","commit_id":"33a122a89992efd39fb810058e427a02e7717c18"},{"author":{"_account_id":6722,"name":"ChangBo Guo(gcb)","email":"guochbo@cn.ibm.com","username":"guochbo"},"change_message_id":"73c01c604dad0e9a0f44fa139d17d2d58b9ed4df","unresolved":false,"context_lines":[{"line_number":353,"context_line":"    def get_security_groups(self, context):"},{"line_number":354,"context_line":"        neutron \u003d neutronv2.get_client(context)"},{"line_number":355,"context_line":"        security_group_enabled \u003d False"},{"line_number":356,"context_line":"        for ext in neutron.list_extensions()[\u0027extensions\u0027]:"},{"line_number":357,"context_line":"            if ext[\u0027name\u0027] \u003d\u003d \u0027security-group\u0027:"},{"line_number":358,"context_line":"                security_group_enabled \u003d True"},{"line_number":359,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B9k0%3D","line":356,"in_reply_to":"AAAATn%2F%2B9mY%3D","updated":"2013-11-18 02:37:33.000000000","message":"this method is only for neturon_driver  :)","commit_id":"33a122a89992efd39fb810058e427a02e7717c18"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ce6ccc1d66bc7d4fd48768c4e2f09921aa933b10","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        neutron \u003d neutronv2.get_client(context)"},{"line_number":355,"context_line":"        security_group_enabled \u003d False"},{"line_number":356,"context_line":"        for ext in neutron.list_extensions()[\u0027extensions\u0027]:"},{"line_number":357,"context_line":"            if ext[\u0027name\u0027] \u003d\u003d \u0027security-group\u0027:"},{"line_number":358,"context_line":"                security_group_enabled \u003d True"},{"line_number":359,"context_line":"                break"},{"line_number":360,"context_line":"        if not security_group_enabled:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B%2BMQ%3D","line":357,"updated":"2013-11-18 01:02:44.000000000","message":"Pleaes use \"alias\" instead of \"name\". \"name\" is human-friendly description. \"alias\" is used to identify an extension.","commit_id":"33a122a89992efd39fb810058e427a02e7717c18"},{"author":{"_account_id":6722,"name":"ChangBo Guo(gcb)","email":"guochbo@cn.ibm.com","username":"guochbo"},"change_message_id":"e1f20a8badc42f0ad431720df30826d261154bfd","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        neutron \u003d neutronv2.get_client(context)"},{"line_number":355,"context_line":"        security_group_enabled \u003d False"},{"line_number":356,"context_line":"        for ext in neutron.list_extensions()[\u0027extensions\u0027]:"},{"line_number":357,"context_line":"            if ext[\u0027name\u0027] \u003d\u003d \u0027security-group\u0027:"},{"line_number":358,"context_line":"                security_group_enabled \u003d True"},{"line_number":359,"context_line":"                break"},{"line_number":360,"context_line":"        if not security_group_enabled:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B9mc%3D","line":357,"in_reply_to":"AAAATn%2F%2B%2BMQ%3D","updated":"2013-11-18 02:25:30.000000000","message":"thanks. will update.","commit_id":"33a122a89992efd39fb810058e427a02e7717c18"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ce6ccc1d66bc7d4fd48768c4e2f09921aa933b10","unresolved":false,"context_lines":[{"line_number":359,"context_line":"                break"},{"line_number":360,"context_line":"        if not security_group_enabled:"},{"line_number":361,"context_line":"            LOG.warn(_(\"security groups is not enabled\"))"},{"line_number":362,"context_line":"            security_groups \u003d []"},{"line_number":363,"context_line":"        else:"},{"line_number":364,"context_line":"            security_groups \u003d neutron.list_security_groups().get("},{"line_number":365,"context_line":"                              \u0027security_groups\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B%2BMI%3D","line":362,"updated":"2013-11-18 01:02:44.000000000","message":"Isn\u0027t it an error? I am not sure security_group_driver neutron and without neutron security-group support is a valid configuration.","commit_id":"33a122a89992efd39fb810058e427a02e7717c18"},{"author":{"_account_id":6722,"name":"ChangBo Guo(gcb)","email":"guochbo@cn.ibm.com","username":"guochbo"},"change_message_id":"192f59a336fa8cb9afbbc16a69d6087d15b1ef90","unresolved":false,"context_lines":[{"line_number":359,"context_line":"                break"},{"line_number":360,"context_line":"        if not security_group_enabled:"},{"line_number":361,"context_line":"            LOG.warn(_(\"security groups is not enabled\"))"},{"line_number":362,"context_line":"            security_groups \u003d []"},{"line_number":363,"context_line":"        else:"},{"line_number":364,"context_line":"            security_groups \u003d neutron.list_security_groups().get("},{"line_number":365,"context_line":"                              \u0027security_groups\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B9Xw%3D","line":362,"in_reply_to":"AAAATn%2F%2B%2BMI%3D","updated":"2013-11-18 03:59:24.000000000","message":"Akihiro\n\nI think you are right ,  we need rais error.","commit_id":"33a122a89992efd39fb810058e427a02e7717c18"},{"author":{"_account_id":6722,"name":"ChangBo Guo(gcb)","email":"guochbo@cn.ibm.com","username":"guochbo"},"change_message_id":"e1f20a8badc42f0ad431720df30826d261154bfd","unresolved":false,"context_lines":[{"line_number":359,"context_line":"                break"},{"line_number":360,"context_line":"        if not security_group_enabled:"},{"line_number":361,"context_line":"            LOG.warn(_(\"security groups is not enabled\"))"},{"line_number":362,"context_line":"            security_groups \u003d []"},{"line_number":363,"context_line":"        else:"},{"line_number":364,"context_line":"            security_groups \u003d neutron.list_security_groups().get("},{"line_number":365,"context_line":"                              \u0027security_groups\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B9mM%3D","line":362,"in_reply_to":"AAAATn%2F%2B%2BMI%3D","updated":"2013-11-18 02:25:30.000000000","message":"I think security_group_enabled is False, that means no network access control for  VMs. but not sure :)","commit_id":"33a122a89992efd39fb810058e427a02e7717c18"}],"nova/tests/api/openstack/compute/contrib/test_neutron_security_groups.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ce6ccc1d66bc7d4fd48768c4e2f09921aa933b10","unresolved":false,"context_lines":[{"line_number":735,"context_line":"            raise n_exc.NeutronClientException(message\u003dmsg, status_code\u003d404)"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def list_extensions(self, **_params):"},{"line_number":738,"context_line":"        extensions \u003d [{\u0027name\u0027: \u0027security-group\u0027, \u0027links\u0027: []}]"},{"line_number":739,"context_line":"        return {\u0027extensions\u0027: extensions}"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"    def list_security_groups(self, **_params):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B%2BME%3D","line":738,"updated":"2013-11-18 01:02:44.000000000","message":"Please add \"alias\". We need to check security group is enabled based on alias rather than name.","commit_id":"33a122a89992efd39fb810058e427a02e7717c18"}],"nova/tests/network/security_group/test_neutron_driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5037e4a09b9fa164d23990a661f635a3e6bac3bb","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        sg_api \u003d neutron_driver.SecurityGroupAPI()"},{"line_number":95,"context_line":"        bindings \u003d sg_api.get_instances_security_groups_bindings(self.context)"},{"line_number":96,"context_line":"        self.assertEqual(bindings, {})"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_get_instance_security_groups_not_find(self):"},{"line_number":99,"context_line":"        message \u003d \"Can\u0027t find security_groups\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fe4g%3D","line":96,"updated":"2013-11-05 01:08:09.000000000","message":"Should be (expected, observed) args for assertEqual.","commit_id":"7e21e542dc56847bb77c93783fec0147973a32c8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5037e4a09b9fa164d23990a661f635a3e6bac3bb","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        sg_api \u003d neutron_driver.SecurityGroupAPI()"},{"line_number":108,"context_line":"        ret \u003d sg_api.get_instance_security_groups(self.context, instance_uuid)"},{"line_number":109,"context_line":"        self.assertEqual(ret, [])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fe4k%3D","line":109,"updated":"2013-11-05 01:08:09.000000000","message":"ditto","commit_id":"7e21e542dc56847bb77c93783fec0147973a32c8"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ce6ccc1d66bc7d4fd48768c4e2f09921aa933b10","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        self.assertEqual([], ret)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def test_get_security_group_enabled(self):"},{"line_number":108,"context_line":"        fake_security_group \u003d {\"description\": \"default\","},{"line_number":109,"context_line":"                                \"id\": \"85cc3048-abc3-43cc-89b3-377341426ac5\","},{"line_number":110,"context_line":"                                \"name\": \"default\","},{"line_number":111,"context_line":"                                \"security_group_rules\": []"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B%2BMA%3D","line":108,"updated":"2013-11-18 01:02:44.000000000","message":"I prefer to fake_security_group\"s\". It is used as a return value of list_security_groups and it is better to consider a case where multiple secgroups are returned.","commit_id":"33a122a89992efd39fb810058e427a02e7717c18"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ce6ccc1d66bc7d4fd48768c4e2f09921aa933b10","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                                \"name\": \"default\","},{"line_number":111,"context_line":"                                \"security_group_rules\": []"},{"line_number":112,"context_line":"                                }"},{"line_number":113,"context_line":"        fake_extension \u003d {\u0027updated\u0027: \u00272012-10-05T10:00:00-00:00\u0027,"},{"line_number":114,"context_line":"                           \u0027name\u0027: \u0027security-group\u0027,"},{"line_number":115,"context_line":"                           \u0027links\u0027: []"},{"line_number":116,"context_line":"                           }"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B%2BL8%3D","line":113,"updated":"2013-11-18 01:02:44.000000000","message":"Same as the above.","commit_id":"33a122a89992efd39fb810058e427a02e7717c18"}]}
