)]}'
{"quantumclient/quantum/v2_0/securitygroup.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"c3fd6a15581d58eee2fbfefdab04ae0d2650ecf5","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class ShowSecurityGroup(ShowCommand):"},{"line_number":39,"context_line":"    \"\"\"Show information of a given floating ip.\"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    resource \u003d \u0027securitygroup\u0027"},{"line_number":42,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ShowSecurityGroup\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKY4%3D","line":39,"updated":"2012-10-10 04:09:46.000000000","message":"floating ip?","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class ShowSecurityGroup(ShowCommand):"},{"line_number":39,"context_line":"    \"\"\"Show information of a given floating ip.\"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    resource \u003d \u0027securitygroup\u0027"},{"line_number":42,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ShowSecurityGroup\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKX0%3D","line":39,"in_reply_to":"AAAALH%2F%2FKY4%3D","updated":"2012-10-10 04:28:00.000000000","message":"Done","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"c3fd6a15581d58eee2fbfefdab04ae0d2650ecf5","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    resource \u003d \u0027securitygroup\u0027"},{"line_number":42,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ShowSecurityGroup\u0027)"},{"line_number":43,"context_line":"    allow_names \u003d False"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class CreateSecurityGroup(CreateCommand):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKY8%3D","line":43,"updated":"2012-10-10 04:09:46.000000000","message":"we should allow name since we have name for group.","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    resource \u003d \u0027securitygroup\u0027"},{"line_number":42,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ShowSecurityGroup\u0027)"},{"line_number":43,"context_line":"    allow_names \u003d False"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class CreateSecurityGroup(CreateCommand):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKX4%3D","line":43,"in_reply_to":"AAAALH%2F%2FKY8%3D","updated":"2012-10-10 04:28:00.000000000","message":"Done","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"c3fd6a15581d58eee2fbfefdab04ae0d2650ecf5","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class CreateSecurityGroup(CreateCommand):"},{"line_number":47,"context_line":"    \"\"\"Create a floating ip for a given tenant.\"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    resource \u003d \u0027securitygroup\u0027"},{"line_number":50,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.CreateSecurityGroup\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKY0%3D","line":47,"updated":"2012-10-10 04:09:46.000000000","message":"floating ip?\nbad guy :)","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class CreateSecurityGroup(CreateCommand):"},{"line_number":47,"context_line":"    \"\"\"Create a floating ip for a given tenant.\"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    resource \u003d \u0027securitygroup\u0027"},{"line_number":50,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.CreateSecurityGroup\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKX8%3D","line":47,"in_reply_to":"AAAALH%2F%2FKY0%3D","updated":"2012-10-10 04:28:00.000000000","message":"hehe caught me. I coped that code :)","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"c3fd6a15581d58eee2fbfefdab04ae0d2650ecf5","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def args2body(self, parsed_args):"},{"line_number":61,"context_line":"        body \u003d {\u0027securitygroup\u0027: {"},{"line_number":62,"context_line":"            \u0027name\u0027: parsed_args.name,"},{"line_number":63,"context_line":"            \u0027description\u0027: parsed_args.description}}"},{"line_number":64,"context_line":"        if parsed_args.tenant_id:"},{"line_number":65,"context_line":"            body[\u0027securitygroup\u0027].update({\u0027tenant_id\u0027: parsed_args.tenant_id})"},{"line_number":66,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKZI%3D","line":63,"updated":"2012-10-10 04:09:46.000000000","message":"had better use \u0027if\u0027 to filter out the None description out of body dict.","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def args2body(self, parsed_args):"},{"line_number":61,"context_line":"        body \u003d {\u0027securitygroup\u0027: {"},{"line_number":62,"context_line":"            \u0027name\u0027: parsed_args.name,"},{"line_number":63,"context_line":"            \u0027description\u0027: parsed_args.description}}"},{"line_number":64,"context_line":"        if parsed_args.tenant_id:"},{"line_number":65,"context_line":"            body[\u0027securitygroup\u0027].update({\u0027tenant_id\u0027: parsed_args.tenant_id})"},{"line_number":66,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKYA%3D","line":63,"in_reply_to":"AAAALH%2F%2FKZI%3D","updated":"2012-10-10 04:28:00.000000000","message":"Done","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"c3fd6a15581d58eee2fbfefdab04ae0d2650ecf5","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.DeleteSecurityGroup\u0027)"},{"line_number":73,"context_line":"    resource \u003d \u0027securitygroup\u0027"},{"line_number":74,"context_line":"    allow_names \u003d False"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"class ListSecurityGroupRule(ListCommand):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKYw%3D","line":74,"updated":"2012-10-10 04:09:46.000000000","message":"we should allow name.","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.DeleteSecurityGroup\u0027)"},{"line_number":73,"context_line":"    resource \u003d \u0027securitygroup\u0027"},{"line_number":74,"context_line":"    allow_names \u003d False"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"class ListSecurityGroupRule(ListCommand):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKYE%3D","line":74,"in_reply_to":"AAAALH%2F%2FKYw%3D","updated":"2012-10-10 04:28:00.000000000","message":"Done","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"c3fd6a15581d58eee2fbfefdab04ae0d2650ecf5","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    _formatters \u003d {}"},{"line_number":83,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027parent_group_id\u0027, \u0027direction\u0027, \u0027ethertype\u0027,"},{"line_number":84,"context_line":"                    \u0027protocol\u0027, \u0027port_range_min\u0027, \u0027port_range_max\u0027,"},{"line_number":85,"context_line":"                    \u0027ip_prefix\u0027, \u0027group_id\u0027, \u0027external_id\u0027]"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"class ShowSecurityGroupRule(ShowCommand):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKZE%3D","line":85,"updated":"2012-10-10 04:09:46.000000000","message":"list_columns is used to shorten the output in a table format. If we include so many columns, we will mess up the output table. So make it short and include important columns.","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    _formatters \u003d {}"},{"line_number":83,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027parent_group_id\u0027, \u0027direction\u0027, \u0027ethertype\u0027,"},{"line_number":84,"context_line":"                    \u0027protocol\u0027, \u0027port_range_min\u0027, \u0027port_range_max\u0027,"},{"line_number":85,"context_line":"                    \u0027ip_prefix\u0027, \u0027group_id\u0027, \u0027external_id\u0027]"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"class ShowSecurityGroupRule(ShowCommand):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKYI%3D","line":85,"in_reply_to":"AAAALH%2F%2FKZE%3D","updated":"2012-10-10 04:28:00.000000000","message":"I removed external_id for now. I\u0027ll probably need to remove more.","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"c3fd6a15581d58eee2fbfefdab04ae0d2650ecf5","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"class ShowSecurityGroupRule(ShowCommand):"},{"line_number":89,"context_line":"    \"\"\"Show information of a given floating ip.\"\"\""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    resource \u003d \u0027securitygrouprule\u0027"},{"line_number":92,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ShowSecurityGroupRule\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKZA%3D","line":89,"updated":"2012-10-10 04:09:46.000000000","message":"floating ip?","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"class ShowSecurityGroupRule(ShowCommand):"},{"line_number":89,"context_line":"    \"\"\"Show information of a given floating ip.\"\"\""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    resource \u003d \u0027securitygrouprule\u0027"},{"line_number":92,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ShowSecurityGroupRule\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKYM%3D","line":89,"in_reply_to":"AAAALH%2F%2FKZA%3D","updated":"2012-10-10 04:28:00.000000000","message":"oops.","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"c3fd6a15581d58eee2fbfefdab04ae0d2650ecf5","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            \u0027--ip_prefix\u0027,"},{"line_number":123,"context_line":"            help\u003d\u0027cidr to match on\u0027)"},{"line_number":124,"context_line":"        parser.add_argument("},{"line_number":125,"context_line":"            \u0027--group_id\u0027,"},{"line_number":126,"context_line":"            help\u003d\u0027Group to apply to\u0027)"},{"line_number":127,"context_line":"        parser.add_argument("},{"line_number":128,"context_line":"            \u0027--external_id\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKYs%3D","line":125,"updated":"2012-10-10 04:09:46.000000000","message":"group_id is a source group way to add a group rule, please see http://docs.openstack.org/developer/nova/nova.concepts.html#concept-security-groups","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            \u0027--ip_prefix\u0027,"},{"line_number":123,"context_line":"            help\u003d\u0027cidr to match on\u0027)"},{"line_number":124,"context_line":"        parser.add_argument("},{"line_number":125,"context_line":"            \u0027--group_id\u0027,"},{"line_number":126,"context_line":"            help\u003d\u0027Group to apply to\u0027)"},{"line_number":127,"context_line":"        parser.add_argument("},{"line_number":128,"context_line":"            \u0027--external_id\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKYQ%3D","line":125,"in_reply_to":"AAAALH%2F%2FKYs%3D","updated":"2012-10-10 04:28:00.000000000","message":"Yup I understand, Bad help description.","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"c3fd6a15581d58eee2fbfefdab04ae0d2650ecf5","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def args2body(self, parsed_args):"},{"line_number":132,"context_line":"        body \u003d {\u0027securitygrouprule\u0027: {"},{"line_number":133,"context_line":"            \u0027parent_group_id\u0027: parsed_args.parent_group_id,"},{"line_number":134,"context_line":"            \u0027direction\u0027: parsed_args.direction,"},{"line_number":135,"context_line":"            \u0027ethertype\u0027: parsed_args.ethertype}}"},{"line_number":136,"context_line":"        if parsed_args.protocol:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKYo%3D","line":133,"updated":"2012-10-10 04:09:46.000000000","message":"we should add name or id here","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def args2body(self, parsed_args):"},{"line_number":132,"context_line":"        body \u003d {\u0027securitygrouprule\u0027: {"},{"line_number":133,"context_line":"            \u0027parent_group_id\u0027: parsed_args.parent_group_id,"},{"line_number":134,"context_line":"            \u0027direction\u0027: parsed_args.direction,"},{"line_number":135,"context_line":"            \u0027ethertype\u0027: parsed_args.ethertype}}"},{"line_number":136,"context_line":"        if parsed_args.protocol:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKXg%3D","line":133,"in_reply_to":"AAAALH%2F%2FKYU%3D","updated":"2012-10-10 04:43:34.000000000","message":"I mean we can allow user to give us parent group name or id. If it is a name, we have to look it up and convert it into id. See subnet\u0027s implementation.","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def args2body(self, parsed_args):"},{"line_number":132,"context_line":"        body \u003d {\u0027securitygrouprule\u0027: {"},{"line_number":133,"context_line":"            \u0027parent_group_id\u0027: parsed_args.parent_group_id,"},{"line_number":134,"context_line":"            \u0027direction\u0027: parsed_args.direction,"},{"line_number":135,"context_line":"            \u0027ethertype\u0027: parsed_args.ethertype}}"},{"line_number":136,"context_line":"        if parsed_args.protocol:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKYU%3D","line":133,"in_reply_to":"AAAALH%2F%2FKYo%3D","updated":"2012-10-10 04:28:00.000000000","message":"Why? I don\u0027t think we need a name with each security group rule. Why id?","commit_id":"fcb2a1b81bde224f8af269cfdde6bb41a4363937"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class ShowSecurityGroup(ShowCommand):"},{"line_number":39,"context_line":"    \"\"\"Show information of a given floating ip.\"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    resource \u003d \u0027securitygroup\u0027"},{"line_number":42,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ShowSecurityGroup\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FKWw%3D","line":39,"updated":"2012-10-10 04:51:42.000000000","message":"floating ip again.","commit_id":"bacd96d0bdd10de739e44413db4dab4c93643640"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class CreateSecurityGroup(CreateCommand):"},{"line_number":47,"context_line":"    \"\"\"Create a security group for a given tenant.\"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    resource \u003d \u0027securitygroup\u0027"},{"line_number":50,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.CreateSecurityGroup\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FKW0%3D","line":47,"updated":"2012-10-10 04:51:42.000000000","message":"I think to remove the \u0027a given tenant\u0027 will be better.","commit_id":"bacd96d0bdd10de739e44413db4dab4c93643640"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class ListSecurityGroupRule(ListCommand):"},{"line_number":80,"context_line":"    \"\"\"List security groups that belong to a given tenant.\"\"\""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    resource \u003d \u0027securitygrouprule\u0027"},{"line_number":83,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListSecurityGroupRule\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FKXE%3D","line":80,"updated":"2012-10-10 04:51:42.000000000","message":"security group or group rules?","commit_id":"bacd96d0bdd10de739e44413db4dab4c93643640"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":84,"context_line":"    _formatters \u003d {}"},{"line_number":85,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027parent_group_id\u0027, \u0027direction\u0027, \u0027ethertype\u0027,"},{"line_number":86,"context_line":"                    \u0027protocol\u0027, \u0027port_range_min\u0027, \u0027port_range_max\u0027,"},{"line_number":87,"context_line":"                    \u0027ip_prefix\u0027, \u0027group_id\u0027]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"class ShowSecurityGroupRule(ShowCommand):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FKXI%3D","line":87,"updated":"2012-10-10 04:51:42.000000000","message":"I think we can make it shorter.","commit_id":"bacd96d0bdd10de739e44413db4dab4c93643640"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"class ShowSecurityGroupRule(ShowCommand):"},{"line_number":91,"context_line":"    \"\"\"Show information of a given security group rule ip.\"\"\""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    resource \u003d \u0027securitygrouprule\u0027"},{"line_number":94,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ShowSecurityGroupRule\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FKXM%3D","line":91,"updated":"2012-10-10 04:51:42.000000000","message":"rule ip?","commit_id":"bacd96d0bdd10de739e44413db4dab4c93643640"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class CreateSecurityGroupRule(CreateCommand):"},{"line_number":99,"context_line":"    \"\"\"Create a security group rule for a given tenant.\"\"\""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    resource \u003d \u0027securitygrouprule\u0027"},{"line_number":102,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.CreateSecurityGroup\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FKW4%3D","line":99,"updated":"2012-10-10 04:51:42.000000000","message":"create a security group rule for a given security group?","commit_id":"bacd96d0bdd10de739e44413db4dab4c93643640"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":104,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":105,"context_line":"        parser.add_argument("},{"line_number":106,"context_line":"            \u0027parent_group_id\u0027, metavar\u003d\u0027parent_group_id\u0027,"},{"line_number":107,"context_line":"            help\u003d\u0027Security group rule show be applied to.\u0027)"},{"line_number":108,"context_line":"        parser.add_argument("},{"line_number":109,"context_line":"            \u0027--direction\u0027,"},{"line_number":110,"context_line":"            help\u003d\u0027direction of traffic: ingress/egress\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FKW8%3D","line":107,"updated":"2012-10-10 04:51:42.000000000","message":"bad help msg?","commit_id":"bacd96d0bdd10de739e44413db4dab4c93643640"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def args2body(self, parsed_args):"},{"line_number":134,"context_line":"        body \u003d {\u0027securitygrouprule\u0027: {"},{"line_number":135,"context_line":"            \u0027parent_group_id\u0027: parsed_args.parent_group_id,"},{"line_number":136,"context_line":"            \u0027direction\u0027: parsed_args.direction,"},{"line_number":137,"context_line":"            \u0027ethertype\u0027: parsed_args.ethertype}}"},{"line_number":138,"context_line":"        if parsed_args.protocol:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FKXA%3D","line":135,"updated":"2012-10-10 04:51:42.000000000","message":"to allow user to give us name will help lots. To see subnet\u0027s implementation.","commit_id":"bacd96d0bdd10de739e44413db4dab4c93643640"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"class DeleteSecurityGroupRule(DeleteCommand):"},{"line_number":163,"context_line":"    \"\"\"Delete a given security group.\"\"\""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.DeleteSecurityGroupRule\u0027)"},{"line_number":166,"context_line":"    resource \u003d \u0027securitygrouprule\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FKXU%3D","line":163,"updated":"2012-10-10 04:51:42.000000000","message":"group or rule?","commit_id":"bacd96d0bdd10de739e44413db4dab4c93643640"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class ListSecurityGroupRule(ListCommand):"},{"line_number":80,"context_line":"    \"\"\"List security group rules that belong to securitygroup.\"\"\""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    resource \u003d \u0027securitygrouprule\u0027"},{"line_number":83,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListSecurityGroupRule\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FJj0%3D","line":80,"updated":"2012-10-11 04:02:50.000000000","message":"I think we can list all security rules for a given tenants in this command. So we can remove \u0027that belong to securitygroup\u0027, make sense?","commit_id":"3f48633e30d23e0218684951641472cd6cb7e6f2"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":21,"context_line":"from quantumclient.quantum.v2_0 import CreateCommand"},{"line_number":22,"context_line":"from quantumclient.quantum.v2_0 import DeleteCommand"},{"line_number":23,"context_line":"from quantumclient.quantum.v2_0 import ListCommand"},{"line_number":24,"context_line":"from quantumclient.quantum.v2_0 import ShowCommand"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class ListSecurityGroup(ListCommand):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4JQ%3D","line":24,"updated":"2012-10-31 06:12:19.000000000","message":"Although we have imported the explicit class name in other places, can we use the module level import here?","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from quantumclient.quantum.v2_0 import CreateCommand"},{"line_number":22,"context_line":"from quantumclient.quantum.v2_0 import DeleteCommand"},{"line_number":23,"context_line":"from quantumclient.quantum.v2_0 import ListCommand"},{"line_number":24,"context_line":"from quantumclient.quantum.v2_0 import ShowCommand"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class ListSecurityGroup(ListCommand):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4Go%3D","line":24,"in_reply_to":"AAAALn%2F%2F4JQ%3D","updated":"2012-10-31 07:18:09.000000000","message":"Done","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":81,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListSecurityGroupRule\u0027)"},{"line_number":82,"context_line":"    _formatters \u003d {}"},{"line_number":83,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027security_group_id\u0027, \u0027direction\u0027, \u0027protocol\u0027,"},{"line_number":84,"context_line":"                    \u0027source_ip_prefix\u0027, \u0027source_group_id\u0027]"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class ShowSecurityGroupRule(ShowCommand):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4JE%3D","line":84,"updated":"2012-10-31 06:12:19.000000000","message":"It seems we include all of the fields here. Are u sure it is ok to display in a row?","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListSecurityGroupRule\u0027)"},{"line_number":82,"context_line":"    _formatters \u003d {}"},{"line_number":83,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027security_group_id\u0027, \u0027direction\u0027, \u0027protocol\u0027,"},{"line_number":84,"context_line":"                    \u0027source_ip_prefix\u0027, \u0027source_group_id\u0027]"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class ShowSecurityGroupRule(ShowCommand):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4Gk%3D","line":84,"in_reply_to":"AAAALn%2F%2F4JE%3D","updated":"2012-10-31 07:18:09.000000000","message":"We aren\u0027t listing all the fields here. I removed port_range_min/max, and I think a few others.","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":96,"context_line":"    \"\"\"Create a security group rule.\"\"\""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    resource \u003d \u0027security_group_rule\u0027"},{"line_number":99,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.CreateSecurityGroup\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":102,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4JI%3D","line":99,"updated":"2012-10-31 06:12:19.000000000","message":".CreateSecurityGroup -\u003e .CreateSecurityGroupRule?","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    \"\"\"Create a security group rule.\"\"\""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    resource \u003d \u0027security_group_rule\u0027"},{"line_number":99,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.CreateSecurityGroup\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":102,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4Gg%3D","line":99,"in_reply_to":"AAAALn%2F%2F4JI%3D","updated":"2012-10-31 07:18:09.000000000","message":"Done","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":129,"context_line":"            self.get_client(), \u0027security_group\u0027, parsed_args.security_group_id)"},{"line_number":130,"context_line":"        body \u003d {\u0027security_group_rule\u0027: {"},{"line_number":131,"context_line":"            \u0027security_group_id\u0027: _security_group_id,"},{"line_number":132,"context_line":"            \u0027direction\u0027: parsed_args.direction,"},{"line_number":133,"context_line":"            \u0027ethertype\u0027: parsed_args.ethertype}}"},{"line_number":134,"context_line":"        if parsed_args.protocol:"},{"line_number":135,"context_line":"            body[\u0027security_group_rule\u0027].update("}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4KY%3D","line":132,"updated":"2012-10-31 06:12:19.000000000","message":"Do we have default direction?","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            self.get_client(), \u0027security_group\u0027, parsed_args.security_group_id)"},{"line_number":130,"context_line":"        body \u003d {\u0027security_group_rule\u0027: {"},{"line_number":131,"context_line":"            \u0027security_group_id\u0027: _security_group_id,"},{"line_number":132,"context_line":"            \u0027direction\u0027: parsed_args.direction,"},{"line_number":133,"context_line":"            \u0027ethertype\u0027: parsed_args.ethertype}}"},{"line_number":134,"context_line":"        if parsed_args.protocol:"},{"line_number":135,"context_line":"            body[\u0027security_group_rule\u0027].update("}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4GY%3D","line":132,"in_reply_to":"AAAALn%2F%2F4KY%3D","updated":"2012-10-31 07:18:09.000000000","message":"Good idea, made the default ingress","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":130,"context_line":"        body \u003d {\u0027security_group_rule\u0027: {"},{"line_number":131,"context_line":"            \u0027security_group_id\u0027: _security_group_id,"},{"line_number":132,"context_line":"            \u0027direction\u0027: parsed_args.direction,"},{"line_number":133,"context_line":"            \u0027ethertype\u0027: parsed_args.ethertype}}"},{"line_number":134,"context_line":"        if parsed_args.protocol:"},{"line_number":135,"context_line":"            body[\u0027security_group_rule\u0027].update("},{"line_number":136,"context_line":"                {\u0027protocol\u0027: parsed_args.protocol})"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4KU%3D","line":133,"updated":"2012-10-31 06:12:19.000000000","message":"Do we have default ethertype?","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        body \u003d {\u0027security_group_rule\u0027: {"},{"line_number":131,"context_line":"            \u0027security_group_id\u0027: _security_group_id,"},{"line_number":132,"context_line":"            \u0027direction\u0027: parsed_args.direction,"},{"line_number":133,"context_line":"            \u0027ethertype\u0027: parsed_args.ethertype}}"},{"line_number":134,"context_line":"        if parsed_args.protocol:"},{"line_number":135,"context_line":"            body[\u0027security_group_rule\u0027].update("},{"line_number":136,"context_line":"                {\u0027protocol\u0027: parsed_args.protocol})"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4GQ%3D","line":133,"in_reply_to":"AAAALn%2F%2F4KU%3D","updated":"2012-10-31 07:18:09.000000000","message":"Good idea made default ipv4 same as how subnets is.","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"}],"quantumclient/tests/unit/test_cli20_securitygroup.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":27,"context_line":"from quantumclient.quantum.v2_0.securitygroup import CreateSecurityGroupRule"},{"line_number":28,"context_line":"from quantumclient.quantum.v2_0.securitygroup import DeleteSecurityGroupRule"},{"line_number":29,"context_line":"from quantumclient.tests.unit.test_cli20 import CLITestV20Base"},{"line_number":30,"context_line":"from quantumclient.tests.unit.test_cli20 import MyApp"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class CLITestV20SecurityGroups(CLITestV20Base):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4Is%3D","line":30,"updated":"2012-10-31 06:12:19.000000000","message":"can we just import module?","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from quantumclient.quantum.v2_0.securitygroup import CreateSecurityGroupRule"},{"line_number":28,"context_line":"from quantumclient.quantum.v2_0.securitygroup import DeleteSecurityGroupRule"},{"line_number":29,"context_line":"from quantumclient.tests.unit.test_cli20 import CLITestV20Base"},{"line_number":30,"context_line":"from quantumclient.tests.unit.test_cli20 import MyApp"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class CLITestV20SecurityGroups(CLITestV20Base):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4GI%3D","line":30,"in_reply_to":"AAAALn%2F%2F4Is%3D","updated":"2012-10-31 07:18:09.000000000","message":"Done","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":53,"context_line":"        args \u003d [\u0027--tenant_id\u0027, \u0027tenant_id\u0027, \u0027--description\u0027, description, name]"},{"line_number":54,"context_line":"        position_names \u003d [\u0027name\u0027, \u0027description\u0027]"},{"line_number":55,"context_line":"        position_values \u003d [name, description]"},{"line_number":56,"context_line":"        _str \u003d self._test_create_resource(resource, cmd, name, myid, args,"},{"line_number":57,"context_line":"                                          position_names, position_values,"},{"line_number":58,"context_line":"                                          tenant_id\u003d\u0027tenant_id\u0027)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4I0%3D","line":56,"updated":"2012-10-31 06:12:19.000000000","message":"no need to define a _str","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        args \u003d [\u0027--tenant_id\u0027, \u0027tenant_id\u0027, \u0027--description\u0027, description, name]"},{"line_number":54,"context_line":"        position_names \u003d [\u0027name\u0027, \u0027description\u0027]"},{"line_number":55,"context_line":"        position_values \u003d [name, description]"},{"line_number":56,"context_line":"        _str \u003d self._test_create_resource(resource, cmd, name, myid, args,"},{"line_number":57,"context_line":"                                          position_names, position_values,"},{"line_number":58,"context_line":"                                          tenant_id\u003d\u0027tenant_id\u0027)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4GE%3D","line":56,"in_reply_to":"AAAALn%2F%2F4I0%3D","updated":"2012-10-31 07:18:09.000000000","message":"Done","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":67,"context_line":"        args \u003d [name,  \u0027--description\u0027, description]"},{"line_number":68,"context_line":"        position_names \u003d [\u0027name\u0027, \u0027description\u0027]"},{"line_number":69,"context_line":"        position_values \u003d [name, description]"},{"line_number":70,"context_line":"        _str \u003d self._test_create_resource(resource, cmd, name, myid, args,"},{"line_number":71,"context_line":"                                          position_names, position_values)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def test_list_security_groups(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4I4%3D","line":70,"updated":"2012-10-31 06:12:19.000000000","message":"no need to define _str","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        args \u003d [name,  \u0027--description\u0027, description]"},{"line_number":68,"context_line":"        position_names \u003d [\u0027name\u0027, \u0027description\u0027]"},{"line_number":69,"context_line":"        position_values \u003d [name, description]"},{"line_number":70,"context_line":"        _str \u003d self._test_create_resource(resource, cmd, name, myid, args,"},{"line_number":71,"context_line":"                                          position_names, position_values)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def test_list_security_groups(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALn%2F%2F4GA%3D","line":70,"in_reply_to":"AAAALn%2F%2F4I4%3D","updated":"2012-10-31 07:18:09.000000000","message":"Done","commit_id":"2e35d4b711edc456e24e2af89ebd9ff679b39f45"}],"quantumclient/v2_0/client.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":431,"context_line":"    @APIParamsCall"},{"line_number":432,"context_line":"    def show_security_group(self, security_group, **_params):"},{"line_number":433,"context_line":"        \"\"\""},{"line_number":434,"context_line":"        Fetches information of a certain floatingip"},{"line_number":435,"context_line":"        \"\"\""},{"line_number":436,"context_line":"        return self.get(self.security_group_path % (security_group),"},{"line_number":437,"context_line":"                        params\u003d_params)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALn%2F%2F6XU%3D","line":434,"updated":"2012-10-29 06:25:21.000000000","message":"floatingip -\u003e security group","commit_id":"10d1b640c6e413a7c8ef1fe9a8de6a3b6a8ad94d"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"453b0551f99ef832dfc23faafe6835ecc5aeec4e","unresolved":false,"context_lines":[{"line_number":431,"context_line":"    @APIParamsCall"},{"line_number":432,"context_line":"    def show_security_group(self, security_group, **_params):"},{"line_number":433,"context_line":"        \"\"\""},{"line_number":434,"context_line":"        Fetches information of a certain floatingip"},{"line_number":435,"context_line":"        \"\"\""},{"line_number":436,"context_line":"        return self.get(self.security_group_path % (security_group),"},{"line_number":437,"context_line":"                        params\u003d_params)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALn%2F%2F5i0%3D","line":434,"in_reply_to":"AAAALn%2F%2F6XU%3D","updated":"2012-10-29 22:21:31.000000000","message":"Done","commit_id":"10d1b640c6e413a7c8ef1fe9a8de6a3b6a8ad94d"}]}
