)]}'
{"nova/compute/api.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"d21027d48396caebff5b8d56b87df5eebe8524f9","unresolved":false,"context_lines":[{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        device_tagging_requested \u003d False"},{"line_number":1094,"context_line":"        for bdm in block_device_mapping:"},{"line_number":1095,"context_line":"            if \u0027tag\u0027 in bdm and bdm[\u0027tag\u0027] is not None:"},{"line_number":1096,"context_line":"                device_tagging_requested \u003d True"},{"line_number":1097,"context_line":"        if requested_networks is not None:"},{"line_number":1098,"context_line":"            for net in requested_networks:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_d943e440","line":1095,"range":{"start_line":1095,"start_character":12,"end_line":1095,"end_character":55},"updated":"2016-06-23 16:47:17.000000000","message":"Simpler:\n\n  if bdm.get(\"tag\"):","commit_id":"12933602428849ae4974fcb8d926bfdf5a0a9e16"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"0e2aa2d1cc02591bfff0d9cf2cd77365eee0bfd0","unresolved":false,"context_lines":[{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        device_tagging_requested \u003d False"},{"line_number":1094,"context_line":"        for bdm in block_device_mapping:"},{"line_number":1095,"context_line":"            if \u0027tag\u0027 in bdm and bdm[\u0027tag\u0027] is not None:"},{"line_number":1096,"context_line":"                device_tagging_requested \u003d True"},{"line_number":1097,"context_line":"        if requested_networks is not None:"},{"line_number":1098,"context_line":"            for net in requested_networks:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_d239f9d8","line":1095,"range":{"start_line":1095,"start_character":12,"end_line":1095,"end_character":55},"in_reply_to":"3aaa91ec_d943e440","updated":"2016-06-23 17:49:27.000000000","message":"Done","commit_id":"12933602428849ae4974fcb8d926bfdf5a0a9e16"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ea2fc9a577f42df9202a80c5995a66eb782e6b6e","unresolved":false,"context_lines":[{"line_number":926,"context_line":"                        base_options[\u0027pci_requests\u0027], filter_properties,"},{"line_number":927,"context_line":"                        instance_group, base_options[\u0027availability_zone\u0027])"},{"line_number":928,"context_line":"                req_spec.create()"},{"line_number":929,"context_line":"                req_spec.device_tagging_requested \u003d device_tagging_requested"},{"line_number":930,"context_line":""},{"line_number":931,"context_line":"                # Create an instance object, but do not store in db yet."},{"line_number":932,"context_line":"                instance \u003d objects.Instance(context\u003dcontext)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3aaa91ec_6832d160","line":929,"updated":"2016-06-23 21:02:51.000000000","message":"here, you won\u0027t persist the device_taging setting because it\u0027s after the create() call. Is there a reason why ?","commit_id":"85f5ddd5d1ea8c1addb6a2b29bf4a15550541595"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"8b0e05aeaec362af8963f804a4eea04b6a38e5e2","unresolved":false,"context_lines":[{"line_number":926,"context_line":"                        base_options[\u0027pci_requests\u0027], filter_properties,"},{"line_number":927,"context_line":"                        instance_group, base_options[\u0027availability_zone\u0027])"},{"line_number":928,"context_line":"                req_spec.create()"},{"line_number":929,"context_line":"                req_spec.device_tagging_requested \u003d device_tagging_requested"},{"line_number":930,"context_line":""},{"line_number":931,"context_line":"                # Create an instance object, but do not store in db yet."},{"line_number":932,"context_line":"                instance \u003d objects.Instance(context\u003dcontext)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3aaa91ec_f824cc60","line":929,"in_reply_to":"3aaa91ec_6832d160","updated":"2016-06-23 22:12:52.000000000","message":"Done","commit_id":"85f5ddd5d1ea8c1addb6a2b29bf4a15550541595"}],"nova/conf/scheduler.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ea2fc9a577f42df9202a80c5995a66eb782e6b6e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            \"ExactRamFilter\","},{"line_number":58,"context_line":"            \"ExactDiskFilter\","},{"line_number":59,"context_line":"            \"ExactCoreFilter\","},{"line_number":60,"context_line":"            \"DeviceTaggingFilter\","},{"line_number":61,"context_line":"        ],"},{"line_number":62,"context_line":"        help\u003d\"\"\""},{"line_number":63,"context_line":"This option specifies the filters used for filtering baremetal hosts. The value"}],"source_content_type":"text/x-python","patch_set":13,"id":"3aaa91ec_a8ae7995","line":60,"updated":"2016-06-23 21:02:51.000000000","message":"please don\u0027t. You\u0027re specifically adding a new filter which will be run for the Ironic case.\n\nTBH, I prefer to not add to the default list of filters something only useful for a subset of operators, and even more when it\u0027s for the Ironic case.","commit_id":"85f5ddd5d1ea8c1addb6a2b29bf4a15550541595"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"8b0e05aeaec362af8963f804a4eea04b6a38e5e2","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            \"ExactRamFilter\","},{"line_number":58,"context_line":"            \"ExactDiskFilter\","},{"line_number":59,"context_line":"            \"ExactCoreFilter\","},{"line_number":60,"context_line":"            \"DeviceTaggingFilter\","},{"line_number":61,"context_line":"        ],"},{"line_number":62,"context_line":"        help\u003d\"\"\""},{"line_number":63,"context_line":"This option specifies the filters used for filtering baremetal hosts. The value"}],"source_content_type":"text/x-python","patch_set":13,"id":"3aaa91ec_3875b463","line":60,"in_reply_to":"3aaa91ec_a8ae7995","updated":"2016-06-23 22:12:52.000000000","message":"Done","commit_id":"85f5ddd5d1ea8c1addb6a2b29bf4a15550541595"}],"nova/objects/request_spec.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"d21027d48396caebff5b8d56b87df5eebe8524f9","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from nova.virt import hardware"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"REQUEST_SPEC_OPTIONAL_ATTRS \u003d [\u0027requested_destination\u0027,"},{"line_number":30,"context_line":"                               \u0027device_tagging_requested\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"@base.NovaObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_5939b4a3","line":30,"updated":"2016-06-23 16:47:17.000000000","message":"Nit: It would be preferable to format this with a comma after the last entry, and the closing bracket on the next line, so that future additions only have to add a line, instead of changing the one above it too.","commit_id":"12933602428849ae4974fcb8d926bfdf5a0a9e16"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"0e2aa2d1cc02591bfff0d9cf2cd77365eee0bfd0","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from nova.virt import hardware"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"REQUEST_SPEC_OPTIONAL_ATTRS \u003d [\u0027requested_destination\u0027,"},{"line_number":30,"context_line":"                               \u0027device_tagging_requested\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"@base.NovaObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_5254e9fd","line":30,"in_reply_to":"3aaa91ec_5939b4a3","updated":"2016-06-23 17:49:27.000000000","message":"Done","commit_id":"12933602428849ae4974fcb8d926bfdf5a0a9e16"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ea2fc9a577f42df9202a80c5995a66eb782e6b6e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        # just provide to the RequestSpec object a free-form dictionary"},{"line_number":70,"context_line":"        \u0027scheduler_hints\u0027: fields.DictOfListOfStringsField(nullable\u003dTrue),"},{"line_number":71,"context_line":"        \u0027instance_uuid\u0027: fields.UUIDField(),"},{"line_number":72,"context_line":"        \u0027device_tagging_requested\u0027: fields.BooleanField(default\u003dFalse)"},{"line_number":73,"context_line":"    }"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":13,"id":"3aaa91ec_6354b2fe","line":72,"updated":"2016-06-23 21:02:51.000000000","message":"totally not yet sold on the idea to have a new field for representing an user request for using device tagging, because I\u0027m not sure it\u0027s something really related to the request, but it seems to me that it can be a reasonable option, tho.\n\nI need to think more about what means a device_tagging_requested field anyway (also in the context of a move operation where we want to honor the user constraints).","commit_id":"85f5ddd5d1ea8c1addb6a2b29bf4a15550541595"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"38c53512fb66dc30e900c614436d8ea8b66baa7a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        # just provide to the RequestSpec object a free-form dictionary"},{"line_number":70,"context_line":"        \u0027scheduler_hints\u0027: fields.DictOfListOfStringsField(nullable\u003dTrue),"},{"line_number":71,"context_line":"        \u0027instance_uuid\u0027: fields.UUIDField(),"},{"line_number":72,"context_line":"        \u0027device_tagging_requested\u0027: fields.BooleanField(default\u003dFalse)"},{"line_number":73,"context_line":"    }"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":13,"id":"3aaa91ec_d5d6e0ef","line":72,"in_reply_to":"3aaa91ec_5851a0d7","updated":"2016-06-24 10:16:28.000000000","message":"It\u0027s left to the operator the responsibility to make sure that the instances can\u0027t be moved to a non-correct hypervisor but for example, you can rebuild an instance to another host that can be using another hypervisor.\n\nThat said, I don\u0027t think it will change whether the instance can support hypervisor device tagging, so maybe this implicit field is the best one... I dunno, I\u0027m torn.","commit_id":"85f5ddd5d1ea8c1addb6a2b29bf4a15550541595"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"8b0e05aeaec362af8963f804a4eea04b6a38e5e2","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        # just provide to the RequestSpec object a free-form dictionary"},{"line_number":70,"context_line":"        \u0027scheduler_hints\u0027: fields.DictOfListOfStringsField(nullable\u003dTrue),"},{"line_number":71,"context_line":"        \u0027instance_uuid\u0027: fields.UUIDField(),"},{"line_number":72,"context_line":"        \u0027device_tagging_requested\u0027: fields.BooleanField(default\u003dFalse)"},{"line_number":73,"context_line":"    }"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":13,"id":"3aaa91ec_5851a0d7","line":72,"in_reply_to":"3aaa91ec_6354b2fe","updated":"2016-06-23 22:12:52.000000000","message":"device_tagging_requested is used here as a flag for \u0027the user has asked for some network interfaces of block devices attached to this VM to be tagged\u0027. It\u0027s a boolean flag because in this part of the code we don\u0027t care about what those tags actually are, but it\u0027s definitely something that the user requests, much like a certain numa_topology or PCI devices.\n\nDefinitely a good point about the move though - my question would be, can an instance move between different hypervisors? If not, it\u0027s a moot point, as once an instance has been booted on a hypersivor that supports tagging, it\u0027s not going to move to a different hypervisor.","commit_id":"85f5ddd5d1ea8c1addb6a2b29bf4a15550541595"}],"nova/scheduler/filters/device_tagging_filter.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ea2fc9a577f42df9202a80c5995a66eb782e6b6e","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"HYPERVISORS_SUPPORT_DEVICE_TAGGING \u003d [hv_type.QEMU]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class DeviceTaggingFilter(filters.BaseHostFilter):"}],"source_content_type":"text/x-python","patch_set":13,"id":"3aaa91ec_a8d4b9bc","line":22,"range":{"start_line":22,"start_character":38,"end_line":22,"end_character":50},"updated":"2016-06-23 21:02:51.000000000","message":"Well, I don\u0027t really like to have the scheduler filters being virt-related. Maybe we should think of how to provide a capability from the compute saying \"okay, I can be using tags\".","commit_id":"85f5ddd5d1ea8c1addb6a2b29bf4a15550541595"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"38c53512fb66dc30e900c614436d8ea8b66baa7a","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"HYPERVISORS_SUPPORT_DEVICE_TAGGING \u003d [hv_type.QEMU]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class DeviceTaggingFilter(filters.BaseHostFilter):"}],"source_content_type":"text/x-python","patch_set":13,"id":"3aaa91ec_d571c045","line":22,"range":{"start_line":22,"start_character":38,"end_line":22,"end_character":50},"in_reply_to":"3aaa91ec_58b5202f","updated":"2016-06-24 10:16:28.000000000","message":"That\u0027s a real open question that can\u0027t be trivially answered, but I was rather thinking of the ComputeNode object having a capability (like we have in https://github.com/openstack/nova/blob/master/nova/scheduler/filters/compute_capabilities_filter.py#L33) \n\nThe real problem is that the object model doesn\u0027t really support this kind of information (like a resource capability) and that\u0027s something we discuss since last cycle about that. See for example https://etherpad.openstack.org/p/newton-nova-scheduler and the capabilities section (the \"qualitative part of the request\") about how we think about that.","commit_id":"85f5ddd5d1ea8c1addb6a2b29bf4a15550541595"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"8b0e05aeaec362af8963f804a4eea04b6a38e5e2","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"HYPERVISORS_SUPPORT_DEVICE_TAGGING \u003d [hv_type.QEMU]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class DeviceTaggingFilter(filters.BaseHostFilter):"}],"source_content_type":"text/x-python","patch_set":13,"id":"3aaa91ec_58b5202f","line":22,"range":{"start_line":22,"start_character":38,"end_line":22,"end_character":50},"in_reply_to":"3aaa91ec_a8d4b9bc","updated":"2016-06-23 22:12:52.000000000","message":"The compute would have to obtain tagging support information from the virt driver, as the compute itself doesn\u0027t know. The scheduler works with ComputeNode objects, correct? Is there a way for a ComputeNode to find out from its virt driver if the latter support device tagging?","commit_id":"85f5ddd5d1ea8c1addb6a2b29bf4a15550541595"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0126367787deaeade7fd7594945ded60e35ca0d7","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"HYPERVISORS_SUPPORT_DEVICE_TAGGING \u003d [hv_type.QEMU]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class DeviceTaggingFilter(filters.BaseHostFilter):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_a2ac5f8d","line":22,"updated":"2016-06-27 15:17:23.000000000","message":"so the problem with that line is that adding device tagging capability to a new virt driver would require a filter upgrade, which I dislike.\n\nAlso, consider a rolling upgrade case, where computes are having 2 different versions, X and Y. In version X, only specific virt driver A provides device tagging, while in version Y, virt drivers A and B (because B device tagging feature was merged) now support it. How to draw that ?\n\nFor that reason, I\u0027d by far prefer to have a specific compute capability written for that case, which allows the filter to read it directly.","commit_id":"a7ac31513eca45ebf6305bfc3a7b9f58ed2c7f40"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"fb21b807d768133c905782fbbbd734738510110e","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"HYPERVISORS_SUPPORT_DEVICE_TAGGING \u003d [hv_type.QEMU]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class DeviceTaggingFilter(filters.BaseHostFilter):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_de07c37f","line":22,"in_reply_to":"3aaa91ec_a2ac5f8d","updated":"2016-06-27 16:00:44.000000000","message":"So what you want is to have the scheduler to select a compute-node randomly, the request goes there, the compute node raises an exception if not able to handle the request to make the scheduler to try an other attempt ?\n\nSeems to be a bad idea for 2 reasons:\n - That makes a request to take time to be satisfied since there will have ping/pong between scheduler and compute nodes to find one able to accept the request.\n - The request can be rejected even if some compute nodes can handle the request because we reached the limit of scheduler retry","commit_id":"a7ac31513eca45ebf6305bfc3a7b9f58ed2c7f40"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e8074adfebe5807b9b27a513b0930cd6fb2a7ddb","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"HYPERVISORS_SUPPORT_DEVICE_TAGGING \u003d [hv_type.QEMU]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class DeviceTaggingFilter(filters.BaseHostFilter):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_2487d8d8","line":22,"in_reply_to":"3aaa91ec_de07c37f","updated":"2016-06-27 16:29:15.000000000","message":"No, I wonder how the filter could use a better abstraction for checking which host to use.\n\nso, after looking at what we have, I think it could be better to use our ComputeNode.supported_hv_specs field which is transformed into HostState.supported_instances (as a list) so that we could use those HVSpec objects instead.\n\nAlso, since we need to provide a way to say which HVSpecs are good, instead of providing a boolean for RequestSpec.device_tagging_requested, we could use a better abstraction and provide by the API call the list of HVSpecs we should look at.","commit_id":"a7ac31513eca45ebf6305bfc3a7b9f58ed2c7f40"}],"nova/tests/unit/scheduler/filters/test_device_tagging_filter.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"d21027d48396caebff5b8d56b87df5eebe8524f9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova.tests.unit.scheduler import fakes"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"HYPERVISORS_SUPPORT_DEVICE_TAGGING \u003d [hv_type.QEMU]"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestDeviceTaggingFilter(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_79b750f5","line":20,"updated":"2016-06-23 16:47:17.000000000","message":"This is unneeded copy/paste. Instead, just reference:\n\n  device_tagging_filter.HYPERVISORS_SUPPORT_DEVICE_TAGGING\n\nThis way, if another hv supports device tagging, it only needs to be added in the filter code.","commit_id":"12933602428849ae4974fcb8d926bfdf5a0a9e16"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"0e2aa2d1cc02591bfff0d9cf2cd77365eee0bfd0","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova.tests.unit.scheduler import fakes"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"HYPERVISORS_SUPPORT_DEVICE_TAGGING \u003d [hv_type.QEMU]"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestDeviceTaggingFilter(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_d2129956","line":20,"in_reply_to":"3aaa91ec_79b750f5","updated":"2016-06-23 17:49:27.000000000","message":"My reasoning was to explicitly redefine this in order to make the tests completely independent of the code. For instance, if someone makes a mistake and adds a hypervisor that doesn\u0027t support tagging to device_tagging_filter.HYPERVISORS_SUPPORT_DEVICE_TAGGING, the tests should pick that up.\n\nAnd now that I\u0027ve said that, I realize that even with this explicit redefinition, no tests would pick up the above case. What I need to do is specifically check hypersivors that are in hw_type that are not in HYPERVISORS_SUPPORT_DEVICE_TAGGING. Will post a new patch like that.","commit_id":"12933602428849ae4974fcb8d926bfdf5a0a9e16"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"4fa76345071b6973fe4bbf8ebe5e26c6d94ac80a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova.tests.unit.scheduler import fakes"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"HYPERVISORS_SUPPORT_DEVICE_TAGGING \u003d [hv_type.QEMU]"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestDeviceTaggingFilter(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_8db3d6e8","line":20,"in_reply_to":"3aaa91ec_d2129956","updated":"2016-06-23 18:05:25.000000000","message":"I guess that\u0027s my objection: tests should *not* be independent of the code. IOW, if the code changes, the tests should reflect the new code. Here, if new HVs support tagging and the code is updated, these tests will not reflect that.","commit_id":"12933602428849ae4974fcb8d926bfdf5a0a9e16"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"938a64a0086d571fc2eea900d5e4528ab558b4f9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova.tests.unit.scheduler import fakes"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"HYPERVISORS_SUPPORT_DEVICE_TAGGING \u003d [hv_type.QEMU]"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestDeviceTaggingFilter(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3aaa91ec_cdc95e5b","line":20,"updated":"2016-06-23 18:06:27.000000000","message":"My comments from PS 11 still apply.","commit_id":"6d09ff62221cdefecfe32272090e737ca790cb20"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"447ac218129c39df7665df3e8ded67e13d429ed3","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova.tests.unit.scheduler import fakes"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"HYPERVISORS_SUPPORT_DEVICE_TAGGING \u003d [hv_type.QEMU]"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestDeviceTaggingFilter(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3aaa91ec_68ebf813","line":20,"in_reply_to":"3aaa91ec_cdc95e5b","updated":"2016-06-23 18:16:28.000000000","message":"Just repeating what I said on IRC: it\u0027s unlikely, but if the tests reuse the enum from the code, someone could potentially add a virt driver in the latter and nothing would pick that up. But I\u0027ll be happy to concede to consensus if another person thinks it\u0027s better to reuse the enum in the tests.","commit_id":"6d09ff62221cdefecfe32272090e737ca790cb20"}]}
