)]}'
{"nova/tests/unit/objects/test_objects.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4802e1673bb495203a8688408a4fee542bd89007","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"            return field._type._element_type._type._obj_name"},{"line_number":1269,"context_line":"        return None"},{"line_number":1270,"context_line":""},{"line_number":1271,"context_line":"    def _build_tree(self, tree, obj_class):"},{"line_number":1272,"context_line":"        obj_name \u003d obj_class.obj_name()"},{"line_number":1273,"context_line":"        if obj_name in tree:"},{"line_number":1274,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_46107b59","line":1271,"updated":"2015-07-01 14:44:10.000000000","message":"Also, since this isn\u0027t a tree anymore, could consider renaming this at some point to avoid confusion or an expectation that someone could recursively process the elements in the tree dict.","commit_id":"e4e16e9077b5e78f809c6c634153fa62a5facb16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c6c77fc18b6067bd03586de29b2a4f6cf3773a06","unresolved":false,"context_lines":[{"line_number":1274,"context_line":"            return"},{"line_number":1275,"context_line":""},{"line_number":1276,"context_line":"        obj_classes \u003d base.NovaObjectRegistry.obj_classes()"},{"line_number":1277,"context_line":"        for name, field in obj_class.fields.items():"},{"line_number":1278,"context_line":"            sub_obj_name \u003d self._get_object_field_name(field)"},{"line_number":1279,"context_line":"            if sub_obj_name:"},{"line_number":1280,"context_line":"                sub_obj_class \u003d obj_classes[sub_obj_name][0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_46e5dbd9","line":1277,"updated":"2015-07-01 14:40:19.000000000","message":"For the given object class, get it\u0027s fields and start looking for nested objects.","commit_id":"e4e16e9077b5e78f809c6c634153fa62a5facb16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c6c77fc18b6067bd03586de29b2a4f6cf3773a06","unresolved":false,"context_lines":[{"line_number":1276,"context_line":"        obj_classes \u003d base.NovaObjectRegistry.obj_classes()"},{"line_number":1277,"context_line":"        for name, field in obj_class.fields.items():"},{"line_number":1278,"context_line":"            sub_obj_name \u003d self._get_object_field_name(field)"},{"line_number":1279,"context_line":"            if sub_obj_name:"},{"line_number":1280,"context_line":"                sub_obj_class \u003d obj_classes[sub_obj_name][0]"},{"line_number":1281,"context_line":"                tree.setdefault(obj_name, {})"},{"line_number":1282,"context_line":"                tree[obj_name][sub_obj_name] \u003d sub_obj_class.VERSION"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_064273ae","line":1279,"updated":"2015-07-01 14:40:19.000000000","message":"We found a sub-object for obj_class, throw it in the mapping for the parent-child relationship mapping.","commit_id":"e4e16e9077b5e78f809c6c634153fa62a5facb16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c6c77fc18b6067bd03586de29b2a4f6cf3773a06","unresolved":false,"context_lines":[{"line_number":1278,"context_line":"            sub_obj_name \u003d self._get_object_field_name(field)"},{"line_number":1279,"context_line":"            if sub_obj_name:"},{"line_number":1280,"context_line":"                sub_obj_class \u003d obj_classes[sub_obj_name][0]"},{"line_number":1281,"context_line":"                tree.setdefault(obj_name, {})"},{"line_number":1282,"context_line":"                tree[obj_name][sub_obj_name] \u003d sub_obj_class.VERSION"},{"line_number":1283,"context_line":""},{"line_number":1284,"context_line":"    def test_relationships(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_460abb7a","line":1281,"updated":"2015-07-01 14:40:19.000000000","message":"nit: seems we could do this outside the for loop (different change)","commit_id":"e4e16e9077b5e78f809c6c634153fa62a5facb16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c6c77fc18b6067bd03586de29b2a4f6cf3773a06","unresolved":false,"context_lines":[{"line_number":1284,"context_line":"    def test_relationships(self):"},{"line_number":1285,"context_line":"        tree \u003d {}"},{"line_number":1286,"context_line":"        obj_classes \u003d base.NovaObjectRegistry.obj_classes()"},{"line_number":1287,"context_line":"        for obj_name in obj_classes.keys():"},{"line_number":1288,"context_line":"            self._build_tree(tree, obj_classes[obj_name][0])"},{"line_number":1289,"context_line":""},{"line_number":1290,"context_line":"        stored \u003d set([(x, str(y)) for x, y in object_relationships.items()])"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_e6a8af79","line":1287,"updated":"2015-07-01 14:40:19.000000000","message":"So here is our top level where we start building our mapping and we\u0027re going to process every object class in the registry.","commit_id":"e4e16e9077b5e78f809c6c634153fa62a5facb16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a38327e4f1cedcc85567e7847b83f7c2eba60757","unresolved":false,"context_lines":[{"line_number":1284,"context_line":"    def test_relationships(self):"},{"line_number":1285,"context_line":"        tree \u003d {}"},{"line_number":1286,"context_line":"        obj_classes \u003d base.NovaObjectRegistry.obj_classes()"},{"line_number":1287,"context_line":"        for obj_name in obj_classes.keys():"},{"line_number":1288,"context_line":"            self._build_tree(tree, obj_classes[obj_name][0])"},{"line_number":1289,"context_line":""},{"line_number":1290,"context_line":"        stored \u003d set([(x, str(y)) for x, y in object_relationships.items()])"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_86be8363","line":1287,"in_reply_to":"ba3cc151_e6a8af79","updated":"2015-07-01 14:41:54.000000000","message":"Technically since _build_tree isn\u0027t recursive anymore we don\u0027t actually even need it in it\u0027s own method anymore since nothing else is using it, we could just move it up into test_relationships.  But whatevs.","commit_id":"e4e16e9077b5e78f809c6c634153fa62a5facb16"}]}
