)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"25818019b9e078803c7688b38c140effc0ba9ee8","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support for the all_tenants search option when"},{"line_number":10,"context_line":"listing security group with neutron as the backend"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I465c946a006aca21b298f8226f55725a8c36c1f8"},{"line_number":13,"context_line":"closes-bug: #1284202"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5afe65bd_b70742c9","line":11,"updated":"2015-06-04 15:31:42.000000000","message":"You borrowed heavily from change https://review.openstack.org/#/c/81237/ - you should probably added a Co-authored-by line here:\n\nCo-authored-by: Xurong Yang \u003cyangxurong@huawei.com\u003e","commit_id":"bf76c3ed6e592bb1b0b0fdd272fd05f941788f92"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"69b3943e332b1ee77cadc53180e3cd93ac36a29b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"listing security group with neutron as the backend"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I465c946a006aca21b298f8226f55725a8c36c1f8"},{"line_number":13,"context_line":"Co-authored-by: yangxurong\u003cyangxurong@huawei.com\u003e"},{"line_number":14,"context_line":"closes-bug: #1284202"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3afb71cf_2820fc9a","line":13,"updated":"2015-06-05 18:16:27.000000000","message":"Make this:\n\nCo-authored-by: Xurong Yang \u003cyangxurong@huawei.com\u003e\n\nI think the format matters for parsers so credit is given in stackalytics.","commit_id":"7d546cb2ad131203d3de4d81f8a6a51d984ff978"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"0c29735b781893eae59a562657f70f405e5fb12a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"listing security group with neutron as the backend"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I465c946a006aca21b298f8226f55725a8c36c1f8"},{"line_number":13,"context_line":"Co-authored-by: yangxurong\u003cyangxurong@huawei.com\u003e"},{"line_number":14,"context_line":"closes-bug: #1284202"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3afb71cf_6eb5d5cb","line":13,"in_reply_to":"3afb71cf_2820fc9a","updated":"2015-06-06 01:22:13.000000000","message":"OK. I will fix this.","commit_id":"7d546cb2ad131203d3de4d81f8a6a51d984ff978"}],"nova/network/security_group/neutron_driver.py":[{"author":{"_account_id":6681,"name":"Brent Eagles","email":"beagles@redhat.com","username":"beagles"},"change_message_id":"6d8a815ca7e5674cd79f5e365e10537598655aaa","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        if project and not (not (names and ids) and"},{"line_number":161,"context_line":"                            context.is_admin and"},{"line_number":162,"context_line":"                            \u0027all_tenants\u0027 in search_opts):"},{"line_number":163,"context_line":"            params[\u0027tenant_id\u0027] \u003d project"},{"line_number":164,"context_line":"        try:"},{"line_number":165,"context_line":"            security_groups \u003d neutron.list_security_groups(**params).get("}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_4312f963","line":162,"updated":"2015-06-05 19:33:52.000000000","message":"I have to admit having to stare at this hard to figure it does what I think it wants to do. Is it that you don\u0027t want to add the tenant_id to the list filter if context is admin, all_tenants is in the search option, and either of the name or ids are None? Might be worthwhile restructuring or \"unrolling\" this a little. Maybe handle the admin context and all_tenants as a special case?\n\nAs it is, this doesn\u0027t seem consistent with the nova case, in which case either names or ids will cause the all_tenants search critiera to be ignored. Maybe you meant \u0027not (names or ids)\u0027 instead?","commit_id":"7d546cb2ad131203d3de4d81f8a6a51d984ff978"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"0c29735b781893eae59a562657f70f405e5fb12a","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        if project and not (not (names and ids) and"},{"line_number":161,"context_line":"                            context.is_admin and"},{"line_number":162,"context_line":"                            \u0027all_tenants\u0027 in search_opts):"},{"line_number":163,"context_line":"            params[\u0027tenant_id\u0027] \u003d project"},{"line_number":164,"context_line":"        try:"},{"line_number":165,"context_line":"            security_groups \u003d neutron.list_security_groups(**params).get("}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_69b02ff5","line":162,"in_reply_to":"3afb71cf_4312f963","updated":"2015-06-06 01:22:13.000000000","message":"it is really confused. I will simplify it.","commit_id":"7d546cb2ad131203d3de4d81f8a6a51d984ff978"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c14312e13986978c98fa0f1cee5bda490234fd51","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        list_all_tenants \u003d (context.is_admin"},{"line_number":161,"context_line":"                            and \u0027all_tenants\u0027 in search_opts"},{"line_number":162,"context_line":"                            and not names"},{"line_number":163,"context_line":"                            and not ids)"},{"line_number":164,"context_line":"        if project and not list_all_tenants:"},{"line_number":165,"context_line":"            params[\u0027tenant_id\u0027] \u003d project"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_d45ece78","line":162,"updated":"2015-07-10 21:01:46.000000000","message":"Couldn\u0027t this be shortened to just:\n\nand not any(names, ids, project)\n\n?\n\nBut then checking \"if project and not list_all_tenants\" is redundant.\n\nI guess I just don\u0027t like this somewhat ugly conditional to set a flag that\u0027s not really useful, you could just check:\n\nif context.is_admin and \u0027all_tenants\u0027 in search_opts:\n\nBefore setting anything in params, if it\u0027s not all_tenants then you have a block where you set name/id/project.","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b2478ea450e2b4bc23729b8e8813311e532eaf14","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        list_all_tenants \u003d (context.is_admin"},{"line_number":161,"context_line":"                            and \u0027all_tenants\u0027 in search_opts"},{"line_number":162,"context_line":"                            and not names"},{"line_number":163,"context_line":"                            and not ids)"},{"line_number":164,"context_line":"        if project and not list_all_tenants:"},{"line_number":165,"context_line":"            params[\u0027tenant_id\u0027] \u003d project"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_d5314f5b","line":162,"in_reply_to":"9a41bdd9_82c11c83","updated":"2015-07-15 17:59:32.000000000","message":"Yeah, I guess comment in the code about the precedence order would be nice, i.e.:\n\n1. name or id\n\n2. admin context and --all-tenants\n\n3. specific project\n\nAlso, so why do we give specific names/id priority over --all-tenants but give --all-tenants priority over a specific project?  Is project always provided by nova-api?\n\n--\n\nI also still prefer having:\n\nand not any([names, id]), but that\u0027s a nit.","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"d3fd44222dfc60904b3c38d0b1494245f78568c7","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        list_all_tenants \u003d (context.is_admin"},{"line_number":161,"context_line":"                            and \u0027all_tenants\u0027 in search_opts"},{"line_number":162,"context_line":"                            and not names"},{"line_number":163,"context_line":"                            and not ids)"},{"line_number":164,"context_line":"        if project and not list_all_tenants:"},{"line_number":165,"context_line":"            params[\u0027tenant_id\u0027] \u003d project"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_0343f213","line":162,"in_reply_to":"9a41bdd9_b92e058a","updated":"2015-07-16 02:34:39.000000000","message":"Actually, there is no priority for these criteria. \nThere only one case for list all tenants. \nwhen following conditions are both met, \nall the security group will be returned.\n    \n * name and id don\u0027t exist.\n * it is admin context and all_tenants exist in search_opts.\n * project is not specified.\n\nAnyway, i will add above comment for clarification.","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b3ed081f45e212e8f7510eb4b2ece5df30e4bb6f","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        list_all_tenants \u003d (context.is_admin"},{"line_number":161,"context_line":"                            and \u0027all_tenants\u0027 in search_opts"},{"line_number":162,"context_line":"                            and not names"},{"line_number":163,"context_line":"                            and not ids)"},{"line_number":164,"context_line":"        if project and not list_all_tenants:"},{"line_number":165,"context_line":"            params[\u0027tenant_id\u0027] \u003d project"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_b92e058a","line":162,"in_reply_to":"9a41bdd9_d5314f5b","updated":"2015-07-15 18:06:38.000000000","message":"Looks like project is always passed in (to answer my question before):\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/api/openstack/compute/contrib/security_groups.py#n178\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/api/openstack/compute/plugins/v3/security_groups.py#n163","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"44623436bac46ba2b138b63a68a5bbbbc32317dc","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        list_all_tenants \u003d (context.is_admin"},{"line_number":161,"context_line":"                            and \u0027all_tenants\u0027 in search_opts"},{"line_number":162,"context_line":"                            and not names"},{"line_number":163,"context_line":"                            and not ids)"},{"line_number":164,"context_line":"        if project and not list_all_tenants:"},{"line_number":165,"context_line":"            params[\u0027tenant_id\u0027] \u003d project"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_82c11c83","line":162,"in_reply_to":"ba3cc151_17daf817","updated":"2015-07-10 23:41:09.000000000","message":"So, are you OK with the current logical?","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fe1c84ac47e9cafe7af05fedef461d7c0c772c5f","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        list_all_tenants \u003d (context.is_admin"},{"line_number":161,"context_line":"                            and \u0027all_tenants\u0027 in search_opts"},{"line_number":162,"context_line":"                            and not names"},{"line_number":163,"context_line":"                            and not ids)"},{"line_number":164,"context_line":"        if project and not list_all_tenants:"},{"line_number":165,"context_line":"            params[\u0027tenant_id\u0027] \u003d project"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_17daf817","line":162,"in_reply_to":"ba3cc151_d45ece78","updated":"2015-07-10 21:17:01.000000000","message":"Oh I guess the point is you\u0027re trying to not filter by project if they are passing in --all-tenants, so if --all-tenants was passed and it\u0027s an admin context and project was passed in, then --all-tenants takes priority in:\n\nif project and not list_all_tenants\n\nAnd you\u0027d be listing all tenants if the context is an admin context because apparently that\u0027s what neutron(client) does.","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c14312e13986978c98fa0f1cee5bda490234fd51","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        if project and not list_all_tenants:"},{"line_number":165,"context_line":"            params[\u0027tenant_id\u0027] \u003d project"},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            security_groups \u003d neutron.list_security_groups(**params).get("},{"line_number":168,"context_line":"                \u0027security_groups\u0027)"},{"line_number":169,"context_line":"        except n_exc.NeutronClientException:"},{"line_number":170,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_344a9aad","line":167,"updated":"2015-07-10 21:01:46.000000000","message":"Neutron will list security groups for all_tenants if you don\u0027t pass anything in by default?  I don\u0027t see you telling neutron to list all_tenants anywhere in here and I don\u0027t see anything here about --all-tenants:\n\nhttp://docs.openstack.org/cli-reference/content/neutronclient_commands.html#neutronclient_subcommand_security-group-list\n\nSo I\u0027m guessing python-neutronclient will default to --all-tenants if you created the client object with an admin context?","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b2478ea450e2b4bc23729b8e8813311e532eaf14","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        if project and not list_all_tenants:"},{"line_number":165,"context_line":"            params[\u0027tenant_id\u0027] \u003d project"},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            security_groups \u003d neutron.list_security_groups(**params).get("},{"line_number":168,"context_line":"                \u0027security_groups\u0027)"},{"line_number":169,"context_line":"        except n_exc.NeutronClientException:"},{"line_number":170,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_f51fb3b4","line":167,"in_reply_to":"9a41bdd9_62cad851","updated":"2015-07-15 17:59:32.000000000","message":"This would be useful information in the commit message.","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"d3fd44222dfc60904b3c38d0b1494245f78568c7","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        if project and not list_all_tenants:"},{"line_number":165,"context_line":"            params[\u0027tenant_id\u0027] \u003d project"},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            security_groups \u003d neutron.list_security_groups(**params).get("},{"line_number":168,"context_line":"                \u0027security_groups\u0027)"},{"line_number":169,"context_line":"        except n_exc.NeutronClientException:"},{"line_number":170,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_864f1033","line":167,"in_reply_to":"9a41bdd9_f51fb3b4","updated":"2015-07-16 02:34:39.000000000","message":"Done","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"44623436bac46ba2b138b63a68a5bbbbc32317dc","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        if project and not list_all_tenants:"},{"line_number":165,"context_line":"            params[\u0027tenant_id\u0027] \u003d project"},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            security_groups \u003d neutron.list_security_groups(**params).get("},{"line_number":168,"context_line":"                \u0027security_groups\u0027)"},{"line_number":169,"context_line":"        except n_exc.NeutronClientException:"},{"line_number":170,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_62cad851","line":167,"in_reply_to":"ba3cc151_344a9aad","updated":"2015-07-10 23:41:09.000000000","message":"The neutron doesn\u0027t have `all-tenants` concept. All the security group will be returned if the project/tenant id is not passed( the parameter is just a DB filter). \n\nSo here the `params` dict doesn\u0027t have the `all-tenants` key.\n\nAnd there is nowhere that python-neutronclient set the `all-tenants` in admin context.","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"47689879d127721ad872f5663b414d50d39566de","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                            and not any([names, ids]))"},{"line_number":168,"context_line":"        # NOTE(jeffrey4l): The neutron doesn\u0027t have `all-tenants` concept."},{"line_number":169,"context_line":"        # All the security group will be returned if the project/tenant"},{"line_number":170,"context_line":"        # id is not passed."},{"line_number":171,"context_line":"        if project and not list_all_tenants:"},{"line_number":172,"context_line":"            params[\u0027tenant_id\u0027] \u003d project"},{"line_number":173,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_fb61e2d3","line":170,"updated":"2015-08-06 19:16:25.000000000","message":"...and the context is an admin context, right?","commit_id":"5da4a317086e6c9d6620d1bd686bc53923006904"},{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"4ed891ef06bf0f81a9d26e7d54ff2d923704914a","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                            and not any([names, ids]))"},{"line_number":168,"context_line":"        # NOTE(jeffrey4l): The neutron doesn\u0027t have `all-tenants` concept."},{"line_number":169,"context_line":"        # All the security group will be returned if the project/tenant"},{"line_number":170,"context_line":"        # id is not passed."},{"line_number":171,"context_line":"        if project and not list_all_tenants:"},{"line_number":172,"context_line":"            params[\u0027tenant_id\u0027] \u003d project"},{"line_number":173,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_31e1ab2d","line":170,"in_reply_to":"1a4dcd0f_fb61e2d3","updated":"2015-08-06 20:13:15.000000000","message":"Made explicit by the tests, so I\u0027d say yes","commit_id":"5da4a317086e6c9d6620d1bd686bc53923006904"}],"nova/tests/unit/network/security_group/test_neutron_driver.py":[{"author":{"_account_id":6681,"name":"Brent Eagles","email":"beagles@redhat.com","username":"beagles"},"change_message_id":"6d8a815ca7e5674cd79f5e365e10537598655aaa","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        sg_api \u003d neutron_driver.SecurityGroupAPI()"},{"line_number":96,"context_line":"        sg_api.list(self.context, project\u003dself.context.tenant,"},{"line_number":97,"context_line":"                    search_opts\u003dsearch_opts)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_get_with_name_duplicated(self):"},{"line_number":100,"context_line":"        sg_name \u003d \u0027web_server\u0027"},{"line_number":101,"context_line":"        expected_sg_id \u003d \u002785cc3048-abc3-43cc-89b3-377341426ac5\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_9e8de67d","line":98,"updated":"2015-06-05 19:33:52.000000000","message":"After looking at the \u0027if\u0027 statement in the code, I think a unit test that works that situation where project specified, admin is true, \u0027all_tenants\u0027 is specified and one of names and ids are specified and also one with both might be warranted. It *looks* like the code is meant to ignore all_tenants\u003d1 if both names and ids are specified, if so you might want to verify that.","commit_id":"7d546cb2ad131203d3de4d81f8a6a51d984ff978"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"01ef3627cd9eae39c040aff91e190f641c874cc4","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        admin_context \u003d context.RequestContext(\u0027user1\u0027, project_id, True)"},{"line_number":56,"context_line":"        self.moxed_client.list_security_groups().AndReturn("},{"line_number":57,"context_line":"            security_groups_list)"},{"line_number":58,"context_line":"        self.mox.ReplayAll()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        sg_api \u003d neutron_driver.SecurityGroupAPI()"},{"line_number":61,"context_line":"        sg_api.list(admin_context, project\u003dproject_id, search_opts\u003dsearch_opts)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_64f4b886","line":58,"updated":"2015-06-08 10:02:55.000000000","message":"please use mock instead of mox in the new test cases, it make the test cases more readable.","commit_id":"157388ed2166209f05b99f321e26838f7eb4d788"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"1b66ba6db314965dec9329bb07962fa0e10cce13","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        admin_context \u003d context.RequestContext(\u0027user1\u0027, project_id, True)"},{"line_number":56,"context_line":"        self.moxed_client.list_security_groups().AndReturn("},{"line_number":57,"context_line":"            security_groups_list)"},{"line_number":58,"context_line":"        self.mox.ReplayAll()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        sg_api \u003d neutron_driver.SecurityGroupAPI()"},{"line_number":61,"context_line":"        sg_api.list(admin_context, project\u003dproject_id, search_opts\u003dsearch_opts)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_2a8f9ecd","line":58,"in_reply_to":"3afb71cf_64f4b886","updated":"2015-06-08 15:04:25.000000000","message":"I found the related bp, even though it not started.\n\nBut i don\u0027t think this PS should finished that. Because it will cause other test function to be changed.( the setUp should be change and replace mox with mock).  I think this should be in a separate PS.","commit_id":"157388ed2166209f05b99f321e26838f7eb4d788"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"adf836a4aa1378d78c08082204cff7fb6c3138db","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        admin_context \u003d context.RequestContext(\u0027user1\u0027, project_id, True)"},{"line_number":56,"context_line":"        self.moxed_client.list_security_groups().AndReturn("},{"line_number":57,"context_line":"            security_groups_list)"},{"line_number":58,"context_line":"        self.mox.ReplayAll()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        sg_api \u003d neutron_driver.SecurityGroupAPI()"},{"line_number":61,"context_line":"        sg_api.list(admin_context, project\u003dproject_id, search_opts\u003dsearch_opts)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_057dfbe6","line":58,"in_reply_to":"3afb71cf_64f4b886","updated":"2015-06-08 12:35:14.000000000","message":"So the mox will be removed in the future?","commit_id":"157388ed2166209f05b99f321e26838f7eb4d788"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f5f0ca688ed6ac23d16537ff1d119af8812a85c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        sg_api \u003d neutron_driver.SecurityGroupAPI()"},{"line_number":50,"context_line":"        sg_api.list(self.context, project\u003dproject_id)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_list_with_all_tenants_and_admin_context(self):"},{"line_number":53,"context_line":"        project_id \u003d \u00270af70a4d22cf4652824ddc1f2435dd85\u0027"},{"line_number":54,"context_line":"        search_opts \u003d {\u0027all_tenants\u0027: 1}"},{"line_number":55,"context_line":"        security_groups_list \u003d {\u0027security_groups\u0027: []}"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_158ed7cf","line":52,"updated":"2015-07-15 18:04:37.000000000","message":"Tests that admin context + --all-tenants takes priority over a specific project.","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f5f0ca688ed6ac23d16537ff1d119af8812a85c","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"            mock_list_secgroup.assert_called_once_with()"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_list_without_all_tenants_and_admin_context(self):"},{"line_number":71,"context_line":"        project_id \u003d \u00270af70a4d22cf4652824ddc1f2435dd85\u0027"},{"line_number":72,"context_line":"        security_groups_list \u003d {\u0027security_groups\u0027: []}"},{"line_number":73,"context_line":"        admin_context \u003d context.RequestContext(\u0027user1\u0027, project_id, True)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_b5660b28","line":70,"updated":"2015-07-15 18:04:37.000000000","message":"Tests that the project is passed through when --all-tenants isn\u0027t requested.","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f5f0ca688ed6ac23d16537ff1d119af8812a85c","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"            mock_list_secgroup.assert_called_once_with(tenant_id\u003dproject_id)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_list_with_all_tenants_sec_name_and_admin_context(self):"},{"line_number":86,"context_line":"        project_id \u003d \u00270af70a4d22cf4652824ddc1f2435dd85\u0027"},{"line_number":87,"context_line":"        security_group_names \u003d [\u0027secgroup_ssh\u0027]"},{"line_number":88,"context_line":"        security_groups_list \u003d {\u0027security_groups\u0027: []}"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_555d3f45","line":85,"updated":"2015-07-15 18:04:37.000000000","message":"This test says \u0027with_all_tenants\u0027 but doesn\u0027t actually pass in search_opts with all_tenants\u003d1.","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"d3fd44222dfc60904b3c38d0b1494245f78568c7","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"            mock_list_secgroup.assert_called_once_with(tenant_id\u003dproject_id)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_list_with_all_tenants_sec_name_and_admin_context(self):"},{"line_number":86,"context_line":"        project_id \u003d \u00270af70a4d22cf4652824ddc1f2435dd85\u0027"},{"line_number":87,"context_line":"        security_group_names \u003d [\u0027secgroup_ssh\u0027]"},{"line_number":88,"context_line":"        security_groups_list \u003d {\u0027security_groups\u0027: []}"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_e655bcf9","line":85,"in_reply_to":"9a41bdd9_555d3f45","updated":"2015-07-16 02:34:39.000000000","message":"Done","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f5f0ca688ed6ac23d16537ff1d119af8812a85c","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                name\u003dsecurity_group_names,"},{"line_number":102,"context_line":"                tenant_id\u003dproject_id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_list_with_all_tenants_sec_name_ids_and_admin_context(self):"},{"line_number":105,"context_line":"        project_id \u003d \u00270af70a4d22cf4652824ddc1f2435dd85\u0027"},{"line_number":106,"context_line":"        security_group_names \u003d [\u0027secgroup_ssh\u0027]"},{"line_number":107,"context_line":"        security_group_ids \u003d [\u0027id1\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_d51e2f6f","line":104,"updated":"2015-07-15 18:04:37.000000000","message":"ditto, you\u0027re not passing in search_opts so this isn\u0027t all_tenants.","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"d3fd44222dfc60904b3c38d0b1494245f78568c7","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                name\u003dsecurity_group_names,"},{"line_number":102,"context_line":"                tenant_id\u003dproject_id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_list_with_all_tenants_sec_name_ids_and_admin_context(self):"},{"line_number":105,"context_line":"        project_id \u003d \u00270af70a4d22cf4652824ddc1f2435dd85\u0027"},{"line_number":106,"context_line":"        security_group_names \u003d [\u0027secgroup_ssh\u0027]"},{"line_number":107,"context_line":"        security_group_ids \u003d [\u0027id1\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_0659c034","line":104,"in_reply_to":"9a41bdd9_d51e2f6f","updated":"2015-07-16 02:34:39.000000000","message":"Done","commit_id":"2f639ce59bcb3ef36d1d7e0476aad8d2d8586b53"}]}
