)]}'
{"nova/tests/functional/integrated_helpers.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"116fe1c76fbd38ed69bbf13f5e23cabd3688e463","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        self.assertEqual(flavor[\u0027ram\u0027], allocation[\u0027MEMORY_MB\u0027])"},{"line_number":509,"context_line":"        self.assertEqual(flavor[\u0027disk\u0027], allocation[\u0027DISK_GB\u0027])"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"    def assertExtraSpecMatchesAllocation(self, extra_specs, allocation):"},{"line_number":512,"context_line":"        rc_count \u003d 0"},{"line_number":513,"context_line":"        for key, value in extra_specs.items():"},{"line_number":514,"context_line":"            if \u0027resources:\u0027 in key:"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f7c97a3_25f25f9c","line":511,"updated":"2018-07-31 08:29:37.000000000","message":"We need to expand this later to handle granular resource requests with both isolate and none policy but this is a good start.","commit_id":"32b864dba3a9e0c24f3052dea1df59d0a0ff1220"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"116fe1c76fbd38ed69bbf13f5e23cabd3688e463","unresolved":false,"context_lines":[{"line_number":552,"context_line":"        :param flavor: the flavor the instance will be booted with"},{"line_number":553,"context_line":"        :param source_hostname: the name of the host the instance will be"},{"line_number":554,"context_line":"                                booted on"},{"line_number":555,"context_line":"        :param child_provider_uuid: the child resource provider of the given"},{"line_number":556,"context_line":"                                    host, which would provide requested"},{"line_number":557,"context_line":"                                    resources in the flavor extra specs"},{"line_number":558,"context_line":"        :param alloc_rp_num: the number of resource providers on which"},{"line_number":559,"context_line":"                             the instance is expected to be allocated"},{"line_number":560,"context_line":"        :return: the API representation of the booted instance"},{"line_number":561,"context_line":"        \"\"\""},{"line_number":562,"context_line":"        server_req \u003d self._build_minimal_create_server_request("}],"source_content_type":"text/x-python","patch_set":19,"id":"5f7c97a3_e56a2716","line":559,"range":{"start_line":555,"start_character":0,"end_line":559,"end_character":69},"updated":"2018-07-31 08:29:37.000000000","message":"I think these two information is overlapping. As far as I understand if the child_provider_uuid is provided by the caller then the alloc_rp_num is always 2 and 1 otherwise. So We can simply remove the alloc_rp_num and just use the child_provider_uuid to see how many RP we expect.","commit_id":"32b864dba3a9e0c24f3052dea1df59d0a0ff1220"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"116fe1c76fbd38ed69bbf13f5e23cabd3688e463","unresolved":false,"context_lines":[{"line_number":596,"context_line":"        # Check that the server only allocates resource from the host it is"},{"line_number":597,"context_line":"        # booted on"},{"line_number":598,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":599,"context_line":"        self.assertEqual(alloc_rp_num, len(allocations),"},{"line_number":600,"context_line":"                         \u0027No allocation for the server on the host it \u0027"},{"line_number":601,"context_line":"                         \u0027is booted on\u0027)"},{"line_number":602,"context_line":"        allocation \u003d allocations[source_rp_uuid][\u0027resources\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f7c97a3_85c25301","line":599,"updated":"2018-07-31 08:29:37.000000000","message":"# we expect allocation on the root RP and on the child RP if defined.\nself.assertEqual(1 + int(bool(child_provider_uuid)), len(alloctions))","commit_id":"32b864dba3a9e0c24f3052dea1df59d0a0ff1220"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"760a32438e6f0ed105f3e2b4f7eacd4f0e88bae3","unresolved":false,"context_lines":[{"line_number":3171,"context_line":"            self.custom_resource_name,"},{"line_number":3172,"context_line":"            inventory)"},{"line_number":3173,"context_line":""},{"line_number":3174,"context_line":"        # Add trait for providers"},{"line_number":3175,"context_line":"        self.placement_api.put_misc_shares_via_aggregate_trait("},{"line_number":3176,"context_line":"            self.compute1_custom_provider_id)"},{"line_number":3177,"context_line":"        self.placement_api.put_misc_shares_via_aggregate_trait("},{"line_number":3178,"context_line":"            self.compute2_custom_provider_id)"},{"line_number":3179,"context_line":""},{"line_number":3180,"context_line":"        # Add the extra spec to flavor1 and flavor2:"},{"line_number":3181,"context_line":"        extra_specs \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_2718c373","line":3178,"range":{"start_line":3174,"start_character":8,"end_line":3178,"end_character":45},"updated":"2017-12-13 16:44:22.000000000","message":"If I\u0027m not mistaken, we don\u0027t need aggregate relationship in case of a nested resource, because of the parent-child relationship.","commit_id":"8802fd0b7f5b416d0af9ec9cc8ca096689d63cde"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b828b3c060d476299fa38fa4461e7e587b136e7b","unresolved":false,"context_lines":[{"line_number":3171,"context_line":"            self.custom_resource_name,"},{"line_number":3172,"context_line":"            inventory)"},{"line_number":3173,"context_line":""},{"line_number":3174,"context_line":"        # Add trait for providers"},{"line_number":3175,"context_line":"        self.placement_api.put_misc_shares_via_aggregate_trait("},{"line_number":3176,"context_line":"            self.compute1_custom_provider_id)"},{"line_number":3177,"context_line":"        self.placement_api.put_misc_shares_via_aggregate_trait("},{"line_number":3178,"context_line":"            self.compute2_custom_provider_id)"},{"line_number":3179,"context_line":""},{"line_number":3180,"context_line":"        # Add the extra spec to flavor1 and flavor2:"},{"line_number":3181,"context_line":"        extra_specs \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_f41d940f","line":3178,"range":{"start_line":3174,"start_character":8,"end_line":3178,"end_character":45},"in_reply_to":"df87a7cf_2718c373","updated":"2017-12-14 12:09:40.000000000","message":"Good point. +1","commit_id":"8802fd0b7f5b416d0af9ec9cc8ca096689d63cde"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4a83bfa445f3263f1a5d5cf5591d8a04b154076c","unresolved":false,"context_lines":[{"line_number":3171,"context_line":"            self.custom_resource_name,"},{"line_number":3172,"context_line":"            inventory)"},{"line_number":3173,"context_line":""},{"line_number":3174,"context_line":"        # Add trait for providers"},{"line_number":3175,"context_line":"        self.placement_api.put_misc_shares_via_aggregate_trait("},{"line_number":3176,"context_line":"            self.compute1_custom_provider_id)"},{"line_number":3177,"context_line":"        self.placement_api.put_misc_shares_via_aggregate_trait("},{"line_number":3178,"context_line":"            self.compute2_custom_provider_id)"},{"line_number":3179,"context_line":""},{"line_number":3180,"context_line":"        # Add the extra spec to flavor1 and flavor2:"},{"line_number":3181,"context_line":"        extra_specs \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_85acc2ed","line":3178,"range":{"start_line":3174,"start_character":8,"end_line":3178,"end_character":45},"in_reply_to":"df87a7cf_2718c373","updated":"2017-12-18 09:33:07.000000000","message":"Thanks, I removed the traits part","commit_id":"8802fd0b7f5b416d0af9ec9cc8ca096689d63cde"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"116fe1c76fbd38ed69bbf13f5e23cabd3688e463","unresolved":false,"context_lines":[{"line_number":4268,"context_line":"        flavors \u003d self.api.get_flavors()"},{"line_number":4269,"context_line":"        self.flavor1 \u003d flavors[0]"},{"line_number":4270,"context_line":""},{"line_number":4271,"context_line":"    def _dump_rps(self, rps):"},{"line_number":4272,"context_line":"        import pprint"},{"line_number":4273,"context_line":"        for rp in rps:"},{"line_number":4274,"context_line":"            pprint.pprint(rp)"},{"line_number":4275,"context_line":"            pprint.pprint(self.placement_api.get("},{"line_number":4276,"context_line":"                \u0027/resource_providers/%s/inventories\u0027 % rp[\u0027uuid\u0027],"},{"line_number":4277,"context_line":"                version\u003d\u00271.20\u0027).body)"},{"line_number":4278,"context_line":"            pprint.pprint(self.placement_api.get("},{"line_number":4279,"context_line":"                \u0027/resource_providers/%s/traits\u0027 % rp[\u0027uuid\u0027],"},{"line_number":4280,"context_line":"                version\u003d\u00271.20\u0027).body)"},{"line_number":4281,"context_line":"            print(\u0027-\u0027 * 40)"},{"line_number":4282,"context_line":""},{"line_number":4283,"context_line":"    def _dump_placement_tree(self, rp_uuid):"},{"line_number":4284,"context_line":"        # breadth-first walk of the tree"},{"line_number":4285,"context_line":"        rps_in_tree \u003d self.placement_api.get("},{"line_number":4286,"context_line":"            \u0027/resource_providers?in_tree\u003d%s\u0027 % rp_uuid,"},{"line_number":4287,"context_line":"            version\u003d\u00271.20\u0027).body[\u0027resource_providers\u0027]"},{"line_number":4288,"context_line":"        current_parent \u003d None"},{"line_number":4289,"context_line":"        while True:"},{"line_number":4290,"context_line":"            rps_at_level \u003d [rp for rp in rps_in_tree"},{"line_number":4291,"context_line":"                            if rp[\u0027parent_provider_uuid\u0027] \u003d\u003d current_parent]"},{"line_number":4292,"context_line":"            if rps_at_level:"},{"line_number":4293,"context_line":"                self._dump_rps(rps_at_level)"},{"line_number":4294,"context_line":"                print(\u0027\u003d\u0027 * 40)"},{"line_number":4295,"context_line":"                current_parent \u003d rps_at_level[0][\u0027uuid\u0027]"},{"line_number":4296,"context_line":"            else:"},{"line_number":4297,"context_line":"                break"},{"line_number":4298,"context_line":""},{"line_number":4299,"context_line":"    def test_boot_server(self):"},{"line_number":4300,"context_line":"        # Check that we have a nested tree"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f7c97a3_65e617b2","line":4297,"range":{"start_line":4271,"start_character":0,"end_line":4297,"end_character":21},"updated":"2018-07-31 08:29:37.000000000","message":"this is just troubleshooting so I will drop it in the next PS","commit_id":"32b864dba3a9e0c24f3052dea1df59d0a0ff1220"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"116fe1c76fbd38ed69bbf13f5e23cabd3688e463","unresolved":false,"context_lines":[{"line_number":4319,"context_line":"        self.flavor1 \u003d self.api.get_flavors()[0]"},{"line_number":4320,"context_line":""},{"line_number":4321,"context_line":"        # Now we use alloc_rp_num\u003d2 to validate that the booted instance has"},{"line_number":4322,"context_line":"        # two allocations both from the root rp and from the child rp."},{"line_number":4323,"context_line":"        server \u003d self._boot_and_check_allocations("},{"line_number":4324,"context_line":"            self.flavor1, \u0027host1\u0027,"},{"line_number":4325,"context_line":"            child_provider_uuid\u003dself.compute1_custom_provider_id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f7c97a3_a5050fc3","line":4322,"range":{"start_line":4322,"start_character":26,"end_line":4322,"end_character":30},"updated":"2018-07-31 08:29:37.000000000","message":"nit: one from the root rp and one from the child rp.","commit_id":"32b864dba3a9e0c24f3052dea1df59d0a0ff1220"}]}
