)]}'
{"placement/tests/functional/db/test_allocation_candidates.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2de13bdd12ca3a12c433dbe90692b548a5dfe989","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        }"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # Run it!"},{"line_number":176,"context_line":"        res \u003d rp_obj._get_provider_ids_matching(self.ctx, resources, {}, {})"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        # We should get all the incl_* RPs"},{"line_number":179,"context_line":"        expected \u003d [incl_biginv_noalloc, incl_extra_full]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_62a49c07","side":"PARENT","line":176,"range":{"start_line":176,"start_character":68,"end_line":176,"end_character":75},"updated":"2018-09-08 15:34:22.000000000","message":"...namely, I would change this to \"required_traits\u003d{}, forbidden_traits\u003d{}\"...","commit_id":"ef4e680e2d4bf6942addb16f417de0633765f75e"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2de13bdd12ca3a12c433dbe90692b548a5dfe989","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        res \u003d rp_obj._get_provider_ids_matching("},{"line_number":226,"context_line":"            self.ctx, resources, {},"},{"line_number":227,"context_line":"            {trait_two.name: trait_two.id,"},{"line_number":228,"context_line":"             trait_three.name: trait_three.id}, member_of\u003d[[uuids.agg1]])"},{"line_number":229,"context_line":"        self.assertEqual({(rp1.id, rp1.id)}, set(res))"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def test_get_provider_ids_having_all_traits(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_a2871461","side":"PARENT","line":228,"updated":"2018-09-08 15:34:22.000000000","message":"...and this to be \"required_traits\u003d{}, forbidden_traits\u003dforbid_traits\".\nI personally like the idea to define the \"forbid_traits\" out of this line as Jay suggested.","commit_id":"ef4e680e2d4bf6942addb16f417de0633765f75e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"28e6c2dd0aeff20c1cf9da31cd98132c5411164f","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        tb.add_inventory(rp3, fields.ResourceClass.VCPU, 64)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        resources \u003d {"},{"line_number":224,"context_line":"            fields.ResourceClass.STANDARD.index(fields.ResourceClass.VCPU): 4}"},{"line_number":225,"context_line":"        res \u003d rp_obj._get_provider_ids_matching("},{"line_number":226,"context_line":"            self.ctx, resources,"},{"line_number":227,"context_line":"            forbidden_traits\u003d{trait_two.name: trait_two.id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_5095ad30","line":224,"updated":"2018-09-08 01:15:49.000000000","message":"do you see here how there is a variable named resources and that that variable is passed to the function below?\n\nDo this:\n\n forbid_traits \u003d {trait_two.name: trait_two.id,\n                  trait_three.name: trait_three.id}\n\n rp_obj._get_provider_ids_matching(\n        self.ctx, resources, forbid_traits, member_of\u003d[[uuids.agg1]])\n\nand boom, you get the benefits of readability and better style in the functional tests. And no reason to change the arguments to named args for no real reason.","commit_id":"2f2571c4ef5db9534e991963c4d94dba9c2a0fbe"}]}
