)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"613075ac3b11eb5aa1df7e6004b8fceea6a21d55","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"testcases (create, update, delete, show, and list) for IPSec policies."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"part of blueprint: vpnaas-api-test-cases"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I39f5f55ae8ef23ebdef29cefcde7d6e2c4f2640c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"5adbc538_81e53eaa","line":11,"updated":"2014-05-26 17:53:26.000000000","message":"Please, use\n\n    Partially implements: blueprint vpnaas-api-test-cases\n\ninstead of\n\n    \tpart of blueprint: vpnaas-api-test-cases\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"c8de1deb25a026b7abc3cdd3045963393377422a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"testcases (create, update, delete, show, and list) for IPSec policies."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"part of blueprint: vpnaas-api-test-cases"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I39f5f55ae8ef23ebdef29cefcde7d6e2c4f2640c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"1ae5cdf2_0b7d9bb1","line":11,"in_reply_to":"5adbc538_81e53eaa","updated":"2014-06-02 10:21:11.000000000","message":"Done","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"}],"tempest/api/network/base.py":[{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"5250b68016743a858983baafeccd8354f8d1c5b9","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    @classmethod"},{"line_number":72,"context_line":"    def tearDownClass(cls):"},{"line_number":73,"context_line":"        has_exception \u003d False"},{"line_number":74,"context_line":"        for ipsecpolicy in cls.ipsecpolicies:"},{"line_number":75,"context_line":"            try:"},{"line_number":76,"context_line":"                cls.client.delete_ipsec_policy(ipsecpolicy[\u0027id\u0027])"},{"line_number":77,"context_line":"            except Exception as exc:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FvSs%3D","line":74,"updated":"2013-10-29 17:19:34.000000000","message":"This patch needs to be rebased and the \"try\" removed.","commit_id":"01bd36255c3b5ce0cac765ceae17a420bfcf5e9a"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"25dd495fbde1083f14dda97929cc3b76795b3db9","unresolved":false,"context_lines":[{"line_number":336,"context_line":"    @classmethod"},{"line_number":337,"context_line":"    def create_ipsecpolicy(cls, name):"},{"line_number":338,"context_line":"        \"\"\"Wrapper utility that returns a test ipsec policy.\"\"\""},{"line_number":339,"context_line":"        resp, body \u003d cls.client.create_ipsecpolicy(name)"},{"line_number":340,"context_line":"        ipsecpolicy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":341,"context_line":"        cls.ipsecpolicies.append(ipsecpolicy)"},{"line_number":342,"context_line":"        return ipsecpolicy"}],"source_content_type":"text/x-python","patch_set":21,"id":"bad4c104_2ce4783a","line":339,"updated":"2014-04-29 13:45:04.000000000","message":"unused variable \"resp\"","commit_id":"a03a5a3f6c94ef7a74227bce090c112c830b2535"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"14e9e3e01b5cdbe404694007ae7f3812a7b9b0df","unresolved":false,"context_lines":[{"line_number":336,"context_line":"    @classmethod"},{"line_number":337,"context_line":"    def create_ipsecpolicy(cls, name):"},{"line_number":338,"context_line":"        \"\"\"Wrapper utility that returns a test ipsec policy.\"\"\""},{"line_number":339,"context_line":"        resp, body \u003d cls.client.create_ipsecpolicy(name)"},{"line_number":340,"context_line":"        ipsecpolicy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":341,"context_line":"        cls.ipsecpolicies.append(ipsecpolicy)"},{"line_number":342,"context_line":"        return ipsecpolicy"}],"source_content_type":"text/x-python","patch_set":21,"id":"9ad9bd40_7926476a","line":339,"in_reply_to":"bad4c104_2ce4783a","updated":"2014-04-30 04:29:09.000000000","message":"Done","commit_id":"a03a5a3f6c94ef7a74227bce090c112c830b2535"}],"tempest/api/network/test_vpnaas_extensions.py":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"254c3a0b6d3ba028ad3122efcfc44b6443917fae","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    def _delete_ipsec_policy(self, ipsec_policy_id):"},{"line_number":75,"context_line":"        # Deletes a ipsec policy and verifies if it is deleted or not"},{"line_number":76,"context_line":"        ipsec_list \u003d list()"},{"line_number":77,"context_line":"        resp, all_ipsec \u003d self.client.list_ipsecpolicies()"},{"line_number":78,"context_line":"        for ipsec in all_ipsec[\u0027ipsecpolicies\u0027]:"},{"line_number":79,"context_line":"            ipsec_list.append(ipsec[\u0027id\u0027])"},{"line_number":80,"context_line":"        if ipsec_policy_id in ipsec_list:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAXH%2F%2FD4Q%3D","line":77,"updated":"2014-04-24 09:56:28.000000000","message":"Unused \u0027resp\u0027  should be changed with \u0027_\u0027","commit_id":"73a7b290bdffa92ef1afa5f4354b79de2716a322"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"254c3a0b6d3ba028ad3122efcfc44b6443917fae","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        ipsec_list \u003d list()"},{"line_number":77,"context_line":"        resp, all_ipsec \u003d self.client.list_ipsecpolicies()"},{"line_number":78,"context_line":"        for ipsec in all_ipsec[\u0027ipsecpolicies\u0027]:"},{"line_number":79,"context_line":"            ipsec_list.append(ipsec[\u0027id\u0027])"},{"line_number":80,"context_line":"        if ipsec_policy_id in ipsec_list:"},{"line_number":81,"context_line":"            resp, _ \u003d self.client.delete_ipsecpolicy(ipsec_policy_id)"},{"line_number":82,"context_line":"            self.assertEqual(204, resp.status)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAXH%2F%2FD5Y%3D","line":79,"updated":"2014-04-24 09:56:28.000000000","message":"This three lines could be split in one\n     ipsec_list \u003d [ipsec[\u0027id\u0027] for ipsec in all_ipsec[\u0027ipsecpolicies\u0027]]","commit_id":"73a7b290bdffa92ef1afa5f4354b79de2716a322"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"254c3a0b6d3ba028ad3122efcfc44b6443917fae","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            resp, _ \u003d self.client.delete_ipsecpolicy(ipsec_policy_id)"},{"line_number":82,"context_line":"            self.assertEqual(204, resp.status)"},{"line_number":83,"context_line":"            # Asserting that the policy is not found in list after deletion"},{"line_number":84,"context_line":"            resp, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":85,"context_line":"            ipsec_id_list \u003d list()"},{"line_number":86,"context_line":"            for i in ipsecpolicies[\u0027ipsecpolicies\u0027]:"},{"line_number":87,"context_line":"                ipsec_id_list.append(i[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAXH%2F%2FD1o%3D","line":84,"updated":"2014-04-24 09:56:28.000000000","message":"Unused \u0027resp\u0027 should be changed with \u0027_\u0027","commit_id":"73a7b290bdffa92ef1afa5f4354b79de2716a322"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"254c3a0b6d3ba028ad3122efcfc44b6443917fae","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            self.assertEqual(204, resp.status)"},{"line_number":83,"context_line":"            # Asserting that the policy is not found in list after deletion"},{"line_number":84,"context_line":"            resp, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":85,"context_line":"            ipsec_id_list \u003d list()"},{"line_number":86,"context_line":"            for i in ipsecpolicies[\u0027ipsecpolicies\u0027]:"},{"line_number":87,"context_line":"                ipsec_id_list.append(i[\u0027id\u0027])"},{"line_number":88,"context_line":"            self.assertNotIn(ipsec_policy_id, ipsec_id_list)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAXH%2F%2FD4A%3D","line":85,"updated":"2014-04-24 09:56:28.000000000","message":"The same as above","commit_id":"73a7b290bdffa92ef1afa5f4354b79de2716a322"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"254c3a0b6d3ba028ad3122efcfc44b6443917fae","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                                                    **new_ipsec)"},{"line_number":225,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":226,"context_line":"        updated_ipsec_policy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":227,"context_line":"        self.assertEqual(updated_ipsec_policy[\u0027description\u0027], description)"},{"line_number":228,"context_line":"        # Verification of ipsec policy delete"},{"line_number":229,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":230,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAXH%2F%2FD2o%3D","line":227,"updated":"2014-04-24 09:56:28.000000000","message":"Wrong order of arguments self.assertEqual(expected, actual)","commit_id":"73a7b290bdffa92ef1afa5f4354b79de2716a322"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"254c3a0b6d3ba028ad3122efcfc44b6443917fae","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        resp, body \u003d self.client.show_ipsecpolicy(self.ipsecpolicy[\u0027id\u0027])"},{"line_number":236,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":237,"context_line":"        ipsecpolicy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":238,"context_line":"        for key in self.ipsecpolicy:"},{"line_number":239,"context_line":"            self.assertEqual(self.ipsecpolicy[key], ipsecpolicy[key])"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAXH%2F%2FD2Y%3D","line":238,"updated":"2014-04-24 09:56:28.000000000","message":"for key, value in self.ipsecpolicy.iteritems():\n     self.assertEqual(value, ipsecpolicy[key])","commit_id":"73a7b290bdffa92ef1afa5f4354b79de2716a322"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"25dd495fbde1083f14dda97929cc3b76795b3db9","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            _, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":83,"context_line":"            ipsec_id_list \u003d [i[\u0027id\u0027] for i in ipsecpolicies[\u0027ipsecpolicies\u0027]]"},{"line_number":84,"context_line":"            self.assertNotIn(ipsec_policy_id, ipsec_id_list)"},{"line_number":85,"context_line":"        else:"},{"line_number":86,"context_line":"            pass"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"bad4c104_8c41040e","line":85,"updated":"2014-04-29 13:45:04.000000000","message":"may be would be better to delete \"else\" block?","commit_id":"a03a5a3f6c94ef7a74227bce090c112c830b2535"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"14e9e3e01b5cdbe404694007ae7f3812a7b9b0df","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            _, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":83,"context_line":"            ipsec_id_list \u003d [i[\u0027id\u0027] for i in ipsecpolicies[\u0027ipsecpolicies\u0027]]"},{"line_number":84,"context_line":"            self.assertNotIn(ipsec_policy_id, ipsec_id_list)"},{"line_number":85,"context_line":"        else:"},{"line_number":86,"context_line":"            pass"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"9ad9bd40_392cbf4a","line":85,"in_reply_to":"bad4c104_8c41040e","updated":"2014-04-30 04:29:09.000000000","message":"Done","commit_id":"a03a5a3f6c94ef7a74227bce090c112c830b2535"},{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"56306397b4caea3348ba7bdf5d713275e097a8ab","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            _, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":83,"context_line":"            ipsec_id_list \u003d [i[\u0027id\u0027] for i in ipsecpolicies[\u0027ipsecpolicies\u0027]]"},{"line_number":84,"context_line":"            self.assertNotIn(ipsec_policy_id, ipsec_id_list)"},{"line_number":85,"context_line":"        else:"},{"line_number":86,"context_line":"            pass"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"bad4c104_cccdcc88","line":85,"in_reply_to":"bad4c104_8c41040e","updated":"2014-04-29 13:48:45.000000000","message":"Need to fix it.\nWe should not use the \u0027else\u0027 branch here.","commit_id":"a03a5a3f6c94ef7a74227bce090c112c830b2535"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"14e9e3e01b5cdbe404694007ae7f3812a7b9b0df","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            _, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":83,"context_line":"            ipsec_id_list \u003d [i[\u0027id\u0027] for i in ipsecpolicies[\u0027ipsecpolicies\u0027]]"},{"line_number":84,"context_line":"            self.assertNotIn(ipsec_policy_id, ipsec_id_list)"},{"line_number":85,"context_line":"        else:"},{"line_number":86,"context_line":"            pass"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"9ad9bd40_593183a1","line":85,"in_reply_to":"bad4c104_cccdcc88","updated":"2014-04-30 04:29:09.000000000","message":"Done","commit_id":"a03a5a3f6c94ef7a74227bce090c112c830b2535"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"25dd495fbde1083f14dda97929cc3b76795b3db9","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        updated_ipsec_policy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":223,"context_line":"        self.assertEqual(description, updated_ipsec_policy[\u0027description\u0027])"},{"line_number":224,"context_line":"        # Verification of ipsec policy delete"},{"line_number":225,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":226,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"bad4c104_6c0a00d4","line":225,"updated":"2014-04-29 13:45:04.000000000","message":"unused variable \"body\"","commit_id":"a03a5a3f6c94ef7a74227bce090c112c830b2535"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"72cb5fe9dbf96dcfb140043b2bfa6a41a77f44c0","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                                                    **new_ipsec)"},{"line_number":220,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":221,"context_line":"        updated_ipsec_policy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":222,"context_line":"        self.assertEqual(description, updated_ipsec_policy[\u0027description\u0027])"},{"line_number":223,"context_line":"        # Verification of ipsec policy delete"},{"line_number":224,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":225,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":22,"id":"9ad9bd40_142c22ab","line":222,"updated":"2014-04-30 06:41:44.000000000","message":"If you also update \u0027name\u0027 field why don\u0027t you check it? And why is \u0027pfs\u0027: \u0027group5\u0027  in new_ipsec, as far as I see it is the same as in the created ipsecpolicy.","commit_id":"6721a44cd3573994eba4c0f3c26e5d6d846760ce"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"b8424f4ed25212e4db0458076eaf1e874cb88b25","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                                                    **new_ipsec)"},{"line_number":220,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":221,"context_line":"        updated_ipsec_policy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":222,"context_line":"        self.assertEqual(description, updated_ipsec_policy[\u0027description\u0027])"},{"line_number":223,"context_line":"        # Verification of ipsec policy delete"},{"line_number":224,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":225,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":22,"id":"9ad9bd40_2bb6243e","line":222,"in_reply_to":"9ad9bd40_142c22ab","updated":"2014-04-30 07:26:35.000000000","message":"Done","commit_id":"6721a44cd3573994eba4c0f3c26e5d6d846760ce"},{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"cbca9d173dbbd1d853c6a7c4f620361640d8ed60","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            self.assertNotIn(ike_policy_id, ike_id_list)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _delete_ipsec_policy(self, ipsec_policy_id):"},{"line_number":76,"context_line":"        # Deletes a ipsec policy and verifies if it is deleted or not"},{"line_number":77,"context_line":"        _, all_ipsec \u003d self.client.list_ipsecpolicies()"},{"line_number":78,"context_line":"        ipsec_list \u003d [ipsec[\u0027id\u0027] for ipsec in all_ipsec[\u0027ipsecpolicies\u0027]]"},{"line_number":79,"context_line":"        if ipsec_policy_id in ipsec_list:"}],"source_content_type":"text/x-python","patch_set":24,"id":"9ad9bd40_3b5c25ed","line":76,"updated":"2014-05-06 08:34:13.000000000","message":"a ipsec  \u003e an ipsec ?","commit_id":"6759fee84807f817effb5dcbd007676f0a25800c"},{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"cbca9d173dbbd1d853c6a7c4f620361640d8ed60","unresolved":false,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":203,"context_line":"    def test_create_update_delete_ipsec_policy(self):"},{"line_number":204,"context_line":"        # Creates a ipsec policy"},{"line_number":205,"context_line":"        name \u003d data_utils.rand_name(\u0027ipsec-policy-\u0027)"},{"line_number":206,"context_line":"        resp, body \u003d (self.client.create_ipsecpolicy("},{"line_number":207,"context_line":"                      name,"}],"source_content_type":"text/x-python","patch_set":24,"id":"9ad9bd40_9b6a917f","line":204,"updated":"2014-05-06 08:34:13.000000000","message":"the same.","commit_id":"6759fee84807f817effb5dcbd007676f0a25800c"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"613075ac3b11eb5aa1df7e6004b8fceea6a21d55","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                ike_id_list.append(i[\u0027id\u0027])"},{"line_number":73,"context_line":"            self.assertNotIn(ike_policy_id, ike_id_list)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _delete_ipsec_policy(self, ipsec_policy_id):"},{"line_number":76,"context_line":"        # Deletes an ipsec policy and verifies if it is deleted or not"},{"line_number":77,"context_line":"        _, all_ipsec \u003d self.client.list_ipsecpolicies()"},{"line_number":78,"context_line":"        ipsec_list \u003d [ipsec[\u0027id\u0027] for ipsec in all_ipsec[\u0027ipsecpolicies\u0027]]"}],"source_content_type":"text/x-python","patch_set":25,"id":"5adbc538_61091231","line":75,"updated":"2014-05-26 17:53:26.000000000","message":"Maybe, it will be better\n\n    def _delete_ipsec_policy(self, ipsec_policy_id):\n        try:\n            resp \u003d self.client.delete_ipsecpolicy(ipsec_policy_id)[0]\n        except exceptions.NotFound:\n            pass\n        else:\n            self.assertEqual(204, resp.status)\n            self.assertRaises(NotFoundException, ...)\n\nas Jordan said below.","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"c8de1deb25a026b7abc3cdd3045963393377422a","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                ike_id_list.append(i[\u0027id\u0027])"},{"line_number":73,"context_line":"            self.assertNotIn(ike_policy_id, ike_id_list)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _delete_ipsec_policy(self, ipsec_policy_id):"},{"line_number":76,"context_line":"        # Deletes an ipsec policy and verifies if it is deleted or not"},{"line_number":77,"context_line":"        _, all_ipsec \u003d self.client.list_ipsecpolicies()"},{"line_number":78,"context_line":"        ipsec_list \u003d [ipsec[\u0027id\u0027] for ipsec in all_ipsec[\u0027ipsecpolicies\u0027]]"}],"source_content_type":"text/x-python","patch_set":25,"id":"1ae5cdf2_e1ba556d","line":75,"in_reply_to":"5adbc538_61091231","updated":"2014-06-02 10:21:11.000000000","message":"Done","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"1612b76dfdf8d89fd491c07bcd5a2f4731771e7b","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            resp, _ \u003d self.client.delete_ipsecpolicy(ipsec_policy_id)"},{"line_number":81,"context_line":"            self.assertEqual(204, resp.status)"},{"line_number":82,"context_line":"            # Asserting that the policy is not found in list after deletion"},{"line_number":83,"context_line":"            _, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":84,"context_line":"            ipsec_id_list \u003d [i[\u0027id\u0027] for i in ipsecpolicies[\u0027ipsecpolicies\u0027]]"},{"line_number":85,"context_line":"            self.assertNotIn(ipsec_policy_id, ipsec_id_list)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"5adbc538_7179f2fb","line":83,"updated":"2014-05-26 08:54:06.000000000","message":"Instead of listing + filtering ipsecpolicies, you should try to delete again the policy and assertRaises(NotFoundException).","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"c8de1deb25a026b7abc3cdd3045963393377422a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            resp, _ \u003d self.client.delete_ipsecpolicy(ipsec_policy_id)"},{"line_number":81,"context_line":"            self.assertEqual(204, resp.status)"},{"line_number":82,"context_line":"            # Asserting that the policy is not found in list after deletion"},{"line_number":83,"context_line":"            _, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":84,"context_line":"            ipsec_id_list \u003d [i[\u0027id\u0027] for i in ipsecpolicies[\u0027ipsecpolicies\u0027]]"},{"line_number":85,"context_line":"            self.assertNotIn(ipsec_policy_id, ipsec_id_list)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"1ae5cdf2_01b1018f","line":83,"in_reply_to":"5adbc538_7179f2fb","updated":"2014-06-02 10:21:11.000000000","message":"Done","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"1612b76dfdf8d89fd491c07bcd5a2f4731771e7b","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    def test_create_update_delete_ipsec_policy(self):"},{"line_number":204,"context_line":"        # Creates an ipsec policy"},{"line_number":205,"context_line":"        name \u003d data_utils.rand_name(\u0027ipsec-policy-\u0027)"},{"line_number":206,"context_line":"        resp, body \u003d (self.client.create_ipsecpolicy("},{"line_number":207,"context_line":"                      name,"},{"line_number":208,"context_line":"                      pfs\u003d\"group5\","},{"line_number":209,"context_line":"                      encryption_algorithm\u003d\"aes-128\","}],"source_content_type":"text/x-python","patch_set":25,"id":"5adbc538_71601236","line":206,"updated":"2014-05-26 08:54:06.000000000","message":"Useless outer parentheses","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"c8de1deb25a026b7abc3cdd3045963393377422a","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    def test_create_update_delete_ipsec_policy(self):"},{"line_number":204,"context_line":"        # Creates an ipsec policy"},{"line_number":205,"context_line":"        name \u003d data_utils.rand_name(\u0027ipsec-policy-\u0027)"},{"line_number":206,"context_line":"        resp, body \u003d (self.client.create_ipsecpolicy("},{"line_number":207,"context_line":"                      name,"},{"line_number":208,"context_line":"                      pfs\u003d\"group5\","},{"line_number":209,"context_line":"                      encryption_algorithm\u003d\"aes-128\","}],"source_content_type":"text/x-python","patch_set":25,"id":"1ae5cdf2_6521f09e","line":206,"in_reply_to":"5adbc538_71601236","updated":"2014-06-02 10:21:11.000000000","message":"Without outer parentheses, it will thow error during run of tox","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"613075ac3b11eb5aa1df7e6004b8fceea6a21d55","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                      auth_algorithm\u003d\"sha1\"))"},{"line_number":211,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":212,"context_line":"        ipsecpolicy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":213,"context_line":"        self.addCleanup(self._delete_ipsec_policy, ipsecpolicy[\u0027id\u0027])"},{"line_number":214,"context_line":"        # Verification of ipsec policy update"},{"line_number":215,"context_line":"        description \u003d \"Updated ipsec policy\""},{"line_number":216,"context_line":"        new_ipsec \u003d {\u0027description\u0027: description, \u0027pfs\u0027: \u0027group2\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"5adbc538_e40a90d1","line":213,"updated":"2014-05-26 17:53:26.000000000","message":"I think this line should be in front of assertEqual.\n\n    self.addCleanup(self._delete_ipsec_policy, ipsecpolicy[\u0027id\u0027])\n    self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])\n    ipsecpolicy \u003d body[\u0027ipsecpolicy\u0027]","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"c8de1deb25a026b7abc3cdd3045963393377422a","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                      auth_algorithm\u003d\"sha1\"))"},{"line_number":211,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":212,"context_line":"        ipsecpolicy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":213,"context_line":"        self.addCleanup(self._delete_ipsec_policy, ipsecpolicy[\u0027id\u0027])"},{"line_number":214,"context_line":"        # Verification of ipsec policy update"},{"line_number":215,"context_line":"        description \u003d \"Updated ipsec policy\""},{"line_number":216,"context_line":"        new_ipsec \u003d {\u0027description\u0027: description, \u0027pfs\u0027: \u0027group2\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"1ae5cdf2_05474c4c","line":213,"in_reply_to":"5adbc538_e40a90d1","updated":"2014-06-02 10:21:11.000000000","message":"It should be like - \n ipsecpolicy \u003d body[\u0027ipsecpolicy\u0027]\n self.addCleanup(self._delete_ipsec_policy, ipsecpolicy[\u0027id\u0027])\n self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])\n\nbecause addCleanup needs id parameter","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"849655c029b00b1dc66ada353aebe171c9be5b69","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        self.addCleanup(self._delete_ipsec_policy, ipsecpolicy[\u0027id\u0027])"},{"line_number":214,"context_line":"        # Verification of ipsec policy update"},{"line_number":215,"context_line":"        description \u003d \"Updated ipsec policy\""},{"line_number":216,"context_line":"        new_ipsec \u003d {\u0027description\u0027: description, \u0027pfs\u0027: \u0027group2\u0027,"},{"line_number":217,"context_line":"                     \u0027name\u0027: data_utils.rand_name(\"New-IPSec-\")}"},{"line_number":218,"context_line":"        resp, body \u003d self.client.update_ipsecpolicy(ipsecpolicy[\u0027id\u0027],"},{"line_number":219,"context_line":"                                                    **new_ipsec)"}],"source_content_type":"text/x-python","patch_set":25,"id":"1ae5cdf2_08504b5d","line":216,"updated":"2014-06-01 22:15:21.000000000","message":"In the corresponding method I removed from my patchset (https://review.openstack.org/#/c/83627/5) I was making use of more parameters in the ipsec update call. I was trying to cover as much of the api as possible. Perhaps you can use more parameters in this call. If you decide not to do it, then I will add them after your patchset merges","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"c8de1deb25a026b7abc3cdd3045963393377422a","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        self.addCleanup(self._delete_ipsec_policy, ipsecpolicy[\u0027id\u0027])"},{"line_number":214,"context_line":"        # Verification of ipsec policy update"},{"line_number":215,"context_line":"        description \u003d \"Updated ipsec policy\""},{"line_number":216,"context_line":"        new_ipsec \u003d {\u0027description\u0027: description, \u0027pfs\u0027: \u0027group2\u0027,"},{"line_number":217,"context_line":"                     \u0027name\u0027: data_utils.rand_name(\"New-IPSec-\")}"},{"line_number":218,"context_line":"        resp, body \u003d self.client.update_ipsecpolicy(ipsecpolicy[\u0027id\u0027],"},{"line_number":219,"context_line":"                                                    **new_ipsec)"}],"source_content_type":"text/x-python","patch_set":25,"id":"1ae5cdf2_a5f8587d","line":216,"in_reply_to":"1ae5cdf2_08504b5d","updated":"2014-06-02 10:21:11.000000000","message":"Done","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"1612b76dfdf8d89fd491c07bcd5a2f4731771e7b","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":223,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":224,"context_line":"        # Verification of ipsec policy delete"},{"line_number":225,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":226,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":227,"context_line":"        resp, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":228,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":25,"id":"5adbc538_71181285","line":225,"updated":"2014-05-26 08:54:06.000000000","message":"IMO this is useless. You are already doing this in _delete_ipsec_policy, including the status code check. If a function added with addCleanup raises an exception, the error will be recorded as a test error.","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"c8de1deb25a026b7abc3cdd3045963393377422a","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":223,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":224,"context_line":"        # Verification of ipsec policy delete"},{"line_number":225,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":226,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":227,"context_line":"        resp, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":228,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":25,"id":"1ae5cdf2_c507241c","line":225,"in_reply_to":"5adbc538_71181285","updated":"2014-06-02 10:21:11.000000000","message":"Done","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"1612b76dfdf8d89fd491c07bcd5a2f4731771e7b","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":237,"context_line":"        ipsecpolicy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":238,"context_line":"        for key, value in self.ipsecpolicy.iteritems():"},{"line_number":239,"context_line":"            self.assertEqual(value, ipsecpolicy[key])"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"class VPNaaSTestXML(VPNaaSTestJSON):"}],"source_content_type":"text/x-python","patch_set":25,"id":"5adbc538_3434b8dd","line":239,"updated":"2014-05-26 08:54:06.000000000","message":"You should assert that \u0027key\u0027 is in \u0027ipsecpolicy\u0027 before checking the value.","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"c8de1deb25a026b7abc3cdd3045963393377422a","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":237,"context_line":"        ipsecpolicy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":238,"context_line":"        for key, value in self.ipsecpolicy.iteritems():"},{"line_number":239,"context_line":"            self.assertEqual(value, ipsecpolicy[key])"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"class VPNaaSTestXML(VPNaaSTestJSON):"}],"source_content_type":"text/x-python","patch_set":25,"id":"1ae5cdf2_a8682dbb","line":239,"in_reply_to":"5adbc538_3434b8dd","updated":"2014-06-02 10:21:11.000000000","message":"IMO, the motive is to find all keys and check whether at that key expected value occurs or not.\nHere if we are checking value at a key i.e we are checking key as well as value also so the motive is verified.\nSo in my opinion I think it is correct here.","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"8ca7445689d967c0aa82a573a869ae71443f6bee","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                              self.client.show_ipsecpolies,"},{"line_number":82,"context_line":"                              ipsec_policy_id)"},{"line_number":83,"context_line":"        else:"},{"line_number":84,"context_line":"            self.assertEqual(204, resp.status)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":87,"context_line":"    def test_list_vpn_services(self):"}],"source_content_type":"text/x-python","patch_set":26,"id":"1ae5cdf2_2eed00f0","line":84,"updated":"2014-06-02 13:26:59.000000000","message":"You catch NotFound exception and then you call self.client.show_ipsecpolies method, expecting the same exception. Why do you do that? You have already caught this exception. \n\nI think it should be something like this\n\n    try:\n        resp \u003d self.client.delete_ipsecpolicy(ipsec_policy_id)[0]\n    except exceptions.NotFound:\n        pass\n    else:\n        self.assertEqual(204, resp.status)\n        self.assertRaises(exceptions.NotFound, \n                          self.client.delete_ipsecpolicy, ipsec_policy_id)\n\nBesides, I am not sure there is need to use try/except block here.","commit_id":"8831a7f256dd3f715353ceb44dbd340a4904c9e0"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"730fa7cbbbe85ae96cc464237bf253ad2f80a8b4","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                ike_id_list.append(i[\u0027id\u0027])"},{"line_number":74,"context_line":"            self.assertNotIn(ike_policy_id, ike_id_list)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _delete_ipsec_policy(self, ipsec_policy_id):"},{"line_number":77,"context_line":"        # Deletes an ike policy if it exists"},{"line_number":78,"context_line":"        try:"},{"line_number":79,"context_line":"            resp, _ \u003d self.client.delete_ipsecpolicy(ipsec_policy_id)"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_030e408d","line":76,"updated":"2014-06-03 08:48:15.000000000","message":"You use this method for deleting policy if something go wrong.\nIn this case you don\u0027t need to check response status code. It is not test. So you don\u0027t need \u0027else\u0027 block.","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"356abfc8208e83f49f64f942e38024f41cfdc0a3","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                ike_id_list.append(i[\u0027id\u0027])"},{"line_number":74,"context_line":"            self.assertNotIn(ike_policy_id, ike_id_list)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _delete_ipsec_policy(self, ipsec_policy_id):"},{"line_number":77,"context_line":"        # Deletes an ike policy if it exists"},{"line_number":78,"context_line":"        try:"},{"line_number":79,"context_line":"            resp, _ \u003d self.client.delete_ipsecpolicy(ipsec_policy_id)"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_681b5c1b","line":76,"in_reply_to":"1ae5cdf2_030e408d","updated":"2014-06-03 09:23:47.000000000","message":"Agreed","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"045580b254bf0dfc86e7b4df95087b3f57a87778","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                ike_id_list.append(i[\u0027id\u0027])"},{"line_number":74,"context_line":"            self.assertNotIn(ike_policy_id, ike_id_list)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _delete_ipsec_policy(self, ipsec_policy_id):"},{"line_number":77,"context_line":"        # Deletes an ike policy if it exists"},{"line_number":78,"context_line":"        try:"},{"line_number":79,"context_line":"            resp, _ \u003d self.client.delete_ipsecpolicy(ipsec_policy_id)"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_358a8dbf","line":76,"in_reply_to":"1ae5cdf2_030e408d","updated":"2014-06-03 09:52:48.000000000","message":"Done","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"356abfc8208e83f49f64f942e38024f41cfdc0a3","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        except exceptions.NotFound:"},{"line_number":82,"context_line":"            pass"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        except Exception:"},{"line_number":85,"context_line":"            LOG.exception(\u0027Exception raised deleting policy %s\u0027, ipsec_policy_id)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_e8b5acee","line":84,"updated":"2014-06-03 09:23:47.000000000","message":"This block is no needed. I believe we avoid catching up all exceptions in Tempest like this. See https://github.com/openstack/tempest/blob/master/HACKING.rst#exception-handling","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"730fa7cbbbe85ae96cc464237bf253ad2f80a8b4","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":206,"context_line":"    def test_create_update_delete_ipsec_policy(self):"},{"line_number":207,"context_line":"        # Creates an ipsec policy"},{"line_number":208,"context_line":"        name \u003d data_utils.rand_name(\u0027ipsec-policy-\u0027)"},{"line_number":209,"context_line":"        resp, body \u003d (self.client.create_ipsecpolicy("},{"line_number":210,"context_line":"                      name\u003dname,"},{"line_number":211,"context_line":"                      pfs\u003d\"group5\","}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_b2ea330d","line":208,"updated":"2014-06-03 08:48:15.000000000","message":"Maybe, something like this\n\n        ipsec_policy_body \u003d {\n            \u0027name\u0027: data_utils.rand_name(\u0027ipsec-policy\u0027),\n            \u0027pfs\u0027: \u0027group5\u0027,\n            \u0027encryption_algorithm\u0027: \u0027aes-128\u0027,\n            \u0027auth_algorithm\u0027: \u0027sha1\u0027\n        }\n        resp, resp_body \u003d self.client.create_ipsecpolicy(**ipsec_policy_body)\n        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])\n        ipsecpolicy \u003d resp_body[\u0027ipsecpolicy\u0027]\n        self.addCleanup(self._delete_ipsec_policy, ipsecpolicy[\u0027id\u0027])\n        self.assertDictContainsSubset(ipsec_policy_body, resp_body)","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"356abfc8208e83f49f64f942e38024f41cfdc0a3","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":206,"context_line":"    def test_create_update_delete_ipsec_policy(self):"},{"line_number":207,"context_line":"        # Creates an ipsec policy"},{"line_number":208,"context_line":"        name \u003d data_utils.rand_name(\u0027ipsec-policy-\u0027)"},{"line_number":209,"context_line":"        resp, body \u003d (self.client.create_ipsecpolicy("},{"line_number":210,"context_line":"                      name\u003dname,"},{"line_number":211,"context_line":"                      pfs\u003d\"group5\","}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_68dc3c13","line":208,"updated":"2014-06-03 09:23:47.000000000","message":"rand_name() already adds a trailing \u0027-\u0027 before the random part of the name.","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"045580b254bf0dfc86e7b4df95087b3f57a87778","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":206,"context_line":"    def test_create_update_delete_ipsec_policy(self):"},{"line_number":207,"context_line":"        # Creates an ipsec policy"},{"line_number":208,"context_line":"        name \u003d data_utils.rand_name(\u0027ipsec-policy-\u0027)"},{"line_number":209,"context_line":"        resp, body \u003d (self.client.create_ipsecpolicy("},{"line_number":210,"context_line":"                      name\u003dname,"},{"line_number":211,"context_line":"                      pfs\u003d\"group5\","}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_0b11f2ab","line":208,"in_reply_to":"1ae5cdf2_68dc3c13","updated":"2014-06-03 09:52:48.000000000","message":"Done","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"045580b254bf0dfc86e7b4df95087b3f57a87778","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":206,"context_line":"    def test_create_update_delete_ipsec_policy(self):"},{"line_number":207,"context_line":"        # Creates an ipsec policy"},{"line_number":208,"context_line":"        name \u003d data_utils.rand_name(\u0027ipsec-policy-\u0027)"},{"line_number":209,"context_line":"        resp, body \u003d (self.client.create_ipsecpolicy("},{"line_number":210,"context_line":"                      name\u003dname,"},{"line_number":211,"context_line":"                      pfs\u003d\"group5\","}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_681efc64","line":208,"in_reply_to":"1ae5cdf2_b2ea330d","updated":"2014-06-03 09:52:48.000000000","message":"Done","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"730fa7cbbbe85ae96cc464237bf253ad2f80a8b4","unresolved":false,"context_lines":[{"line_number":213,"context_line":"                      auth_algorithm\u003d\"sha1\"))"},{"line_number":214,"context_line":"        ipsecpolicy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":215,"context_line":"        self.addCleanup(self._delete_ipsec_policy, ipsecpolicy[\u0027id\u0027])"},{"line_number":216,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":217,"context_line":"        # Verification of ipsec policy update"},{"line_number":218,"context_line":"        description \u003d \"Updated ipsec policy\""},{"line_number":219,"context_line":"        new_ipsec \u003d {\u0027description\u0027: description,"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_a3b58c32","line":216,"updated":"2014-06-03 08:48:15.000000000","message":"First of all you should check response status code. Please, put self.assertEqual(...) in front of L214.","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"045580b254bf0dfc86e7b4df95087b3f57a87778","unresolved":false,"context_lines":[{"line_number":213,"context_line":"                      auth_algorithm\u003d\"sha1\"))"},{"line_number":214,"context_line":"        ipsecpolicy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":215,"context_line":"        self.addCleanup(self._delete_ipsec_policy, ipsecpolicy[\u0027id\u0027])"},{"line_number":216,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":217,"context_line":"        # Verification of ipsec policy update"},{"line_number":218,"context_line":"        description \u003d \"Updated ipsec policy\""},{"line_number":219,"context_line":"        new_ipsec \u003d {\u0027description\u0027: description,"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_082578aa","line":216,"in_reply_to":"1ae5cdf2_a3b58c32","updated":"2014-06-03 09:52:48.000000000","message":"Done","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"730fa7cbbbe85ae96cc464237bf253ad2f80a8b4","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":217,"context_line":"        # Verification of ipsec policy update"},{"line_number":218,"context_line":"        description \u003d \"Updated ipsec policy\""},{"line_number":219,"context_line":"        new_ipsec \u003d {\u0027description\u0027: description,"},{"line_number":220,"context_line":"                     \u0027pfs\u0027: \u0027group2\u0027,"},{"line_number":221,"context_line":"                     \u0027name\u0027: data_utils.rand_name(\"New-IPSec-\"),"},{"line_number":222,"context_line":"                     \u0027encryption_algorithm\u0027: \"aes-256\","}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_23b09cf3","line":219,"updated":"2014-06-03 08:48:15.000000000","message":"Maybe, just write\n\n        new_ipsec \u003d {\n            \u0027description\u0027: \u0027Updated ipsec policy\u0027,\n            \u0027pfs\u0027: \u0027group2\u0027,\n            \u0027name\u0027: data_utils.rand_name(\u0027New-IPSec-\u0027),\n            \u0027encryption_algorithm\u0027: \u0027aes-256\u0027,\n            \u0027lifetime\u0027: {\u0027units\u0027: \"seconds\", \u0027value\u0027: \u00272000\u0027}\n        }","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"045580b254bf0dfc86e7b4df95087b3f57a87778","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":217,"context_line":"        # Verification of ipsec policy update"},{"line_number":218,"context_line":"        description \u003d \"Updated ipsec policy\""},{"line_number":219,"context_line":"        new_ipsec \u003d {\u0027description\u0027: description,"},{"line_number":220,"context_line":"                     \u0027pfs\u0027: \u0027group2\u0027,"},{"line_number":221,"context_line":"                     \u0027name\u0027: data_utils.rand_name(\"New-IPSec-\"),"},{"line_number":222,"context_line":"                     \u0027encryption_algorithm\u0027: \"aes-256\","}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_684c3c71","line":219,"in_reply_to":"1ae5cdf2_23b09cf3","updated":"2014-06-03 09:52:48.000000000","message":"Done","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"730fa7cbbbe85ae96cc464237bf253ad2f80a8b4","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                                                    **new_ipsec)"},{"line_number":226,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":227,"context_line":"        updated_ipsec_policy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":228,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":229,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":230,"context_line":"        # Verification of ipsec policy delete "},{"line_number":231,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_c3d45822","line":228,"updated":"2014-06-03 08:48:15.000000000","message":"Maybe, it will be better to use \n\n    self.assertDictContainsSubset(new_ipsec, updated_ipsec_policy)","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"53f57218ad7d9602f56f82dbcf2b3bd1aca3a3e3","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                                                    **new_ipsec)"},{"line_number":226,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":227,"context_line":"        updated_ipsec_policy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":228,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":229,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":230,"context_line":"        # Verification of ipsec policy delete "},{"line_number":231,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_7c5eba13","line":228,"in_reply_to":"1ae5cdf2_6b30b601","updated":"2014-06-03 11:45:57.000000000","message":"As far as I know (not much in this context !) Testtools library imports Unittest(2) library.\n\nTo be sure, just grep \u0027def assertDictContainsSubset\u0027 in your system. In mine, the method is defined only on the Unittest library, though Tempest works fine.","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ffc248a2faff2c0faf32512352ef2cbcb382b4c7","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                                                    **new_ipsec)"},{"line_number":226,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":227,"context_line":"        updated_ipsec_policy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":228,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":229,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":230,"context_line":"        # Verification of ipsec policy delete "},{"line_number":231,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_374d233f","line":228,"in_reply_to":"1ae5cdf2_7c5eba13","updated":"2014-06-03 16:00:04.000000000","message":"Jordan, OK.","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"cd96725f9aaa67ea47e9f29f43ead1a6393b1d97","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                                                    **new_ipsec)"},{"line_number":226,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":227,"context_line":"        updated_ipsec_policy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":228,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":229,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":230,"context_line":"        # Verification of ipsec policy delete "},{"line_number":231,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_6b30b601","line":228,"in_reply_to":"1ae5cdf2_881c28c3","updated":"2014-06-03 09:49:17.000000000","message":"Jordan, as far as I know Tempest uses Testtools library instead of Unittest library. Correct me if I am wrong.","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"045580b254bf0dfc86e7b4df95087b3f57a87778","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                                                    **new_ipsec)"},{"line_number":226,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":227,"context_line":"        updated_ipsec_policy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":228,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":229,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":230,"context_line":"        # Verification of ipsec policy delete "},{"line_number":231,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_68635cdc","line":228,"in_reply_to":"1ae5cdf2_c3d45822","updated":"2014-06-03 09:52:48.000000000","message":"Done","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"356abfc8208e83f49f64f942e38024f41cfdc0a3","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                                                    **new_ipsec)"},{"line_number":226,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":227,"context_line":"        updated_ipsec_policy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":228,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":229,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":230,"context_line":"        # Verification of ipsec policy delete "},{"line_number":231,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_881c28c3","line":228,"in_reply_to":"1ae5cdf2_c3d45822","updated":"2014-06-03 09:23:47.000000000","message":"assertDictContainsSubset is deprecated in Unittest library since version 3.2","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"356abfc8208e83f49f64f942e38024f41cfdc0a3","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":227,"context_line":"        updated_ipsec_policy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":228,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":229,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":230,"context_line":"        # Verification of ipsec policy delete "},{"line_number":231,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":232,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_c8c0f0e2","line":229,"updated":"2014-06-03 09:23:47.000000000","message":"I really think you need to assert that \u0027key\u0027 is in updated_ipsec_policy, before asserting the value. Otherwise you might get a \u0027KeyError\u0027 exception that would be hard to debug because the error message would not be very clear.","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"045580b254bf0dfc86e7b4df95087b3f57a87778","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":227,"context_line":"        updated_ipsec_policy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":228,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":229,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":230,"context_line":"        # Verification of ipsec policy delete "},{"line_number":231,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":232,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_a62755b5","line":229,"in_reply_to":"1ae5cdf2_c8c0f0e2","updated":"2014-06-03 09:52:48.000000000","message":"Done","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"730fa7cbbbe85ae96cc464237bf253ad2f80a8b4","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        updated_ipsec_policy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":228,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":229,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":230,"context_line":"        # Verification of ipsec policy delete "},{"line_number":231,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":232,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":233,"context_line":"        resp, ipsecpolicies \u003d self.client.list_ipsecpolicies()"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_035ac0f2","line":230,"updated":"2014-06-03 08:48:15.000000000","message":"Please, remove red symbol at the end of line.","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"045580b254bf0dfc86e7b4df95087b3f57a87778","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        updated_ipsec_policy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":228,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":229,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":230,"context_line":"        # Verification of ipsec policy delete "},{"line_number":231,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":232,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":233,"context_line":"        resp, ipsecpolicies \u003d self.client.list_ipsecpolicies()"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_c89f10b3","line":230,"in_reply_to":"1ae5cdf2_035ac0f2","updated":"2014-06-03 09:52:48.000000000","message":"Done","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"730fa7cbbbe85ae96cc464237bf253ad2f80a8b4","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":229,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":230,"context_line":"        # Verification of ipsec policy delete "},{"line_number":231,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":232,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":233,"context_line":"        resp, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":234,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_63f544ca","line":231,"updated":"2014-06-03 08:48:15.000000000","message":"Body is unused variable. Many reviewers don\u0027t like this :) Please, write\n\n     resp \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])[0]","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"356abfc8208e83f49f64f942e38024f41cfdc0a3","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":229,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":230,"context_line":"        # Verification of ipsec policy delete "},{"line_number":231,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":232,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":233,"context_line":"        resp, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":234,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_e86e8c00","line":231,"in_reply_to":"1ae5cdf2_63f544ca","updated":"2014-06-03 09:23:47.000000000","message":"Or resp, _ \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"045580b254bf0dfc86e7b4df95087b3f57a87778","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        for key, value in new_ipsec.iteritems():"},{"line_number":229,"context_line":"            self.assertEqual(value, updated_ipsec_policy[key])"},{"line_number":230,"context_line":"        # Verification of ipsec policy delete "},{"line_number":231,"context_line":"        resp, body \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":232,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":233,"context_line":"        resp, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":234,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_4b505a5e","line":231,"in_reply_to":"1ae5cdf2_e86e8c00","updated":"2014-06-03 09:52:48.000000000","message":"Done","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"730fa7cbbbe85ae96cc464237bf253ad2f80a8b4","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        resp, body \u003d self.client.show_ipsecpolicy(self.ipsecpolicy[\u0027id\u0027])"},{"line_number":242,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":243,"context_line":"        ipsecpolicy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":244,"context_line":"        for key, value in self.ipsecpolicy.iteritems():"},{"line_number":245,"context_line":"            self.assertEqual(value, ipsecpolicy[key])"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_2387bc10","line":244,"updated":"2014-06-03 08:48:15.000000000","message":"Maybe, it will be better to use\n    \n    self.assertDictContainsSubset(self.ipsecpolicy, ipsecpolicy)","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"356abfc8208e83f49f64f942e38024f41cfdc0a3","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        ipsecpolicy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":244,"context_line":"        for key, value in self.ipsecpolicy.iteritems():"},{"line_number":245,"context_line":"            self.assertEqual(value, ipsecpolicy[key])"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"class VPNaaSTestXML(VPNaaSTestJSON):"},{"line_number":249,"context_line":"    _interface \u003d \u0027xml\u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_68827c95","line":246,"updated":"2014-06-03 09:23:47.000000000","message":"I really think you need to assert that \u0027key\u0027 is in ipsec_policy, before asserting the value. Otherwise you might get a \u0027KeyError\u0027 exception that would be hard to debug because the error message would not be very clear.","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"045580b254bf0dfc86e7b4df95087b3f57a87778","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        ipsecpolicy \u003d body[\u0027ipsecpolicy\u0027]"},{"line_number":244,"context_line":"        for key, value in self.ipsecpolicy.iteritems():"},{"line_number":245,"context_line":"            self.assertEqual(value, ipsecpolicy[key])"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"class VPNaaSTestXML(VPNaaSTestJSON):"},{"line_number":249,"context_line":"    _interface \u003d \u0027xml\u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_8619797b","line":246,"in_reply_to":"1ae5cdf2_68827c95","updated":"2014-06-03 09:52:48.000000000","message":"Done","commit_id":"83ebfeb215b4fb4a8e524693d48dde67cbde963d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"1b0e169c968fe5725dc89aaed58876df46cb45c0","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":208,"context_line":"        ipsecpolicy \u003d resp_body[\u0027ipsecpolicy\u0027]"},{"line_number":209,"context_line":"        self.addCleanup(self._delete_ipsec_policy, ipsecpolicy[\u0027id\u0027])"},{"line_number":210,"context_line":"        for key, value in ipsec_policy_body.iteritems():"},{"line_number":211,"context_line":"            self.assertIn(key, ipsecpolicy)"},{"line_number":212,"context_line":"            self.assertEqual(value, ipsecpolicy[key])"},{"line_number":213,"context_line":"        # Verification of ipsec policy update"}],"source_content_type":"text/x-python","patch_set":30,"id":"1ae5cdf2_378b63c4","line":210,"updated":"2014-06-03 16:43:48.000000000","message":"Maybe, it will be better to move this check \n\n    for key, value in ipsec_policy_body.iteritems():\n        self.assertIn(key, ipsecpolicy)\n        self.assertEqual(value, ipsecpolicy[key])\n\nto a method?\n\nThere are three places where you use this construction.\n\nI would put self.assertDictContainsSubset(...) here but Jordan say assertDictContainsSubset is deprecated. \nSo we shouldn\u0027t use self.assertDictContainsSubset? Jordan, could you please clarify that? :)","commit_id":"559253e90f67c42405e9309e941239e8eab221cb"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"cabbad6664bc06fb90fdb21bee01de95d36f53ea","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":208,"context_line":"        ipsecpolicy \u003d resp_body[\u0027ipsecpolicy\u0027]"},{"line_number":209,"context_line":"        self.addCleanup(self._delete_ipsec_policy, ipsecpolicy[\u0027id\u0027])"},{"line_number":210,"context_line":"        for key, value in ipsec_policy_body.iteritems():"},{"line_number":211,"context_line":"            self.assertIn(key, ipsecpolicy)"},{"line_number":212,"context_line":"            self.assertEqual(value, ipsecpolicy[key])"},{"line_number":213,"context_line":"        # Verification of ipsec policy update"}],"source_content_type":"text/x-python","patch_set":30,"id":"1ae5cdf2_7556b15d","line":210,"in_reply_to":"1ae5cdf2_378b63c4","updated":"2014-06-04 04:41:08.000000000","message":"Done","commit_id":"559253e90f67c42405e9309e941239e8eab221cb"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b18cbd86ff95ae6c52f5cf58b85e450a43d33c64","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":208,"context_line":"        ipsecpolicy \u003d resp_body[\u0027ipsecpolicy\u0027]"},{"line_number":209,"context_line":"        self.addCleanup(self._delete_ipsec_policy, ipsecpolicy[\u0027id\u0027])"},{"line_number":210,"context_line":"        for key, value in ipsec_policy_body.iteritems():"},{"line_number":211,"context_line":"            self.assertIn(key, ipsecpolicy)"},{"line_number":212,"context_line":"            self.assertEqual(value, ipsecpolicy[key])"},{"line_number":213,"context_line":"        # Verification of ipsec policy update"}],"source_content_type":"text/x-python","patch_set":30,"id":"1ae5cdf2_a018061f","line":210,"in_reply_to":"1ae5cdf2_378b63c4","updated":"2014-06-03 22:09:30.000000000","message":"The doc here https://docs.python.org/2/library/unittest.html#unittest.TestCase.assertDictContainsSubset says that assertDictContainsSubset() is deprecated since Python 3.2 Though we don\u0027t use python3 in Openstack, maybe we will one day. So i think it\u0027s best to use an helper function as you propose Yaroslav.","commit_id":"559253e90f67c42405e9309e941239e8eab221cb"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"315ec140bdcfef3af0b44ee011017196080e4668","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":208,"context_line":"        ipsecpolicy \u003d resp_body[\u0027ipsecpolicy\u0027]"},{"line_number":209,"context_line":"        self.addCleanup(self._delete_ipsec_policy, ipsecpolicy[\u0027id\u0027])"},{"line_number":210,"context_line":"        for key, value in ipsec_policy_body.iteritems():"},{"line_number":211,"context_line":"            self.assertIn(key, ipsecpolicy)"},{"line_number":212,"context_line":"            self.assertEqual(value, ipsecpolicy[key])"},{"line_number":213,"context_line":"        # Verification of ipsec policy update"}],"source_content_type":"text/x-python","patch_set":30,"id":"1ae5cdf2_2fb855c7","line":210,"in_reply_to":"1ae5cdf2_a018061f","updated":"2014-06-04 06:43:15.000000000","message":"Jordan, thanks!","commit_id":"559253e90f67c42405e9309e941239e8eab221cb"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"1b0e169c968fe5725dc89aaed58876df46cb45c0","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        # Verification of ipsec policy delete"},{"line_number":227,"context_line":"        resp, _ \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":228,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":229,"context_line":"        resp, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":230,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":231,"context_line":"        self.assertNotIn(ipsecpolicy[\u0027id\u0027],"},{"line_number":232,"context_line":"                         [i[\u0027id\u0027] for i in ipsecpolicies[\u0027ipsecpolicies\u0027]])"}],"source_content_type":"text/x-python","patch_set":30,"id":"1ae5cdf2_175e6776","line":229,"updated":"2014-06-03 16:43:48.000000000","message":"I am not sure, but maybe replace lines 229-232 by\n\n    self.assertRaises(exceptions.NotFound, \n                      self.client.delete_ipsecpolicy, ipsecpolicy[\u0027id\u0027])","commit_id":"559253e90f67c42405e9309e941239e8eab221cb"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"cabbad6664bc06fb90fdb21bee01de95d36f53ea","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        # Verification of ipsec policy delete"},{"line_number":227,"context_line":"        resp, _ \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":228,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":229,"context_line":"        resp, ipsecpolicies \u003d self.client.list_ipsecpolicies()"},{"line_number":230,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":231,"context_line":"        self.assertNotIn(ipsecpolicy[\u0027id\u0027],"},{"line_number":232,"context_line":"                         [i[\u0027id\u0027] for i in ipsecpolicies[\u0027ipsecpolicies\u0027]])"}],"source_content_type":"text/x-python","patch_set":30,"id":"1ae5cdf2_15972d3c","line":229,"in_reply_to":"1ae5cdf2_175e6776","updated":"2014-06-04 04:41:08.000000000","message":"Done","commit_id":"559253e90f67c42405e9309e941239e8eab221cb"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"912b482435b5b7509912d279418246ab0df03335","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    def _delete_ipsec_policy(self, ipsec_policy_id):"},{"line_number":77,"context_line":"        # Deletes an ike policy if it exists"},{"line_number":78,"context_line":"        try:"},{"line_number":79,"context_line":"            resp, _ \u003d self.client.delete_ipsecpolicy(ipsec_policy_id)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        except exceptions.NotFound:"},{"line_number":82,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":31,"id":"1ae5cdf2_6f109d59","line":79,"updated":"2014-06-04 07:02:39.000000000","message":"unused variable \"resp\", may be would be better \n\nself.client.delete_ipsecpolicy(ipsec_policy_id)\n\ninstead\n\nresp, _ \u003d self.client.delete_ipsecpolicy(ipsec_policy_id)\n\n?","commit_id":"f20c3c36e8609fc9682b46e23c6c19476f9e8562"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9ac555285aed6ed2bc9670c7f42a3041e151a61d","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        resp, _ \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":230,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":231,"context_line":"        self.assertRaises(exceptions.NotFound,"},{"line_number":232,"context_line":"                          self.client.delete_ipsecpolicy, ipsecpolicy[\u0027id\u0027])"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":235,"context_line":"    def test_show_ipsec_policy(self):"}],"source_content_type":"text/x-python","patch_set":33,"id":"1ae5cdf2_1f8a03bf","line":232,"updated":"2014-06-11 07:25:41.000000000","message":"I don\u0027t prefer to add assertRaises() to positive test files because the method seems negative test. In compute api tests, there is wait_for_server_termination() for verify server termination and we are avoiding to use assertRaises() in positive test files with the method.\n\nThere is already one assertRaises() call in network api test, but I\u0027m not sure this is right direction.","commit_id":"df3fac41711d40edb0c4684962664bf16227ea98"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"4e645f19ed6c9073313fd77f89a23e538106742c","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        resp, _ \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":230,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":231,"context_line":"        self.assertRaises(exceptions.NotFound,"},{"line_number":232,"context_line":"                          self.client.delete_ipsecpolicy, ipsecpolicy[\u0027id\u0027])"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":235,"context_line":"    def test_show_ipsec_policy(self):"}],"source_content_type":"text/x-python","patch_set":33,"id":"1ae5cdf2_86ade2eb","line":232,"in_reply_to":"1ae5cdf2_1f8a03bf","updated":"2014-06-11 14:01:58.000000000","message":"I recommended the usage of AssertRaises. But I get your point. I find the pattern \u0027self.assertRaises(exceptions.NotFound\u0027 concise and straightforward (pythonic) to check for a resource deletion.\n\nI understand the \"negative\" point you raised, but it seems a bit  philosophical to me.","commit_id":"df3fac41711d40edb0c4684962664bf16227ea98"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"24acd6be0db259e4e5d4bc71766845ed0698ec01","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        resp, _ \u003d self.client.delete_ipsecpolicy(ipsecpolicy[\u0027id\u0027])"},{"line_number":230,"context_line":"        self.assertEqual(\u0027204\u0027, resp[\u0027status\u0027])"},{"line_number":231,"context_line":"        self.assertRaises(exceptions.NotFound,"},{"line_number":232,"context_line":"                          self.client.delete_ipsecpolicy, ipsecpolicy[\u0027id\u0027])"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":235,"context_line":"    def test_show_ipsec_policy(self):"}],"source_content_type":"text/x-python","patch_set":33,"id":"1ae5cdf2_d2923656","line":232,"in_reply_to":"1ae5cdf2_86ade2eb","updated":"2014-06-11 21:09:36.000000000","message":"I don\u0027t think this is philosophical but am not sure which is right. assertRaises and wait_for_termination are not the same. The former is checking the response of doing another delete where the latter is checking the response of a get.","commit_id":"df3fac41711d40edb0c4684962664bf16227ea98"}],"tempest/services/network/json/network_client.py":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"3bf08b676a1f9e87bdc989dc8de2cdb211b71ec1","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        body \u003d json.loads(body)"},{"line_number":290,"context_line":"        return resp, body"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def create_ipsecpolicy(self, name, **kwargs):"},{"line_number":293,"context_line":"        post_body \u003d {"},{"line_number":294,"context_line":"            \"ipsecpolicy\": {"},{"line_number":295,"context_line":"                \"name\": name,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAWH%2F%2BXXg%3D","line":292,"updated":"2014-03-27 11:01:18.000000000","message":"Why can not you use _creater from network_client_base? And if you can\u0027t use why do you create it only for json?","commit_id":"21316e476986f33ce02e193b643a6bf07d6afc26"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"b13f36acb6c575131963bfe1a32feab137db2e9b","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        body \u003d json.loads(body)"},{"line_number":290,"context_line":"        return resp, body"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def create_ipsecpolicy(self, name, **kwargs):"},{"line_number":293,"context_line":"        post_body \u003d {"},{"line_number":294,"context_line":"            \"ipsecpolicy\": {"},{"line_number":295,"context_line":"                \"name\": name,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAWH%2F%2BXJA%3D","line":292,"in_reply_to":"AAAAWH%2F%2BXKk%3D","updated":"2014-03-27 11:44:19.000000000","message":"Thanks :) I hope that this will work :)","commit_id":"21316e476986f33ce02e193b643a6bf07d6afc26"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"653ccec894312d8a4a05387a04e2adef5e75d8cf","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        body \u003d json.loads(body)"},{"line_number":290,"context_line":"        return resp, body"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def create_ipsecpolicy(self, name, **kwargs):"},{"line_number":293,"context_line":"        post_body \u003d {"},{"line_number":294,"context_line":"            \"ipsecpolicy\": {"},{"line_number":295,"context_line":"                \"name\": name,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAWH%2F%2BXKk%3D","line":292,"in_reply_to":"AAAAWH%2F%2BXPM%3D","updated":"2014-03-27 11:29:27.000000000","message":"Ok I will try/check with base client and will give next patch as of that :)","commit_id":"21316e476986f33ce02e193b643a6bf07d6afc26"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"eb089bc4dba9234a8f40524bf808ca44a1e2cf55","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        body \u003d json.loads(body)"},{"line_number":290,"context_line":"        return resp, body"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def create_ipsecpolicy(self, name, **kwargs):"},{"line_number":293,"context_line":"        post_body \u003d {"},{"line_number":294,"context_line":"            \"ipsecpolicy\": {"},{"line_number":295,"context_line":"                \"name\": name,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAWH%2F%2BXPM%3D","line":292,"in_reply_to":"AAAAWH%2F%2BXTg%3D","updated":"2014-03-27 11:23:45.000000000","message":"Yes, but is used for creation subnets, pools, members, floating ips that also have some required parameters. It was done to make code more clear without duplication for json/xml. So now as I understand in json/xml network_clients should be such functions that have different structure and can\u0027t be presented from _creater.","commit_id":"21316e476986f33ce02e193b643a6bf07d6afc26"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"0ed9569db6f642b658915bf531e01e3d4b64c386","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        body \u003d json.loads(body)"},{"line_number":290,"context_line":"        return resp, body"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def create_ipsecpolicy(self, name, **kwargs):"},{"line_number":293,"context_line":"        post_body \u003d {"},{"line_number":294,"context_line":"            \"ipsecpolicy\": {"},{"line_number":295,"context_line":"                \"name\": name,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAWH%2F%2BXTg%3D","line":292,"in_reply_to":"AAAAWH%2F%2BXXg%3D","updated":"2014-03-27 11:09:54.000000000","message":"_creater from network_client_base is defined as - (**kwargs). which mean no required parameter.\nBut in case of IPSecpolicy create name is required parameter.\nSo client method for this is kept separate.\nIf it is not like this ??","commit_id":"21316e476986f33ce02e193b643a6bf07d6afc26"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"858d45bbebf236fabad8674df52b5e4310861604","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        body \u003d json.loads(body)"},{"line_number":270,"context_line":"        return resp, body"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    def create_ipsecpolicy(self, name, **kwargs):"},{"line_number":273,"context_line":"        post_body \u003d {"},{"line_number":274,"context_line":"            \"ipsecpolicy\": {"},{"line_number":275,"context_line":"                \"name\": name,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAWH%2F9ogw%3D","line":272,"updated":"2014-04-03 07:56:36.000000000","message":"How does this work for xml? Why don\u0027t you add create_ipsecpolicy to xml network_client? If this works for xml, do you really need to create this to json? Explain me this, please.","commit_id":"7297d6d2f40dac45736a9acddf415a94ce7855fa"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"1b4e1c656a2fdc0cca4529cdd49ff814ad0fd0a9","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        body \u003d json.loads(body)"},{"line_number":270,"context_line":"        return resp, body"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    def create_ipsecpolicy(self, name, **kwargs):"},{"line_number":273,"context_line":"        post_body \u003d {"},{"line_number":274,"context_line":"            \"ipsecpolicy\": {"},{"line_number":275,"context_line":"                \"name\": name,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAWH%2F9n2U%3D","line":272,"in_reply_to":"AAAAWH%2F9oEU%3D","updated":"2014-04-03 09:39:22.000000000","message":"Yes, I see now. Thanks and sorry for misunderstanding.","commit_id":"7297d6d2f40dac45736a9acddf415a94ce7855fa"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"59834c31e73def4f7746a65840da0d58e33d94d0","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        body \u003d json.loads(body)"},{"line_number":270,"context_line":"        return resp, body"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    def create_ipsecpolicy(self, name, **kwargs):"},{"line_number":273,"context_line":"        post_body \u003d {"},{"line_number":274,"context_line":"            \"ipsecpolicy\": {"},{"line_number":275,"context_line":"                \"name\": name,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAWH%2F9oEU%3D","line":272,"in_reply_to":"AAAAWH%2F9ogw%3D","updated":"2014-04-03 09:12:23.000000000","message":"It will not work for xml.\nFor xml we have to write new create method in xml client.\nNow I dont know exact body format for xml request so I will put that later when xml body format met.","commit_id":"7297d6d2f40dac45736a9acddf415a94ce7855fa"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"3aebcebf25170d28cf3b6f98d89184e5ec41dfed","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        resp, body \u003d self.post(uri, body)"},{"line_number":283,"context_line":"        body \u003d json.loads(body)"},{"line_number":284,"context_line":"        return resp, body"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def update_extra_routes(self, router_id, nexthop, destination):"},{"line_number":287,"context_line":"        uri \u003d \u0027%s/routers/%s\u0027 % (self.uri_prefix, router_id)"},{"line_number":288,"context_line":"        put_body \u003d {"}],"source_content_type":"text/x-python","patch_set":25,"id":"9ad9bd40_8c895d77","line":285,"updated":"2014-05-07 07:12:27.000000000","message":"I still doubt that this changes are necessary. Take a look at this cleanUp change request https://review.openstack.org/88082.","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"1612b76dfdf8d89fd491c07bcd5a2f4731771e7b","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        resp, body \u003d self.post(uri, body)"},{"line_number":283,"context_line":"        body \u003d json.loads(body)"},{"line_number":284,"context_line":"        return resp, body"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def update_extra_routes(self, router_id, nexthop, destination):"},{"line_number":287,"context_line":"        uri \u003d \u0027%s/routers/%s\u0027 % (self.uri_prefix, router_id)"},{"line_number":288,"context_line":"        put_body \u003d {"}],"source_content_type":"text/x-python","patch_set":25,"id":"5adbc538_745e40eb","line":285,"in_reply_to":"9ad9bd40_8c895d77","updated":"2014-05-26 08:54:06.000000000","message":"Mh Raies could you have a look at this comment ?","commit_id":"256220a3ce49bae49776a2088c10d03bbf92d61f"}]}
