)]}'
{"nova/compute/api.py":[{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"c06db21f81425c807ac97f622fed366af93a4340","unresolved":false,"context_lines":[{"line_number":1320,"context_line":""},{"line_number":1321,"context_line":"        # NOTE(alaski): uuid should always be set here now.  If it is not"},{"line_number":1322,"context_line":"        # then the request spec for the instance will not be associated with"},{"line_number":1323,"context_line":"        # this uuid."},{"line_number":1324,"context_line":"        if not instance.obj_attr_is_set(\u0027uuid\u0027):"},{"line_number":1325,"context_line":"            # Generate the instance_uuid here so we can use it"},{"line_number":1326,"context_line":"            # for additional setup before creating the DB entry."}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_4724580c","line":1323,"range":{"start_line":1323,"start_character":0,"end_line":1323,"end_character":20},"updated":"2016-01-12 17:49:24.000000000","message":"As per comment above... Is there any code path where the uuid hasn\u0027t been set? I can\u0027t see one and create_db_entry_for_new_instance is only called in a couple of places. Maybe this code should just be removed.","commit_id":"f00abbc56a15b73bcb67cae90f0f278db6acf017"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"328581692dbc74ad4551861f0d2298358ef17a8e","unresolved":false,"context_lines":[{"line_number":1320,"context_line":""},{"line_number":1321,"context_line":"        # NOTE(alaski): uuid should always be set here now.  If it is not"},{"line_number":1322,"context_line":"        # then the request spec for the instance will not be associated with"},{"line_number":1323,"context_line":"        # this uuid."},{"line_number":1324,"context_line":"        if not instance.obj_attr_is_set(\u0027uuid\u0027):"},{"line_number":1325,"context_line":"            # Generate the instance_uuid here so we can use it"},{"line_number":1326,"context_line":"            # for additional setup before creating the DB entry."}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_910da440","line":1323,"range":{"start_line":1323,"start_character":0,"end_line":1323,"end_character":20},"in_reply_to":"da6ed579_4724580c","updated":"2016-01-12 22:04:57.000000000","message":"Yeah, I wanted to remove this but wimped out and just left the note.  It would probably be better to remove this and let a failure occur if it\u0027s not set at this point.","commit_id":"f00abbc56a15b73bcb67cae90f0f278db6acf017"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"af0e229edb644d3ffa5b28bc94f20087c2bdf94a","unresolved":false,"context_lines":[{"line_number":1320,"context_line":""},{"line_number":1321,"context_line":"        # NOTE(alaski): uuid should always be set here now.  If it is not"},{"line_number":1322,"context_line":"        # then the request spec for the instance will not be associated with"},{"line_number":1323,"context_line":"        # this uuid."},{"line_number":1324,"context_line":"        if not instance.obj_attr_is_set(\u0027uuid\u0027):"},{"line_number":1325,"context_line":"            # Generate the instance_uuid here so we can use it"},{"line_number":1326,"context_line":"            # for additional setup before creating the DB entry."}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_22a7a050","line":1323,"range":{"start_line":1323,"start_character":0,"end_line":1323,"end_character":20},"in_reply_to":"da6ed579_910da440","updated":"2016-01-13 14:16:18.000000000","message":"So apparently unit tests are where this is useful since they\u0027re passing in instances without uuids set.  I will fix those up.","commit_id":"f00abbc56a15b73bcb67cae90f0f278db6acf017"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a872b70943f8561adfea3fe644b27f907518e814","unresolved":false,"context_lines":[{"line_number":1307,"context_line":"                                      index, security_groups, instance_type):"},{"line_number":1308,"context_line":"        \"\"\"Build the beginning of a new instance.\"\"\""},{"line_number":1309,"context_line":""},{"line_number":1310,"context_line":"        if not instance.obj_attr_is_set(\u0027uuid\u0027):"},{"line_number":1311,"context_line":"            # Generate the instance_uuid here so we can use it"},{"line_number":1312,"context_line":"            # for additional setup before creating the DB entry."},{"line_number":1313,"context_line":"            instance.uuid \u003d str(uuid.uuid4())"}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_7f86c014","side":"PARENT","line":1310,"updated":"2016-01-18 10:00:25.000000000","message":"yeah this test was silly, thanks for removing it","commit_id":"73708bcd07e920e236f9adf8d327852dc561742f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0cd900a50f3625e2114cf5c9b547949c92d2b8a0","unresolved":false,"context_lines":[{"line_number":915,"context_line":"            for i in range(num_instances):"},{"line_number":916,"context_line":"                # Create a uuid for the instance so we can store the"},{"line_number":917,"context_line":"                # RequestSpec before the instance is created."},{"line_number":918,"context_line":"                instance_uuid \u003d str(uuid.uuid4())"},{"line_number":919,"context_line":"                # Store the RequestSpec that will be used for scheduling."},{"line_number":920,"context_line":"                req_spec \u003d objects.RequestSpec.from_components(context,"},{"line_number":921,"context_line":"                        instance_uuid, boot_meta, instance_type,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_8a754299","line":918,"range":{"start_line":918,"start_character":32,"end_line":918,"end_character":49},"updated":"2016-01-22 01:08:51.000000000","message":"It\u0027s probably better to use uuidutils.generate_uuid() here instead, though I see this is just being moved. If you use uuidutils, you can drop the import uuid from this file (I think)","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"a86ed9f60aec2e43c79bebc2182c2eab4d5a6e23","unresolved":false,"context_lines":[{"line_number":915,"context_line":"            for i in range(num_instances):"},{"line_number":916,"context_line":"                # Create a uuid for the instance so we can store the"},{"line_number":917,"context_line":"                # RequestSpec before the instance is created."},{"line_number":918,"context_line":"                instance_uuid \u003d str(uuid.uuid4())"},{"line_number":919,"context_line":"                # Store the RequestSpec that will be used for scheduling."},{"line_number":920,"context_line":"                req_spec \u003d objects.RequestSpec.from_components(context,"},{"line_number":921,"context_line":"                        instance_uuid, boot_meta, instance_type,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a5de9d1_8a1d8f75","line":918,"range":{"start_line":918,"start_character":32,"end_line":918,"end_character":49},"in_reply_to":"7a5de9d1_12a009f4","updated":"2016-01-27 19:15:16.000000000","message":"Thanks for checking with dims. I didn\u0027t know there had been talk of deprecation in the past. I\u0027m okay either way -- I had thought generate_uuid was being used as a way to stay consistent with how uuids are generated but usage seems all over the map.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1c5ccb9a89d4c71f7e4a614ad5da19029b863496","unresolved":false,"context_lines":[{"line_number":915,"context_line":"            for i in range(num_instances):"},{"line_number":916,"context_line":"                # Create a uuid for the instance so we can store the"},{"line_number":917,"context_line":"                # RequestSpec before the instance is created."},{"line_number":918,"context_line":"                instance_uuid \u003d str(uuid.uuid4())"},{"line_number":919,"context_line":"                # Store the RequestSpec that will be used for scheduling."},{"line_number":920,"context_line":"                req_spec \u003d objects.RequestSpec.from_components(context,"},{"line_number":921,"context_line":"                        instance_uuid, boot_meta, instance_type,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a5de9d1_12a009f4","line":918,"range":{"start_line":918,"start_character":32,"end_line":918,"end_character":49},"in_reply_to":"7a5de9d1_46e4873a","updated":"2016-01-27 14:06:53.000000000","message":"Okay, after discussing on IRC with dims, both are acceptable. Either you follow-up, or respin, or stay with that, I\u0027m fine.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"fd00689daf004ba83910bd4d1ab14d30d6e2457e","unresolved":false,"context_lines":[{"line_number":915,"context_line":"            for i in range(num_instances):"},{"line_number":916,"context_line":"                # Create a uuid for the instance so we can store the"},{"line_number":917,"context_line":"                # RequestSpec before the instance is created."},{"line_number":918,"context_line":"                instance_uuid \u003d str(uuid.uuid4())"},{"line_number":919,"context_line":"                # Store the RequestSpec that will be used for scheduling."},{"line_number":920,"context_line":"                req_spec \u003d objects.RequestSpec.from_components(context,"},{"line_number":921,"context_line":"                        instance_uuid, boot_meta, instance_type,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_d5fd446f","line":918,"range":{"start_line":918,"start_character":32,"end_line":918,"end_character":49},"in_reply_to":"9a68dd71_53c4475e","updated":"2016-01-27 09:19:02.000000000","message":"I just copied what was used below.  But if generate_uuid is still in active usage I\u0027m happy to switch to it.  I\u0027ll peek around and see what the general trend is.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2a6b19a62e13cd47ea292d623f0e0c36907a37","unresolved":false,"context_lines":[{"line_number":915,"context_line":"            for i in range(num_instances):"},{"line_number":916,"context_line":"                # Create a uuid for the instance so we can store the"},{"line_number":917,"context_line":"                # RequestSpec before the instance is created."},{"line_number":918,"context_line":"                instance_uuid \u003d str(uuid.uuid4())"},{"line_number":919,"context_line":"                # Store the RequestSpec that will be used for scheduling."},{"line_number":920,"context_line":"                req_spec \u003d objects.RequestSpec.from_components(context,"},{"line_number":921,"context_line":"                        instance_uuid, boot_meta, instance_type,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_53c4475e","line":918,"range":{"start_line":918,"start_character":32,"end_line":918,"end_character":49},"in_reply_to":"9a68dd71_8a754299","updated":"2016-01-26 10:51:04.000000000","message":"I don\u0027t exactly remember when, but I saw some concensus about no longer using uuidutils for generating an UUID but just do the above instead.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6e635f569cf7b27b855dec3c37c9ce25103b83b9","unresolved":false,"context_lines":[{"line_number":915,"context_line":"            for i in range(num_instances):"},{"line_number":916,"context_line":"                # Create a uuid for the instance so we can store the"},{"line_number":917,"context_line":"                # RequestSpec before the instance is created."},{"line_number":918,"context_line":"                instance_uuid \u003d str(uuid.uuid4())"},{"line_number":919,"context_line":"                # Store the RequestSpec that will be used for scheduling."},{"line_number":920,"context_line":"                req_spec \u003d objects.RequestSpec.from_components(context,"},{"line_number":921,"context_line":"                        instance_uuid, boot_meta, instance_type,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a5de9d1_46e4873a","line":918,"range":{"start_line":918,"start_character":32,"end_line":918,"end_character":49},"in_reply_to":"9a68dd71_d5fd446f","updated":"2016-01-27 13:12:41.000000000","message":"AFAIR, my opinion was coming from a very old thread where the Oslo team asked to stop using generate_uuid() for that kind of need but since the code is still in-tree, I wonder if the concensus changed in between.\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2013-November/018837.html","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"}],"nova/objects/request_spec.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f6bee5525677cde8d313ccad8ca2d6ae54507aa4","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        return filt_props"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    @classmethod"},{"line_number":320,"context_line":"    def from_components(cls, context, instance_uuid, image, flavor,"},{"line_number":321,"context_line":"            numa_topology, pci_requests, filter_properties, instance_group,"},{"line_number":322,"context_line":"            availability_zone):"},{"line_number":323,"context_line":"        \"\"\"Returns a new RequestSpec object hydrated by various components."}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_5d18b284","line":320,"updated":"2016-01-12 15:57:32.000000000","message":"I am fine with creating a new helper method, because the Spec object would be hydrated not at the same time, I just wonder if we should deprecate the older helper method (ie. from_legacy_dict) because mid-term all Spec objects would be populated by that helper.","commit_id":"f00abbc56a15b73bcb67cae90f0f278db6acf017"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"328581692dbc74ad4551861f0d2298358ef17a8e","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        return filt_props"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    @classmethod"},{"line_number":320,"context_line":"    def from_components(cls, context, instance_uuid, image, flavor,"},{"line_number":321,"context_line":"            numa_topology, pci_requests, filter_properties, instance_group,"},{"line_number":322,"context_line":"            availability_zone):"},{"line_number":323,"context_line":"        \"\"\"Returns a new RequestSpec object hydrated by various components."}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_918a84be","line":320,"in_reply_to":"da6ed579_5d18b284","updated":"2016-01-12 22:04:57.000000000","message":"It may be good to deprecate others.  Long term I think we can just have this one to create the spec_obj at boot time and then just pull it from the db after that.","commit_id":"f00abbc56a15b73bcb67cae90f0f278db6acf017"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f6bee5525677cde8d313ccad8ca2d6ae54507aa4","unresolved":false,"context_lines":[{"line_number":337,"context_line":"        :param instance_group: None or an instance group NovaObject"},{"line_number":338,"context_line":"        :param availability_zone: ???"},{"line_number":339,"context_line":"        \"\"\""},{"line_number":340,"context_line":"        req_spec \u003d cls(context)"},{"line_number":341,"context_line":"        req_spec.num_instances \u003d 1"},{"line_number":342,"context_line":"        req_spec.instance_uuid \u003d instance_uuid"},{"line_number":343,"context_line":"        req_spec.instance_group \u003d instance_group"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_1d6d5a04","line":340,"range":{"start_line":340,"start_character":8,"end_line":340,"end_character":16},"updated":"2016-01-12 15:57:32.000000000","message":"femtonit: I was trying to use the convention :\n\n- spec_obj : a RequestSpec object\n- req_spec : a legacy request_spec dict\n\nto avoid any confusion.\nThat said, like any convention, I have some exceptions so feel free to leave that.","commit_id":"f00abbc56a15b73bcb67cae90f0f278db6acf017"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"328581692dbc74ad4551861f0d2298358ef17a8e","unresolved":false,"context_lines":[{"line_number":337,"context_line":"        :param instance_group: None or an instance group NovaObject"},{"line_number":338,"context_line":"        :param availability_zone: ???"},{"line_number":339,"context_line":"        \"\"\""},{"line_number":340,"context_line":"        req_spec \u003d cls(context)"},{"line_number":341,"context_line":"        req_spec.num_instances \u003d 1"},{"line_number":342,"context_line":"        req_spec.instance_uuid \u003d instance_uuid"},{"line_number":343,"context_line":"        req_spec.instance_group \u003d instance_group"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_11bd3468","line":340,"range":{"start_line":340,"start_character":8,"end_line":340,"end_character":16},"in_reply_to":"da6ed579_1d6d5a04","updated":"2016-01-12 22:04:57.000000000","message":"Can do.","commit_id":"f00abbc56a15b73bcb67cae90f0f278db6acf017"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a872b70943f8561adfea3fe644b27f907518e814","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        return filt_props"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    @classmethod"},{"line_number":322,"context_line":"    def from_components(cls, context, instance_uuid, image, flavor,"},{"line_number":323,"context_line":"            numa_topology, pci_requests, filter_properties, instance_group,"},{"line_number":324,"context_line":"            availability_zone):"},{"line_number":325,"context_line":"        \"\"\"Returns a new RequestSpec object hydrated by various components."}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_5fe65ce9","line":322,"updated":"2016-01-18 10:00:25.000000000","message":"femtonit : given that you\u0027re hydrating the Spec far earlier than when we do today, you could deprecate the below from_legacy_dicts() by saying that people wanting to hydrate this object should use your own new method and the below one.","commit_id":"dc318fac198036aed2f6593933a65d46a38915b3"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2c3da35be9f83f80229d2a4c8a96027519906fcd","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    def from_primitives(cls, context, request_spec, filter_properties):"},{"line_number":185,"context_line":"        \"\"\"Returns a new RequestSpec object by hydrating it from legacy dicts."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        Deprecated.  A RequestSpec object is created early in the boot process"},{"line_number":188,"context_line":"        using the from_components method.  That object will either be passed to"},{"line_number":189,"context_line":"        places that require it, or it can be looked up with"},{"line_number":190,"context_line":"        get_by_instance_uuid."}],"source_content_type":"text/x-python","patch_set":9,"id":"ba63e191_5ef9aa4c","line":187,"updated":"2016-01-18 21:29:29.000000000","message":"Can we indicate when we can remove the method? Version 2.0 of the object?","commit_id":"30162132bdca198fbe00b5daf7a4e03774cb87eb"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"5480bdd31036ee39d109ccc7c818d7f7485a90bd","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    def from_primitives(cls, context, request_spec, filter_properties):"},{"line_number":185,"context_line":"        \"\"\"Returns a new RequestSpec object by hydrating it from legacy dicts."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        Deprecated.  A RequestSpec object is created early in the boot process"},{"line_number":188,"context_line":"        using the from_components method.  That object will either be passed to"},{"line_number":189,"context_line":"        places that require it, or it can be looked up with"},{"line_number":190,"context_line":"        get_by_instance_uuid."}],"source_content_type":"text/x-python","patch_set":9,"id":"ba63e191_7495ad3e","line":187,"in_reply_to":"ba63e191_5ef9aa4c","updated":"2016-01-18 22:15:16.000000000","message":"I can add that.  This isn\u0027t a remotable method so it\u0027s not tied to the object version.  We should be able to remove it as soon as there are no more callers.","commit_id":"30162132bdca198fbe00b5daf7a4e03774cb87eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2a6b19a62e13cd47ea292d623f0e0c36907a37","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        places that require it, or it can be looked up with"},{"line_number":190,"context_line":"        get_by_instance_uuid.  This method can be removed when there are no"},{"line_number":191,"context_line":"        longer any callers.  Because the method is not remotable it is not tied"},{"line_number":192,"context_line":"        to object versioning."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        That helper is not intended to leave the legacy dicts kept in the nova"},{"line_number":195,"context_line":"        codebase, but is rather just for giving a temporary solution for"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_46ba470c","line":192,"updated":"2016-01-26 10:51:04.000000000","message":"thanks for that docstring","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"}],"nova/test.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2a6b19a62e13cd47ea292d623f0e0c36907a37","unresolved":false,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        if self.USES_DB:"},{"line_number":212,"context_line":"            self.useFixture(nova_fixtures.Database())"},{"line_number":213,"context_line":"            self.useFixture(nova_fixtures.Database(database\u003d\u0027api\u0027))"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        # NOTE(blk-u): WarningsFixture must be after the Database fixture"},{"line_number":216,"context_line":"        # because sqlalchemy-migrate messes with the warnings filters."}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_66f8abc5","line":213,"updated":"2016-01-26 10:51:04.000000000","message":"meh, good catch. It could technically have been in a separate patch, but I\u0027m happy to merge it by the same time since it\u0027s really one of the first times that we\u0027re mocking the API DB.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f57968fc2774fad2d116f57803f8c2a720fceafd","unresolved":false,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        if self.USES_DB:"},{"line_number":212,"context_line":"            self.useFixture(nova_fixtures.Database())"},{"line_number":213,"context_line":"            self.useFixture(nova_fixtures.Database(database\u003d\u0027api\u0027))"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        # NOTE(blk-u): WarningsFixture must be after the Database fixture"},{"line_number":216,"context_line":"        # because sqlalchemy-migrate messes with the warnings filters."}],"source_content_type":"text/x-python","patch_set":10,"id":"7a5de9d1_6d05cdc0","line":213,"in_reply_to":"9a68dd71_66f8abc5","updated":"2016-01-27 19:23:14.000000000","message":"Hm, yeah. I remember seeing this added to specific tests e.g. nova/tests/functional/db/test_cell_mapping.py but they aren\u0027t USES_DB. So those aren\u0027t duplicate of this.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"}],"nova/tests/unit/api/openstack/compute/legacy_v2/test_servers.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a11c00abf154b4907434ee948ce95fb17d3ca4a0","unresolved":false,"context_lines":[{"line_number":1949,"context_line":"                       server_update_and_get_original)"},{"line_number":1950,"context_line":"        self.stubs.Set(manager.VlanManager, \u0027allocate_fixed_ip\u0027,"},{"line_number":1951,"context_line":"                       fake_method)"},{"line_number":1952,"context_line":"        self.stubs.Set(\u0027nova.objects.RequestSpec.create\u0027, fake_method)"},{"line_number":1953,"context_line":"        self.body \u003d {"},{"line_number":1954,"context_line":"            \u0027server\u0027: {"},{"line_number":1955,"context_line":"                \u0027min_count\u0027: 2,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a5de9d1_ee9c3a6b","line":1952,"range":{"start_line":1952,"start_character":13,"end_line":1952,"end_character":22},"updated":"2016-01-28 10:48:13.000000000","message":"well, you forgot to modify the method unfortunately","commit_id":"cb88bf2a75e226dec1681b0ab0f747d2182851f2"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"e5c238fefb5c482b0a724490277eed11731e1d15","unresolved":false,"context_lines":[{"line_number":1949,"context_line":"                       server_update_and_get_original)"},{"line_number":1950,"context_line":"        self.stubs.Set(manager.VlanManager, \u0027allocate_fixed_ip\u0027,"},{"line_number":1951,"context_line":"                       fake_method)"},{"line_number":1952,"context_line":"        self.stubs.Set(\u0027nova.objects.RequestSpec.create\u0027, fake_method)"},{"line_number":1953,"context_line":"        self.body \u003d {"},{"line_number":1954,"context_line":"            \u0027server\u0027: {"},{"line_number":1955,"context_line":"                \u0027min_count\u0027: 2,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a5de9d1_4909c82b","line":1952,"range":{"start_line":1952,"start_character":13,"end_line":1952,"end_character":22},"in_reply_to":"7a5de9d1_ee9c3a6b","updated":"2016-01-28 10:54:09.000000000","message":"Good catch.","commit_id":"cb88bf2a75e226dec1681b0ab0f747d2182851f2"}],"nova/tests/unit/api/openstack/compute/test_serversV21.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"edd30980903a6d41eda8c4d79733db57f968dd5a","unresolved":false,"context_lines":[{"line_number":2124,"context_line":"        self.stubs.Set(manager.VlanManager, \u0027allocate_fixed_ip\u0027,"},{"line_number":2125,"context_line":"                       fake_method)"},{"line_number":2126,"context_line":"        self.stubs.Set(objects.RequestSpec, \u0027create\u0027, fake_method)"},{"line_number":2127,"context_line":""},{"line_number":2128,"context_line":"        self.body \u003d {"},{"line_number":2129,"context_line":"            \u0027server\u0027: {"},{"line_number":2130,"context_line":"                \u0027name\u0027: \u0027server_test\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a5de9d1_9e3cf194","line":2127,"updated":"2016-01-27 20:35:31.000000000","message":"extra whitespace, but NBD to me.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"62d7ca01be8a47d6a2adffd71ac1f324974d2055","unresolved":false,"context_lines":[{"line_number":259,"context_line":"            pass"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        # Tests in this module do not depend on this running."},{"line_number":262,"context_line":"        self.stubs.Set(objects.RequestSpec, \u0027create\u0027, fake_spec_create)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        # Just to make long lines short"},{"line_number":265,"context_line":"        self.rt \u003d self.compute._get_resource_tracker(NODENAME)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_4f02d33e","line":262,"updated":"2016-01-22 16:44:32.000000000","message":"not a blocker by any means, but you might consider changing this to use stub_out introduced in I5afc3a45d9ad9c629072891b52cd5625d28b99fc","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2a6b19a62e13cd47ea292d623f0e0c36907a37","unresolved":false,"context_lines":[{"line_number":259,"context_line":"            pass"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        # Tests in this module do not depend on this running."},{"line_number":262,"context_line":"        self.stubs.Set(objects.RequestSpec, \u0027create\u0027, fake_spec_create)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        # Just to make long lines short"},{"line_number":265,"context_line":"        self.rt \u003d self.compute._get_resource_tracker(NODENAME)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_66942b44","line":262,"in_reply_to":"9a68dd71_4f02d33e","updated":"2016-01-26 10:51:04.000000000","message":"Could be done in a later respin","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"fd00689daf004ba83910bd4d1ab14d30d6e2457e","unresolved":false,"context_lines":[{"line_number":259,"context_line":"            pass"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        # Tests in this module do not depend on this running."},{"line_number":262,"context_line":"        self.stubs.Set(objects.RequestSpec, \u0027create\u0027, fake_spec_create)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        # Just to make long lines short"},{"line_number":265,"context_line":"        self.rt \u003d self.compute._get_resource_tracker(NODENAME)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_751b38cb","line":262,"in_reply_to":"9a68dd71_66942b44","updated":"2016-01-27 09:19:02.000000000","message":"Yeah, this should be switched.  I\u0027ll change it if I respin, or put up a followup to switch it.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"12f8a838625c81e98d6fe312022ec965e5183aaa","unresolved":false,"context_lines":[{"line_number":2843,"context_line":"                    boot_meta, flavor, filter_properties, instance_group)"},{"line_number":2844,"context_line":"            self.assertEqual([mock.call.create()], req_spec_mock.mock_calls)"},{"line_number":2845,"context_line":""},{"line_number":2846,"context_line":"        do_test()"},{"line_number":2847,"context_line":""},{"line_number":2848,"context_line":"    def _test_rescue(self, vm_state\u003dvm_states.ACTIVE, rescue_password\u003dNone,"},{"line_number":2849,"context_line":"                     rescue_image\u003dNone, clean_shutdown\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_2bf7088c","line":2846,"updated":"2016-01-06 20:44:14.000000000","message":"nit question: why construct the test this way, instead of decorating the test method itself?","commit_id":"69a026750646f98753a7d2089974665372e280b7"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"6bd3bfae87e3297aca96d330159d1581fcf8a6b9","unresolved":false,"context_lines":[{"line_number":2843,"context_line":"                    boot_meta, flavor, filter_properties, instance_group)"},{"line_number":2844,"context_line":"            self.assertEqual([mock.call.create()], req_spec_mock.mock_calls)"},{"line_number":2845,"context_line":""},{"line_number":2846,"context_line":"        do_test()"},{"line_number":2847,"context_line":""},{"line_number":2848,"context_line":"    def _test_rescue(self, vm_state\u003dvm_states.ACTIVE, rescue_password\u003dNone,"},{"line_number":2849,"context_line":"                     rescue_image\u003dNone, clean_shutdown\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_48d91456","line":2846,"in_reply_to":"fa69d971_2bf7088c","updated":"2016-01-06 22:23:43.000000000","message":"Only because I\u0027m mocking things on \u0027self\u0027.  I would prefer to have them all on the test method if possible.","commit_id":"69a026750646f98753a7d2089974665372e280b7"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"9cc9f8f51a36bb8552abfac770e3751f7c54da46","unresolved":false,"context_lines":[{"line_number":2843,"context_line":"                    boot_meta, flavor, filter_properties, instance_group)"},{"line_number":2844,"context_line":"            self.assertEqual([mock.call.create()], req_spec_mock.mock_calls)"},{"line_number":2845,"context_line":""},{"line_number":2846,"context_line":"        do_test()"},{"line_number":2847,"context_line":""},{"line_number":2848,"context_line":"    def _test_rescue(self, vm_state\u003dvm_states.ACTIVE, rescue_password\u003dNone,"},{"line_number":2849,"context_line":"                     rescue_image\u003dNone, clean_shutdown\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_0e869213","line":2846,"in_reply_to":"fa69d971_48d91456","updated":"2016-01-07 20:42:57.000000000","message":"Ah, I see. I figured that there was a reason for the odd construct.","commit_id":"69a026750646f98753a7d2089974665372e280b7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2c3da35be9f83f80229d2a4c8a96027519906fcd","unresolved":false,"context_lines":[{"line_number":2796,"context_line":"        @mock.patch.object(self.compute_api, \u0027_create_block_device_mapping\u0027)"},{"line_number":2797,"context_line":"        @mock.patch.object(objects.RequestSpec, \u0027from_components\u0027)"},{"line_number":2798,"context_line":"        def do_test(mock_from_components, mock_create_bdm, mock_validate_bdm,"},{"line_number":2799,"context_line":"                mock_ensure_default, mock_create, mock_check_num_inst_quota):"},{"line_number":2800,"context_line":"            quota_mock \u003d mock.MagicMock()"},{"line_number":2801,"context_line":"            req_spec_mock \u003d mock.MagicMock()"},{"line_number":2802,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba63e191_1e9a5215","line":2799,"updated":"2016-01-18 21:29:29.000000000","message":"just a little suggestion... when I have internal test methods like this that have a lot of mocks decorating them, I tend to indicate that a particular mock isn\u0027t actually asserted against or used in the test by prefixing the name of the mock with a _. In the mock decorators above, mock_create, mock_create_bdm, mock_validate_bdm, and mock_ensure_default are all in this category. It just makes it slightly easier for the reviewer to scan which mocks should have corresponding assertions in the following code.","commit_id":"30162132bdca198fbe00b5daf7a4e03774cb87eb"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"5480bdd31036ee39d109ccc7c818d7f7485a90bd","unresolved":false,"context_lines":[{"line_number":2796,"context_line":"        @mock.patch.object(self.compute_api, \u0027_create_block_device_mapping\u0027)"},{"line_number":2797,"context_line":"        @mock.patch.object(objects.RequestSpec, \u0027from_components\u0027)"},{"line_number":2798,"context_line":"        def do_test(mock_from_components, mock_create_bdm, mock_validate_bdm,"},{"line_number":2799,"context_line":"                mock_ensure_default, mock_create, mock_check_num_inst_quota):"},{"line_number":2800,"context_line":"            quota_mock \u003d mock.MagicMock()"},{"line_number":2801,"context_line":"            req_spec_mock \u003d mock.MagicMock()"},{"line_number":2802,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba63e191_549c2969","line":2799,"in_reply_to":"ba63e191_1e9a5215","updated":"2016-01-18 22:15:16.000000000","message":"Good point.","commit_id":"30162132bdca198fbe00b5daf7a4e03774cb87eb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2c3da35be9f83f80229d2a4c8a96027519906fcd","unresolved":false,"context_lines":[{"line_number":2843,"context_line":"                    boot_meta, flavor, base_options[\u0027numa_topology\u0027],"},{"line_number":2844,"context_line":"                    base_options[\u0027pci_requests\u0027], filter_properties,"},{"line_number":2845,"context_line":"                    instance_group, base_options[\u0027availability_zone\u0027])"},{"line_number":2846,"context_line":"            self.assertEqual([mock.call.create()], req_spec_mock.mock_calls)"},{"line_number":2847,"context_line":""},{"line_number":2848,"context_line":"        do_test()"},{"line_number":2849,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba63e191_be9ea605","line":2846,"updated":"2016-01-18 21:29:29.000000000","message":"This last assertion seems kinda odd... what precisely are you asserting here? Wouldn\u0027t the following be more clear?\n\n req_spec_mock.create.assert_called_once_with()","commit_id":"30162132bdca198fbe00b5daf7a4e03774cb87eb"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"5480bdd31036ee39d109ccc7c818d7f7485a90bd","unresolved":false,"context_lines":[{"line_number":2843,"context_line":"                    boot_meta, flavor, base_options[\u0027numa_topology\u0027],"},{"line_number":2844,"context_line":"                    base_options[\u0027pci_requests\u0027], filter_properties,"},{"line_number":2845,"context_line":"                    instance_group, base_options[\u0027availability_zone\u0027])"},{"line_number":2846,"context_line":"            self.assertEqual([mock.call.create()], req_spec_mock.mock_calls)"},{"line_number":2847,"context_line":""},{"line_number":2848,"context_line":"        do_test()"},{"line_number":2849,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba63e191_74ca8d51","line":2846,"in_reply_to":"ba63e191_be9ea605","updated":"2016-01-18 22:15:16.000000000","message":"Yeah, not sure why I ended up with this form...","commit_id":"30162132bdca198fbe00b5daf7a4e03774cb87eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2a6b19a62e13cd47ea292d623f0e0c36907a37","unresolved":false,"context_lines":[{"line_number":2839,"context_line":"                    block_device_mapping, shutdown_terminate, instance_group,"},{"line_number":2840,"context_line":"                    check_server_group_quota, filter_properties)"},{"line_number":2841,"context_line":""},{"line_number":2842,"context_line":"            mock_from_components.assert_called_once_with(ctxt, mock.ANY,"},{"line_number":2843,"context_line":"                    boot_meta, flavor, base_options[\u0027numa_topology\u0027],"},{"line_number":2844,"context_line":"                    base_options[\u0027pci_requests\u0027], filter_properties,"},{"line_number":2845,"context_line":"                    instance_group, base_options[\u0027availability_zone\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_e6ba5b71","line":2842,"range":{"start_line":2842,"start_character":63,"end_line":2842,"end_character":71},"updated":"2016-01-26 10:51:04.000000000","message":"Well, I understand that you use ANY since the uuid is autogenerated but I\u0027m a bit torn because we\u0027re missing the key thing that we\u0027re passing an UUID.\n\nI don\u0027t really want to block on that specific bit tho, so that\u0027s more an open remark.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"e3e0633bb10088e01849a0d05736a56401fc163a","unresolved":false,"context_lines":[{"line_number":2839,"context_line":"                    block_device_mapping, shutdown_terminate, instance_group,"},{"line_number":2840,"context_line":"                    check_server_group_quota, filter_properties)"},{"line_number":2841,"context_line":""},{"line_number":2842,"context_line":"            mock_from_components.assert_called_once_with(ctxt, mock.ANY,"},{"line_number":2843,"context_line":"                    boot_meta, flavor, base_options[\u0027numa_topology\u0027],"},{"line_number":2844,"context_line":"                    base_options[\u0027pci_requests\u0027], filter_properties,"},{"line_number":2845,"context_line":"                    instance_group, base_options[\u0027availability_zone\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a5de9d1_4d0a3b28","line":2842,"range":{"start_line":2842,"start_character":63,"end_line":2842,"end_character":71},"in_reply_to":"7a5de9d1_19949b89","updated":"2016-01-28 09:14:20.000000000","message":"Checking the return from _provision_instances would be a great test.\n\nMatchType wouldn\u0027t be ideal but type(uuid.uuid4()) \u003d\u003d \u003cclass \u0027uuid.UUID\u0027\u003e so that would have provided some verification.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"edd30980903a6d41eda8c4d79733db57f968dd5a","unresolved":false,"context_lines":[{"line_number":2839,"context_line":"                    block_device_mapping, shutdown_terminate, instance_group,"},{"line_number":2840,"context_line":"                    check_server_group_quota, filter_properties)"},{"line_number":2841,"context_line":""},{"line_number":2842,"context_line":"            mock_from_components.assert_called_once_with(ctxt, mock.ANY,"},{"line_number":2843,"context_line":"                    boot_meta, flavor, base_options[\u0027numa_topology\u0027],"},{"line_number":2844,"context_line":"                    base_options[\u0027pci_requests\u0027], filter_properties,"},{"line_number":2845,"context_line":"                    instance_group, base_options[\u0027availability_zone\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a5de9d1_7ed33539","line":2842,"range":{"start_line":2842,"start_character":63,"end_line":2842,"end_character":71},"in_reply_to":"7a5de9d1_26f14bce","updated":"2016-01-27 20:35:31.000000000","message":"If we generated the UUID in the test, then it would make sense to test that the value in the call was the expected UUID. But since that\u0027s a detail beyond this test, I think that ANY is fine here.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"35b479c228b830e2879040f252a3feb425c3168e","unresolved":false,"context_lines":[{"line_number":2839,"context_line":"                    block_device_mapping, shutdown_terminate, instance_group,"},{"line_number":2840,"context_line":"                    check_server_group_quota, filter_properties)"},{"line_number":2841,"context_line":""},{"line_number":2842,"context_line":"            mock_from_components.assert_called_once_with(ctxt, mock.ANY,"},{"line_number":2843,"context_line":"                    boot_meta, flavor, base_options[\u0027numa_topology\u0027],"},{"line_number":2844,"context_line":"                    base_options[\u0027pci_requests\u0027], filter_properties,"},{"line_number":2845,"context_line":"                    instance_group, base_options[\u0027availability_zone\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a5de9d1_9863901a","line":2842,"range":{"start_line":2842,"start_character":63,"end_line":2842,"end_character":71},"in_reply_to":"7a5de9d1_4d0a3b28","updated":"2016-01-28 10:29:24.000000000","message":"Well, that sounds a right thing to do to use the instance.uuid from the return of the method.\nAndrew, your call, I\u0027m fine either way.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"07526985e908f47739f4ce3ed4312443f6c641af","unresolved":false,"context_lines":[{"line_number":2839,"context_line":"                    block_device_mapping, shutdown_terminate, instance_group,"},{"line_number":2840,"context_line":"                    check_server_group_quota, filter_properties)"},{"line_number":2841,"context_line":""},{"line_number":2842,"context_line":"            mock_from_components.assert_called_once_with(ctxt, mock.ANY,"},{"line_number":2843,"context_line":"                    boot_meta, flavor, base_options[\u0027numa_topology\u0027],"},{"line_number":2844,"context_line":"                    base_options[\u0027pci_requests\u0027], filter_properties,"},{"line_number":2845,"context_line":"                    instance_group, base_options[\u0027availability_zone\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a5de9d1_d9eb2e77","line":2842,"range":{"start_line":2842,"start_character":63,"end_line":2842,"end_character":71},"in_reply_to":"7a5de9d1_4d0a3b28","updated":"2016-01-28 18:12:13.000000000","message":"instance.uuid is type str because it\u0027s assigned as str(uuid.uuid4()), so at best you could verify it\u0027s of string type with MatchType","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"4dfcd18fb72c88d4a6cddf0f6eafced9b3b008f4","unresolved":false,"context_lines":[{"line_number":2839,"context_line":"                    block_device_mapping, shutdown_terminate, instance_group,"},{"line_number":2840,"context_line":"                    check_server_group_quota, filter_properties)"},{"line_number":2841,"context_line":""},{"line_number":2842,"context_line":"            mock_from_components.assert_called_once_with(ctxt, mock.ANY,"},{"line_number":2843,"context_line":"                    boot_meta, flavor, base_options[\u0027numa_topology\u0027],"},{"line_number":2844,"context_line":"                    base_options[\u0027pci_requests\u0027], filter_properties,"},{"line_number":2845,"context_line":"                    instance_group, base_options[\u0027availability_zone\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a5de9d1_1958bf89","line":2842,"range":{"start_line":2842,"start_character":63,"end_line":2842,"end_character":71},"in_reply_to":"7a5de9d1_d9eb2e77","updated":"2016-01-29 11:22:52.000000000","message":"Yep, you are correct and I wasn\u0027t looking at it fully when responding.  Fortunately checking it on the returned instance worked well.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6e635f569cf7b27b855dec3c37c9ce25103b83b9","unresolved":false,"context_lines":[{"line_number":2839,"context_line":"                    block_device_mapping, shutdown_terminate, instance_group,"},{"line_number":2840,"context_line":"                    check_server_group_quota, filter_properties)"},{"line_number":2841,"context_line":""},{"line_number":2842,"context_line":"            mock_from_components.assert_called_once_with(ctxt, mock.ANY,"},{"line_number":2843,"context_line":"                    boot_meta, flavor, base_options[\u0027numa_topology\u0027],"},{"line_number":2844,"context_line":"                    base_options[\u0027pci_requests\u0027], filter_properties,"},{"line_number":2845,"context_line":"                    instance_group, base_options[\u0027availability_zone\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a5de9d1_26f14bce","line":2842,"range":{"start_line":2842,"start_character":63,"end_line":2842,"end_character":71},"in_reply_to":"9a68dd71_18d0f152","updated":"2016-01-27 13:12:41.000000000","message":"Could be done in a follow-up patch. Again, I don\u0027t want to block that because of that.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"70f0e8f1587b21ab8df6c5c7fc349532c48decd3","unresolved":false,"context_lines":[{"line_number":2839,"context_line":"                    block_device_mapping, shutdown_terminate, instance_group,"},{"line_number":2840,"context_line":"                    check_server_group_quota, filter_properties)"},{"line_number":2841,"context_line":""},{"line_number":2842,"context_line":"            mock_from_components.assert_called_once_with(ctxt, mock.ANY,"},{"line_number":2843,"context_line":"                    boot_meta, flavor, base_options[\u0027numa_topology\u0027],"},{"line_number":2844,"context_line":"                    base_options[\u0027pci_requests\u0027], filter_properties,"},{"line_number":2845,"context_line":"                    instance_group, base_options[\u0027availability_zone\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a5de9d1_19949b89","line":2842,"range":{"start_line":2842,"start_character":63,"end_line":2842,"end_character":71},"in_reply_to":"9a68dd71_18d0f152","updated":"2016-01-27 20:55:51.000000000","message":"_provision_instances returns the instances so I think maybe you could pull the uuid from there and then replace mock.ANY with it.\n\nOtherwise I was thinking MatchType wouldn\u0027t quite work because it checks type(). It seems like we\u0027d need a new utility in nova/test.py MatchUUIDLike that overrides __eq__/__ne__ returning uuidutils.is_uuid_like(other)/not","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"fd00689daf004ba83910bd4d1ab14d30d6e2457e","unresolved":false,"context_lines":[{"line_number":2839,"context_line":"                    block_device_mapping, shutdown_terminate, instance_group,"},{"line_number":2840,"context_line":"                    check_server_group_quota, filter_properties)"},{"line_number":2841,"context_line":""},{"line_number":2842,"context_line":"            mock_from_components.assert_called_once_with(ctxt, mock.ANY,"},{"line_number":2843,"context_line":"                    boot_meta, flavor, base_options[\u0027numa_topology\u0027],"},{"line_number":2844,"context_line":"                    base_options[\u0027pci_requests\u0027], filter_properties,"},{"line_number":2845,"context_line":"                    instance_group, base_options[\u0027availability_zone\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_18d0f152","line":2842,"range":{"start_line":2842,"start_character":63,"end_line":2842,"end_character":71},"in_reply_to":"9a68dd71_e6ba5b71","updated":"2016-01-27 09:19:02.000000000","message":"I didn\u0027t spend a lot of time thinking about how to test this well, but I agree that it\u0027s important to verify that this is a uuid.  It looks like I should be able to use test.MatchType() to check this.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a11c00abf154b4907434ee948ce95fb17d3ca4a0","unresolved":false,"context_lines":[{"line_number":2839,"context_line":"                    security_groups, block_device_mapping, shutdown_terminate,"},{"line_number":2840,"context_line":"                    instance_group, check_server_group_quota,"},{"line_number":2841,"context_line":"                    filter_properties)"},{"line_number":2842,"context_line":"            self.assertTrue(uuidutils.is_uuid_like(instances[0].uuid))"},{"line_number":2843,"context_line":""},{"line_number":2844,"context_line":"            mock_from_components.assert_called_once_with(ctxt, mock.ANY,"},{"line_number":2845,"context_line":"                    boot_meta, flavor, base_options[\u0027numa_topology\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a5de9d1_0ee8b6e1","line":2842,"updated":"2016-01-28 10:48:13.000000000","message":"thanks","commit_id":"cb88bf2a75e226dec1681b0ab0f747d2182851f2"}],"nova/tests/unit/objects/test_request_spec.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"12f8a838625c81e98d6fe312022ec965e5183aaa","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        instance \u003d fake_instance.fake_instance_obj(ctxt)"},{"line_number":298,"context_line":"        image \u003d {\u0027id\u0027: \u0027fake-image-id\u0027, \u0027properties\u0027: {\u0027mappings\u0027: []},"},{"line_number":299,"context_line":"                 \u0027status\u0027: \u0027fake-status\u0027, \u0027location\u0027: \u0027far-away\u0027}"},{"line_number":300,"context_line":"        flavor \u003d objects.Flavor._from_db_object(ctxt, objects.Flavor(),"},{"line_number":301,"context_line":"                {\u0027id\u0027: 1, \u0027flavorid\u0027: 1, \u0027name\u0027: \u0027m1.tiny\u0027, \u0027memory_mb\u0027: 512,"},{"line_number":302,"context_line":"                  \u0027vcpus\u0027: 1, \u0027vcpu_weight\u0027: None, \u0027root_gb\u0027: 1,"},{"line_number":303,"context_line":"                  \u0027ephemeral_gb\u0027: 0, \u0027rxtx_factor\u0027: 1, \u0027swap\u0027: 0, \u0027deleted\u0027: 0,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_c66181d4","line":300,"updated":"2016-01-06 20:44:14.000000000","message":"It would be simpler to use tests.unit.fake_flavor.fake_flavor_obj(ctxt), as the test doesn\u0027t depend on any of these flavor properties.","commit_id":"69a026750646f98753a7d2089974665372e280b7"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"6bd3bfae87e3297aca96d330159d1581fcf8a6b9","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        instance \u003d fake_instance.fake_instance_obj(ctxt)"},{"line_number":298,"context_line":"        image \u003d {\u0027id\u0027: \u0027fake-image-id\u0027, \u0027properties\u0027: {\u0027mappings\u0027: []},"},{"line_number":299,"context_line":"                 \u0027status\u0027: \u0027fake-status\u0027, \u0027location\u0027: \u0027far-away\u0027}"},{"line_number":300,"context_line":"        flavor \u003d objects.Flavor._from_db_object(ctxt, objects.Flavor(),"},{"line_number":301,"context_line":"                {\u0027id\u0027: 1, \u0027flavorid\u0027: 1, \u0027name\u0027: \u0027m1.tiny\u0027, \u0027memory_mb\u0027: 512,"},{"line_number":302,"context_line":"                  \u0027vcpus\u0027: 1, \u0027vcpu_weight\u0027: None, \u0027root_gb\u0027: 1,"},{"line_number":303,"context_line":"                  \u0027ephemeral_gb\u0027: 0, \u0027rxtx_factor\u0027: 1, \u0027swap\u0027: 0, \u0027deleted\u0027: 0,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_689e5864","line":300,"in_reply_to":"fa69d971_c66181d4","updated":"2016-01-06 22:23:43.000000000","message":"Yep.  I just missed that we had a fake flavor method available.","commit_id":"69a026750646f98753a7d2089974665372e280b7"}],"releasenotes/notes/request-spec-api-db-b9cc6e0624d563c5.yaml":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2c3da35be9f83f80229d2a4c8a96027519906fcd","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    And a new nova-manage command has been added to manage db migrations for"},{"line_number":14,"context_line":"    this database.  \"nova-manage api_db sync\" and \"nova-manage api_db version\""},{"line_number":15,"context_line":"    are available and function like the parallel \"nova-manage db ...\" version."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ba63e191_fe941ee9","line":15,"updated":"2016-01-18 21:29:29.000000000","message":"Is this patch specifically the one which requires the API database to be configured separately from the non-API database? If not, I\u0027m wondering if this release note is attached to the proper patch...","commit_id":"30162132bdca198fbe00b5daf7a4e03774cb87eb"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"5480bdd31036ee39d109ccc7c818d7f7485a90bd","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    And a new nova-manage command has been added to manage db migrations for"},{"line_number":14,"context_line":"    this database.  \"nova-manage api_db sync\" and \"nova-manage api_db version\""},{"line_number":15,"context_line":"    are available and function like the parallel \"nova-manage db ...\" version."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ba63e191_b4fd6570","line":15,"in_reply_to":"ba63e191_fe941ee9","updated":"2016-01-18 22:15:16.000000000","message":"Yes, this is the first patch which requires the API database.  Saving the RequestSpec is the first bit of code which inserts something into that database outside of some nova-manage commands.","commit_id":"30162132bdca198fbe00b5daf7a4e03774cb87eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2a6b19a62e13cd47ea292d623f0e0c36907a37","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    And a new nova-manage command has been added to manage db migrations for"},{"line_number":14,"context_line":"    this database.  \"nova-manage api_db sync\" and \"nova-manage api_db version\""},{"line_number":15,"context_line":"    are available and function like the parallel \"nova-manage db ...\" version."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9a68dd71_098c6034","line":15,"updated":"2016-01-26 10:51:04.000000000","message":"Meh, I was thinking it was already part of the Liberty Release Notes ? /me is a sad panda.\n\nThat\u0027s another reason to merge that change very quickly.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"1992d6dc7c87052ae26dd80ca5120233ce20951b","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    And a new nova-manage command has been added to manage db migrations for"},{"line_number":14,"context_line":"    this database.  \"nova-manage api_db sync\" and \"nova-manage api_db version\""},{"line_number":15,"context_line":"    are available and function like the parallel \"nova-manage db ...\" version."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"7a5de9d1_6af36874","line":15,"in_reply_to":"7a5de9d1_06944f35","updated":"2016-01-28 00:37:23.000000000","message":"I found this in the releasenotes area:\n\nhttps://git.openstack.org/cgit/openstack/nova/tree/releasenotes/notes/api-database-now-required-6245f39d36885d1c.yaml","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"35b479c228b830e2879040f252a3feb425c3168e","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    And a new nova-manage command has been added to manage db migrations for"},{"line_number":14,"context_line":"    this database.  \"nova-manage api_db sync\" and \"nova-manage api_db version\""},{"line_number":15,"context_line":"    are available and function like the parallel \"nova-manage db ...\" version."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"7a5de9d1_58d198cc","line":15,"in_reply_to":"7a5de9d1_5f574202","updated":"2016-01-28 10:29:24.000000000","message":"So, I was not dreaming, great.\n\nGiven the criticity of having a 2nd DB, I\u0027m honestly totally on-board given further instructions in the \"upgrade\" section and not just leaving the \"prelude\" section.\n\nFWIW, I\u0027m also not able to see that prelude commit in the generated HTML http://docs-draft.openstack.org/28/258628/10/check/gate-nova-releasenotes/35b5a6b//releasenotes/build/html/unreleased.html\n\nThat\u0027s weird, I\u0027d have to investigate on that. Meanwhile, please leave the reno file here, it\u0027s useful.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"e3e0633bb10088e01849a0d05736a56401fc163a","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    And a new nova-manage command has been added to manage db migrations for"},{"line_number":14,"context_line":"    this database.  \"nova-manage api_db sync\" and \"nova-manage api_db version\""},{"line_number":15,"context_line":"    are available and function like the parallel \"nova-manage db ...\" version."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"7a5de9d1_5f574202","line":15,"in_reply_to":"7a5de9d1_6af36874","updated":"2016-01-28 09:14:20.000000000","message":"I\u0027m happy to leave this out, or modify it to just indicate that this commit is the first that requires the db.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"fd00689daf004ba83910bd4d1ab14d30d6e2457e","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    And a new nova-manage command has been added to manage db migrations for"},{"line_number":14,"context_line":"    this database.  \"nova-manage api_db sync\" and \"nova-manage api_db version\""},{"line_number":15,"context_line":"    are available and function like the parallel \"nova-manage db ...\" version."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9a68dd71_98f941cb","line":15,"in_reply_to":"9a68dd71_098c6034","updated":"2016-01-27 09:19:02.000000000","message":"It might have been.  I included this as an indication that this is the first patch that requires this database to be setup.  It was possible to set it up before but it would not have been used until now.  Maybe I can reword this to not be about setting up the db and just indicate that it\u0027s necessary to have done so.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6e635f569cf7b27b855dec3c37c9ce25103b83b9","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    And a new nova-manage command has been added to manage db migrations for"},{"line_number":14,"context_line":"    this database.  \"nova-manage api_db sync\" and \"nova-manage api_db version\""},{"line_number":15,"context_line":"    are available and function like the parallel \"nova-manage db ...\" version."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"7a5de9d1_06944f35","line":15,"in_reply_to":"9a68dd71_98f941cb","updated":"2016-01-27 13:12:41.000000000","message":"Well,  I checked https://wiki.openstack.org/wiki/ReleaseNotes/Liberty#OpenStack_Compute_.28Nova.29 and nothing is related to that so I assume like you said it becomes a requirement *now*.","commit_id":"771499c46364186a8c56f9efe5c0c16504b7f9e6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d6bcda5d57e5982867fa418905bcb512b1fbd638","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    The commit with change-id Idd4bbbe8eea68b9e538fa1567efd304e9115a02a"},{"line_number":5,"context_line":"    requires that the nova_api database is setup and Nova is configured to use"},{"line_number":6,"context_line":"    it.  Instructions on doing that are provided further up in the release"},{"line_number":7,"context_line":"    notes."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"7a5de9d1_a9bb9cc3","line":7,"updated":"2016-01-28 11:03:35.000000000","message":"well, we can\u0027t hardly point out SHA1s in relnotes because Sphinx doesn\u0027t magically makes hyperlinks for that. I was honestly preferring to keep your original reno content, it was good enough anyway but I don\u0027t want to lock up this to be merged.","commit_id":"43a0d3facb7e2d975b28cc9eb143692a235b7460"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"05b8cbd8d6a4c4347639cdf0b7d184981ff95fa6","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"    And a new nova-manage command has been added to manage db migrations for"},{"line_number":18,"context_line":"    this database.  \"nova-manage api_db sync\" and \"nova-manage api_db version\""},{"line_number":19,"context_line":"    are available and function like the parallel \"nova-manage db ...\" version."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"7a5de9d1_f1b97a7a","line":19,"updated":"2016-01-28 12:02:59.000000000","message":"that reno file looks great. Thanks for your resiliency :-)","commit_id":"8e8e839ef748be242fd0ad02e3ae233cc98da8b2"}]}
