)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"b7992e8a0123635e9ec6066614b6753a0897ff4d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add read-only tests for cephx access rules"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the Ocata cycle the abiilty to create read-only rules for"},{"line_number":10,"context_line":"cephx-backed access rules was added but there were no functional tests"},{"line_number":11,"context_line":"to exercise this feature. This patchset adds a new test to explicitly"},{"line_number":12,"context_line":"test the read-only cephx rules."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ffe62b97_ee699d24","line":9,"range":{"start_line":9,"start_character":23,"end_line":9,"end_character":30},"updated":"2017-03-30 02:00:08.000000000","message":"nit: s/abiilty/ability","commit_id":"6ea6726f63e69536d1d7f15b4947013c31e8682e"},{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"9dcacc8538bd840828e233a2d3852b0dd09fd1c9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add read-only tests for cephx access rules"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the Ocata cycle the ability to create read-only rules for"},{"line_number":10,"context_line":"cephx-backed access rules was added but there were no functional tests"},{"line_number":11,"context_line":"to exercise this feature. This patchset adds new parameters to the"},{"line_number":12,"context_line":"existing cephx access rule test to also test read-only rules."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dfeb2761_5d3ed829","line":9,"updated":"2017-03-31 12:15:07.000000000","message":"s/Ocata/Newton/\n\nhttps://github.com/openstack/manila/commit/0f596c55df0d6c7a404d22013515748bff516707#diff-285f2e7252d00f5aec5d32b143e6d2dbR117","commit_id":"513957927f354db8239466cb8d0d66ccb3aa347b"},{"author":{"_account_id":17780,"name":"Dustin Schoenbrun","email":"dschoenb@redhat.com","username":"dschoenb"},"change_message_id":"deeba59241301159efc9266ee749623e1f80f00f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add read-only tests for cephx access rules"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the Ocata cycle the ability to create read-only rules for"},{"line_number":10,"context_line":"cephx-backed access rules was added but there were no functional tests"},{"line_number":11,"context_line":"to exercise this feature. This patchset adds new parameters to the"},{"line_number":12,"context_line":"existing cephx access rule test to also test read-only rules."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dfeb2761_00d8e450","line":9,"in_reply_to":"dfeb2761_5d3ed829","updated":"2017-03-31 12:59:26.000000000","message":"Oops, fixed in the latest patchset.","commit_id":"513957927f354db8239466cb8d0d66ccb3aa347b"}],"manila_tempest_tests/tests/api/test_rules.py":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"b50194902baa738bf76ed20359635dd062bc7a29","unresolved":false,"context_lines":[{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":443,"context_line":"    @ddt.data(*itertools.product("},{"line_number":444,"context_line":"        set([\u00272.13\u0027, \u00272.27\u0027, \u00272.28\u0027, LATEST_MICROVERSION]),"},{"line_number":445,"context_line":"        (\"alice\", \"alice_bob\", \"alice bob\")))"},{"line_number":446,"context_line":"    @ddt.unpack"},{"line_number":447,"context_line":"    def test_create_delete_ro_cephx_rule(self, version, access_to):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_89d56b1e","line":444,"range":{"start_line":444,"start_character":13,"end_line":444,"end_character":34},"updated":"2017-03-30 02:28:23.000000000","message":"\"In the Ocata cycle the ability to create read-only rules\"\n\nIn the 2.13 version, cephx driver can not support read-only rules. please see the following links:\nhttps://github.com/openstack/manila/blob/stable/mitaka/manila/api/openstack/api_version_request.py#L62\nhttps://github.com/openstack/manila/blob/stable/mitaka/manila/share/drivers/cephfs/cephfs_native.py#L211","commit_id":"6ea6726f63e69536d1d7f15b4947013c31e8682e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"78e4a4c0e592f7dd4bc3fa69e422becb777c78cc","unresolved":false,"context_lines":[{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":443,"context_line":"    @ddt.data(*itertools.product("},{"line_number":444,"context_line":"        set([\u00272.13\u0027, \u00272.27\u0027, \u00272.28\u0027, LATEST_MICROVERSION]),"},{"line_number":445,"context_line":"        (\"alice\", \"alice_bob\", \"alice bob\")))"},{"line_number":446,"context_line":"    @ddt.unpack"},{"line_number":447,"context_line":"    def test_create_delete_ro_cephx_rule(self, version, access_to):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfeb2761_29851fae","line":444,"range":{"start_line":444,"start_character":13,"end_line":444,"end_character":34},"in_reply_to":"ffe62b97_56c48692","updated":"2017-03-31 07:59:43.000000000","message":"I thought cephx driver can not support read-only rules in 2.13 version. so maybe it will return false when we run create_access_rule. But 2.13 version just control the API, not control driver code. so It is OK. You don\u0027t need to do anything change.","commit_id":"6ea6726f63e69536d1d7f15b4947013c31e8682e"},{"author":{"_account_id":17780,"name":"Dustin Schoenbrun","email":"dschoenb@redhat.com","username":"dschoenb"},"change_message_id":"a88ac36e83ab281e04602b9adf90d1880c53badd","unresolved":false,"context_lines":[{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":443,"context_line":"    @ddt.data(*itertools.product("},{"line_number":444,"context_line":"        set([\u00272.13\u0027, \u00272.27\u0027, \u00272.28\u0027, LATEST_MICROVERSION]),"},{"line_number":445,"context_line":"        (\"alice\", \"alice_bob\", \"alice bob\")))"},{"line_number":446,"context_line":"    @ddt.unpack"},{"line_number":447,"context_line":"    def test_create_delete_ro_cephx_rule(self, version, access_to):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_56c48692","line":444,"range":{"start_line":444,"start_character":13,"end_line":444,"end_character":34},"in_reply_to":"ffe62b97_89d56b1e","updated":"2017-03-30 14:53:49.000000000","message":"I don\u0027t quite understand what you\u0027re asking for here. The links are to Mitaka stable code, but these are targeting Pike and Ocata (and are passing in my environment). Would you mind clarifying? Thanks!","commit_id":"6ea6726f63e69536d1d7f15b4947013c31e8682e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"b50194902baa738bf76ed20359635dd062bc7a29","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        # Provide access to a client identified by a cephx auth id."},{"line_number":420,"context_line":"        cls.access_to \u003d \"bob\""},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":423,"context_line":"    @ddt.data(*itertools.product("},{"line_number":424,"context_line":"        set([\u00272.13\u0027, \u00272.27\u0027, \u00272.28\u0027, LATEST_MICROVERSION]),"},{"line_number":425,"context_line":"        (\"alice\", \"alice_bob\", \"alice bob\")))"},{"line_number":426,"context_line":"    @ddt.unpack"},{"line_number":427,"context_line":"    def test_create_delete_cephx_rule(self, version, access_to):"},{"line_number":428,"context_line":"        rule \u003d self.shares_v2_client.create_access_rule("},{"line_number":429,"context_line":"            self.share[\"id\"], self.access_type, access_to, version\u003dversion)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        self.assertEqual(\u0027rw\u0027, rule[\u0027access_level\u0027])"},{"line_number":432,"context_line":"        for key in (\u0027deleted\u0027, \u0027deleted_at\u0027, \u0027instance_mappings\u0027):"},{"line_number":433,"context_line":"            self.assertNotIn(key, rule.keys())"},{"line_number":434,"context_line":"        self.shares_v2_client.wait_for_access_rule_status("},{"line_number":435,"context_line":"            self.share[\"id\"], rule[\"id\"], \"active\")"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"        self.shares_v2_client.delete_access_rule("},{"line_number":438,"context_line":"            self.share[\"id\"], rule[\"id\"], version\u003dversion)"},{"line_number":439,"context_line":"        self.shares_v2_client.wait_for_resource_deletion("},{"line_number":440,"context_line":"            rule_id\u003drule[\"id\"], share_id\u003dself.share[\u0027id\u0027])"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":443,"context_line":"    @ddt.data(*itertools.product("},{"line_number":444,"context_line":"        set([\u00272.13\u0027, \u00272.27\u0027, \u00272.28\u0027, LATEST_MICROVERSION]),"},{"line_number":445,"context_line":"        (\"alice\", \"alice_bob\", \"alice bob\")))"},{"line_number":446,"context_line":"    @ddt.unpack"},{"line_number":447,"context_line":"    def test_create_delete_ro_cephx_rule(self, version, access_to):"},{"line_number":448,"context_line":"        # Create a read-only access rule"},{"line_number":449,"context_line":"        rule \u003d self.shares_v2_client.create_access_rule("},{"line_number":450,"context_line":"            self.share[\"id\"], self.access_type, access_to, version\u003dversion,"},{"line_number":451,"context_line":"            access_level\u003d\u0027ro\u0027)"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        # Make sure the keys are correct and that the access rule is active"},{"line_number":454,"context_line":"        self.assertEqual(\u0027ro\u0027, rule[\u0027access_level\u0027])"},{"line_number":455,"context_line":"        for key in (\u0027deleted\u0027, \u0027deleted_at\u0027, \u0027instance_mappings\u0027):"},{"line_number":456,"context_line":"            self.assertNotIn(key, rule.keys())"},{"line_number":457,"context_line":"        self.shares_v2_client.wait_for_access_rule_status("},{"line_number":458,"context_line":"            self.share[\"id\"], rule[\"id\"], \"active\")"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        # Delete the access rule and make sure it is deleted successfully"},{"line_number":461,"context_line":"        self.shares_v2_client.delete_access_rule("},{"line_number":462,"context_line":"            self.share[\"id\"], rule[\"id\"], version\u003dversion)"},{"line_number":463,"context_line":"        self.shares_v2_client.wait_for_resource_deletion("},{"line_number":464,"context_line":"            rule_id\u003drule[\"id\"], share_id\u003dself.share[\u0027id\u0027])"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"@ddt.ddt"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_ee73dde5","line":464,"range":{"start_line":422,"start_character":2,"end_line":464,"end_character":58},"updated":"2017-03-30 02:28:23.000000000","message":"How about just add access_level parameter in test.\n\n\n@tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)\n    @ddt.data(*itertools.product(\n        set([\u00272.13\u0027, \u00272.27\u0027, \u00272.28\u0027, LATEST_MICROVERSION]),\n        (\"alice\", \"alice_bob\", \"alice )，\n        (\u0027rw\u0027, \u0027ro\u0027)))\n    @ddt.unpack\n    def test_create_delete_cephx_rule(self, version, access_to, access_level):\n        rule \u003d self.shares_v2_client.create_access_rule(\n            self.share[\"id\"], self.access_type, access_to, version\u003dversion, access_level\u003daccess_level)\n\n        self.assertEqual(access_level, rule[\u0027access_level\u0027])\n        ...","commit_id":"6ea6726f63e69536d1d7f15b4947013c31e8682e"},{"author":{"_account_id":17780,"name":"Dustin Schoenbrun","email":"dschoenb@redhat.com","username":"dschoenb"},"change_message_id":"a88ac36e83ab281e04602b9adf90d1880c53badd","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        # Provide access to a client identified by a cephx auth id."},{"line_number":420,"context_line":"        cls.access_to \u003d \"bob\""},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":423,"context_line":"    @ddt.data(*itertools.product("},{"line_number":424,"context_line":"        set([\u00272.13\u0027, \u00272.27\u0027, \u00272.28\u0027, LATEST_MICROVERSION]),"},{"line_number":425,"context_line":"        (\"alice\", \"alice_bob\", \"alice bob\")))"},{"line_number":426,"context_line":"    @ddt.unpack"},{"line_number":427,"context_line":"    def test_create_delete_cephx_rule(self, version, access_to):"},{"line_number":428,"context_line":"        rule \u003d self.shares_v2_client.create_access_rule("},{"line_number":429,"context_line":"            self.share[\"id\"], self.access_type, access_to, version\u003dversion)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        self.assertEqual(\u0027rw\u0027, rule[\u0027access_level\u0027])"},{"line_number":432,"context_line":"        for key in (\u0027deleted\u0027, \u0027deleted_at\u0027, \u0027instance_mappings\u0027):"},{"line_number":433,"context_line":"            self.assertNotIn(key, rule.keys())"},{"line_number":434,"context_line":"        self.shares_v2_client.wait_for_access_rule_status("},{"line_number":435,"context_line":"            self.share[\"id\"], rule[\"id\"], \"active\")"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"        self.shares_v2_client.delete_access_rule("},{"line_number":438,"context_line":"            self.share[\"id\"], rule[\"id\"], version\u003dversion)"},{"line_number":439,"context_line":"        self.shares_v2_client.wait_for_resource_deletion("},{"line_number":440,"context_line":"            rule_id\u003drule[\"id\"], share_id\u003dself.share[\u0027id\u0027])"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":443,"context_line":"    @ddt.data(*itertools.product("},{"line_number":444,"context_line":"        set([\u00272.13\u0027, \u00272.27\u0027, \u00272.28\u0027, LATEST_MICROVERSION]),"},{"line_number":445,"context_line":"        (\"alice\", \"alice_bob\", \"alice bob\")))"},{"line_number":446,"context_line":"    @ddt.unpack"},{"line_number":447,"context_line":"    def test_create_delete_ro_cephx_rule(self, version, access_to):"},{"line_number":448,"context_line":"        # Create a read-only access rule"},{"line_number":449,"context_line":"        rule \u003d self.shares_v2_client.create_access_rule("},{"line_number":450,"context_line":"            self.share[\"id\"], self.access_type, access_to, version\u003dversion,"},{"line_number":451,"context_line":"            access_level\u003d\u0027ro\u0027)"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        # Make sure the keys are correct and that the access rule is active"},{"line_number":454,"context_line":"        self.assertEqual(\u0027ro\u0027, rule[\u0027access_level\u0027])"},{"line_number":455,"context_line":"        for key in (\u0027deleted\u0027, \u0027deleted_at\u0027, \u0027instance_mappings\u0027):"},{"line_number":456,"context_line":"            self.assertNotIn(key, rule.keys())"},{"line_number":457,"context_line":"        self.shares_v2_client.wait_for_access_rule_status("},{"line_number":458,"context_line":"            self.share[\"id\"], rule[\"id\"], \"active\")"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        # Delete the access rule and make sure it is deleted successfully"},{"line_number":461,"context_line":"        self.shares_v2_client.delete_access_rule("},{"line_number":462,"context_line":"            self.share[\"id\"], rule[\"id\"], version\u003dversion)"},{"line_number":463,"context_line":"        self.shares_v2_client.wait_for_resource_deletion("},{"line_number":464,"context_line":"            rule_id\u003drule[\"id\"], share_id\u003dself.share[\u0027id\u0027])"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"@ddt.ddt"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_3646a223","line":464,"range":{"start_line":422,"start_character":2,"end_line":464,"end_character":58},"in_reply_to":"ffe62b97_ee73dde5","updated":"2017-03-30 14:53:49.000000000","message":"That\u0027s a much cleaner and simpler way of doing this! I\u0027ll change the test above to also do read-only rules. Good catch!","commit_id":"6ea6726f63e69536d1d7f15b4947013c31e8682e"}]}
