)]}'
{"placement/tests/unit/test_policy.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0441332452273a09cf456c9b064c30985b602857","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.conf \u003d self.useFixture(config_fixture.Config(CONF)).conf"},{"line_number":40,"context_line":"        self.ctxt \u003d context.RequestContext(user_id\u003d\u0027fake\u0027, project_id\u003d\u0027fake\u0027)"},{"line_number":41,"context_line":"        self.target \u003d {\u0027user_id\u0027: \u0027fake\u0027, \u0027project_id\u0027: \u0027fake\u0027}"},{"line_number":42,"context_line":"        CONF([], default_config_files\u003d[])"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_modified_policy_reloads(self):"},{"line_number":45,"context_line":"        \"\"\"Creates a temporary placement-policy.yaml file and tests"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_f993eb4d","line":42,"updated":"2018-09-04 12:13:09.000000000","message":"This seemed strange first but CONF implements __call__ to parse command line args. \n\nI also checked and the test fails without this.","commit_id":"efd255b86ce1c1cd78453d9d34e4997b0e13b555"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"00431bb2a6b14252bff2c7b87852fa0d63964434","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.conf \u003d self.useFixture(config_fixture.Config(CONF)).conf"},{"line_number":40,"context_line":"        self.ctxt \u003d context.RequestContext(user_id\u003d\u0027fake\u0027, project_id\u003d\u0027fake\u0027)"},{"line_number":41,"context_line":"        self.target \u003d {\u0027user_id\u0027: \u0027fake\u0027, \u0027project_id\u0027: \u0027fake\u0027}"},{"line_number":42,"context_line":"        CONF([], default_config_files\u003d[])"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_modified_policy_reloads(self):"},{"line_number":45,"context_line":"        \"\"\"Creates a temporary placement-policy.yaml file and tests"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4055184f","line":42,"in_reply_to":"3f79a3b5_2041fca6","updated":"2018-09-05 19:20:06.000000000","message":"See parse_args in nova/config.py","commit_id":"efd255b86ce1c1cd78453d9d34e4997b0e13b555"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88f7395e5ea2f4ca7f866b208a0e93488514c3ad","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.conf \u003d self.useFixture(config_fixture.Config(CONF)).conf"},{"line_number":40,"context_line":"        self.ctxt \u003d context.RequestContext(user_id\u003d\u0027fake\u0027, project_id\u003d\u0027fake\u0027)"},{"line_number":41,"context_line":"        self.target \u003d {\u0027user_id\u0027: \u0027fake\u0027, \u0027project_id\u0027: \u0027fake\u0027}"},{"line_number":42,"context_line":"        CONF([], default_config_files\u003d[])"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_modified_policy_reloads(self):"},{"line_number":45,"context_line":"        \"\"\"Creates a temporary placement-policy.yaml file and tests"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2041fca6","line":42,"in_reply_to":"3f79a3b5_f993eb4d","updated":"2018-09-05 19:09:04.000000000","message":"This was really confusing me as well.","commit_id":"efd255b86ce1c1cd78453d9d34e4997b0e13b555"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88f7395e5ea2f4ca7f866b208a0e93488514c3ad","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":"    def setUp(self):"},{"line_number":38,"context_line":"        super(PlacementPolicyTestCase, self).setUp()"},{"line_number":39,"context_line":"        self.conf \u003d self.useFixture(config_fixture.Config(CONF)).conf"},{"line_number":40,"context_line":"        self.ctxt \u003d context.RequestContext(user_id\u003d\u0027fake\u0027, project_id\u003d\u0027fake\u0027)"},{"line_number":41,"context_line":"        self.target \u003d {\u0027user_id\u0027: \u0027fake\u0027, \u0027project_id\u0027: \u0027fake\u0027}"},{"line_number":42,"context_line":"        CONF([], default_config_files\u003d[])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_00a88075","line":39,"range":{"start_line":39,"start_character":58,"end_line":39,"end_character":62},"updated":"2018-09-05 19:09:04.000000000","message":"This is redundant right?\n\nhttps://github.com/openstack/oslo.config/blob/master/oslo_config/fixture.py#L30","commit_id":"126bc023ecda1dd679a1a4c0784d0f773340e3a7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b663786923a924d6f394c41a0d266151771cb8b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":"    def setUp(self):"},{"line_number":38,"context_line":"        super(PlacementPolicyTestCase, self).setUp()"},{"line_number":39,"context_line":"        self.conf \u003d self.useFixture(config_fixture.Config(CONF)).conf"},{"line_number":40,"context_line":"        self.ctxt \u003d context.RequestContext(user_id\u003d\u0027fake\u0027, project_id\u003d\u0027fake\u0027)"},{"line_number":41,"context_line":"        self.target \u003d {\u0027user_id\u0027: \u0027fake\u0027, \u0027project_id\u0027: \u0027fake\u0027}"},{"line_number":42,"context_line":"        CONF([], default_config_files\u003d[])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_00e08096","line":39,"range":{"start_line":39,"start_character":58,"end_line":39,"end_character":62},"in_reply_to":"3f79a3b5_00a88075","updated":"2018-09-05 19:14:49.000000000","message":"Yes this can be removed, the tests pass without it, but that\u0027s a nit.","commit_id":"126bc023ecda1dd679a1a4c0784d0f773340e3a7"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"00431bb2a6b14252bff2c7b87852fa0d63964434","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":"    def setUp(self):"},{"line_number":38,"context_line":"        super(PlacementPolicyTestCase, self).setUp()"},{"line_number":39,"context_line":"        self.conf \u003d self.useFixture(config_fixture.Config(CONF)).conf"},{"line_number":40,"context_line":"        self.ctxt \u003d context.RequestContext(user_id\u003d\u0027fake\u0027, project_id\u003d\u0027fake\u0027)"},{"line_number":41,"context_line":"        self.target \u003d {\u0027user_id\u0027: \u0027fake\u0027, \u0027project_id\u0027: \u0027fake\u0027}"},{"line_number":42,"context_line":"        CONF([], default_config_files\u003d[])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_a0d18cce","line":39,"range":{"start_line":39,"start_character":58,"end_line":39,"end_character":62},"in_reply_to":"3f79a3b5_00a88075","updated":"2018-09-05 19:20:06.000000000","message":"Yes, but using global config like that gives me a sad, even though in this case it is exactly the same value. Where given the option I like to pass it.","commit_id":"126bc023ecda1dd679a1a4c0784d0f773340e3a7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88f7395e5ea2f4ca7f866b208a0e93488514c3ad","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.conf \u003d self.useFixture(config_fixture.Config(CONF)).conf"},{"line_number":40,"context_line":"        self.ctxt \u003d context.RequestContext(user_id\u003d\u0027fake\u0027, project_id\u003d\u0027fake\u0027)"},{"line_number":41,"context_line":"        self.target \u003d {\u0027user_id\u0027: \u0027fake\u0027, \u0027project_id\u0027: \u0027fake\u0027}"},{"line_number":42,"context_line":"        CONF([], default_config_files\u003d[])"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_modified_policy_reloads(self):"},{"line_number":45,"context_line":"        \"\"\"Creates a temporary placement-policy.yaml file and tests"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_e093044e","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":41},"updated":"2018-09-05 19:09:04.000000000","message":"I\u0027m assuming this is where \"We need to parse args before using the olso-based one.\" comes into play? Otherwise this looks weird and a comment is probably justified.\n\nAlso, this doesn\u0027t seem to be needed in the actual oslo config testing for the fixture itself?\n\nhttps://github.com/openstack/oslo.config/blob/master/oslo_config/tests/test_fixture.py#L26","commit_id":"126bc023ecda1dd679a1a4c0784d0f773340e3a7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b663786923a924d6f394c41a0d266151771cb8b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.conf \u003d self.useFixture(config_fixture.Config(CONF)).conf"},{"line_number":40,"context_line":"        self.ctxt \u003d context.RequestContext(user_id\u003d\u0027fake\u0027, project_id\u003d\u0027fake\u0027)"},{"line_number":41,"context_line":"        self.target \u003d {\u0027user_id\u0027: \u0027fake\u0027, \u0027project_id\u0027: \u0027fake\u0027}"},{"line_number":42,"context_line":"        CONF([], default_config_files\u003d[])"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_modified_policy_reloads(self):"},{"line_number":45,"context_line":"        \"\"\"Creates a temporary placement-policy.yaml file and tests"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_60005435","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":41},"in_reply_to":"3f79a3b5_e093044e","updated":"2018-09-05 19:14:49.000000000","message":"As gibi noted earlier, the test fails without this:\n\nplacement.tests.unit.test_policy.PlacementPolicyTestCase.test_modified_policy_reloads\n-------------------------------------------------------------------------------------\n\nCaptured traceback:\n~~~~~~~~~~~~~~~~~~~\n    Traceback (most recent call last):\n      File \"placement/tests/unit/test_policy.py\", line 58, in test_modified_policy_reloads\n        policy.authorize, self.ctxt, action, self.target)\n      File \"/home/osboxes/git/placement/.tox/py27/local/lib/python2.7/site-packages/testtools/testcase.py\", line 485, in assertRaises\n        self.assertThat(our_callable, matcher)\n      File \"/home/osboxes/git/placement/.tox/py27/local/lib/python2.7/site-packages/testtools/testcase.py\", line 496, in assertThat\n        mismatch_error \u003d self._matchHelper(matchee, matcher, message, verbose)\n      File \"/home/osboxes/git/placement/.tox/py27/local/lib/python2.7/site-packages/testtools/testcase.py\", line 547, in _matchHelper\n        mismatch \u003d matcher.match(matchee)\n      File \"/home/osboxes/git/placement/.tox/py27/local/lib/python2.7/site-packages/testtools/matchers/_exception.py\", line 108, in match\n        mismatch \u003d self.exception_matcher.match(exc_info)\n      File \"/home/osboxes/git/placement/.tox/py27/local/lib/python2.7/site-packages/testtools/matchers/_higherorder.py\", line 62, in match\n        mismatch \u003d matcher.match(matchee)\n      File \"/home/osboxes/git/placement/.tox/py27/local/lib/python2.7/site-packages/testtools/testcase.py\", line 475, in match\n        reraise(*matchee)\n      File \"/home/osboxes/git/placement/.tox/py27/local/lib/python2.7/site-packages/testtools/matchers/_exception.py\", line 101, in match\n        result \u003d matchee()\n      File \"/home/osboxes/git/placement/.tox/py27/local/lib/python2.7/site-packages/testtools/testcase.py\", line 1049, in __call__\n        return self._callable_object(*self._args, **self._kwargs)\n      File \"placement/policy.py\", line 80, in authorize\n        init()\n      File \"placement/policy.py\", line 48, in init\n        _ENFORCER_PLACEMENT.load_rules()\n      File \"/home/osboxes/git/placement/.tox/py27/local/lib/python2.7/site-packages/oslo_policy/policy.py\", line 555, in load_rules\n        self.policy_path \u003d self._get_policy_path(self.policy_file)\n      File \"/home/osboxes/git/placement/.tox/py27/local/lib/python2.7/site-packages/oslo_policy/policy.py\", line 785, in _get_policy_path\n        policy_path \u003d self.conf.find_file(path)\n      File \"/home/osboxes/git/placement/.tox/py27/local/lib/python2.7/site-packages/oslo_config/cfg.py\", line 2981, in find_file\n        raise NotInitializedError()\n    oslo_config.cfg.NotInitializedError: call expression on parser has not been invoked\n\nSo yeah I guess we need it.","commit_id":"126bc023ecda1dd679a1a4c0784d0f773340e3a7"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"00431bb2a6b14252bff2c7b87852fa0d63964434","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.conf \u003d self.useFixture(config_fixture.Config(CONF)).conf"},{"line_number":40,"context_line":"        self.ctxt \u003d context.RequestContext(user_id\u003d\u0027fake\u0027, project_id\u003d\u0027fake\u0027)"},{"line_number":41,"context_line":"        self.target \u003d {\u0027user_id\u0027: \u0027fake\u0027, \u0027project_id\u0027: \u0027fake\u0027}"},{"line_number":42,"context_line":"        CONF([], default_config_files\u003d[])"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_modified_policy_reloads(self):"},{"line_number":45,"context_line":"        \"\"\"Creates a temporary placement-policy.yaml file and tests"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_a0466c7a","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":41},"in_reply_to":"3f79a3b5_e093044e","updated":"2018-09-05 19:20:06.000000000","message":"Without that line the tests fail (the the parse_args being required error). In my experience, outside the nova context, this manner of initializing CONF is pretty normal.\n\nIn the fixture tests the use of \u0027get\u0027 works around some of the limitations we have here. Further down in the tests where \u0027get\u0027 is not used it works because the \u0027load_raw_values\u0027 fixture method calls __call__ on the conf if it hasn\u0027t already happened. (load_raw_values in oslo_config/fixture.py)\n\nSo: the gist is: I didn\u0027t add a comment because this (to me) is normal config handling, even under the covers in nova (see my comment in response to your first comment on this).\n\nHowever, it sounds like a comment would be good. What does it need to say?","commit_id":"126bc023ecda1dd679a1a4c0784d0f773340e3a7"}]}
