)]}'
{"specs/mitaka/approved/expose-host-capabilities.rst":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"e73dd8cac383f7786540edee8a54481c3126a39c","unresolved":false,"context_lines":[{"line_number":90,"context_line":"section."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"A new filter should be implemented which will match the instance features"},{"line_number":93,"context_line":"requested with the host capabilities as previously described."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Alternatives"},{"line_number":96,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da20952f_e3ce5e82","line":93,"updated":"2015-09-11 01:10:25.000000000","message":"should add how the filter will work and how will it know which capabilities to check.\n\nalso, should mention that the filter will not be included in the default filter list, as it has a limited utility in the beggining, until enough capabilities are added to this blueprint.","commit_id":"2fc43986c8bdd139f6c997171bc4df02fc406c50"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"e73dd8cac383f7786540edee8a54481c3126a39c","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"* Hypervisor version related capabilities:"},{"line_number":125,"context_line":"    * hw_machine_type  - values: None, list [4] (merged in Kilo)"},{"line_number":126,"context_line":"    * os_secure_boot   - values: None, True [3] (approved for Liberty)"},{"line_number":127,"context_line":"    * os_shielded_vms  - values: None, True [2] (approved for Liberty)"},{"line_number":128,"context_line":"    * os_vtpm          - values: None, True [2] (approved for Liberty)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"da20952f_c3655aaf","line":126,"updated":"2015-09-11 01:10:25.000000000","message":"hm, not sure it\u0027s enough for this. for Hyper-V, secure boot depends also on the guest OS. for example: windows guests can have the secure boot feature in win hyper-v 2012 r2 and newer, while linux guests only on 2016 or newer. there should be a better to capture this usecase here.","commit_id":"2fc43986c8bdd139f6c997171bc4df02fc406c50"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"e73dd8cac383f7786540edee8a54481c3126a39c","unresolved":false,"context_lines":[{"line_number":170,"context_line":"capabilities without having the administrator create host aggregates for"},{"line_number":171,"context_line":"certain host capabilities or set the ``requires_hypervisor_version`` image"},{"line_number":172,"context_line":"property for certain features which depend on the hypervisor version [2][3][4]."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Developer impact"},{"line_number":175,"context_line":"----------------"},{"line_number":176,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"da20952f_63b6cedd","line":173,"updated":"2015-09-11 01:10:25.000000000","message":"should also include how to properly use the new filter.","commit_id":"2fc43986c8bdd139f6c997171bc4df02fc406c50"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bb969fd5f28a0d583dd3412b38ecbb32048e78f4","unresolved":false,"context_lines":[{"line_number":14,"context_line":"instances require several host features or capabilities. This would require the"},{"line_number":15,"context_line":"administrators to know what features are available for a certain hypervisor"},{"line_number":16,"context_line":"version and / or creating quite a few host aggregates, which can become"},{"line_number":17,"context_line":"tedious."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_34e7a212","line":17,"updated":"2015-10-08 11:22:56.000000000","message":"Totally agree with it being silly to force host aggregates being created where it makes no sense to do that.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"df599c94a12d15161c81ea38e3db61c4c3bc7dd7","unresolved":false,"context_lines":[{"line_number":14,"context_line":"instances require several host features or capabilities. This would require the"},{"line_number":15,"context_line":"administrators to know what features are available for a certain hypervisor"},{"line_number":16,"context_line":"version and / or creating quite a few host aggregates, which can become"},{"line_number":17,"context_line":"tedious."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a26ad4f_f599706f","line":17,"in_reply_to":"5a2ca52d_5b394440","updated":"2015-10-29 07:04:45.000000000","message":"I will have to check this, But at the first look, due to the part with \"instance_type[\u0027extra_specs\u0027]\", leads me to believe it only takes into account flavor extra specs, while I desire image properties to be taken into account as well. There are scenarios where some image properties must be taken into account, as they are not optional. For example, a Generation 2 VM glance image will have the \"hw_machine_type\u003dhyperv-gen2\" property. A Generation 2 VM image cannot be booted into a Generation 1 VM, it won\u0027t boot.\n\nLet me know if I\u0027m wrong about the \"extra_specs\" bit, but I\u0027ll verify this later anyways.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d514e90f44f7412f3cb7d738de342d59a09206a7","unresolved":false,"context_lines":[{"line_number":14,"context_line":"instances require several host features or capabilities. This would require the"},{"line_number":15,"context_line":"administrators to know what features are available for a certain hypervisor"},{"line_number":16,"context_line":"version and / or creating quite a few host aggregates, which can become"},{"line_number":17,"context_line":"tedious."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a2ca52d_5b394440","line":17,"in_reply_to":"7a2fa921_34e7a212","updated":"2015-10-15 13:44:01.000000000","message":"So, I understand that the HostState is not providing all the capabilities for the drivers, but could you please tell me what could be the difference with the current ComputeCapabilitiesFilter given that the HostState could get the needed resources ?\n\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/filters/compute_capabilities_filter.py","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d514e90f44f7412f3cb7d738de342d59a09206a7","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Problem description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Currently, the nova scheduler is not aware of any host capabilities or features"},{"line_number":23,"context_line":"the compute nodes might have. For example, certain features require a minimum"},{"line_number":24,"context_line":"hypervisor version. The only way to handle this would be to set filters ("},{"line_number":25,"context_line":"e.g. image property ``requires_hypervisor_version``) in order to ensure proper"},{"line_number":26,"context_line":"scheduling. This less than ideal, as it requires the administrators to know"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a2ca52d_5b1064a8","line":23,"range":{"start_line":22,"start_character":0,"end_line":23,"end_character":28},"updated":"2015-10-15 13:44:01.000000000","message":"That\u0027s not true, see my comment above about ComputeCapabilitiesFilter","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"131f8a69c567d361ee507ef89162bb1171ca03d9","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Currently, the nova scheduler is not aware of any host capabilities or features"},{"line_number":23,"context_line":"the compute nodes might have. For example, certain features require a minimum"},{"line_number":24,"context_line":"hypervisor version. The only way to handle this would be to set filters ("},{"line_number":25,"context_line":"e.g. image property ``requires_hypervisor_version``) in order to ensure proper"},{"line_number":26,"context_line":"scheduling. This less than ideal, as it requires the administrators to know"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba8a016a_3dc35159","line":23,"in_reply_to":"5a2ca52d_5b1064a8","updated":"2015-11-23 13:59:07.000000000","message":"I should rephrase this: Currently, the nova scheduler is not aware of all the host capabilities or features the compute nodes might have.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d514e90f44f7412f3cb7d738de342d59a09206a7","unresolved":false,"context_lines":[{"line_number":24,"context_line":"hypervisor version. The only way to handle this would be to set filters ("},{"line_number":25,"context_line":"e.g. image property ``requires_hypervisor_version``) in order to ensure proper"},{"line_number":26,"context_line":"scheduling. This less than ideal, as it requires the administrators to know"},{"line_number":27,"context_line":"which feature requires what hypervisor version. [1]"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"On top of this, there are some features that are not available without proper"},{"line_number":30,"context_line":"configuration. Choosing to deploy an instance with such a feature on such a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a2ca52d_5b7144df","line":27,"updated":"2015-10-15 13:44:01.000000000","message":"Well, the HostState already knows the hypervision_version\nhttps://github.com/openstack/nova/blob/16a50ea03dc1c673435d6d46c15f22dbdb5b70a8/nova/scheduler/host_manager.py#L163","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b712db19ba311c00a07761ca163002005ba292b6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"hypervisor version. The only way to handle this would be to set filters ("},{"line_number":25,"context_line":"e.g. image property ``requires_hypervisor_version``) in order to ensure proper"},{"line_number":26,"context_line":"scheduling. This less than ideal, as it requires the administrators to know"},{"line_number":27,"context_line":"which feature requires what hypervisor version. [1]"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"On top of this, there are some features that are not available without proper"},{"line_number":30,"context_line":"configuration. Choosing to deploy an instance with such a feature on such a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a26ad4f_da1a856e","line":27,"in_reply_to":"5a2ca52d_5b7144df","updated":"2015-10-28 05:33:39.000000000","message":"I know that, it is what we\u0027re using for a few features (e.g., for generation 2 VMs, we use the glance image property requires_hypervisor_version\u003e\u003d6.3). The point of this was that it is a troublesome mechanism, it requires administrators to know what features are offered by what hypervisor version, which can be an inconvenience.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bb969fd5f28a0d583dd3412b38ecbb32048e78f4","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Plus, for cold migration / resize we cannot specify a host for it, meaning"},{"line_number":38,"context_line":"that we must solely rely on the scheduler to find a proper host. Because of"},{"line_number":39,"context_line":"this, there are high chances for the chosen host to be inapropriate for the"},{"line_number":40,"context_line":"instance."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Ideally, the scheduler could to feature-matching instead."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_1a164f4c","line":40,"updated":"2015-10-08 11:22:56.000000000","message":"You should always have the scheduler pick the correct host for boot or migration, or anything.\n\nI think you should remove this, its a given.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b712db19ba311c00a07761ca163002005ba292b6","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Plus, for cold migration / resize we cannot specify a host for it, meaning"},{"line_number":38,"context_line":"that we must solely rely on the scheduler to find a proper host. Because of"},{"line_number":39,"context_line":"this, there are high chances for the chosen host to be inapropriate for the"},{"line_number":40,"context_line":"instance."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Ideally, the scheduler could to feature-matching instead."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a26ad4f_376dd404","line":40,"in_reply_to":"5a2ca52d_3b45686f","updated":"2015-10-28 05:33:39.000000000","message":"Done","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d514e90f44f7412f3cb7d738de342d59a09206a7","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Plus, for cold migration / resize we cannot specify a host for it, meaning"},{"line_number":38,"context_line":"that we must solely rely on the scheduler to find a proper host. Because of"},{"line_number":39,"context_line":"this, there are high chances for the chosen host to be inapropriate for the"},{"line_number":40,"context_line":"instance."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Ideally, the scheduler could to feature-matching instead."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a2ca52d_3b45686f","line":40,"in_reply_to":"7a2fa921_1a164f4c","updated":"2015-10-15 13:44:01.000000000","message":"Agreed","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bb969fd5f28a0d583dd3412b38ecbb32048e78f4","unresolved":false,"context_lines":[{"line_number":57,"context_line":"Project Priority"},{"line_number":58,"context_line":"-----------------"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Yes. TBD."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Proposed change"},{"line_number":63,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_b22d05aa","line":60,"updated":"2015-10-08 11:22:56.000000000","message":"Please delete this section.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b712db19ba311c00a07761ca163002005ba292b6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"Project Priority"},{"line_number":58,"context_line":"-----------------"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Yes. TBD."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Proposed change"},{"line_number":63,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a26ad4f_ba1d4968","line":60,"in_reply_to":"7a2fa921_b22d05aa","updated":"2015-10-28 05:33:39.000000000","message":"Done","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d514e90f44f7412f3cb7d738de342d59a09206a7","unresolved":false,"context_lines":[{"line_number":68,"context_line":"The method ``get_hypervisor_capabilities`` must be added to virt.ComputeDriver."},{"line_number":69,"context_line":"The driver will have to implement this method and return a ``HostCapabilities``"},{"line_number":70,"context_line":"object containing the \"hypervisor version related capabilities\" mention in the"},{"line_number":71,"context_line":"`Use Cases` section."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"As for the \"undiscoverable capabilities\", a config option in the group"},{"line_number":74,"context_line":"``host_capabilities`` can be defined for each capability."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a2ca52d_0edaa878","line":71,"updated":"2015-10-15 13:44:01.000000000","message":"We already have a very bad implementation for the driver resources called cpu_info which is basically a serialized JSON dict. If we say that we should think of what could be provided by the virt drivers, I\u0027d prefer to discuss on how to change the current resources (eg. cpu_info and hypervisor_version) instead to have better fields like the one you say.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"131f8a69c567d361ee507ef89162bb1171ca03d9","unresolved":false,"context_lines":[{"line_number":68,"context_line":"The method ``get_hypervisor_capabilities`` must be added to virt.ComputeDriver."},{"line_number":69,"context_line":"The driver will have to implement this method and return a ``HostCapabilities``"},{"line_number":70,"context_line":"object containing the \"hypervisor version related capabilities\" mention in the"},{"line_number":71,"context_line":"`Use Cases` section."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"As for the \"undiscoverable capabilities\", a config option in the group"},{"line_number":74,"context_line":"``host_capabilities`` can be defined for each capability."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba8a016a_bdb8a176","line":71,"in_reply_to":"5a2ca52d_0edaa878","updated":"2015-11-23 13:59:07.000000000","message":"I don\u0027t see what could change about the hypervisor_version. As for cpu_info, yeah, I suppose that could fit in as a field in HostCapabilities, if that is what you are referring to.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d514e90f44f7412f3cb7d738de342d59a09206a7","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"As for the capabilities present in the ``HostCapabilities`` model, they should"},{"line_number":83,"context_line":"mirror the properties that can be in the image metadata or flavor extra specs,"},{"line_number":84,"context_line":"in order to easily match requested features to host capabilites."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"For example, the host could have the capability for instance secure boot. The"},{"line_number":87,"context_line":"``HostCapabilities.os_secure_boot`` field will be set to True. In order to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a2ca52d_6ed47c1f","line":84,"updated":"2015-10-15 13:44:01.000000000","message":"Like I said above, there is already a relationship with the flavors by the filter I gave. \n\nThe closest filter I think about providing image metadata like that is ImagePropertiesFilter\n\nAgain, I\u0027d like to avoid changing the UX given by the filters unless that UX is bad, but that spec doesn\u0027t say that.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"131f8a69c567d361ee507ef89162bb1171ca03d9","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"As for the capabilities present in the ``HostCapabilities`` model, they should"},{"line_number":83,"context_line":"mirror the properties that can be in the image metadata or flavor extra specs,"},{"line_number":84,"context_line":"in order to easily match requested features to host capabilites."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"For example, the host could have the capability for instance secure boot. The"},{"line_number":87,"context_line":"``HostCapabilities.os_secure_boot`` field will be set to True. In order to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba8a016a_c0b25ce5","line":84,"in_reply_to":"5a2ca52d_6ed47c1f","updated":"2015-11-23 13:59:07.000000000","message":"ImagePropertiesFilter only checks 3 properties in the image properties:\n\n        img_arch \u003d image_props.get(\u0027architecture\u0027, None)\n        img_h_type \u003d image_props.get(\u0027hypervisor_type\u0027, None)\n        img_vm_mode \u003d image_props.get(\u0027vm_mode\u0027, None)\n        checked_img_props \u003d (\n            arch.canonicalize(img_arch),\n            hv_type.canonicalize(img_h_type),\n            vm_mode.canonicalize(img_vm_mode)\n        )\n\nwhich is less than ideal, it does not check for any \"feature/capability\" required by the image. Plus, it doesn\u0027t check flavor extra_specs, since some features can be offered as a flavor extra spec (e.g.: SSD)\n\nComputeCapabilitiesFilter might seem to do the trick, but it seems it requires flavor extra_specs to be preceeded by \"capabilities:\", which is a bit unpleasant, meaning that existing flavors extra_specs will have to be updated to include that \"capabilities:\". Also, it seems that it treats only flavor extra_specs and not image properties.\n\nIt seems to me there isn\u0027t a filter that fits perfectly with this requirement.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d514e90f44f7412f3cb7d738de342d59a09206a7","unresolved":false,"context_lines":[{"line_number":91,"context_line":"More details about the ``HostCapabilities`` fields in the `Data model impact`"},{"line_number":92,"context_line":"section."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"A new filter should be implemented which will match the instance features"},{"line_number":95,"context_line":"requested with the host capabilities as previously described. It should only"},{"line_number":96,"context_line":"take into account fields defined in the ``HostCapabilities``. If a field in the"},{"line_number":97,"context_line":"``HostCapabilities`` instance has not been set, that capability will be"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a2ca52d_eecf2c7d","line":94,"range":{"start_line":94,"start_character":0,"end_line":94,"end_character":12},"updated":"2015-10-15 13:44:01.000000000","message":"Again, could you please explain why you would need a new filter, given the two existing above ?","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"131f8a69c567d361ee507ef89162bb1171ca03d9","unresolved":false,"context_lines":[{"line_number":91,"context_line":"More details about the ``HostCapabilities`` fields in the `Data model impact`"},{"line_number":92,"context_line":"section."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"A new filter should be implemented which will match the instance features"},{"line_number":95,"context_line":"requested with the host capabilities as previously described. It should only"},{"line_number":96,"context_line":"take into account fields defined in the ``HostCapabilities``. If a field in the"},{"line_number":97,"context_line":"``HostCapabilities`` instance has not been set, that capability will be"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba8a016a_a011585f","line":94,"in_reply_to":"5a2ca52d_eecf2c7d","updated":"2015-11-23 13:59:07.000000000","message":"as explained above. Currently, the 2 filters are not able to accomplish this task, not separately, not together. They would probably have to be updated / modified in order to accomplish this task, which you said that is something that should be avoided. Plus, one important mention, both image properties and flavor extra_spec for the same feature should be checked. For example:\n\n    image property: os_secure_boot \u003d \"optional\"\n    flavor extra_spec: os:secure_boot \u003d \"required\"\n    -\u003e feature is required.\n\nconflicting values should be detected in nova-api, returning a 40X response_code.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d514e90f44f7412f3cb7d738de342d59a09206a7","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"The alternatives only partially solves the scheduling issue for cold migration"},{"line_number":129,"context_line":"or resize."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Data model impact"},{"line_number":132,"context_line":"-----------------"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a2ca52d_8e08f892","line":130,"updated":"2015-10-15 13:44:01.000000000","message":"There is at least the blueprint resource-objects that tries to address that concern by having better objectifications for resources. Given that, I\u0027m not 100% sure we need that spec unless it addresses a different usecase that\u0027s not covered by resource-objects","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"df599c94a12d15161c81ea38e3db61c4c3bc7dd7","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"The alternatives only partially solves the scheduling issue for cold migration"},{"line_number":129,"context_line":"or resize."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Data model impact"},{"line_number":132,"context_line":"-----------------"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a26ad4f_6a1b3f1c","line":130,"in_reply_to":"1a26ad4f_bae7893f","updated":"2015-10-29 07:04:45.000000000","message":"it seems the blueprint you\u0027ve linked talks about countable / consumable resources, while this one talks about host/hypervisor capabilities/features, most of which can be represented through a boolean: it exists or not.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b712db19ba311c00a07761ca163002005ba292b6","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"The alternatives only partially solves the scheduling issue for cold migration"},{"line_number":129,"context_line":"or resize."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Data model impact"},{"line_number":132,"context_line":"-----------------"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a26ad4f_bae7893f","line":130,"in_reply_to":"5a2ca52d_8e08f892","updated":"2015-10-28 05:33:39.000000000","message":"I will read the mentioned spec.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bb969fd5f28a0d583dd3412b38ecbb32048e78f4","unresolved":false,"context_lines":[{"line_number":143,"context_line":"New ``HostCapabilities`` object model should be added. If any of of object\u0027s"},{"line_number":144,"context_line":"fields is not set, then that capability will be considered as not present."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Proposed initial fields for ``HostCapabilities``:"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Hypervisor version related capabilities:"},{"line_number":149,"context_line":"    * hw_machine_type  - values: None, list [4] (merged in Kilo)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_d46aee80","line":146,"updated":"2015-10-08 11:22:56.000000000","message":"Honestly, this feels like it should be a new object field added to the compute node:\nhttps://github.com/openstack/nova/blob/master/nova/objects/compute_node.py#L78\n\nYou can just copy the model for flavor and just store that in as a text field in the compute node table.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b712db19ba311c00a07761ca163002005ba292b6","unresolved":false,"context_lines":[{"line_number":143,"context_line":"New ``HostCapabilities`` object model should be added. If any of of object\u0027s"},{"line_number":144,"context_line":"fields is not set, then that capability will be considered as not present."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Proposed initial fields for ``HostCapabilities``:"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Hypervisor version related capabilities:"},{"line_number":149,"context_line":"    * hw_machine_type  - values: None, list [4] (merged in Kilo)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a26ad4f_7ae9f119","line":146,"in_reply_to":"7a2fa921_d46aee80","updated":"2015-10-28 05:33:39.000000000","message":"Done","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bb969fd5f28a0d583dd3412b38ecbb32048e78f4","unresolved":false,"context_lines":[{"line_number":146,"context_line":"Proposed initial fields for ``HostCapabilities``:"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Hypervisor version related capabilities:"},{"line_number":149,"context_line":"    * hw_machine_type  - values: None, list [4] (merged in Kilo)"},{"line_number":150,"context_line":"    * os_secure_boot   - values: None, list [3] (proposed for Mitaka)"},{"line_number":151,"context_line":"    * os_shielded_vms  - values: None, True [2] (approved for Liberty)"},{"line_number":152,"context_line":"    * os_vtpm          - values: None, True [2] (approved for Liberty)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_f415aae4","line":149,"updated":"2015-10-08 11:22:56.000000000","message":"I wonder if this is really more related to hv_spec?\nhttps://github.com/openstack/nova/blob/master/nova/objects/compute_node.py#L78","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"df599c94a12d15161c81ea38e3db61c4c3bc7dd7","unresolved":false,"context_lines":[{"line_number":146,"context_line":"Proposed initial fields for ``HostCapabilities``:"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Hypervisor version related capabilities:"},{"line_number":149,"context_line":"    * hw_machine_type  - values: None, list [4] (merged in Kilo)"},{"line_number":150,"context_line":"    * os_secure_boot   - values: None, list [3] (proposed for Mitaka)"},{"line_number":151,"context_line":"    * os_shielded_vms  - values: None, True [2] (approved for Liberty)"},{"line_number":152,"context_line":"    * os_vtpm          - values: None, True [2] (approved for Liberty)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a26ad4f_955efc10","line":149,"in_reply_to":"7a2fa921_f415aae4","updated":"2015-10-29 07:04:45.000000000","message":"this is unrelated to this spec. Anyways, this was also discussed a few months ago, long enough not to remember exactly when or with whom this was discussed or what exactly were the conclusions (but the discussion was with a nova core). From what I remember, it is something like this:\n\nAnyways, that field contains something like this:\n    \n    [(arch.I686, hv_type.HYPERV, vm_mode.HVM),\n     (arch.X86_64, hv_type.HYPERV, vm_mode.HVM)]\n\nthe hw_machine_type wouldn\u0027t fit in any of the categories: arch, hv_type (hypervisor_type), vm_mode. Adding one more element in the tuple, would drastically increase the list length, which was not desired. It would impact every other driver, it would also impact the HVSpec object, as it only contains those 3 fields.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bb969fd5f28a0d583dd3412b38ecbb32048e78f4","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    * hw_sriov         - values: None, True"},{"line_number":157,"context_line":"    * hw_fibre_channel - values: None, True"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Note: any other proposals for this list?"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"REST API impact"},{"line_number":162,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_f4184a77","line":159,"updated":"2015-10-08 11:22:56.000000000","message":"I would start with just the ones we have already implemented in the code, then add the others as we add the support.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b712db19ba311c00a07761ca163002005ba292b6","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    * hw_sriov         - values: None, True"},{"line_number":157,"context_line":"    * hw_fibre_channel - values: None, True"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Note: any other proposals for this list?"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"REST API impact"},{"line_number":162,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a26ad4f_1a947d89","line":159,"in_reply_to":"7a2fa921_f4184a77","updated":"2015-10-28 05:33:39.000000000","message":"I agree, I was hoping people would pitch in, if they personally know of such capabilities. But, this section is a bit unecessary, if this is just going to be a TextField containing a json in the nova compute_nodes table.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bb969fd5f28a0d583dd3412b38ecbb32048e78f4","unresolved":false,"context_lines":[{"line_number":165,"context_line":"is necessary. Executing ``nova hypervisor-show`` will additionally yield a"},{"line_number":166,"context_line":"``host_capabilities`` field, containing a dict with all the **existing** host"},{"line_number":167,"context_line":"capabilities or features (empty, None, or False fields will be ignored as they"},{"line_number":168,"context_line":"do not present any new valuable information)."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"A commit for python-novaclient will be necessary for the new nova API"},{"line_number":171,"context_line":"microversion."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_f4e04a98","line":168,"updated":"2015-10-08 11:22:56.000000000","message":"we need *a lot* more detail on the REST API changes here.\n\nhonestly, I think we might want to leave this out of the REST API in the this, spec, and look at the hypervisor API and improving it (generally, I think there is a related spec somewhere) as a separate spec. I think that will the easiest way to get agreement on this direction.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b712db19ba311c00a07761ca163002005ba292b6","unresolved":false,"context_lines":[{"line_number":165,"context_line":"is necessary. Executing ``nova hypervisor-show`` will additionally yield a"},{"line_number":166,"context_line":"``host_capabilities`` field, containing a dict with all the **existing** host"},{"line_number":167,"context_line":"capabilities or features (empty, None, or False fields will be ignored as they"},{"line_number":168,"context_line":"do not present any new valuable information)."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"A commit for python-novaclient will be necessary for the new nova API"},{"line_number":171,"context_line":"microversion."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a26ad4f_7a9b31ca","line":168,"in_reply_to":"5a2ca52d_0e92a857","updated":"2015-10-28 05:33:39.000000000","message":"Done, but it would still be a handy thing to have for an admin to just easily list the capabilities / features available to him. But I agree, this would probably have to be a different spec, with many more details.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d514e90f44f7412f3cb7d738de342d59a09206a7","unresolved":false,"context_lines":[{"line_number":165,"context_line":"is necessary. Executing ``nova hypervisor-show`` will additionally yield a"},{"line_number":166,"context_line":"``host_capabilities`` field, containing a dict with all the **existing** host"},{"line_number":167,"context_line":"capabilities or features (empty, None, or False fields will be ignored as they"},{"line_number":168,"context_line":"do not present any new valuable information)."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"A commit for python-novaclient will be necessary for the new nova API"},{"line_number":171,"context_line":"microversion."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a2ca52d_0e92a857","line":168,"in_reply_to":"7a2fa921_f4e04a98","updated":"2015-10-15 13:44:01.000000000","message":"++ in particular if we change how cpu_info is provided today.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bb969fd5f28a0d583dd3412b38ecbb32048e78f4","unresolved":false,"context_lines":[{"line_number":189,"context_line":"------------------"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"The scheduler filter will be called once per host, as the host capabilities"},{"line_number":192,"context_line":"do not change from a request to another."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Entries in the ``host_capabilities`` table will registered / updated once per"},{"line_number":195,"context_line":"(re)started nova_compute node. Entries will be queried by the scheduler."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_c3754efa","line":192,"updated":"2015-10-08 11:22:56.000000000","message":"it doesn\u0027t really work like that right now, I would just ignore this bit.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b712db19ba311c00a07761ca163002005ba292b6","unresolved":false,"context_lines":[{"line_number":189,"context_line":"------------------"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"The scheduler filter will be called once per host, as the host capabilities"},{"line_number":192,"context_line":"do not change from a request to another."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Entries in the ``host_capabilities`` table will registered / updated once per"},{"line_number":195,"context_line":"(re)started nova_compute node. Entries will be queried by the scheduler."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a26ad4f_5a73d5b1","line":192,"in_reply_to":"5a2ca52d_ee7dec1c","updated":"2015-10-28 05:33:39.000000000","message":"Done","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d514e90f44f7412f3cb7d738de342d59a09206a7","unresolved":false,"context_lines":[{"line_number":189,"context_line":"------------------"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"The scheduler filter will be called once per host, as the host capabilities"},{"line_number":192,"context_line":"do not change from a request to another."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Entries in the ``host_capabilities`` table will registered / updated once per"},{"line_number":195,"context_line":"(re)started nova_compute node. Entries will be queried by the scheduler."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a2ca52d_ee7dec1c","line":192,"in_reply_to":"7a2fa921_c3754efa","updated":"2015-10-15 13:44:01.000000000","message":"++","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bb969fd5f28a0d583dd3412b38ecbb32048e78f4","unresolved":false,"context_lines":[{"line_number":192,"context_line":"do not change from a request to another."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Entries in the ``host_capabilities`` table will registered / updated once per"},{"line_number":195,"context_line":"(re)started nova_compute node. Entries will be queried by the scheduler."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Other deployer impact"},{"line_number":198,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_e3496ab8","line":195,"updated":"2015-10-08 11:22:56.000000000","message":"Generally, I think it should be part of the regular update system. I would just skip this idea for now.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b712db19ba311c00a07761ca163002005ba292b6","unresolved":false,"context_lines":[{"line_number":192,"context_line":"do not change from a request to another."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Entries in the ``host_capabilities`` table will registered / updated once per"},{"line_number":195,"context_line":"(re)started nova_compute node. Entries will be queried by the scheduler."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Other deployer impact"},{"line_number":198,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a26ad4f_9a796d96","line":195,"in_reply_to":"7a2fa921_e3496ab8","updated":"2015-10-28 05:33:39.000000000","message":"Done","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bb969fd5f28a0d583dd3412b38ecbb32048e78f4","unresolved":false,"context_lines":[{"line_number":200,"context_line":"Proper scheduling will be assured for instances requiring certain host"},{"line_number":201,"context_line":"capabilities without having the administrator create host aggregates for"},{"line_number":202,"context_line":"certain host capabilities or set the ``requires_hypervisor_version`` image"},{"line_number":203,"context_line":"property for certain features which depend on the hypervisor version [2][3][4]."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"In order to benefit from the new scheduler filter, it must be included in the"},{"line_number":206,"context_line":"nova scheduler\u0027s ``nova.conf`` file."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_63eb1a79","line":203,"updated":"2015-10-08 11:22:56.000000000","message":"the requires_hypervisor_version was really for a specific case that mapped to hypervisor version issues, seems like we should have a general system for this to work with images, etc?","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b712db19ba311c00a07761ca163002005ba292b6","unresolved":false,"context_lines":[{"line_number":200,"context_line":"Proper scheduling will be assured for instances requiring certain host"},{"line_number":201,"context_line":"capabilities without having the administrator create host aggregates for"},{"line_number":202,"context_line":"certain host capabilities or set the ``requires_hypervisor_version`` image"},{"line_number":203,"context_line":"property for certain features which depend on the hypervisor version [2][3][4]."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"In order to benefit from the new scheduler filter, it must be included in the"},{"line_number":206,"context_line":"nova scheduler\u0027s ``nova.conf`` file."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a26ad4f_ba4b0959","line":203,"in_reply_to":"7a2fa921_63eb1a79","updated":"2015-10-28 05:33:39.000000000","message":"I think I forgot to mention that the features / capabilities can be easily done by just having them as image properties, without having to set the requires_hypervisor_version property.","commit_id":"6547ea70d8bfcec2c5c67b96ab2bc27847e55d4b"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":34,"context_line":"it exists in Windows / Hyper-V Server 2016 and they share the same hypervisor"},{"line_number":35,"context_line":"version (10.0)."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Ideally, the scheduler could to feature-matching instead."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Use Cases"},{"line_number":40,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_10b762d9","line":37,"updated":"2015-11-25 12:11:18.000000000","message":"nit: do","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"it exists in Windows / Hyper-V Server 2016 and they share the same hypervisor"},{"line_number":35,"context_line":"version (10.0)."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Ideally, the scheduler could to feature-matching instead."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Use Cases"},{"line_number":40,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_73a033a0","line":37,"in_reply_to":"9a8ffd7b_10b762d9","updated":"2015-11-26 05:46:08.000000000","message":"Done","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":63,"context_line":"The method ``get_hypervisor_capabilities`` must be added to virt.ComputeDriver."},{"line_number":64,"context_line":"The driver will have to implement this method and return a ``HostCapabilities``"},{"line_number":65,"context_line":"object containing the \"hypervisor version related capabilities\" mention in the"},{"line_number":66,"context_line":"`Use Cases` section."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"As for the \"undiscoverable capabilities\", a config option in the group"},{"line_number":69,"context_line":"``host_capabilities`` can be defined for each capability."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_5ba0ab9f","line":66,"updated":"2015-11-25 12:11:18.000000000","message":"Will these caps all be driver-dependent? Maybe host-arch-dependent as well? Or will there be some attempt to unify similar caps?","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":63,"context_line":"The method ``get_hypervisor_capabilities`` must be added to virt.ComputeDriver."},{"line_number":64,"context_line":"The driver will have to implement this method and return a ``HostCapabilities``"},{"line_number":65,"context_line":"object containing the \"hypervisor version related capabilities\" mention in the"},{"line_number":66,"context_line":"`Use Cases` section."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"As for the \"undiscoverable capabilities\", a config option in the group"},{"line_number":69,"context_line":"``host_capabilities`` can be defined for each capability."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_093cef2d","line":66,"in_reply_to":"9a8ffd7b_5ba0ab9f","updated":"2015-11-26 05:46:08.000000000","message":"Some of them, yes. And the drivers should be able to report those capabilities.\n\nSome of the capabilities will not. Those would refer mostly to the host or its hardware (for example, hw_ssd comes to mind right now). \n\nNow, not all hypervisors can expose the same set of capabilities, can\u0027t really expect them to. But there should be some common capabilities amoung them. As for the \"undiscoverable\" capabilities / host / hardware related capabilities, those are more universal and should be pretty much the same across all systems.","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":66,"context_line":"`Use Cases` section."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"As for the \"undiscoverable capabilities\", a config option in the group"},{"line_number":69,"context_line":"``host_capabilities`` can be defined for each capability."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"The capabilities reported by the compute drivers and the capabilities contained"},{"line_number":72,"context_line":"in the config option will be validated by the ``HostCapabilities`` object"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_bbc67747","line":69,"updated":"2015-11-25 12:11:18.000000000","message":"Similar question - will we publish a list of \"recommended capabilities\" to aid intercloud portability?\n\nI\u0027m looking at making options reloadable. This would be a nice candidate I think.","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":66,"context_line":"`Use Cases` section."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"As for the \"undiscoverable capabilities\", a config option in the group"},{"line_number":69,"context_line":"``host_capabilities`` can be defined for each capability."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"The capabilities reported by the compute drivers and the capabilities contained"},{"line_number":72,"context_line":"in the config option will be validated by the ``HostCapabilities`` object"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_09862fb9","line":69,"in_reply_to":"9a8ffd7b_bbc67747","updated":"2015-11-26 05:46:08.000000000","message":"Not really sure what you mean by your question. As I\u0027ve mentioned earlier, there are  host / hardware related capabilities which should be universal. Those are probably a bit more complicated to assert programatically and I suggest having a config option group for those capabilities, which, of course, will be documented. As for hypervisor-specific features, they should be documented. Since they will be requested via image properties / flavor extra_specs, at least those should be documented. I hope this answers your question.\n\nYeah, the options will be reloadable. When the nova-compute service starts on a compute node, it will register / update it\u0027s \"compute_nodes\" database record. The host capabilities can be included in this update.","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"The capabilities reported by the compute drivers and the capabilities contained"},{"line_number":72,"context_line":"in the config option will be validated by the ``HostCapabilities`` object"},{"line_number":73,"context_line":"model: an InvalidHostCapability exception will be raised if there is at least a"},{"line_number":74,"context_line":"reported capability that does not exist in the ``HostCapabilities`` object"},{"line_number":75,"context_line":"model."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_b08536ae","line":73,"updated":"2015-11-25 12:11:18.000000000","message":"nit: \"if there are any reported capabilities that do not exist\"","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"The capabilities reported by the compute drivers and the capabilities contained"},{"line_number":72,"context_line":"in the config option will be validated by the ``HostCapabilities`` object"},{"line_number":73,"context_line":"model: an InvalidHostCapability exception will be raised if there is at least a"},{"line_number":74,"context_line":"reported capability that does not exist in the ``HostCapabilities`` object"},{"line_number":75,"context_line":"model."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_a994c3e1","line":73,"in_reply_to":"9a8ffd7b_b08536ae","updated":"2015-11-26 05:46:08.000000000","message":"Done","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":72,"context_line":"in the config option will be validated by the ``HostCapabilities`` object"},{"line_number":73,"context_line":"model: an InvalidHostCapability exception will be raised if there is at least a"},{"line_number":74,"context_line":"reported capability that does not exist in the ``HostCapabilities`` object"},{"line_number":75,"context_line":"model."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"As for the capabilities present in the ``HostCapabilities`` model, they should"},{"line_number":78,"context_line":"mirror the properties that can be in the image metadata or flavor extra specs,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_fb0cff3c","line":75,"updated":"2015-11-25 12:11:18.000000000","message":"or you could just say \"All configured and reported capabilities must be recognised by the HostCapabilities object or an InvalidHostCapability exception will be raised\".","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":72,"context_line":"in the config option will be validated by the ``HostCapabilities`` object"},{"line_number":73,"context_line":"model: an InvalidHostCapability exception will be raised if there is at least a"},{"line_number":74,"context_line":"reported capability that does not exist in the ``HostCapabilities`` object"},{"line_number":75,"context_line":"model."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"As for the capabilities present in the ``HostCapabilities`` model, they should"},{"line_number":78,"context_line":"mirror the properties that can be in the image metadata or flavor extra specs,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_69649b21","line":75,"in_reply_to":"9a8ffd7b_fb0cff3c","updated":"2015-11-26 05:46:08.000000000","message":"Done","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":78,"context_line":"mirror the properties that can be in the image metadata or flavor extra specs,"},{"line_number":79,"context_line":"in order to easily match requested features to host capabilites."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"For example, the host could have the capability for instance secure boot. The"},{"line_number":82,"context_line":"``HostCapabilities.os_secure_boot`` field will be set to True. In order to"},{"line_number":83,"context_line":"request the instance secure boot feature, users will have to define the image"},{"line_number":84,"context_line":"property ``os_secure_boot`` or flavor extra spec ``os:secure_boot`` as"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_db6edbc8","line":81,"updated":"2015-11-25 12:11:18.000000000","message":"nit: a host could have the \"secure boot\" capability.","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":78,"context_line":"mirror the properties that can be in the image metadata or flavor extra specs,"},{"line_number":79,"context_line":"in order to easily match requested features to host capabilites."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"For example, the host could have the capability for instance secure boot. The"},{"line_number":82,"context_line":"``HostCapabilities.os_secure_boot`` field will be set to True. In order to"},{"line_number":83,"context_line":"request the instance secure boot feature, users will have to define the image"},{"line_number":84,"context_line":"property ``os_secure_boot`` or flavor extra spec ``os:secure_boot`` as"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_e609c32d","line":81,"in_reply_to":"9a8ffd7b_db6edbc8","updated":"2015-11-26 05:46:08.000000000","message":"actually, I mean instance secure boot. It is one of the Hyper-V features. Generation 2 VMs are capable of this. It is a bit specific, but it is just an example.","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":86,"context_line":"More details about the ``HostCapabilities`` fields in the `Data model impact`"},{"line_number":87,"context_line":"section."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"A new filter should be implemented which will match the instance features"},{"line_number":90,"context_line":"requested with the host capabilities as previously described. It should only"},{"line_number":91,"context_line":"take into account fields defined in the ``HostCapabilities``. If a field in the"},{"line_number":92,"context_line":"``HostCapabilities`` instance has not been set, that capability will be"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_7bb56f2f","line":89,"range":{"start_line":89,"start_character":13,"end_line":89,"end_character":19},"updated":"2015-11-25 12:11:18.000000000","message":"s/should/will/","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":86,"context_line":"More details about the ``HostCapabilities`` fields in the `Data model impact`"},{"line_number":87,"context_line":"section."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"A new filter should be implemented which will match the instance features"},{"line_number":90,"context_line":"requested with the host capabilities as previously described. It should only"},{"line_number":91,"context_line":"take into account fields defined in the ``HostCapabilities``. If a field in the"},{"line_number":92,"context_line":"``HostCapabilities`` instance has not been set, that capability will be"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_694b3b88","line":89,"in_reply_to":"9a8ffd7b_7bb56f2f","updated":"2015-11-26 05:46:08.000000000","message":"Done","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":87,"context_line":"section."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"A new filter should be implemented which will match the instance features"},{"line_number":90,"context_line":"requested with the host capabilities as previously described. It should only"},{"line_number":91,"context_line":"take into account fields defined in the ``HostCapabilities``. If a field in the"},{"line_number":92,"context_line":"``HostCapabilities`` instance has not been set, that capability will be"},{"line_number":93,"context_line":"considered as not present."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_3b860766","line":90,"updated":"2015-11-25 12:11:18.000000000","message":"here too","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":87,"context_line":"section."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"A new filter should be implemented which will match the instance features"},{"line_number":90,"context_line":"requested with the host capabilities as previously described. It should only"},{"line_number":91,"context_line":"take into account fields defined in the ``HostCapabilities``. If a field in the"},{"line_number":92,"context_line":"``HostCapabilities`` instance has not been set, that capability will be"},{"line_number":93,"context_line":"considered as not present."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_2945336f","line":90,"in_reply_to":"9a8ffd7b_3b860766","updated":"2015-11-26 05:46:08.000000000","message":"Done","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":106,"context_line":"values [\u0027hyperv-gen1\u0027, \u0027hyperv-gen2\u0027] for this capability. For an instance"},{"line_number":107,"context_line":"with image metadata containing the property ``hw_machine_type`` set to"},{"line_number":108,"context_line":"``hyperv-gen2``, a host will be considered appropriate if the requested"},{"line_number":109,"context_line":"capability value exists in the ``HostCapabilities.hw_machine_type`` list."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"Host capabilities could be exposed to the users through nova API. See `REST API"},{"line_number":112,"context_line":"impact` for more details."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_db581bfd","line":109,"updated":"2015-11-25 12:11:18.000000000","message":"I\u0027d call these \"set capabilities\". A flavor matches a host for a capability if their sets are not disjoint. You could call this an \"any-of\" set and also have an \"all-of\" set where there is no difference between the flavor and host cap sets.\n\nRange capabilities? We could add them later I guess but might be nice to start with them.","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":106,"context_line":"values [\u0027hyperv-gen1\u0027, \u0027hyperv-gen2\u0027] for this capability. For an instance"},{"line_number":107,"context_line":"with image metadata containing the property ``hw_machine_type`` set to"},{"line_number":108,"context_line":"``hyperv-gen2``, a host will be considered appropriate if the requested"},{"line_number":109,"context_line":"capability value exists in the ``HostCapabilities.hw_machine_type`` list."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"Host capabilities could be exposed to the users through nova API. See `REST API"},{"line_number":112,"context_line":"impact` for more details."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_c954a722","line":109,"in_reply_to":"9a8ffd7b_db581bfd","updated":"2015-11-26 05:46:08.000000000","message":"Sure, could you give an example of a Range capability?","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  know which feature requires what hypervisor version, plus there are features"},{"line_number":119,"context_line":"  that cannot be determined by version alone."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"* Host aggregates."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The alternatives only partially solves the scheduling issue for cold migration"},{"line_number":124,"context_line":"or resize."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_3bcb6720","line":121,"updated":"2015-11-25 12:11:18.000000000","message":"a bit more explanation here would be nice :)","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  know which feature requires what hypervisor version, plus there are features"},{"line_number":119,"context_line":"  that cannot be determined by version alone."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"* Host aggregates."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The alternatives only partially solves the scheduling issue for cold migration"},{"line_number":124,"context_line":"or resize."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_69b7bbd8","line":121,"in_reply_to":"9a8ffd7b_3bcb6720","updated":"2015-11-26 05:46:08.000000000","message":"Done","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"* Host aggregates."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The alternatives only partially solves the scheduling issue for cold migration"},{"line_number":124,"context_line":"or resize."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_dbd1fbce","line":123,"updated":"2015-11-25 12:11:18.000000000","message":"nit: solve","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"* Host aggregates."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The alternatives only partially solves the scheduling issue for cold migration"},{"line_number":124,"context_line":"or resize."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_c9a9077d","line":123,"in_reply_to":"9a8ffd7b_dbd1fbce","updated":"2015-11-26 05:46:08.000000000","message":"Done","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":129,"context_line":"The Text column ``host_capabilities`` will be added to the ``compute_node``"},{"line_number":130,"context_line":"database table. This column will contain all the capabilities reported by"},{"line_number":131,"context_line":"each compute node. A database migration is necessary in order to add the"},{"line_number":132,"context_line":"column."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"New ``HostCapabilities`` object will be added, containing all the capabilities"},{"line_number":135,"context_line":"currently acceptable by Nova. If any of of object\u0027s fields is not set, then"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_bbfe7736","line":132,"updated":"2015-11-25 12:11:18.000000000","message":"Is this a JSON blob?\n\nSpecifically, an expand-schema migration will be necessary.","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":129,"context_line":"The Text column ``host_capabilities`` will be added to the ``compute_node``"},{"line_number":130,"context_line":"database table. This column will contain all the capabilities reported by"},{"line_number":131,"context_line":"each compute node. A database migration is necessary in order to add the"},{"line_number":132,"context_line":"column."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"New ``HostCapabilities`` object will be added, containing all the capabilities"},{"line_number":135,"context_line":"currently acceptable by Nova. If any of of object\u0027s fields is not set, then"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_499d1758","line":132,"in_reply_to":"9a8ffd7b_bbfe7736","updated":"2015-11-26 05:46:08.000000000","message":"Yeah, JSON blob. And yeah, meant schema migration. :)","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":132,"context_line":"column."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"New ``HostCapabilities`` object will be added, containing all the capabilities"},{"line_number":135,"context_line":"currently acceptable by Nova. If any of of object\u0027s fields is not set, then"},{"line_number":136,"context_line":"that capability will be considered as not present."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_fb3e3fd9","line":135,"updated":"2015-11-25 12:11:18.000000000","message":"s/of of/of the/ ?\n\nare not set","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":132,"context_line":"column."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"New ``HostCapabilities`` object will be added, containing all the capabilities"},{"line_number":135,"context_line":"currently acceptable by Nova. If any of of object\u0027s fields is not set, then"},{"line_number":136,"context_line":"that capability will be considered as not present."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_667873f3","line":135,"in_reply_to":"9a8ffd7b_fb3e3fd9","updated":"2015-11-26 05:46:08.000000000","message":"Done","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"New ``HostCapabilities`` object will be added, containing all the capabilities"},{"line_number":135,"context_line":"currently acceptable by Nova. If any of of object\u0027s fields is not set, then"},{"line_number":136,"context_line":"that capability will be considered as not present."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"REST API impact"},{"line_number":139,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_76682688","line":136,"updated":"2015-11-25 12:11:18.000000000","message":"I guess a HostCapability object is essentially a ListOfObjects(Capability); can you give some detail on the fields of Capability please?","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"New ``HostCapabilities`` object will be added, containing all the capabilities"},{"line_number":135,"context_line":"currently acceptable by Nova. If any of of object\u0027s fields is not set, then"},{"line_number":136,"context_line":"that capability will be considered as not present."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"REST API impact"},{"line_number":139,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_6464c221","line":136,"in_reply_to":"9a8ffd7b_76682688","updated":"2015-11-26 05:46:08.000000000","message":"My proposal is for HostCapability to be an object itself, with N fields, kind of like how ImageMetaProps is. I would argue that this way it will be easier to validate / control the capabilities reported by a nova-compute node. Plus, it will be easier for the scheduler to check capabilities - iterating over a list would be a bit more cpu intensive.","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":166,"context_line":"Proper scheduling will be assured for instances requiring certain host"},{"line_number":167,"context_line":"capabilities without having the administrator create host aggregates for"},{"line_number":168,"context_line":"certain host capabilities or set the ``requires_hypervisor_version`` image"},{"line_number":169,"context_line":"property for certain features which depend on the hypervisor version [2][3][4]."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"In order to benefit from the new scheduler filter, it must be included in the"},{"line_number":172,"context_line":"nova scheduler\u0027s ``nova.conf`` file."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_b60f6e2d","line":169,"updated":"2015-11-25 12:11:18.000000000","message":"Not sure this para is necessary, seems redundant to above","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":166,"context_line":"Proper scheduling will be assured for instances requiring certain host"},{"line_number":167,"context_line":"capabilities without having the administrator create host aggregates for"},{"line_number":168,"context_line":"certain host capabilities or set the ``requires_hypervisor_version`` image"},{"line_number":169,"context_line":"property for certain features which depend on the hypervisor version [2][3][4]."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"In order to benefit from the new scheduler filter, it must be included in the"},{"line_number":172,"context_line":"nova scheduler\u0027s ``nova.conf`` file."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_09794f2f","line":169,"in_reply_to":"9a8ffd7b_b60f6e2d","updated":"2015-11-26 05:46:08.000000000","message":"Done","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":169,"context_line":"property for certain features which depend on the hypervisor version [2][3][4]."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"In order to benefit from the new scheduler filter, it must be included in the"},{"line_number":172,"context_line":"nova scheduler\u0027s ``nova.conf`` file."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Developer impact"},{"line_number":175,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_36513e0f","line":172,"updated":"2015-11-25 12:11:18.000000000","message":"and the deployer should configure their host caps and flavors","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":169,"context_line":"property for certain features which depend on the hypervisor version [2][3][4]."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"In order to benefit from the new scheduler filter, it must be included in the"},{"line_number":172,"context_line":"nova scheduler\u0027s ``nova.conf`` file."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Developer impact"},{"line_number":175,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_662153fb","line":172,"in_reply_to":"9a8ffd7b_36513e0f","updated":"2015-11-26 05:46:08.000000000","message":"Yep. The \"undiscoverable\" caps should be configured. Flavors, ideally, they wouldn\u0027t have to change. But if we will opt in the end to request those caps with a \"capabilities:\" prefix, they would have to be updated.","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":175,"context_line":"----------------"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Drivers will have to implement the new ``get_host_capabilities`` method. It"},{"line_number":178,"context_line":"should return an instance of ``HostCapabilities``."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"In order for a new capability to be accepted, a new database migration for the"},{"line_number":181,"context_line":"table ``host_capabilities`` and a version increment for ``HostCapabilities``"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_36edbe25","line":178,"updated":"2015-11-25 12:11:18.000000000","message":"Offering a default impl returning an empty HostCap object would make this easier to merge.","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":175,"context_line":"----------------"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Drivers will have to implement the new ``get_host_capabilities`` method. It"},{"line_number":178,"context_line":"should return an instance of ``HostCapabilities``."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"In order for a new capability to be accepted, a new database migration for the"},{"line_number":181,"context_line":"table ``host_capabilities`` and a version increment for ``HostCapabilities``"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_6604f3bf","line":178,"in_reply_to":"9a8ffd7b_36edbe25","updated":"2015-11-26 05:46:08.000000000","message":"agreed.","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":178,"context_line":"should return an instance of ``HostCapabilities``."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"In order for a new capability to be accepted, a new database migration for the"},{"line_number":181,"context_line":"table ``host_capabilities`` and a version increment for ``HostCapabilities``"},{"line_number":182,"context_line":"will be necessary. If the capability\u0027s type is `undiscoverable`, it will have"},{"line_number":183,"context_line":"to be added to the config option group ``host_capabilities``."},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_56bf22fb","line":181,"updated":"2015-11-25 12:11:18.000000000","message":"wait why do we need to store the potential caps in a table? You didn\u0027t mention this table in the data model section","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"60c8d186020e424c01fe7aa7c9d3c4e71f4208f0","unresolved":false,"context_lines":[{"line_number":178,"context_line":"should return an instance of ``HostCapabilities``."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"In order for a new capability to be accepted, a new database migration for the"},{"line_number":181,"context_line":"table ``host_capabilities`` and a version increment for ``HostCapabilities``"},{"line_number":182,"context_line":"will be necessary. If the capability\u0027s type is `undiscoverable`, it will have"},{"line_number":183,"context_line":"to be added to the config option group ``host_capabilities``."},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_666dd397","line":181,"in_reply_to":"9a8ffd7b_56bf22fb","updated":"2015-11-26 05:46:08.000000000","message":"sorry, I\u0027ve missed this thing in this patchset. The next patchset fixed this.","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac75a97dce521c42b347da39ecf8800e097ae624","unresolved":false,"context_lines":[{"line_number":198,"context_line":"* ``HostCapabilities`` object model."},{"line_number":199,"context_line":"* new scheduler filter."},{"line_number":200,"context_line":"* ``nova.virt.driver.ComputeDriver.get_host_capabilities`` method."},{"line_number":201,"context_line":"* drivers\u0027 ``get_host_capabilities`` implementation."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Dependencies"},{"line_number":204,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_560402bf","line":201,"updated":"2015-11-25 12:11:18.000000000","message":"I\u0027ll review these later","commit_id":"ec95fd9741bcd73c7437f0b86562d9d44827b6b7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a71529e516b8d99c52d1c358fb6a5ea686190dee","unresolved":false,"context_lines":[{"line_number":23,"context_line":"features the compute nodes might have. For example, certain features require a"},{"line_number":24,"context_line":"minimum hypervisor version. The only way to handle this would be to set filters"},{"line_number":25,"context_line":"(e.g. image property ``requires_hypervisor_version``) in order to ensure proper"},{"line_number":26,"context_line":"scheduling. This less than ideal, as it requires the administrators to know"},{"line_number":27,"context_line":"which feature requires what hypervisor version. [1]"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"On top of this, there are some features that are not available without proper"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_a92cd54a","line":26,"range":{"start_line":26,"start_character":12,"end_line":26,"end_character":17},"updated":"2015-12-01 22:29:32.000000000","message":"nano-nit: This is*","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a35fe165abd1c4750fdae880d29e9ac44defef28","unresolved":false,"context_lines":[{"line_number":23,"context_line":"features the compute nodes might have. For example, certain features require a"},{"line_number":24,"context_line":"minimum hypervisor version. The only way to handle this would be to set filters"},{"line_number":25,"context_line":"(e.g. image property ``requires_hypervisor_version``) in order to ensure proper"},{"line_number":26,"context_line":"scheduling. This less than ideal, as it requires the administrators to know"},{"line_number":27,"context_line":"which feature requires what hypervisor version. [1]"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"On top of this, there are some features that are not available without proper"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_f407fb1a","line":26,"in_reply_to":"9a8ffd7b_a92cd54a","updated":"2015-12-02 12:14:58.000000000","message":"Done","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a71529e516b8d99c52d1c358fb6a5ea686190dee","unresolved":false,"context_lines":[{"line_number":32,"context_line":"host that does not have the Host Guardian Service enabled and it is not"},{"line_number":33,"context_line":"Guarded [2]. Or, Hyper-V vTPM feature does not exist in Windows 10 at all, but"},{"line_number":34,"context_line":"it exists in Windows / Hyper-V Server 2016 and they share the same hypervisor"},{"line_number":35,"context_line":"version (10.0)."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Ideally, the scheduler could do feature-matching instead."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_cc0847dc","line":35,"updated":"2015-12-01 22:29:32.000000000","message":"While I understand that, the common solution is to use aggregates for homogenous hardware. What is the problem with using aggregates then?","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b416d1f90816a6a018a47a9d540929227f01ae41","unresolved":false,"context_lines":[{"line_number":32,"context_line":"host that does not have the Host Guardian Service enabled and it is not"},{"line_number":33,"context_line":"Guarded [2]. Or, Hyper-V vTPM feature does not exist in Windows 10 at all, but"},{"line_number":34,"context_line":"it exists in Windows / Hyper-V Server 2016 and they share the same hypervisor"},{"line_number":35,"context_line":"version (10.0)."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Ideally, the scheduler could do feature-matching instead."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_948538d0","line":35,"in_reply_to":"9a8ffd7b_8518b6d4","updated":"2015-12-02 15:54:19.000000000","message":"Well, the main problem that it\u0027s not symetric between what the user asks (either implicitly thru a flavor or image or explicitly via an hint) and what the aggregate info provides.\n\nHere, I\u0027d love some thinking about (like I said above) the impact of a flavor decomposition wrt aggregates for the pattern matching.\n\nI get that the current model is pretty limited and needs to change to be more flexible, I just want to make sure we are going into the right direction.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a35fe165abd1c4750fdae880d29e9ac44defef28","unresolved":false,"context_lines":[{"line_number":32,"context_line":"host that does not have the Host Guardian Service enabled and it is not"},{"line_number":33,"context_line":"Guarded [2]. Or, Hyper-V vTPM feature does not exist in Windows 10 at all, but"},{"line_number":34,"context_line":"it exists in Windows / Hyper-V Server 2016 and they share the same hypervisor"},{"line_number":35,"context_line":"version (10.0)."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Ideally, the scheduler could do feature-matching instead."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_8518b6d4","line":35,"in_reply_to":"9a8ffd7b_cc0847dc","updated":"2015-12-02 12:14:58.000000000","message":"The purpose of this blueprint is to simplify the way we create instances that require certain capabilities. Yes, aggregates can be used, but with this blueprint, they won\u0027t be necessary to assure a certain capability. Plus, there are also hypervisor capabilities.\n\nThe problem is, we can and will have a lot of those capabilities. Creating a host aggregate for each of them and for any combination of them can be troublesome.\n\nLet\u0027s imagine that you have some heterogenous OpenStack deployment - different hypervisors, different hypervisor versions, different hardware specs. Let\u0027s say there\u0027s a total of 6 host capabilities (which isn\u0027t much) split amongst the compute nodes, each having a particular subset from those 6 capabilities. Now, the instances can require any combination of those 6 capabilities. Would you create an aggregate for each capability / each combination of capabilities? Only creating the host aggregates for each pair of capabilities are would result in 30 aggregates, if I\u0027m not mistaken.\n\nPlus, there might even be hypervisor capabilities that the user is unaware of. Or has to search how to find out if he can use it or not.\n\nThis can easily be avoided with this blueprint, since the scheduler will know what are the capabilities of each host.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a71529e516b8d99c52d1c358fb6a5ea686190dee","unresolved":false,"context_lines":[{"line_number":48,"context_line":"* **Undiscoverable capabilities**: cannot be determined easily or at all by"},{"line_number":49,"context_line":"  the nova-compute service, mostly hardware related capabilites (e.g.: SSD,"},{"line_number":50,"context_line":"  SR-IOV, fibre channel, etc.)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Project Priority"},{"line_number":53,"context_line":"-----------------"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_ac3703af","line":51,"updated":"2015-12-01 22:29:32.000000000","message":"Well, the above doesn\u0027t seem like usecases but rather some definitions. What could be done for the operators?","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a35fe165abd1c4750fdae880d29e9ac44defef28","unresolved":false,"context_lines":[{"line_number":48,"context_line":"* **Undiscoverable capabilities**: cannot be determined easily or at all by"},{"line_number":49,"context_line":"  the nova-compute service, mostly hardware related capabilites (e.g.: SSD,"},{"line_number":50,"context_line":"  SR-IOV, fibre channel, etc.)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Project Priority"},{"line_number":53,"context_line":"-----------------"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_8250ac33","line":51,"in_reply_to":"9a8ffd7b_ac3703af","updated":"2015-12-02 12:14:58.000000000","message":"I suppose this isn\u0027t the proper place for those definitions, they should be at the proposed change section.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a71529e516b8d99c52d1c358fb6a5ea686190dee","unresolved":false,"context_lines":[{"line_number":52,"context_line":"Project Priority"},{"line_number":53,"context_line":"-----------------"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"None"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Proposed change"},{"line_number":58,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_c998391e","line":55,"updated":"2015-12-01 22:29:32.000000000","message":"small nit: you have to remove that section.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a35fe165abd1c4750fdae880d29e9ac44defef28","unresolved":false,"context_lines":[{"line_number":52,"context_line":"Project Priority"},{"line_number":53,"context_line":"-----------------"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"None"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Proposed change"},{"line_number":58,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_973471de","line":55,"in_reply_to":"9a8ffd7b_c998391e","updated":"2015-12-02 12:14:58.000000000","message":"Done","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a71529e516b8d99c52d1c358fb6a5ea686190dee","unresolved":false,"context_lines":[{"line_number":58,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"A database migration and object model must be implemented. See `Data model"},{"line_number":61,"context_line":"impact` section."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"The method ``get_hypervisor_capabilities`` must be added to virt.ComputeDriver."},{"line_number":64,"context_line":"The driver will have to implement this method and return a ``HostCapabilities``"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_4cf537c9","line":61,"updated":"2015-12-01 22:29:32.000000000","message":"not really needed here IMHO","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a35fe165abd1c4750fdae880d29e9ac44defef28","unresolved":false,"context_lines":[{"line_number":58,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"A database migration and object model must be implemented. See `Data model"},{"line_number":61,"context_line":"impact` section."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"The method ``get_hypervisor_capabilities`` must be added to virt.ComputeDriver."},{"line_number":64,"context_line":"The driver will have to implement this method and return a ``HostCapabilities``"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_7750ed0a","line":61,"in_reply_to":"9a8ffd7b_4cf537c9","updated":"2015-12-02 12:14:58.000000000","message":"Done","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a71529e516b8d99c52d1c358fb6a5ea686190dee","unresolved":false,"context_lines":[{"line_number":66,"context_line":"`Use Cases` section."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"As for the \"undiscoverable capabilities\", a config option in the group"},{"line_number":69,"context_line":"``host_capabilities`` can be defined for each capability."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"All configured and reported capabilities must be recognised by the"},{"line_number":72,"context_line":"HostCapabilities object or an InvalidHostCapability exception will be raised."}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_175e5812","line":69,"updated":"2015-12-01 22:29:32.000000000","message":"not sure I like that. The current usual way is to have metrics provided by the hypervisor, because we\u0027d like to claim against those.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b416d1f90816a6a018a47a9d540929227f01ae41","unresolved":false,"context_lines":[{"line_number":66,"context_line":"`Use Cases` section."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"As for the \"undiscoverable capabilities\", a config option in the group"},{"line_number":69,"context_line":"``host_capabilities`` can be defined for each capability."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"All configured and reported capabilities must be recognised by the"},{"line_number":72,"context_line":"HostCapabilities object or an InvalidHostCapability exception will be raised."}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_f44b64af","line":69,"in_reply_to":"9a8ffd7b_02aefce5","updated":"2015-12-02 15:54:19.000000000","message":"Yeah, I got that, it\u0027s not something we claim about, but rather something we use for defining an host, right? If so, I\u0027m still not sure a conf opt is the right way for doing this. For the moment, we have aggregate metadata for describing explicitely something arbitrary like gpu\u003dTrue so I\u0027m asking an open question whether we should allow some host definitions thru amending the API os-hosts resource.\n\nNote: I\u0027m not opiniated whether an API call is the good way for doing that (just thinking out loud), I just feel that using conf opts for that is a terrible idea and we should find an alternative IMHO.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a35fe165abd1c4750fdae880d29e9ac44defef28","unresolved":false,"context_lines":[{"line_number":66,"context_line":"`Use Cases` section."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"As for the \"undiscoverable capabilities\", a config option in the group"},{"line_number":69,"context_line":"``host_capabilities`` can be defined for each capability."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"All configured and reported capabilities must be recognised by the"},{"line_number":72,"context_line":"HostCapabilities object or an InvalidHostCapability exception will be raised."}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_02aefce5","line":69,"in_reply_to":"9a8ffd7b_175e5812","updated":"2015-12-02 12:14:58.000000000","message":"host capabilities represent the qualities (not quantitive resources) of the compute nodes, not their statistics or resource usage.\n\nIn the config option group you would put capabilities that can\u0027t be discovered programatically. For example, the \"os_shielded_vms\" capability for Hyper-V requires a quite complicated setup; discovering this capability automatically is impractical or impossible. The users should just set the config option instead.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a71529e516b8d99c52d1c358fb6a5ea686190dee","unresolved":false,"context_lines":[{"line_number":81,"context_line":"property ``os_secure_boot`` or flavor extra spec ``os:secure_boot`` as"},{"line_number":82,"context_line":"``required`` [3]."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"A new filter will be implemented which will match the instance features"},{"line_number":85,"context_line":"requested with the host capabilities as previously described. It will only"},{"line_number":86,"context_line":"take into account fields defined in the ``HostCapabilities``. If a field in the"},{"line_number":87,"context_line":"``HostCapabilities`` instance has not been set, that capability will be"},{"line_number":88,"context_line":"considered as not present."}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_8cd47fbd","line":85,"range":{"start_line":84,"start_character":0,"end_line":85,"end_character":37},"updated":"2015-12-01 22:29:32.000000000","message":"what\u0027s the planned difference with ComputeCapabilitiesFilter except the fact that it only looks at the flavor atm ?","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b416d1f90816a6a018a47a9d540929227f01ae41","unresolved":false,"context_lines":[{"line_number":82,"context_line":"``required`` [3]."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"A new filter will be implemented which will match the instance features"},{"line_number":85,"context_line":"requested with the host capabilities as previously described. It will only"},{"line_number":86,"context_line":"take into account fields defined in the ``HostCapabilities``. If a field in the"},{"line_number":87,"context_line":"``HostCapabilities`` instance has not been set, that capability will be"},{"line_number":88,"context_line":"considered as not present."}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_77a216fe","line":85,"in_reply_to":"9a8ffd7b_3f28f732","updated":"2015-12-02 15:54:19.000000000","message":"Sure, I got your first point (and I actually said \"except the fact that it only looks at the flavor\" so I expected that answer).\n\nI\u0027m just thinking that this existing filter is pretty rudimentary but we should provide a clear migration path for explaining that \"the new way for matching capabilities\" is *THAT* new filter.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a35fe165abd1c4750fdae880d29e9ac44defef28","unresolved":false,"context_lines":[{"line_number":82,"context_line":"``required`` [3]."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"A new filter will be implemented which will match the instance features"},{"line_number":85,"context_line":"requested with the host capabilities as previously described. It will only"},{"line_number":86,"context_line":"take into account fields defined in the ``HostCapabilities``. If a field in the"},{"line_number":87,"context_line":"``HostCapabilities`` instance has not been set, that capability will be"},{"line_number":88,"context_line":"considered as not present."}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_3f28f732","line":85,"in_reply_to":"9a8ffd7b_8cd47fbd","updated":"2015-12-02 12:14:58.000000000","message":"That is the main difference: it will look at both flavor extra_specs and image properties.\n\nSecondly, it will check the capabilities defined in the HostCapabilities.fields, ignoring any other properties. This means that the number of capabilities checked will change as the HostCapabilities fields will expand.\n\nThirdly, ComputeCapabilitiesFilter checks for a \"capabilities:\" prefix. I would like not to have that, if possible.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a71529e516b8d99c52d1c358fb6a5ea686190dee","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  that cannot be determined by version alone."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"* Host aggregates, grouping hosts by capabilities. This can become quite"},{"line_number":118,"context_line":"  difficult when trying to deploy instances requiring multiple capabilities."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"The alternatives only partially solve the scheduling issue for cold migration"},{"line_number":121,"context_line":"or resize."}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_b7d0ac54","line":118,"updated":"2015-12-01 22:29:32.000000000","message":"Well, I think the approach of a flavor decomposition like we discussed at Summits sounds maybe a good way to address that problem.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b416d1f90816a6a018a47a9d540929227f01ae41","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  that cannot be determined by version alone."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"* Host aggregates, grouping hosts by capabilities. This can become quite"},{"line_number":118,"context_line":"  difficult when trying to deploy instances requiring multiple capabilities."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"The alternatives only partially solve the scheduling issue for cold migration"},{"line_number":121,"context_line":"or resize."}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_f7bb660d","line":118,"in_reply_to":"9a8ffd7b_17d161cd","updated":"2015-12-02 15:54:19.000000000","message":"Like I said above, proposing a better way to address an user implicit request using flavor decomposition necessarly needs to address how we can figure out hosts, ie. using aggregates as a set of grouped capabilities.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a35fe165abd1c4750fdae880d29e9ac44defef28","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  that cannot be determined by version alone."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"* Host aggregates, grouping hosts by capabilities. This can become quite"},{"line_number":118,"context_line":"  difficult when trying to deploy instances requiring multiple capabilities."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"The alternatives only partially solve the scheduling issue for cold migration"},{"line_number":121,"context_line":"or resize."}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_17d161cd","line":118,"in_reply_to":"9a8ffd7b_b7d0ac54","updated":"2015-12-02 12:14:58.000000000","message":"Unrelated. This spec talks about how to properly match / schedule instances based on the requested image and flavor and its extra_specs.\n\nAlso, I think Jay Pipes is working on the flavor decomposition, as far as I remember, although I would be interested on helping on that..","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a71529e516b8d99c52d1c358fb6a5ea686190dee","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  difficult when trying to deploy instances requiring multiple capabilities."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"The alternatives only partially solve the scheduling issue for cold migration"},{"line_number":121,"context_line":"or resize."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Data model impact"},{"line_number":124,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_975b28f6","line":121,"updated":"2015-12-01 22:29:32.000000000","message":"not sure I understand that sentence. What is the problem with cold migration or resize that you think about ?","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a35fe165abd1c4750fdae880d29e9ac44defef28","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  difficult when trying to deploy instances requiring multiple capabilities."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"The alternatives only partially solve the scheduling issue for cold migration"},{"line_number":121,"context_line":"or resize."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Data model impact"},{"line_number":124,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_f2aaabd1","line":121,"in_reply_to":"9a8ffd7b_975b28f6","updated":"2015-12-02 12:14:58.000000000","message":"I guess some information was lost from a patchset to another. The thing is, you cannot specify a host for cold migration / cold resize, the scheduler chooses the host. This blueprint will help better choose a proper host for the instance, making sure the host has the capabilities required by instance in order to properly run.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b416d1f90816a6a018a47a9d540929227f01ae41","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  difficult when trying to deploy instances requiring multiple capabilities."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"The alternatives only partially solve the scheduling issue for cold migration"},{"line_number":121,"context_line":"or resize."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Data model impact"},{"line_number":124,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_f7ee06ec","line":121,"in_reply_to":"9a8ffd7b_f2aaabd1","updated":"2015-12-02 15:54:19.000000000","message":"That looks to me unrelated to your spec. FWIW, there is already an approved spec for ensuring that we have a consistent behaviour when doing a move operation http://specs.openstack.org/openstack/nova-specs/specs/mitaka/approved/check-destination-on-migrations.html","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a71529e516b8d99c52d1c358fb6a5ea686190dee","unresolved":false,"context_lines":[{"line_number":126,"context_line":"The Text column ``host_capabilities`` will be added to the ``compute_node``"},{"line_number":127,"context_line":"database table. This column will contain all the capabilities reported by"},{"line_number":128,"context_line":"each compute node as a JSON blob. A database schema migration is necessary in"},{"line_number":129,"context_line":"order to add the column."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"New ``HostCapabilities`` object will be added, containing all the capabilities"},{"line_number":132,"context_line":"currently acceptable by Nova. If any of the object\u0027s fields is not set, then"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_77ab248a","line":129,"updated":"2015-12-01 22:29:32.000000000","message":"So, we already have the stats and cpu_info fields for providing such information. Are you planning to consider deprecating those ?","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b416d1f90816a6a018a47a9d540929227f01ae41","unresolved":false,"context_lines":[{"line_number":126,"context_line":"The Text column ``host_capabilities`` will be added to the ``compute_node``"},{"line_number":127,"context_line":"database table. This column will contain all the capabilities reported by"},{"line_number":128,"context_line":"each compute node as a JSON blob. A database schema migration is necessary in"},{"line_number":129,"context_line":"order to add the column."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"New ``HostCapabilities`` object will be added, containing all the capabilities"},{"line_number":132,"context_line":"currently acceptable by Nova. If any of the object\u0027s fields is not set, then"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_b7907e44","line":129,"in_reply_to":"9a8ffd7b_57b609dd","updated":"2015-12-02 15:54:19.000000000","message":"Like I said above, what you feel unrelated because \u0027old way\u0027 is actually the current way for doing what you want. So, I\u0027d love to see a clear migration path from that model to the one you want, in particular so we could address all efforts into your direction if we agree.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a35fe165abd1c4750fdae880d29e9ac44defef28","unresolved":false,"context_lines":[{"line_number":126,"context_line":"The Text column ``host_capabilities`` will be added to the ``compute_node``"},{"line_number":127,"context_line":"database table. This column will contain all the capabilities reported by"},{"line_number":128,"context_line":"each compute node as a JSON blob. A database schema migration is necessary in"},{"line_number":129,"context_line":"order to add the column."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"New ``HostCapabilities`` object will be added, containing all the capabilities"},{"line_number":132,"context_line":"currently acceptable by Nova. If any of the object\u0027s fields is not set, then"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_57b609dd","line":129,"in_reply_to":"9a8ffd7b_77ab248a","updated":"2015-12-02 12:14:58.000000000","message":"host_capabilities refer to a compute node\u0027s qualities (not resource quantities or metrics or stats), so the stats don\u0027t really have place here. cpu_info, yeah, that could fit in here, but it is not in plan for this blueprint. If we decide to approve this blueprint, deprecating the cpu_info column and including it in host_capabilities should be on its own blueprint / spec.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a71529e516b8d99c52d1c358fb6a5ea686190dee","unresolved":false,"context_lines":[{"line_number":161,"context_line":"---------------------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"In order to benefit from the new scheduler filter, it must be included in the"},{"line_number":164,"context_line":"nova scheduler\u0027s ``nova.conf`` file."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Developer impact"},{"line_number":167,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_97856808","line":164,"updated":"2015-12-01 22:29:32.000000000","message":"That\u0027s implicit, so not needed.","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a35fe165abd1c4750fdae880d29e9ac44defef28","unresolved":false,"context_lines":[{"line_number":161,"context_line":"---------------------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"In order to benefit from the new scheduler filter, it must be included in the"},{"line_number":164,"context_line":"nova scheduler\u0027s ``nova.conf`` file."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Developer impact"},{"line_number":167,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a8ffd7b_779eadb9","line":164,"in_reply_to":"9a8ffd7b_97856808","updated":"2015-12-02 12:14:58.000000000","message":"Done","commit_id":"0d5552e6b95b60035d834e644a26fec915a1f150"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb07f8e6cdcb1aff472fc31fb245dbe385bb0bf7","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Instances could require any combination of those N capabilities; creating a"},{"line_number":48,"context_line":"host aggregate for each combination of capabilities in order to ensure proper"},{"line_number":49,"context_line":"scheduling is unfeasible. Ideally, the scheduler could do feature-matching"},{"line_number":50,"context_line":"instead."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Use Cases"},{"line_number":53,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a8ffd7b_17494ab7","line":50,"updated":"2015-12-02 16:02:20.000000000","message":"se my comment on PS7, I feel that expressing a composite way for asking resources necessarly needs to consider a composite way for *describing* a set of resource providers (and not only one single resource provider IMHO)","commit_id":"4fd79c9385503064647aec76a35973adaee5c110"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"6d1df7d861c4ea888cc29ea6c1f17eb026facaa0","unresolved":false,"context_lines":[{"line_number":83,"context_line":"``host_capabilities`` can be defined for each capability."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"All configured and reported capabilities must be recognised by the"},{"line_number":86,"context_line":"HostCapabilities object or an InvalidHostCapability exception will be raised."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"As for the capabilities present in the ``HostCapabilities`` model, they will"},{"line_number":89,"context_line":"mirror the properties that can be in the image metadata or flavor extra specs,"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a8ffd7b_ad8ef42b","line":86,"updated":"2015-12-02 15:13:34.000000000","message":"If I understand this correctly, if a host or hypervisor comes out that introduces a new capability, or a variation of an existing capability, this will require a code change in order for it to not raise an exception? IOW, there would have to be a new config option added, and new field in the HostCapabilities object?","commit_id":"4fd79c9385503064647aec76a35973adaee5c110"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"171512d0c586bb32fb05ddf308a8624b441fe98d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"``host_capabilities`` can be defined for each capability."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"All configured and reported capabilities must be recognised by the"},{"line_number":86,"context_line":"HostCapabilities object or an InvalidHostCapability exception will be raised."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"As for the capabilities present in the ``HostCapabilities`` model, they will"},{"line_number":89,"context_line":"mirror the properties that can be in the image metadata or flavor extra specs,"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a8ffd7b_7d7670d8","line":86,"in_reply_to":"9a8ffd7b_660fc639","updated":"2015-12-02 17:27:17.000000000","message":"Indeed.\n\nSure, I have given Hyper-V examples because I know them the most. \n\nAs for the number of capabilities that could exist, I can\u0027t give an estimation on that. I am expecting it to be an expanding number. But, nonetheless, they will be defined at one point in the image properties (-\u003eImageMetaProps) and / or flavor extra_specs. If you worry that there are going to be too many of them, this concern will also apply to ImageMetaProps and whatever will the equivalent of flavor specs will be.\n\nAs for the overlap percentage, I am expecting some overlap: if some hypervisor doesn\u0027t have a certain feature that other have, they might copy it at some point. I can\u0027t make a proper assumption of the overlap percentage.","commit_id":"4fd79c9385503064647aec76a35973adaee5c110"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"6d93ee22a6b7d21ef54a9ece145ec6bcc9cb42ff","unresolved":false,"context_lines":[{"line_number":83,"context_line":"``host_capabilities`` can be defined for each capability."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"All configured and reported capabilities must be recognised by the"},{"line_number":86,"context_line":"HostCapabilities object or an InvalidHostCapability exception will be raised."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"As for the capabilities present in the ``HostCapabilities`` model, they will"},{"line_number":89,"context_line":"mirror the properties that can be in the image metadata or flavor extra specs,"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a8ffd7b_cb7f9bde","line":86,"in_reply_to":"9a8ffd7b_ad8ef42b","updated":"2015-12-02 16:46:19.000000000","message":"yeah, the HostCapabilities object must be updated to include the new field.\n\nAn alternative would be to simply ignore unknown capabilities, that are not defined in the HostCapabilities object; the scheduler won\u0027t know about them, won\u0027t schedule based on them.","commit_id":"4fd79c9385503064647aec76a35973adaee5c110"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"7f6c3b33159dc43451f17b8a5ac2f7ccb7d248f0","unresolved":false,"context_lines":[{"line_number":83,"context_line":"``host_capabilities`` can be defined for each capability."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"All configured and reported capabilities must be recognised by the"},{"line_number":86,"context_line":"HostCapabilities object or an InvalidHostCapability exception will be raised."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"As for the capabilities present in the ``HostCapabilities`` model, they will"},{"line_number":89,"context_line":"mirror the properties that can be in the image metadata or flavor extra specs,"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a8ffd7b_660fc639","line":86,"in_reply_to":"9a8ffd7b_cb7f9bde","updated":"2015-12-02 17:01:48.000000000","message":"Well, since the whole point of this spec is to expose these so that the scheduler can select based on them, the alternative you mention really doesn\u0027t make any sense. In order for a capability to be exposed (and used), there will have to be a code change/release.\n\nI understand that your focus is mainly on the Hyper-V capabilities, but do you have any estimate of the potential number of capabilities that may need to be exposed, for all hypervisors and architectures? And what percentage of those would overlap with other systems?","commit_id":"4fd79c9385503064647aec76a35973adaee5c110"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"6d1df7d861c4ea888cc29ea6c1f17eb026facaa0","unresolved":false,"context_lines":[{"line_number":115,"context_line":"values [\u0027hyperv-gen1\u0027, \u0027hyperv-gen2\u0027] for this capability. For an instance"},{"line_number":116,"context_line":"with image metadata containing the property ``hw_machine_type`` set to"},{"line_number":117,"context_line":"``hyperv-gen2``, a host will be considered appropriate if the requested"},{"line_number":118,"context_line":"capability value exists in the ``HostCapabilities.hw_machine_type`` set."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Instances can also require multiple values from the same capabilities set"},{"line_number":121,"context_line":"by expressing image properties / flavor extra spec values as lists (e.g.: image"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a8ffd7b_cd9c986c","line":118,"updated":"2015-12-02 15:13:34.000000000","message":"Are there cases where a capability will be in the form of a ordered series, rather than an enum? E.g., \"foo_version\u003d1\" is then enhanced with versions 2, 3, etc. A request might only require foo_version 2 or later. Will these comparisons be possible, or will the HostCapability.foo_version have to be a full enum (such as [1, 2, 3, ...])?\n\nI\u0027m concerned about the need for more and more logic needed to be added to the code to handle each type of capability.","commit_id":"4fd79c9385503064647aec76a35973adaee5c110"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"7f6c3b33159dc43451f17b8a5ac2f7ccb7d248f0","unresolved":false,"context_lines":[{"line_number":115,"context_line":"values [\u0027hyperv-gen1\u0027, \u0027hyperv-gen2\u0027] for this capability. For an instance"},{"line_number":116,"context_line":"with image metadata containing the property ``hw_machine_type`` set to"},{"line_number":117,"context_line":"``hyperv-gen2``, a host will be considered appropriate if the requested"},{"line_number":118,"context_line":"capability value exists in the ``HostCapabilities.hw_machine_type`` set."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Instances can also require multiple values from the same capabilities set"},{"line_number":121,"context_line":"by expressing image properties / flavor extra spec values as lists (e.g.: image"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a8ffd7b_86e98ab9","line":118,"in_reply_to":"9a8ffd7b_4b716b75","updated":"2015-12-02 17:01:48.000000000","message":"My concern is that simply adding a new field may not be enough; we will also have to describe the syntax for matching, and the algorithm for anything other than boolean or simple enums.","commit_id":"4fd79c9385503064647aec76a35973adaee5c110"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"171512d0c586bb32fb05ddf308a8624b441fe98d","unresolved":false,"context_lines":[{"line_number":115,"context_line":"values [\u0027hyperv-gen1\u0027, \u0027hyperv-gen2\u0027] for this capability. For an instance"},{"line_number":116,"context_line":"with image metadata containing the property ``hw_machine_type`` set to"},{"line_number":117,"context_line":"``hyperv-gen2``, a host will be considered appropriate if the requested"},{"line_number":118,"context_line":"capability value exists in the ``HostCapabilities.hw_machine_type`` set."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Instances can also require multiple values from the same capabilities set"},{"line_number":121,"context_line":"by expressing image properties / flavor extra spec values as lists (e.g.: image"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a8ffd7b_9d3eb489","line":118,"in_reply_to":"9a8ffd7b_86e98ab9","updated":"2015-12-02 17:27:17.000000000","message":"Sure, makes sense. We can include this.","commit_id":"4fd79c9385503064647aec76a35973adaee5c110"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"6d93ee22a6b7d21ef54a9ece145ec6bcc9cb42ff","unresolved":false,"context_lines":[{"line_number":115,"context_line":"values [\u0027hyperv-gen1\u0027, \u0027hyperv-gen2\u0027] for this capability. For an instance"},{"line_number":116,"context_line":"with image metadata containing the property ``hw_machine_type`` set to"},{"line_number":117,"context_line":"``hyperv-gen2``, a host will be considered appropriate if the requested"},{"line_number":118,"context_line":"capability value exists in the ``HostCapabilities.hw_machine_type`` set."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Instances can also require multiple values from the same capabilities set"},{"line_number":121,"context_line":"by expressing image properties / flavor extra spec values as lists (e.g.: image"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a8ffd7b_4b716b75","line":118,"in_reply_to":"9a8ffd7b_cd9c986c","updated":"2015-12-02 16:46:19.000000000","message":"I am unaware of such a capability. But, I suppose we can add image properties like:\n\n    --property foo_version\u003d\u0027\u003e\u003d2\u0027\n\nor flavor extra_spec.","commit_id":"4fd79c9385503064647aec76a35973adaee5c110"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb07f8e6cdcb1aff472fc31fb245dbe385bb0bf7","unresolved":false,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"* ``host_capabilities`` column in ``compute_nodes`` table."},{"line_number":199,"context_line":"* ``HostCapabilities`` object model."},{"line_number":200,"context_line":"* ``host_capabilities`` config option group."},{"line_number":201,"context_line":"* ``nova.virt.driver.ComputeDriver.get_host_capabilities`` method."},{"line_number":202,"context_line":"* drivers\u0027 ``get_host_capabilities`` implementation."},{"line_number":203,"context_line":"* new scheduler filter."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a8ffd7b_37d32e06","line":200,"updated":"2015-12-02 16:02:20.000000000","message":"Nit: you have to also amend the HostManager to add that new attribute","commit_id":"4fd79c9385503064647aec76a35973adaee5c110"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"6d93ee22a6b7d21ef54a9ece145ec6bcc9cb42ff","unresolved":false,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"* ``host_capabilities`` column in ``compute_nodes`` table."},{"line_number":199,"context_line":"* ``HostCapabilities`` object model."},{"line_number":200,"context_line":"* ``host_capabilities`` config option group."},{"line_number":201,"context_line":"* ``nova.virt.driver.ComputeDriver.get_host_capabilities`` method."},{"line_number":202,"context_line":"* drivers\u0027 ``get_host_capabilities`` implementation."},{"line_number":203,"context_line":"* new scheduler filter."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a8ffd7b_405dca45","line":200,"in_reply_to":"9a8ffd7b_37d32e06","updated":"2015-12-02 16:46:19.000000000","message":"Done","commit_id":"4fd79c9385503064647aec76a35973adaee5c110"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"95c9c40ea56b9f9356d06078a54ccfb264ffde6c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"``host_capabilities`` can be defined for each capability."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"All configured and reported capabilities must be recognised by the"},{"line_number":86,"context_line":"HostCapabilities object or an InvalidHostCapability exception will be raised."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"As for the capabilities present in the ``HostCapabilities`` model, they will"},{"line_number":89,"context_line":"mirror the properties that can be in the image metadata or flavor extra specs,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7a740942_428d5430","line":86,"updated":"2015-12-03 19:43:03.000000000","message":"This could also just log a warning and not raise an exception.  But that\u0027s something that can be debated in a code review, it\u0027s a little too much detail here.","commit_id":"d3920adca27c8bab0c9a31a2c0d8cdb9235a4f4a"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"e4c2e12b1bbd270e51d099a7552cd4019132f8c4","unresolved":false,"context_lines":[{"line_number":83,"context_line":"``host_capabilities`` can be defined for each capability."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"All configured and reported capabilities must be recognised by the"},{"line_number":86,"context_line":"HostCapabilities object or an InvalidHostCapability exception will be raised."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"As for the capabilities present in the ``HostCapabilities`` model, they will"},{"line_number":89,"context_line":"mirror the properties that can be in the image metadata or flavor extra specs,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7a740942_74b8f9e5","line":86,"in_reply_to":"7a740942_428d5430","updated":"2015-12-08 17:41:17.000000000","message":"Done","commit_id":"d3920adca27c8bab0c9a31a2c0d8cdb9235a4f4a"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"95c9c40ea56b9f9356d06078a54ccfb264ffde6c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"property ``os_secure_boot`` or flavor extra spec ``os:secure_boot`` as"},{"line_number":96,"context_line":"``required`` [3]."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"A new filter will be implemented which will match the instance features"},{"line_number":99,"context_line":"requested with the host capabilities as previously described. It will only"},{"line_number":100,"context_line":"take into account fields defined in the ``HostCapabilities``. If a field in the"},{"line_number":101,"context_line":"``HostCapabilities`` instance has not been set, that capability will be"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7a740942_c21dc410","line":98,"updated":"2015-12-03 19:43:03.000000000","message":"This new filter should probably be split out into a dependent spec.  Just adding the capabilities concept is enough to tackle at once and the filter can be discussed once that\u0027s in place.","commit_id":"d3920adca27c8bab0c9a31a2c0d8cdb9235a4f4a"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"e4c2e12b1bbd270e51d099a7552cd4019132f8c4","unresolved":false,"context_lines":[{"line_number":95,"context_line":"property ``os_secure_boot`` or flavor extra spec ``os:secure_boot`` as"},{"line_number":96,"context_line":"``required`` [3]."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"A new filter will be implemented which will match the instance features"},{"line_number":99,"context_line":"requested with the host capabilities as previously described. It will only"},{"line_number":100,"context_line":"take into account fields defined in the ``HostCapabilities``. If a field in the"},{"line_number":101,"context_line":"``HostCapabilities`` instance has not been set, that capability will be"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7a740942_190e21e5","line":98,"in_reply_to":"7a740942_c21dc410","updated":"2015-12-08 17:41:17.000000000","message":"At this point, as it is spec freeze, sure... but I\u0027d rather have the filter part in as well, as it is an important bit - it makes sure that instances can request host capabilities through image properties as well (which makes more sense for some capabilities to be an image property rather than flavor extra spec - capabilities that are mandatory for the instance to work property (e.g. hyper-v generation 2 vms)).","commit_id":"d3920adca27c8bab0c9a31a2c0d8cdb9235a4f4a"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"95c9c40ea56b9f9356d06078a54ccfb264ffde6c","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"The Text column ``host_capabilities`` will be added to the ``compute_node``"},{"line_number":148,"context_line":"database table. This column will contain all the capabilities reported by"},{"line_number":149,"context_line":"each compute node as a JSON blob. A database schema migration is necessary in"},{"line_number":150,"context_line":"order to add the column."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"New ``HostCapabilities`` object will be added, containing all the capabilities"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7a740942_c2c14482","line":149,"updated":"2015-12-03 19:43:03.000000000","message":"Can you provide more detail on this JSON blob.  Is it the HostCapabilities object in serialized form?","commit_id":"d3920adca27c8bab0c9a31a2c0d8cdb9235a4f4a"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"e4c2e12b1bbd270e51d099a7552cd4019132f8c4","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"The Text column ``host_capabilities`` will be added to the ``compute_node``"},{"line_number":148,"context_line":"database table. This column will contain all the capabilities reported by"},{"line_number":149,"context_line":"each compute node as a JSON blob. A database schema migration is necessary in"},{"line_number":150,"context_line":"order to add the column."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"New ``HostCapabilities`` object will be added, containing all the capabilities"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7a740942_9489e528","line":149,"in_reply_to":"7a740942_c2c14482","updated":"2015-12-08 17:41:17.000000000","message":"It is.","commit_id":"d3920adca27c8bab0c9a31a2c0d8cdb9235a4f4a"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"95c9c40ea56b9f9356d06078a54ccfb264ffde6c","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"* Unit tests."},{"line_number":225,"context_line":"* Jenkins."},{"line_number":226,"context_line":"* 3rd party CIs."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Documentation Impact"},{"line_number":229,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7a740942_225e08ea","line":226,"updated":"2015-12-03 19:43:03.000000000","message":"This could use more detail.  What will Jenkins be testing, what are 3rd party CIs testing?","commit_id":"d3920adca27c8bab0c9a31a2c0d8cdb9235a4f4a"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"e4c2e12b1bbd270e51d099a7552cd4019132f8c4","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"* Unit tests."},{"line_number":225,"context_line":"* Jenkins."},{"line_number":226,"context_line":"* 3rd party CIs."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Documentation Impact"},{"line_number":229,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7a740942_7953a517","line":226,"in_reply_to":"7a740942_225e08ea","updated":"2015-12-08 17:41:17.000000000","message":"was thinking some negative tests (instance requesting a capability that doesn\u0027t exist / wrong vallue) would validate the filter. 3rd party ci\u0027s I guess is a bit overkill.","commit_id":"d3920adca27c8bab0c9a31a2c0d8cdb9235a4f4a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"acc98949380ef435178309ad808b2e68ce748910","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"As for the capabilities present in the ``HostCapabilities`` model, they will"},{"line_number":90,"context_line":"mirror the properties that can be in the image metadata or flavor extra specs,"},{"line_number":91,"context_line":"in order to easily match requested features to host capabilites."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"For example, the host could have the capability for instance secure boot. The"},{"line_number":94,"context_line":"``HostCapabilities.os_secure_boot`` field will be set to True. In order to"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7a740942_46069a21","line":91,"updated":"2015-12-10 11:11:19.000000000","message":"Nit: would be nice to say where this logic lives, but its an implementation detail really.","commit_id":"bde4c0275f257949272e0cf7f870e3d3212417e9"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"f5046c065c7aac07a9bbc57298af85967fb3d558","unresolved":false,"context_lines":[{"line_number":145,"context_line":"Data model impact"},{"line_number":146,"context_line":"-----------------"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"The Text column ``host_capabilities`` will be added to the ``compute_node``"},{"line_number":149,"context_line":"database table. This column will contain all the HostCapabilities objects,"},{"line_number":150,"context_line":"reported by the compute nodes, serialized as a JSON blob. A database schema"},{"line_number":151,"context_line":"migration is necessary in order to add the column."}],"source_content_type":"text/x-rst","patch_set":10,"id":"7a740942_14a76a50","line":148,"updated":"2015-12-10 08:01:23.000000000","message":"compute_nodes","commit_id":"bde4c0275f257949272e0cf7f870e3d3212417e9"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"f5046c065c7aac07a9bbc57298af85967fb3d558","unresolved":false,"context_lines":[{"line_number":149,"context_line":"database table. This column will contain all the HostCapabilities objects,"},{"line_number":150,"context_line":"reported by the compute nodes, serialized as a JSON blob. A database schema"},{"line_number":151,"context_line":"migration is necessary in order to add the column."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"New ``HostCapabilities`` object will be added, containing all the capabilities"},{"line_number":154,"context_line":"currently acceptable by Nova. If any of the object\u0027s fields is not set, then"},{"line_number":155,"context_line":"that capability will be considered as not present."}],"source_content_type":"text/x-rst","patch_set":10,"id":"7a740942_5ac75b45","line":152,"updated":"2015-12-10 08:01:23.000000000","message":"any details about the capabilities you will extend?","commit_id":"bde4c0275f257949272e0cf7f870e3d3212417e9"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"acc98949380ef435178309ad808b2e68ce748910","unresolved":false,"context_lines":[{"line_number":149,"context_line":"database table. This column will contain all the HostCapabilities objects,"},{"line_number":150,"context_line":"reported by the compute nodes, serialized as a JSON blob. A database schema"},{"line_number":151,"context_line":"migration is necessary in order to add the column."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"New ``HostCapabilities`` object will be added, containing all the capabilities"},{"line_number":154,"context_line":"currently acceptable by Nova. If any of the object\u0027s fields is not set, then"},{"line_number":155,"context_line":"that capability will be considered as not present."}],"source_content_type":"text/x-rst","patch_set":10,"id":"7a740942_064ad283","line":152,"in_reply_to":"7a740942_5ac75b45","updated":"2015-12-10 11:11:19.000000000","message":"A list would be nice, but lets review that in code, as it will evolve over time anyways.","commit_id":"bde4c0275f257949272e0cf7f870e3d3212417e9"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"f5046c065c7aac07a9bbc57298af85967fb3d558","unresolved":false,"context_lines":[{"line_number":231,"context_line":"The new scheduler filter and the host capabilities that can be scheduled using"},{"line_number":232,"context_line":"the new filter will have to be documented."},{"line_number":233,"context_line":"The new config option group ``host_capabilities`` will have to be documented."},{"line_number":234,"context_line":"The new nova API microversion will have to be documented."},{"line_number":235,"context_line":"The deployer impact will have to be documented."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7a740942_f4573e24","line":234,"updated":"2015-12-10 08:01:23.000000000","message":"\"REST API impact\"  is None?","commit_id":"bde4c0275f257949272e0cf7f870e3d3212417e9"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"acc98949380ef435178309ad808b2e68ce748910","unresolved":false,"context_lines":[{"line_number":231,"context_line":"The new scheduler filter and the host capabilities that can be scheduled using"},{"line_number":232,"context_line":"the new filter will have to be documented."},{"line_number":233,"context_line":"The new config option group ``host_capabilities`` will have to be documented."},{"line_number":234,"context_line":"The new nova API microversion will have to be documented."},{"line_number":235,"context_line":"The deployer impact will have to be documented."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7a740942_a93cf1bf","line":234,"in_reply_to":"7a740942_f4573e24","updated":"2015-12-10 11:11:19.000000000","message":"I guess this is left over form when there was an API addition in the spec? Lets deal with that as a follow up (there is a related spec trying to deal with metrics, which is very similar).","commit_id":"bde4c0275f257949272e0cf7f870e3d3212417e9"}]}
