)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support traits in Glance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This blueprint proposes to extend the granular scheduling of compute"},{"line_number":10,"context_line":"instances to be based on traits expressed in glance image metadata in"},{"line_number":11,"context_line":"addition to the traits expressed by the flavor"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Blueprint: glance-image-traits"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fa0c359_042e3efa","line":10,"range":{"start_line":10,"start_character":13,"end_line":10,"end_character":25},"updated":"2018-02-12 15:51:03.000000000","message":"s/be based on/use/","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"}],"specs/rocky/approved/glance-image-traits.rst":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"a6c13ec0667b584cc065f133c6aa33fa7418a651","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* Update `ImageMeta` class to return custom additional properties"},{"line_number":167,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":168,"context_line":"  to the Placement API"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Dependencies"},{"line_number":171,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa0c359_14fee1ad","line":168,"updated":"2018-02-07 09:16:32.000000000","message":"Need to update the ironic virt driver to push traits from images to nodes. See https://review.openstack.org/#/c/508116/.","commit_id":"6b7b56e21a2f16f86ed0dde00ba3569b1396a987"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"aa599a670d1302f528cb399514c54bc9760edd1a","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* Update `ImageMeta` class to return custom additional properties"},{"line_number":167,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":168,"context_line":"  to the Placement API"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Dependencies"},{"line_number":171,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa0c359_35b510ce","line":168,"in_reply_to":"3fa0c359_14fee1ad","updated":"2018-02-07 22:31:52.000000000","message":"Thanks for the review mark. \nI am trying to figure out why sending requested traits back to ironic is not done at the placement API when resources are requested based on the list of traits. \n\nIs this because the ironic needs this information before placement gets called? I am not too familiar with the ironic project, so would help to get more context.","commit_id":"6b7b56e21a2f16f86ed0dde00ba3569b1396a987"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"b99455416a0494c781ff67bb4ec12a8f04e1e5a3","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* Update `ImageMeta` class to return custom additional properties"},{"line_number":167,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":168,"context_line":"  to the Placement API"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Dependencies"},{"line_number":171,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa0c359_8e7c00b6","line":168,"in_reply_to":"3fa0c359_35b510ce","updated":"2018-02-08 08:54:48.000000000","message":"IIUC, the placement API is currently mostly passive, and does not communicate with other components - it\u0027s basically an API in front of a DB.\n\nPushing the selected traits to ironic is an activity specific to ironic, so must be done in the ironic virt driver. We do it at the same time as populating other instance-specific fields on the ironic node object, using instance spawn.\n\nHere\u0027s the spec: https://specs.openstack.org/openstack/nova-specs/specs/queens/approved/ironic-driver-traits.html","commit_id":"6b7b56e21a2f16f86ed0dde00ba3569b1396a987"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/glance-image-traits"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This blueprint proposes to extend the granular scheduling of compute instances"},{"line_number":14,"context_line":"to be based on traits provided by glance image metadata in addition to the"},{"line_number":15,"context_line":"traits provided by the flavor."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_ea6e7bfe","line":14,"range":{"start_line":14,"start_character":2,"end_line":14,"end_character":15},"updated":"2018-02-12 15:51:03.000000000","message":"s/be based on/use","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"fb2d975e2c9c11dcb2e0a234aa1478f74d9414a2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/glance-image-traits"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This blueprint proposes to extend the granular scheduling of compute instances"},{"line_number":14,"context_line":"to be based on traits provided by glance image metadata in addition to the"},{"line_number":15,"context_line":"traits provided by the flavor."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_83369950","line":14,"range":{"start_line":14,"start_character":2,"end_line":14,"end_character":15},"in_reply_to":"3fa0c359_ea6e7bfe","updated":"2018-02-14 04:43:51.000000000","message":"Done","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The attributes on the image can be used to specify traits required on the"},{"line_number":26,"context_line":"hosts. For example support for a specific CPU instruction set, nic features or"},{"line_number":27,"context_line":"traits which enumerate the hosts location or trusted status etc"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Use Cases"},{"line_number":30,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_cd071918","line":27,"range":{"start_line":27,"start_character":13,"end_line":27,"end_character":59},"updated":"2018-02-12 15:51:03.000000000","message":"remember that traits -- in the Nova/Placement/os-traits sense of the word/concept -- are boolean attributes. They don\u0027t enumerate anything themselves. So, a host\u0027s location is not a trait, nor is the status of something. Rather, the capabilities of a compute host are traits. It\u0027s a subtle but important difference to keep in mind.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"fb2d975e2c9c11dcb2e0a234aa1478f74d9414a2","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The attributes on the image can be used to specify traits required on the"},{"line_number":26,"context_line":"hosts. For example support for a specific CPU instruction set, nic features or"},{"line_number":27,"context_line":"traits which enumerate the hosts location or trusted status etc"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Use Cases"},{"line_number":30,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_fa261bce","line":27,"range":{"start_line":27,"start_character":13,"end_line":27,"end_character":59},"in_reply_to":"3fa0c359_cd071918","updated":"2018-02-14 04:43:51.000000000","message":"enumerate might be the wrong word. will reword to \n\"For example support for a specific CPU instruction set, nic features or whether its a trusted host(as measured by an external service)\"\n\n \u003e Rather, the capabilities of a compute host are traits.\n\nLimiting traits to only indicate the capabilities of host seems restrictive. \nMy understanding of traits is that it can be used to indicate any qualitative properties of the host in addition to its capabilities.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"93155d77e835944ab7aed475346748f4fd1bb13b","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The attributes on the image can be used to specify traits required on the"},{"line_number":26,"context_line":"hosts. For example support for a specific CPU instruction set, nic features or"},{"line_number":27,"context_line":"traits which enumerate the hosts location or trusted status etc"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Use Cases"},{"line_number":30,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_92e64cb0","line":27,"range":{"start_line":27,"start_character":13,"end_line":27,"end_character":59},"in_reply_to":"3fa0c359_fa261bce","updated":"2018-02-20 18:27:12.000000000","message":"\u003e \u003e Rather, the capabilities of a compute host are traits.\n \u003e \n \u003e Limiting traits to only indicate the capabilities of host seems\n \u003e restrictive.\n \u003e My understanding of traits is that it can be used to indicate any\n \u003e qualitative properties of the host in addition to its capabilities.\n\nNo, your understanding is incorrect. Traits are boolean capabilities of a resource provider.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93f8907f1d51e1b3e00b0ca55b9d584c40a5fa8b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"As a cloud administrator, i want to be able to assert further control on where"},{"line_number":33,"context_line":"certain workloads can be launched and be operational."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"For example, if a workload instance will be applying an export controlled"},{"line_number":36,"context_line":"encryption algorithm or will process privacy data, there might be specific laws"},{"line_number":37,"context_line":"requiring workloads to be restricted to hosts within a specific"},{"line_number":38,"context_line":"region(Geo-fencing)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The administrator would be able to add this region restriction to the glance"},{"line_number":41,"context_line":"image as a required trait. This would allow the nova scheduler to automatically"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_04315ea3","line":38,"range":{"start_line":35,"start_character":0,"end_line":38,"end_character":19},"updated":"2018-02-12 14:12:56.000000000","message":"What\u0027s wrong with just using image metadata with host aggregates for this?","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":32,"context_line":"As a cloud administrator, i want to be able to assert further control on where"},{"line_number":33,"context_line":"certain workloads can be launched and be operational."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"For example, if a workload instance will be applying an export controlled"},{"line_number":36,"context_line":"encryption algorithm or will process privacy data, there might be specific laws"},{"line_number":37,"context_line":"requiring workloads to be restricted to hosts within a specific"},{"line_number":38,"context_line":"region(Geo-fencing)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The administrator would be able to add this region restriction to the glance"},{"line_number":41,"context_line":"image as a required trait. This would allow the nova scheduler to automatically"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_cd55d9fb","line":38,"range":{"start_line":35,"start_character":0,"end_line":38,"end_character":19},"in_reply_to":"3fa0c359_04315ea3","updated":"2018-02-12 15:51:03.000000000","message":"For the use case described above (geo-fencing), Matt is correct that using the host aggregate concept along with image metadata is a more appropriate solution.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"fb2d975e2c9c11dcb2e0a234aa1478f74d9414a2","unresolved":false,"context_lines":[{"line_number":32,"context_line":"As a cloud administrator, i want to be able to assert further control on where"},{"line_number":33,"context_line":"certain workloads can be launched and be operational."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"For example, if a workload instance will be applying an export controlled"},{"line_number":36,"context_line":"encryption algorithm or will process privacy data, there might be specific laws"},{"line_number":37,"context_line":"requiring workloads to be restricted to hosts within a specific"},{"line_number":38,"context_line":"region(Geo-fencing)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The administrator would be able to add this region restriction to the glance"},{"line_number":41,"context_line":"image as a required trait. This would allow the nova scheduler to automatically"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_da00ff04","line":38,"range":{"start_line":35,"start_character":0,"end_line":38,"end_character":19},"in_reply_to":"3fa0c359_cd55d9fb","updated":"2018-02-14 04:43:51.000000000","message":"I will investigate further on host aggregate solution for the geo-fencing use case \n\nwould it make sense for placement api also take host aggregate meta data like traits meta data to generate allocation candidates? basically trying to see if using filters can be avoided.\n\nWill reword the above usecase to focus on capabilities more.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"93155d77e835944ab7aed475346748f4fd1bb13b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"As a cloud administrator, i want to be able to assert further control on where"},{"line_number":33,"context_line":"certain workloads can be launched and be operational."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"For example, if a workload instance will be applying an export controlled"},{"line_number":36,"context_line":"encryption algorithm or will process privacy data, there might be specific laws"},{"line_number":37,"context_line":"requiring workloads to be restricted to hosts within a specific"},{"line_number":38,"context_line":"region(Geo-fencing)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The administrator would be able to add this region restriction to the glance"},{"line_number":41,"context_line":"image as a required trait. This would allow the nova scheduler to automatically"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_d21a947b","line":38,"range":{"start_line":35,"start_character":0,"end_line":38,"end_character":19},"in_reply_to":"3fa0c359_da00ff04","updated":"2018-02-20 18:27:12.000000000","message":"\u003e would it make sense for placement api also take host aggregate meta\n \u003e data like traits meta data to generate allocation candidates?\n\nNo. Placement isn\u0027t going to be \"taking\" Nova host aggregate metadata for a number of reasons:\n\n1) Placement doesn\u0027t have any concept of an aggregate having its own traits. Resource providers have traits. Aggregates are merely groups of resource providers. The reason it\u0027s problematic to have the group concept have its own metadata/traits is because if a resource provider belongs to two aggregates, and they both have the same metadata key, which metadata value do you use?\n\n2) Nova host aggregate metadata is a free-for-all mess and isn\u0027t standardized at all. The os-traits library is the collection of standardized traits -- something that is important if we want to be able to refer to the same thing using the same term across deployments of OpenStack.\n\n \u003e basically trying to see if using filters can be avoided.\n\nScheduler filters may certainly be avoided, but you should use traits in the way they were intended to be used.\n\n \u003e Will reword the above usecase to focus on capabilities more.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":37,"context_line":"requiring workloads to be restricted to hosts within a specific"},{"line_number":38,"context_line":"region(Geo-fencing)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The administrator would be able to add this region restriction to the glance"},{"line_number":41,"context_line":"image as a required trait. This would allow the nova scheduler to automatically"},{"line_number":42,"context_line":"select only hosts which belong to that region."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"For administrative users"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_addacd74","line":41,"range":{"start_line":40,"start_character":0,"end_line":41,"end_character":26},"updated":"2018-02-12 15:51:03.000000000","message":"That\u0027s not what traits are, though. Traits are only boolean values. A resource provider (compute node) either has a trait or it doesn\u0027t have a trait. The region or aggrgeate(s) that a compute node is in is not a trait of the compute node.\n\nExamples of traits include whether the VT-x emulation instructions are available on the host\u0027s CPU (os_traits.HW_CPU_X86_VMX) or whether the device providing DISK_GB resources is using SSD vs spinning oxide (os_traits.STORAGE_DISK_SSD).","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"fb2d975e2c9c11dcb2e0a234aa1478f74d9414a2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"requiring workloads to be restricted to hosts within a specific"},{"line_number":38,"context_line":"region(Geo-fencing)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The administrator would be able to add this region restriction to the glance"},{"line_number":41,"context_line":"image as a required trait. This would allow the nova scheduler to automatically"},{"line_number":42,"context_line":"select only hosts which belong to that region."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"For administrative users"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_9d1911d8","line":41,"range":{"start_line":40,"start_character":0,"end_line":41,"end_character":26},"in_reply_to":"3fa0c359_addacd74","updated":"2018-02-14 04:43:51.000000000","message":"Will reword above to focus on capabilities more.\n\nThe SSD usecase is what is being used for the host aggregate  example as well.\nhttps://docs.openstack.org/ocata/config-reference/compute/schedulers.html\n\nis the overlap expected? Is there a clean seperation?","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Currently the traits information specified in the flavor is being collected as"},{"line_number":52,"context_line":"part of the boot request. This information is provided to the Placement API"},{"line_number":53,"context_line":"which uses it to filter out resource providers which do not express those"},{"line_number":54,"context_line":"traits."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"We propose to allow traits to be specified in the image metadata to be part of"},{"line_number":57,"context_line":"this work flow. The boot request will combine the traits information provided"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_ed42150f","line":54,"range":{"start_line":53,"start_character":60,"end_line":54,"end_character":6},"updated":"2018-02-12 15:51:03.000000000","message":"s/express those traits/have those traits associated with them/","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"fb2d975e2c9c11dcb2e0a234aa1478f74d9414a2","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Currently the traits information specified in the flavor is being collected as"},{"line_number":52,"context_line":"part of the boot request. This information is provided to the Placement API"},{"line_number":53,"context_line":"which uses it to filter out resource providers which do not express those"},{"line_number":54,"context_line":"traits."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"We propose to allow traits to be specified in the image metadata to be part of"},{"line_number":57,"context_line":"this work flow. The boot request will combine the traits information provided"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_232a25da","line":54,"range":{"start_line":53,"start_character":60,"end_line":54,"end_character":6},"in_reply_to":"3fa0c359_ed42150f","updated":"2018-02-14 04:43:51.000000000","message":"Done","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":54,"context_line":"traits."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"We propose to allow traits to be specified in the image metadata to be part of"},{"line_number":57,"context_line":"this work flow. The boot request will combine the traits information provided"},{"line_number":58,"context_line":"by the flavor AND the image metadata. This combined set of traits will be"},{"line_number":59,"context_line":"passed to the Placement API to generate allocation candidates."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_6d4e0539","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":4},"updated":"2018-02-12 15:51:03.000000000","message":"s/this/the boot request/","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"fb2d975e2c9c11dcb2e0a234aa1478f74d9414a2","unresolved":false,"context_lines":[{"line_number":54,"context_line":"traits."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"We propose to allow traits to be specified in the image metadata to be part of"},{"line_number":57,"context_line":"this work flow. The boot request will combine the traits information provided"},{"line_number":58,"context_line":"by the flavor AND the image metadata. This combined set of traits will be"},{"line_number":59,"context_line":"passed to the Placement API to generate allocation candidates."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_e31f5db4","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":4},"in_reply_to":"3fa0c359_6d4e0539","updated":"2018-02-14 04:43:51.000000000","message":"Done","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"ec5bcccea7f35674de8b3cecf1280df3c4f23fb9","unresolved":false,"context_lines":[{"line_number":56,"context_line":"We propose to allow traits to be specified in the image metadata to be part of"},{"line_number":57,"context_line":"this work flow. The boot request will combine the traits information provided"},{"line_number":58,"context_line":"by the flavor AND the image metadata. This combined set of traits will be"},{"line_number":59,"context_line":"passed to the Placement API to generate allocation candidates."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"The glance image already allow users to specify additional properties as"},{"line_number":62,"context_line":"key:value pairs. We will be re-using the same mechanism."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_38260017","line":59,"updated":"2018-02-12 12:05:10.000000000","message":"Is there any chance of conflict between flavor traits and image traits?\n\nI guess not: I guess the resulting set of traits is the union of the two. You might want to clarify that somewhere in here.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"fb2d975e2c9c11dcb2e0a234aa1478f74d9414a2","unresolved":false,"context_lines":[{"line_number":56,"context_line":"We propose to allow traits to be specified in the image metadata to be part of"},{"line_number":57,"context_line":"this work flow. The boot request will combine the traits information provided"},{"line_number":58,"context_line":"by the flavor AND the image metadata. This combined set of traits will be"},{"line_number":59,"context_line":"passed to the Placement API to generate allocation candidates."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"The glance image already allow users to specify additional properties as"},{"line_number":62,"context_line":"key:value pairs. We will be re-using the same mechanism."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_c3302159","line":59,"in_reply_to":"3fa0c359_38260017","updated":"2018-02-14 04:43:51.000000000","message":"Done","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":59,"context_line":"passed to the Placement API to generate allocation candidates."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"The glance image already allow users to specify additional properties as"},{"line_number":62,"context_line":"key:value pairs. We will be re-using the same mechanism."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"We propose to add `trait:` as a prefix so we can reuse the same name space as"},{"line_number":65,"context_line":"the traits specified in the flavor extra_specs."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_ad92cd55","line":62,"range":{"start_line":62,"start_character":36,"end_line":62,"end_character":55},"updated":"2018-02-12 15:51:03.000000000","message":"s/the same mechanism/the same mechanism used by nova to encode trait information in nova\u0027s flavor metadata items/","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"fb2d975e2c9c11dcb2e0a234aa1478f74d9414a2","unresolved":false,"context_lines":[{"line_number":59,"context_line":"passed to the Placement API to generate allocation candidates."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"The glance image already allow users to specify additional properties as"},{"line_number":62,"context_line":"key:value pairs. We will be re-using the same mechanism."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"We propose to add `trait:` as a prefix so we can reuse the same name space as"},{"line_number":65,"context_line":"the traits specified in the flavor extra_specs."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_a37b95f2","line":62,"range":{"start_line":62,"start_character":36,"end_line":62,"end_character":55},"in_reply_to":"3fa0c359_ad92cd55","updated":"2018-02-14 04:43:51.000000000","message":"Done","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":70,"context_line":"    trait:CUSTOM_TRUSTED_HOST\u003drequired"},{"line_number":71,"context_line":"    trait:CUSTOM_LOCATION_USA\u003drequired"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"For now the only valid value is `required`. Validation of traits specified as"},{"line_number":74,"context_line":"part of the image additional properties is out of scope for this change."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_8da591a4","line":71,"range":{"start_line":71,"start_character":10,"end_line":71,"end_character":29},"updated":"2018-02-12 15:51:03.000000000","message":"this isn\u0027t what traits are supposed to be... for grouping/regions/zones/locations, it\u0027s recommended to use the existing host aggregate metadata.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"fb2d975e2c9c11dcb2e0a234aa1478f74d9414a2","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":70,"context_line":"    trait:CUSTOM_TRUSTED_HOST\u003drequired"},{"line_number":71,"context_line":"    trait:CUSTOM_LOCATION_USA\u003drequired"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"For now the only valid value is `required`. Validation of traits specified as"},{"line_number":74,"context_line":"part of the image additional properties is out of scope for this change."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_1d250109","line":71,"range":{"start_line":71,"start_character":10,"end_line":71,"end_character":29},"in_reply_to":"3fa0c359_8da591a4","updated":"2018-02-14 04:43:51.000000000","message":"will look into this.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    trait:CUSTOM_TRUSTED_HOST\u003drequired"},{"line_number":71,"context_line":"    trait:CUSTOM_LOCATION_USA\u003drequired"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"For now the only valid value is `required`. Validation of traits specified as"},{"line_number":74,"context_line":"part of the image additional properties is out of scope for this change."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Alternatives"},{"line_number":77,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_4dab0974","line":74,"range":{"start_line":73,"start_character":0,"end_line":74,"end_character":72},"updated":"2018-02-12 15:51:03.000000000","message":"++","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Continue with the current model of utilizing the traits provided as part of the"},{"line_number":80,"context_line":"flavor in the boot request."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"To enable the use case described above for Geo-fencing, this would mean that"},{"line_number":83,"context_line":"the cloud administrator would need to create specific flavors with traits"},{"line_number":84,"context_line":"required for the workload image."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"If the end user ends up selecting a different flavor other than the specific"},{"line_number":87,"context_line":"ones created by the administrator for the Geo-fencing use case, then the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_2de31ddb","line":84,"range":{"start_line":82,"start_character":0,"end_line":84,"end_character":32},"updated":"2018-02-12 15:51:03.000000000","message":"No, for geo-fencing, cloud administrators would need to use the existing concepts of host aggregates and regions and use the existing host aggregate metadata for grouping purposes.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"fb2d975e2c9c11dcb2e0a234aa1478f74d9414a2","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Continue with the current model of utilizing the traits provided as part of the"},{"line_number":80,"context_line":"flavor in the boot request."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"To enable the use case described above for Geo-fencing, this would mean that"},{"line_number":83,"context_line":"the cloud administrator would need to create specific flavors with traits"},{"line_number":84,"context_line":"required for the workload image."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"If the end user ends up selecting a different flavor other than the specific"},{"line_number":87,"context_line":"ones created by the administrator for the Geo-fencing use case, then the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_e0418ca7","line":84,"range":{"start_line":82,"start_character":0,"end_line":84,"end_character":32},"in_reply_to":"3fa0c359_2de31ddb","updated":"2018-02-14 04:43:51.000000000","message":"updated to remove geo-fencing specific details","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":87,"context_line":"ones created by the administrator for the Geo-fencing use case, then the"},{"line_number":88,"context_line":"workload could be in non-compliance with the data laws."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"One other aspect to look at would be, because the flavor describes both the"},{"line_number":91,"context_line":"quantitative and qualitative aspects of the request, the number of flavor will"},{"line_number":92,"context_line":"need to increase substantially if we are given a mix of workloads."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"In a typical openstack installation with 7 flavors(nano -\u003e xlarge) if we need"},{"line_number":95,"context_line":"to add one region restriction by traits to each of the flavors we will end up"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_2d0c7da3","line":92,"range":{"start_line":90,"start_character":0,"end_line":92,"end_character":66},"updated":"2018-02-12 15:51:03.000000000","message":"yes, though this isn\u0027t germane to this spec per-se. This is due to the tight coupling of quantitative and qualitative things in the flavor concept. This problem has been around since the beginning of Nova, unfortunately.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":91,"context_line":"quantitative and qualitative aspects of the request, the number of flavor will"},{"line_number":92,"context_line":"need to increase substantially if we are given a mix of workloads."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"In a typical openstack installation with 7 flavors(nano -\u003e xlarge) if we need"},{"line_number":95,"context_line":"to add one region restriction by traits to each of the flavors we will end up"},{"line_number":96,"context_line":"with 14 flavors. If we need further sub-regions or other trait restrictions"},{"line_number":97,"context_line":"along with the quantitative aspects, this number will grow pretty quickly."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Another potential alternative is to provide traits directly as part of the"},{"line_number":100,"context_line":"instance boot request. But this has the same issue where the end user could"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_cd339961","line":97,"range":{"start_line":94,"start_character":0,"end_line":97,"end_character":74},"updated":"2018-02-12 15:51:03.000000000","message":"again, use the existing host aggregate functionality to group hosts by region/location. This is a solved problem and the image traits use cases should stick to the boolean \"capabilities required\" use cases.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"fb2d975e2c9c11dcb2e0a234aa1478f74d9414a2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"quantitative and qualitative aspects of the request, the number of flavor will"},{"line_number":92,"context_line":"need to increase substantially if we are given a mix of workloads."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"In a typical openstack installation with 7 flavors(nano -\u003e xlarge) if we need"},{"line_number":95,"context_line":"to add one region restriction by traits to each of the flavors we will end up"},{"line_number":96,"context_line":"with 14 flavors. If we need further sub-regions or other trait restrictions"},{"line_number":97,"context_line":"along with the quantitative aspects, this number will grow pretty quickly."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Another potential alternative is to provide traits directly as part of the"},{"line_number":100,"context_line":"instance boot request. But this has the same issue where the end user could"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_807be8f2","line":97,"range":{"start_line":94,"start_character":0,"end_line":97,"end_character":74},"in_reply_to":"3fa0c359_cd339961","updated":"2018-02-14 04:43:51.000000000","message":"Done","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1897de2991a71585c159f5957fea1db917d20648","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Data model impact"},{"line_number":107,"context_line":"-----------------"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"None."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"REST API impact"},{"line_number":112,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_2466dac2","line":109,"updated":"2018-02-12 14:07:59.000000000","message":"Glance image metadata values can be a TEXT blob, but traits are limited to 255 characters:\n\nhttps://github.com/openstack/nova/blob/40d74339082fe0eb1ce9216e89cf6e65a39e6968/nova/db/sqlalchemy/api_models.py#L579\n\nSo that doesn\u0027t work, and reminds me of this change:\n\nhttps://review.openstack.org/#/c/526900/","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93f8907f1d51e1b3e00b0ca55b9d584c40a5fa8b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Data model impact"},{"line_number":107,"context_line":"-----------------"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"None."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"REST API impact"},{"line_number":112,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_44ef66e8","line":109,"in_reply_to":"3fa0c359_2466dac2","updated":"2018-02-12 14:12:56.000000000","message":"Or is this proposing to use the glance image meta key for the trait name, not the meta value?","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Data model impact"},{"line_number":107,"context_line":"-----------------"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"None."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"REST API impact"},{"line_number":112,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_ad3c0d2f","line":109,"in_reply_to":"3fa0c359_44ef66e8","updated":"2018-02-12 15:51:03.000000000","message":"Yes, metadata key is what will be used for the trait, with the value always being \"required\". And the Glance image metadata key is limited to 255 chars, like Nova.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bca1b45ee8c63d373638c12ca0fd1d011f24cbd5","unresolved":false,"context_lines":[{"line_number":166,"context_line":"* Update `ImageMeta` class to return custom additional properties"},{"line_number":167,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":168,"context_line":"  to the Placement API"},{"line_number":169,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Dependencies"},{"line_number":172,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_8db4b181","line":169,"range":{"start_line":169,"start_character":1,"end_line":169,"end_character":75},"updated":"2018-02-12 15:51:03.000000000","message":"If I\u0027m being honest, this makes me a little suspicious of the motivations behind this spec. If the motivations are simply to allow a mechanism to pass through free-form hardware configuration information from the Glance API through to the Ironic baremetal nodes during boot, that is a different use case entirely and something we should discuss separately from encoding trait in Glance image metadata...","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"fb2d975e2c9c11dcb2e0a234aa1478f74d9414a2","unresolved":false,"context_lines":[{"line_number":166,"context_line":"* Update `ImageMeta` class to return custom additional properties"},{"line_number":167,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":168,"context_line":"  to the Placement API"},{"line_number":169,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Dependencies"},{"line_number":172,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_e06f4c25","line":169,"range":{"start_line":169,"start_character":1,"end_line":169,"end_character":75},"in_reply_to":"3fa0c359_8db4b181","updated":"2018-02-14 04:43:51.000000000","message":"This was added based on Mark Goddard comments. from https://review.openstack.org/#/c/508116/\n\nMy understanding is that the above spec proposes to reconfigure bare metal nodes based on traits requested so it needs the traits required when the boot request is first processed.\n\nWould appreciate your thoughts/comments","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"b799fe924519ee7e307fc32fba1aa92343c7c511","unresolved":false,"context_lines":[{"line_number":166,"context_line":"* Update `ImageMeta` class to return custom additional properties"},{"line_number":167,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":168,"context_line":"  to the Placement API"},{"line_number":169,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Dependencies"},{"line_number":172,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_e338883e","line":169,"range":{"start_line":169,"start_character":1,"end_line":169,"end_character":75},"in_reply_to":"3fa0c359_e06f4c25","updated":"2018-02-15 15:06:50.000000000","message":"I think that this is a legitimate item. If we\u0027ve already implemented sending extra_specs traits to ironic, and we now consider Glance image traits as part of the request, we should also update that method to include image traits.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"33b71a175907b38631ae1981d1e5fdd151b99de4","unresolved":false,"context_lines":[{"line_number":166,"context_line":"* Update `ImageMeta` class to return custom additional properties"},{"line_number":167,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":168,"context_line":"  to the Placement API"},{"line_number":169,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Dependencies"},{"line_number":172,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_f6827952","line":169,"range":{"start_line":169,"start_character":1,"end_line":169,"end_character":75},"in_reply_to":"3fa0c359_e338883e","updated":"2018-02-15 22:52:39.000000000","message":"I get the feeling that proxying traits from the ironic nodes to placement via the driver is going to end up being a mistake if that now means nova needs to proxy / orchestrate traits for scheduling for everything. Ironic could have just as easily put the traits on the providers in placement that represent those nodes instead of nova having to do that proxy work. And with image meta, we already have AggregateImagePropertiesIsolation.","commit_id":"f71d960ead40f6a145b345357f84a7fd9e23385c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"27756ef0284afbef72afd4764292a4b2e6c5ab3b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"to use traits provided by glance image metadata in addition to the traits"},{"line_number":15,"context_line":"provided by the flavor."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Currently, traits provided by the flavor are used by the scheduler only if:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa0c359_36e54139","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":19},"updated":"2018-02-15 22:56:31.000000000","message":"I don\u0027t see you mention AggregateImagePropertiesIsolation anywhere in here, but don\u0027t understand why this isn\u0027t related to that filter and how we already do filtering based on image meta.","commit_id":"10662a5d644f3b063f8974840455b8e4f15674c1"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"bcc7f7ccc7b117eef19cc21708d6a6bbcd8f080a","unresolved":false,"context_lines":[{"line_number":14,"context_line":"to use traits provided by glance image metadata in addition to the traits"},{"line_number":15,"context_line":"provided by the flavor."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Currently, traits provided by the flavor are used by the scheduler only if:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa0c359_9ca8ec77","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":19},"in_reply_to":"3fa0c359_36e54139","updated":"2018-02-16 14:56:59.000000000","message":"My understanding is that traits is/will be the standard mechanism for filtering/scheduling based on capabilities required.\n\nSince traits already tracks capabilities using the same instead of using aggregates to track possibly overlapping capabilities seems to make sense.\n\nI think one of main advantage with the approach suggested is less management overhead as the trait is directly associated with the workload image instead of it relying on flavor extra specs to require the correct trait.\n\nAlso see below, looks like its suggested that aggregate metadata mechanism will be deprecated in favor of traits.\n\nhttps://specs.openstack.org/openstack/nova-specs/specs/pike/implemented/resource-provider-traits.html#traits-api-vs-aggregate-metadata-api\n\nI will add the AggregateImagePropertiesIsolation filter in the alternative approach.","commit_id":"10662a5d644f3b063f8974840455b8e4f15674c1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"693a4debb98eaf6b1078fdcc70604a87ebb8313d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Use Cases"},{"line_number":37,"context_line":"---------"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"As a cloud administrator, i want to be able to assert further control on where"},{"line_number":40,"context_line":"certain workloads can be launched and be operational."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"For example, if a workload instance will be applying an encryption algorithm or"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa0c359_17ac9133","line":39,"range":{"start_line":39,"start_character":26,"end_line":39,"end_character":27},"updated":"2018-02-19 12:51:09.000000000","message":"nit: I","commit_id":"10662a5d644f3b063f8974840455b8e4f15674c1"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"2f0d6781d5c80ddec1f6267b97f5df0ac7509c4d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Use Cases"},{"line_number":37,"context_line":"---------"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"As a cloud administrator, i want to be able to assert further control on where"},{"line_number":40,"context_line":"certain workloads can be launched and be operational."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"For example, if a workload instance will be applying an encryption algorithm or"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa0c359_5f940437","line":39,"range":{"start_line":39,"start_character":26,"end_line":39,"end_character":27},"in_reply_to":"3fa0c359_17ac9133","updated":"2018-02-23 09:50:21.000000000","message":"Done","commit_id":"10662a5d644f3b063f8974840455b8e4f15674c1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d864dcbba04c7c640344886ce190e595d58ad2a8","unresolved":false,"context_lines":[{"line_number":75,"context_line":"The trait syntax in the glance image\u0027s additional properties looks like::"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":78,"context_line":"    trait:CUSTOM_TRUSTED_HOST\u003drequired"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"For now the only valid value is `required`. Validation of traits specified as"},{"line_number":81,"context_line":"part of the image additional properties is out of scope for this change."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa0c359_b5a6d20e","line":78,"range":{"start_line":78,"start_character":10,"end_line":78,"end_character":29},"updated":"2018-02-20 18:40:53.000000000","message":"This is fine, but I would love it if someone from Intel could add a module to os-traits that standardized a trait string for trusted execution. Just a nudge, nothing more :)","commit_id":"10662a5d644f3b063f8974840455b8e4f15674c1"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"2f0d6781d5c80ddec1f6267b97f5df0ac7509c4d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"The trait syntax in the glance image\u0027s additional properties looks like::"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":78,"context_line":"    trait:CUSTOM_TRUSTED_HOST\u003drequired"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"For now the only valid value is `required`. Validation of traits specified as"},{"line_number":81,"context_line":"part of the image additional properties is out of scope for this change."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa0c359_6ef11895","line":78,"range":{"start_line":78,"start_character":10,"end_line":78,"end_character":29},"in_reply_to":"3fa0c359_b5a6d20e","updated":"2018-02-23 09:50:21.000000000","message":"Thanks Jay. I think having TXT/TPM exposed via traits is a good idea. I think its lower priority since end users dont rely on TXT/TPM functionality directly unlike the instruction set extensions.","commit_id":"10662a5d644f3b063f8974840455b8e4f15674c1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d864dcbba04c7c640344886ce190e595d58ad2a8","unresolved":false,"context_lines":[{"line_number":167,"context_line":"----------"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"* Update `ImageMetaProps` class to return traits"},{"line_number":170,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":171,"context_line":"  to the Placement API"},{"line_number":172,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa0c359_55742e68","line":170,"range":{"start_line":170,"start_character":9,"end_line":170,"end_character":23},"updated":"2018-02-20 18:40:53.000000000","message":"Ack. It needs to happen here:\n\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/utils.py#L101\n\nwhich is called from here:\n\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/utils.py#L239\n\n(and would clearly need to be modified to pass the image along with the flavor)","commit_id":"10662a5d644f3b063f8974840455b8e4f15674c1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d864dcbba04c7c640344886ce190e595d58ad2a8","unresolved":false,"context_lines":[{"line_number":169,"context_line":"* Update `ImageMetaProps` class to return traits"},{"line_number":170,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":171,"context_line":"  to the Placement API"},{"line_number":172,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Dependencies"},{"line_number":175,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa0c359_158ea678","line":172,"updated":"2018-02-20 18:40:53.000000000","message":"Don\u0027t forget you will need to modify the existing ImageExtraSpecsFilter to ignore keys that start with \"trait:\", since clearly the placement API will have already filtered out hosts without the required traits...","commit_id":"10662a5d644f3b063f8974840455b8e4f15674c1"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"2f0d6781d5c80ddec1f6267b97f5df0ac7509c4d","unresolved":false,"context_lines":[{"line_number":169,"context_line":"* Update `ImageMetaProps` class to return traits"},{"line_number":170,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":171,"context_line":"  to the Placement API"},{"line_number":172,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Dependencies"},{"line_number":175,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fa0c359_1f9afc60","line":172,"in_reply_to":"3fa0c359_158ea678","updated":"2018-02-23 09:50:21.000000000","message":"Done","commit_id":"10662a5d644f3b063f8974840455b8e4f15674c1"},{"author":{"_account_id":1011,"name":"Tushar Patil","email":"tushar.vitthal.patil@gmail.com","username":"tpatil"},"change_message_id":"afd91422d9cf33ed9e491913392df5cb74041b83","unresolved":false,"context_lines":[{"line_number":59,"context_line":"which uses it to filter out resource providers which do not have those traits"},{"line_number":60,"context_line":"associated with them."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"We propose to allow traits to be specified in the image metadata to be part of"},{"line_number":63,"context_line":"the boot request work flow. The boot request will combine the traits"},{"line_number":64,"context_line":"information provided by the flavor AND the image metadata into a union of the"},{"line_number":65,"context_line":"two. This union set will be passed to the Placement API to generate allocation"},{"line_number":66,"context_line":"candidates."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The glance image already allow users to specify additional properties as"},{"line_number":69,"context_line":"key:value pairs. We will be re-using the same mechanism used by nova to encode"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa0c359_a0edc425","line":66,"range":{"start_line":62,"start_character":0,"end_line":66,"end_character":11},"updated":"2018-02-26 11:47:15.000000000","message":"As an operator, I want to create resource providers (RPs) and add traits to it . Operator will create images with required traits. If an end user uses images created by operators, these images will be launched in the required RPs. Now, if an user creates a image and if required traits are not set, then those images will be launched in RPs that support traits. There is no provision in RPs to tell accept images with atleast one trait set to it. \n\nExample:\n\nImage 1 : A, B, C traits\nImage 2 : X, Y,Z traits\nImage 3 : No required traits configured (This image will be created by an end user)\n\nResource provider RP1: A,B,C\nResource provider RP2: X, Y, Z\nResource provider RP3: No Traits\n\nIf you boot image 1, it will be launched in RP1\nIf you boot image 2, it will be launched in RP2\nIf you boot image 3, then all three RPs will be eligible. I think this is a big problem.\n\nWe are addressing this particular issue in Spec: https://review.openstack.org/#/c/381912/","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"56c6c6f66aae94bbc351cdf1cf55da4daeb7cf01","unresolved":false,"context_lines":[{"line_number":59,"context_line":"which uses it to filter out resource providers which do not have those traits"},{"line_number":60,"context_line":"associated with them."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"We propose to allow traits to be specified in the image metadata to be part of"},{"line_number":63,"context_line":"the boot request work flow. The boot request will combine the traits"},{"line_number":64,"context_line":"information provided by the flavor AND the image metadata into a union of the"},{"line_number":65,"context_line":"two. This union set will be passed to the Placement API to generate allocation"},{"line_number":66,"context_line":"candidates."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The glance image already allow users to specify additional properties as"},{"line_number":69,"context_line":"key:value pairs. We will be re-using the same mechanism used by nova to encode"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa0c359_2ee445df","line":66,"range":{"start_line":62,"start_character":0,"end_line":66,"end_character":11},"in_reply_to":"3fa0c359_a0edc425","updated":"2018-02-26 13:27:30.000000000","message":"@tpatil: I don\u0027t think this is a \"big problem\", as you say :) It\u0027s only a problem if you have a deployment that reserves a set of compute hosts for a specific tenant and requires that only that tenant goes on those specific compute hosts. This is a typical managed hosting use case.\n\nFor the cloud use cases, where the compute resources are meant to be elastic and used by many tenants, this behaviour (of placing a workload on any compute host that meets the requested resource requirements) is perfectly acceptable and expected.\n\nIn short, both use cases are perfectly fine, and I don\u0027t think that one precludes the other :)","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"45f372c04e9d90da2c34163ddacfd1aa387a7c61","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":78,"context_line":"    trait:CUSTOM_TRUSTED_HOST\u003drequired"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"For now the only valid value is `required`. Validation of traits specified as"},{"line_number":81,"context_line":"part of the image additional properties is out of scope for this change."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Alternatives"},{"line_number":84,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_ef80eac1","line":81,"range":{"start_line":80,"start_character":44,"end_line":81,"end_character":72},"updated":"2018-03-13 18:23:24.000000000","message":"I\u0027m not sure what you mean by validation here, maybe who/what/where validates that the traits set on the image are actually valid, i.e. standard traits are defined in the os-traits library and any CUSTOM traits are not.\n\nThe thing I\u0027m wondering about is how you\u0027re going to work this into the ImageMetaProps code which has a strict set of known image metadata:\n\nhttps://github.com/openstack/nova/blob/c90f0093c23b2e9b7ca29f5d69af6f435814083a/nova/objects/image_meta.py#L225\n\nSo any code that is going to construct a versioned object from the primitive image meta dict is going to have to first pull out all \"trait:*\" entries and then store those separately.\n\nMaybe that would happen somewhere like here:\n\nhttps://github.com/openstack/nova/blob/c90f0093c23b2e9b7ca29f5d69af6f435814083a/nova/objects/image_meta.py#L95\n\nAnd we\u0027d strip out the traits from the normal properties and then store those traits the same way we store flavor extra specs?\n\nThe main point I\u0027m trying to make is that flavor extra specs are not standardized nor validated, but image properties are, so traits via flavor and traits vs image properties are not one-to-one, and some consideration will have to be made about how we parse and store that information in nova.","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a1c47986cf7b82707dd475ad356a6b3f308a1ed7","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":78,"context_line":"    trait:CUSTOM_TRUSTED_HOST\u003drequired"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"For now the only valid value is `required`. Validation of traits specified as"},{"line_number":81,"context_line":"part of the image additional properties is out of scope for this change."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Alternatives"},{"line_number":84,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_d0180b1f","line":81,"range":{"start_line":80,"start_character":44,"end_line":81,"end_character":72},"in_reply_to":"df7087c5_08ce7381","updated":"2018-03-14 17:54:45.000000000","message":"\u003e By validation i meant if user is trying to associate trait:CUSTOM_FOO\u003drequired to the image and CUSTOM_FOO has not been created as a custom trait, we are not going to block this operation. This is similar behavior to when associating flavors with traits.\n\nAgree with that.\n\n\u003e Our current thinking is to add traits as a dictionary within the ImageMetaProps code\n\nI don\u0027t know if it should be a field in the ImageMetaProps object or a sibling field to ImageMeta.properties, like ImageMeta.traits, but that\u0027s something that can be hashed out in the code review.","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"ae75e0f54868bfe1b93190448611e37199dce6c8","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":78,"context_line":"    trait:CUSTOM_TRUSTED_HOST\u003drequired"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"For now the only valid value is `required`. Validation of traits specified as"},{"line_number":81,"context_line":"part of the image additional properties is out of scope for this change."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Alternatives"},{"line_number":84,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_08ce7381","line":81,"range":{"start_line":80,"start_character":44,"end_line":81,"end_character":72},"in_reply_to":"df7087c5_ef80eac1","updated":"2018-03-14 17:00:56.000000000","message":"By validation i meant if user is trying to associate trait:CUSTOM_FOO\u003drequired to the image and CUSTOM_FOO has not been created as a custom trait, we are not going to block this operation. This is similar behavior to when associating flavors with traits.\n\nThe known metadata for the image properties is by convention only and is not enforced or validated AFAIK.\n\nOur current thinking is to add traits as a dictionary within the ImageMetaProps code\n\nhttps://github.com/openstack/nova/blob/c90f0093c23b2e9b7ca29f5d69af6f435814083a/nova/objects/image_meta.py#L459\n\n\u0027trait_fields\u0027: fields.DictOfStringsField()\n\nrelying on the existing properties fields in glance also avoids API changes and keep the amount of change to a minimum.","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"63b7511d2e7bda9ab1c7622bb487429727aa1227","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"For now the only valid value is `required`. Validation of traits specified as"},{"line_number":81,"context_line":"part of the image additional properties is out of scope for this change."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Alternatives"},{"line_number":84,"context_line":"------------"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_9503b30f","line":82,"updated":"2018-03-12 11:38:20.000000000","message":"I think I am missing something.\n\nI was expecting thinking about either configuration or flavors that allow a whitelist of optional traits an image could request. (I like how its clearer as an image publisher what traits the cloud is likely to respond to.)\n\nNow Glance does have protected properties, but that seems like a blacklist approach, that is harder to manage. I may not understand that properly.\n\nMaybe I am overthinking the important of traits being potentially a billing concern and operators wanting control over them via specific flavors. Does seem like the tenant separate seems like a good example. I know mostly a custom resource class or similar is better for such hard nosed restrictions.","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"98f144fbae529d9bd4ea2d7b046af38602e6cfa7","unresolved":false,"context_lines":[{"line_number":106,"context_line":"With Image based traits the administrator sets the traits once on the image and"},{"line_number":107,"context_line":"the approach is immune to user errors during launch."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Another alternative is to use the AggregateImagePropertiesIsolation"},{"line_number":110,"context_line":"filter to filter select hosts within specific host aggregates. Host aggregate"},{"line_number":111,"context_line":"metadata is not standardized unlike the traits and also requires host"},{"line_number":112,"context_line":"aggregates to be pre-created with duplicated standard traits which is not"},{"line_number":113,"context_line":"ideal."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Data model impact"},{"line_number":116,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa0c359_ffcb891a","line":113,"range":{"start_line":109,"start_character":0,"end_line":113,"end_character":6},"updated":"2018-02-23 15:41:56.000000000","message":"It also is evaluated *after* the call to the Placement API, so is inherently less efficient than allowing the trait query to filter out compute hosts before being passed to the list of scheduler filters.","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"45f372c04e9d90da2c34163ddacfd1aa387a7c61","unresolved":false,"context_lines":[{"line_number":106,"context_line":"With Image based traits the administrator sets the traits once on the image and"},{"line_number":107,"context_line":"the approach is immune to user errors during launch."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Another alternative is to use the AggregateImagePropertiesIsolation"},{"line_number":110,"context_line":"filter to filter select hosts within specific host aggregates. Host aggregate"},{"line_number":111,"context_line":"metadata is not standardized unlike the traits and also requires host"},{"line_number":112,"context_line":"aggregates to be pre-created with duplicated standard traits which is not"},{"line_number":113,"context_line":"ideal."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Data model impact"},{"line_number":116,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_2f64a249","line":113,"range":{"start_line":109,"start_character":0,"end_line":113,"end_character":6},"in_reply_to":"3fa0c359_ffcb891a","updated":"2018-03-13 18:23:24.000000000","message":"\u003e It also is evaluated *after* the call to the Placement API, so is\n \u003e inherently less efficient than allowing the trait query to filter\n \u003e out compute hosts before being passed to the list of scheduler\n \u003e filters.\n\nI\u0027m assuming we could write a pre-request filter to eventually replace AggregateImagePropertiesIsolation like what Dan is already doing for the CERN aggregate multitenancy filter.","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"45f372c04e9d90da2c34163ddacfd1aa387a7c61","unresolved":false,"context_lines":[{"line_number":115,"context_line":"Data model impact"},{"line_number":116,"context_line":"-----------------"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Update `ImageMetaProps` class to return traits as key:value"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"REST API impact"},{"line_number":121,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_efceaa2b","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":59},"updated":"2018-03-13 18:23:24.000000000","message":"This is easier said than done, per my notes above.\n\nWe might also want to consider *not* munging these into the ImageMetaProps class as that might confuse their usage, and instead have something like an ImageMeta.traits field analogous to the ImageMeta.properties field?","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a1c47986cf7b82707dd475ad356a6b3f308a1ed7","unresolved":false,"context_lines":[{"line_number":115,"context_line":"Data model impact"},{"line_number":116,"context_line":"-----------------"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Update `ImageMetaProps` class to return traits as key:value"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"REST API impact"},{"line_number":121,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_50dabb4a","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":59},"in_reply_to":"df7087c5_28a8178a","updated":"2018-03-14 17:54:45.000000000","message":"\u003e definitely open to suggestions. Once the code patches are proposed\n \u003e this can be discussed further i think.\n\nAgree.\n\n \u003e This might require API changes on glance side though to expose the\n \u003e new traits field and horizon changes to allow updating this field.\n \u003e \n \u003e If we are able to piggyback on the properties field, the above\n \u003e changes are not needed.\n\nI\u0027m not proposing we change anything in the glance API, just how we handle separating out these special types of properties in our internal object model.","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"ae75e0f54868bfe1b93190448611e37199dce6c8","unresolved":false,"context_lines":[{"line_number":115,"context_line":"Data model impact"},{"line_number":116,"context_line":"-----------------"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Update `ImageMetaProps` class to return traits as key:value"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"REST API impact"},{"line_number":121,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_28a8178a","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":59},"in_reply_to":"df7087c5_efceaa2b","updated":"2018-03-14 17:00:56.000000000","message":"definitely open to suggestions. Once the code patches are proposed this can be discussed further i think.\n\nThis might require API changes on glance side though to expose the new traits field and horizon changes to allow updating this field.\n\nIf we are able to piggyback on the properties field, the above changes are not needed.","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"45f372c04e9d90da2c34163ddacfd1aa387a7c61","unresolved":false,"context_lines":[{"line_number":175,"context_line":"* Update `ImageMetaProps` class to return traits"},{"line_number":176,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":177,"context_line":"  to the Placement API"},{"line_number":178,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":179,"context_line":"* modify the existing ImageExtraSpecsFilter to ignore keys that start with"},{"line_number":180,"context_line":"  \"trait:\""},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_af8af2bb","line":178,"range":{"start_line":178,"start_character":2,"end_line":178,"end_character":75},"updated":"2018-03-13 18:23:24.000000000","message":"This seems very random and isn\u0027t mentioned in the proposed change, what is this for?","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a1c47986cf7b82707dd475ad356a6b3f308a1ed7","unresolved":false,"context_lines":[{"line_number":175,"context_line":"* Update `ImageMetaProps` class to return traits"},{"line_number":176,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":177,"context_line":"  to the Placement API"},{"line_number":178,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":179,"context_line":"* modify the existing ImageExtraSpecsFilter to ignore keys that start with"},{"line_number":180,"context_line":"  \"trait:\""},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_b0c23758","line":178,"range":{"start_line":178,"start_character":2,"end_line":178,"end_character":75},"in_reply_to":"df7087c5_ae7d0fb3","updated":"2018-03-14 17:54:45.000000000","message":"It would be nice if this were at least mentioned as an aside in the \"proposed change\" section with a reference to the existing patch and discussion.","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"ae75e0f54868bfe1b93190448611e37199dce6c8","unresolved":false,"context_lines":[{"line_number":175,"context_line":"* Update `ImageMetaProps` class to return traits"},{"line_number":176,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":177,"context_line":"  to the Placement API"},{"line_number":178,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":179,"context_line":"* modify the existing ImageExtraSpecsFilter to ignore keys that start with"},{"line_number":180,"context_line":"  \"trait:\""},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_ae7d0fb3","line":178,"range":{"start_line":178,"start_character":2,"end_line":178,"end_character":75},"in_reply_to":"df7087c5_af8af2bb","updated":"2018-03-14 17:00:56.000000000","message":"This was added based on the review from Mark Goddard. One of the functionality already implemented requires this change.\n\nhttps://review.openstack.org/#/c/508116/\n\nQuoting edleafe\n \u003e we\u0027ve already implemented sending extra_specs traits to ironic, and we now consider Glance image traits as part of the request, we should also update that method to include image traits.","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"9af499a44b1197725b21fcfdc9859bd55a918a9e","unresolved":false,"context_lines":[{"line_number":175,"context_line":"* Update `ImageMetaProps` class to return traits"},{"line_number":176,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":177,"context_line":"  to the Placement API"},{"line_number":178,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":179,"context_line":"* modify the existing ImageExtraSpecsFilter to ignore keys that start with"},{"line_number":180,"context_line":"  \"trait:\""},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_4b6d2aca","line":178,"range":{"start_line":178,"start_character":2,"end_line":178,"end_character":75},"in_reply_to":"df7087c5_b0c23758","updated":"2018-03-14 19:09:46.000000000","message":"Done","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"45f372c04e9d90da2c34163ddacfd1aa387a7c61","unresolved":false,"context_lines":[{"line_number":176,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":177,"context_line":"  to the Placement API"},{"line_number":178,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":179,"context_line":"* modify the existing ImageExtraSpecsFilter to ignore keys that start with"},{"line_number":180,"context_line":"  \"trait:\""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_cfb0868d","line":179,"range":{"start_line":179,"start_character":22,"end_line":179,"end_character":43},"updated":"2018-03-13 18:23:24.000000000","message":"This isn\u0027t a real filter in-tree, did you mean AggregateImagePropertiesIsolation or ImagePropertiesFilter (the latter only looks at three specific image properties so it\u0027s probably not that one).","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a1c47986cf7b82707dd475ad356a6b3f308a1ed7","unresolved":false,"context_lines":[{"line_number":176,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":177,"context_line":"  to the Placement API"},{"line_number":178,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":179,"context_line":"* modify the existing ImageExtraSpecsFilter to ignore keys that start with"},{"line_number":180,"context_line":"  \"trait:\""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_f0c3cf55","line":179,"range":{"start_line":179,"start_character":22,"end_line":179,"end_character":43},"in_reply_to":"df7087c5_5980bf46","updated":"2018-03-14 17:54:45.000000000","message":"\u003e AggregateImagePropertiesIsolation relies on the specific namespace\n \u003e to decide which properties to use. So no changes should be needed\n \u003e here.\n \u003e \n \u003e https://docs.openstack.org/ocata/config-reference/compute/schedulers.html#aggregateimagepropertiesisolation\n \u003e \n\nBe careful about those docs as they are wrong:\n\nhttps://bugs.launchpad.net/nova/+bug/1684261","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"ae75e0f54868bfe1b93190448611e37199dce6c8","unresolved":false,"context_lines":[{"line_number":176,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":177,"context_line":"  to the Placement API"},{"line_number":178,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":179,"context_line":"* modify the existing ImageExtraSpecsFilter to ignore keys that start with"},{"line_number":180,"context_line":"  \"trait:\""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_5980bf46","line":179,"range":{"start_line":179,"start_character":22,"end_line":179,"end_character":43},"in_reply_to":"df7087c5_cfb0868d","updated":"2018-03-14 17:00:56.000000000","message":"My bad. We dont need this change. @jaypipes suggested this, might be a mistake.\n\nAggregateImagePropertiesIsolation relies on the specific namespace to decide which properties to use. So no changes should be needed here.\n\nhttps://docs.openstack.org/ocata/config-reference/compute/schedulers.html#aggregateimagepropertiesisolation\n\nImagePropertiesFilter also looks at specific images properties so not needed here.\n\n@jaypipes: do you agree? Are we missing some other filter which might need to be updated?","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"9af499a44b1197725b21fcfdc9859bd55a918a9e","unresolved":false,"context_lines":[{"line_number":176,"context_line":"* Update Nova Scheduler to extract properties from `ImageMeta` and pass them"},{"line_number":177,"context_line":"  to the Placement API"},{"line_number":178,"context_line":"* Need to update the ironic virt driver to push traits from images to nodes"},{"line_number":179,"context_line":"* modify the existing ImageExtraSpecsFilter to ignore keys that start with"},{"line_number":180,"context_line":"  \"trait:\""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_8bd34260","line":179,"range":{"start_line":179,"start_character":22,"end_line":179,"end_character":43},"in_reply_to":"df7087c5_f0c3cf55","updated":"2018-03-14 19:09:46.000000000","message":"karimu9 is looking at fixing that issue. :)","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"45f372c04e9d90da2c34163ddacfd1aa387a7c61","unresolved":false,"context_lines":[{"line_number":192,"context_line":"Documentation Impact"},{"line_number":193,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"The user guide for specifying traits in glance images additional properties"},{"line_number":196,"context_line":"needs to be documented."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"References"},{"line_number":199,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_14ea17ab","line":196,"range":{"start_line":195,"start_character":0,"end_line":196,"end_character":23},"updated":"2018-03-13 18:23:24.000000000","message":"Where would this actually live? Alongside the image service property keys docs today?\n\nhttps://docs.openstack.org/python-glanceclient/pike/cli/property-keys.html","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"9af499a44b1197725b21fcfdc9859bd55a918a9e","unresolved":false,"context_lines":[{"line_number":192,"context_line":"Documentation Impact"},{"line_number":193,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"The user guide for specifying traits in glance images additional properties"},{"line_number":196,"context_line":"needs to be documented."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"References"},{"line_number":199,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_2bc47690","line":196,"range":{"start_line":195,"start_character":0,"end_line":196,"end_character":23},"in_reply_to":"df7087c5_1096834d","updated":"2018-03-14 19:09:46.000000000","message":"Done","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":17190,"name":"Arvind Nadendla","email":"arvindn05@gmail.com","username":"arvindn05"},"change_message_id":"ae75e0f54868bfe1b93190448611e37199dce6c8","unresolved":false,"context_lines":[{"line_number":192,"context_line":"Documentation Impact"},{"line_number":193,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"The user guide for specifying traits in glance images additional properties"},{"line_number":196,"context_line":"needs to be documented."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"References"},{"line_number":199,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_eeb22794","line":196,"range":{"start_line":195,"start_character":0,"end_line":196,"end_character":23},"in_reply_to":"df7087c5_14ea17ab","updated":"2018-03-14 17:00:56.000000000","message":"yes. We just want to document that traits can be associated with image.\n\nSimilar to https://docs.openstack.org/nova/latest/user/flavors.html - Required traits section\n\nIt could be added here as well.\nhttps://docs.openstack.org/glance/latest/user/common-image-properties.html","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a1c47986cf7b82707dd475ad356a6b3f308a1ed7","unresolved":false,"context_lines":[{"line_number":192,"context_line":"Documentation Impact"},{"line_number":193,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"The user guide for specifying traits in glance images additional properties"},{"line_number":196,"context_line":"needs to be documented."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"References"},{"line_number":199,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"df7087c5_1096834d","line":196,"range":{"start_line":195,"start_character":0,"end_line":196,"end_character":23},"in_reply_to":"df7087c5_eeb22794","updated":"2018-03-14 17:54:45.000000000","message":"The latter points to https://docs.openstack.org/python-glanceclient/pike/cli/property-keys.html so can we just specifically call out https://docs.openstack.org/python-glanceclient/pike/cli/property-keys.html in the spec so we are sure the changes show up there?","commit_id":"edc11c9ec8fbb5a4469eb1dec1879f81a6634c6b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"96eca746884ccc67c3d292a64f073d76039d1c28","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The attributes on the image can be used to specify traits required on the hosts"},{"line_number":33,"context_line":"similar to traits on the flavor. For example support for a specific CPU"},{"line_number":34,"context_line":"instruction set, nic features or whether its a trusted host etc"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Use Cases"},{"line_number":37,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"df7087c5_0a834358","line":34,"range":{"start_line":34,"start_character":41,"end_line":34,"end_character":44},"updated":"2018-03-19 17:32:27.000000000","message":"it\u0027s","commit_id":"3ea34f8cfc7abda1f53f8e8fe309473af436d2a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"563a67426467192895652d8a791b8e5caf15da4c","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The attributes on the image can be used to specify traits required on the hosts"},{"line_number":33,"context_line":"similar to traits on the flavor. For example support for a specific CPU"},{"line_number":34,"context_line":"instruction set, nic features or whether its a trusted host etc"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Use Cases"},{"line_number":37,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"df7087c5_6aa8bf76","line":34,"range":{"start_line":34,"start_character":41,"end_line":34,"end_character":44},"in_reply_to":"df7087c5_0a834358","updated":"2018-03-19 17:41:36.000000000","message":"Done","commit_id":"3ea34f8cfc7abda1f53f8e8fe309473af436d2a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"96eca746884ccc67c3d292a64f073d76039d1c28","unresolved":false,"context_lines":[{"line_number":43,"context_line":"will process privacy data, there might be specific capabilities/traits that the"},{"line_number":44,"context_line":"instance needs on the hosts."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"The administrator would be able to add this capability requirements to the"},{"line_number":47,"context_line":"glance image as a required traits. This would allow the nova scheduler to"},{"line_number":48,"context_line":"automatically select only hosts which have those traits."},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"df7087c5_4a905b96","line":46,"range":{"start_line":46,"start_character":39,"end_line":46,"end_character":43},"updated":"2018-03-19 17:32:27.000000000","message":"these","commit_id":"3ea34f8cfc7abda1f53f8e8fe309473af436d2a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"563a67426467192895652d8a791b8e5caf15da4c","unresolved":false,"context_lines":[{"line_number":43,"context_line":"will process privacy data, there might be specific capabilities/traits that the"},{"line_number":44,"context_line":"instance needs on the hosts."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"The administrator would be able to add this capability requirements to the"},{"line_number":47,"context_line":"glance image as a required traits. This would allow the nova scheduler to"},{"line_number":48,"context_line":"automatically select only hosts which have those traits."},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"df7087c5_0aefc387","line":46,"range":{"start_line":46,"start_character":39,"end_line":46,"end_character":43},"in_reply_to":"df7087c5_4a905b96","updated":"2018-03-19 17:41:36.000000000","message":"Done","commit_id":"3ea34f8cfc7abda1f53f8e8fe309473af436d2a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"96eca746884ccc67c3d292a64f073d76039d1c28","unresolved":false,"context_lines":[{"line_number":44,"context_line":"instance needs on the hosts."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"The administrator would be able to add this capability requirements to the"},{"line_number":47,"context_line":"glance image as a required traits. This would allow the nova scheduler to"},{"line_number":48,"context_line":"automatically select only hosts which have those traits."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"For administrative users"}],"source_content_type":"text/x-rst","patch_set":9,"id":"df7087c5_2aede724","line":47,"range":{"start_line":47,"start_character":16,"end_line":47,"end_character":17},"updated":"2018-03-19 17:32:27.000000000","message":"strike","commit_id":"3ea34f8cfc7abda1f53f8e8fe309473af436d2a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"563a67426467192895652d8a791b8e5caf15da4c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"instance needs on the hosts."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"The administrator would be able to add this capability requirements to the"},{"line_number":47,"context_line":"glance image as a required traits. This would allow the nova scheduler to"},{"line_number":48,"context_line":"automatically select only hosts which have those traits."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"For administrative users"}],"source_content_type":"text/x-rst","patch_set":9,"id":"df7087c5_2af4075b","line":47,"range":{"start_line":47,"start_character":16,"end_line":47,"end_character":17},"in_reply_to":"df7087c5_2aede724","updated":"2018-03-19 17:41:36.000000000","message":"Done","commit_id":"3ea34f8cfc7abda1f53f8e8fe309473af436d2a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"96eca746884ccc67c3d292a64f073d76039d1c28","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The trait syntax in the glance image\u0027s additional properties looks like::"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":78,"context_line":"    trait:CUSTOM_TRUSTED_HOST\u003drequired"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"For now the only valid value is `required`. Validation of traits specified as"},{"line_number":81,"context_line":"part of the image additional properties is out of scope for this change."}],"source_content_type":"text/x-rst","patch_set":9,"id":"df7087c5_aa901750","line":78,"range":{"start_line":77,"start_character":0,"end_line":78,"end_character":38},"updated":"2018-03-19 17:32:27.000000000","message":"I remember discussing in Dublin how this relates to granular [1].  Due to the difficulty of reconciling numbered groupings between image \u0026 flavor, we will consciously and explicitly not support numbered request groups at this time.  This should be mentioned.\n\n[1] http://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/granular-resource-requests.html","commit_id":"3ea34f8cfc7abda1f53f8e8fe309473af436d2a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"563a67426467192895652d8a791b8e5caf15da4c","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The trait syntax in the glance image\u0027s additional properties looks like::"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":78,"context_line":"    trait:CUSTOM_TRUSTED_HOST\u003drequired"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"For now the only valid value is `required`. Validation of traits specified as"},{"line_number":81,"context_line":"part of the image additional properties is out of scope for this change."}],"source_content_type":"text/x-rst","patch_set":9,"id":"df7087c5_4ae37ba5","line":78,"range":{"start_line":77,"start_character":0,"end_line":78,"end_character":38},"in_reply_to":"df7087c5_aa901750","updated":"2018-03-19 17:41:36.000000000","message":"Done","commit_id":"3ea34f8cfc7abda1f53f8e8fe309473af436d2a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"96eca746884ccc67c3d292a64f073d76039d1c28","unresolved":false,"context_lines":[{"line_number":94,"context_line":"select the flavor with the configured traits."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"One other aspect to look at would be, because the flavor describes both the"},{"line_number":97,"context_line":"quantitative and qualitative aspects of the request, the number of flavor will"},{"line_number":98,"context_line":"need to increase substantially if we are given a mix of workloads."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"In a typical openstack installation with 7 flavors(nano -\u003e xlarge) if we need"}],"source_content_type":"text/x-rst","patch_set":9,"id":"df7087c5_8a499333","line":97,"range":{"start_line":97,"start_character":67,"end_line":97,"end_character":73},"updated":"2018-03-19 17:32:27.000000000","message":"flavors","commit_id":"3ea34f8cfc7abda1f53f8e8fe309473af436d2a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"563a67426467192895652d8a791b8e5caf15da4c","unresolved":false,"context_lines":[{"line_number":94,"context_line":"select the flavor with the configured traits."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"One other aspect to look at would be, because the flavor describes both the"},{"line_number":97,"context_line":"quantitative and qualitative aspects of the request, the number of flavor will"},{"line_number":98,"context_line":"need to increase substantially if we are given a mix of workloads."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"In a typical openstack installation with 7 flavors(nano -\u003e xlarge) if we need"}],"source_content_type":"text/x-rst","patch_set":9,"id":"df7087c5_6ae0bf97","line":97,"range":{"start_line":97,"start_character":67,"end_line":97,"end_character":73},"in_reply_to":"df7087c5_8a499333","updated":"2018-03-19 17:41:36.000000000","message":"Done","commit_id":"3ea34f8cfc7abda1f53f8e8fe309473af436d2a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"96eca746884ccc67c3d292a64f073d76039d1c28","unresolved":false,"context_lines":[{"line_number":107,"context_line":"forget to select the right traits."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"With Image based traits the administrator sets the traits once on the image and"},{"line_number":110,"context_line":"the approach is immune to user errors during launch."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Another alternative is to use the AggregateImagePropertiesIsolation"},{"line_number":113,"context_line":"filter to filter select hosts within specific host aggregates. Host aggregate"}],"source_content_type":"text/x-rst","patch_set":9,"id":"df7087c5_4a6cdb9b","line":110,"range":{"start_line":110,"start_character":16,"end_line":110,"end_character":37},"updated":"2018-03-19 17:32:27.000000000","message":"hah!","commit_id":"3ea34f8cfc7abda1f53f8e8fe309473af436d2a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"965eb0ba4f16a066cec0ffb0d80a0490e3015349","unresolved":false,"context_lines":[{"line_number":148,"context_line":"Other deployer impact"},{"line_number":149,"context_line":"---------------------"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"None."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Developer impact"},{"line_number":154,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bf659307_45bb690d","line":151,"updated":"2018-04-06 12:58:51.000000000","message":"I thought of this after the fact, but just remembered this bug fix:\n\nhttps://review.openstack.org/#/c/546357/\n\nDuring a rebuild, if a new image is provided, we run some scheduler filters since the new image could have metadata that doesn\u0027t fit on the current instance.host.\n\nSince today we just filter quantitative resources through placement during scheduling (VCPU/MEMORY_MB/DISK_GB), at least for what you can do with rebuild, we need to not filter in placement for those quantitative resources during rebuild.\n\nHowever, if you can provide a new image during rebuild and that new image has required traits in it, then we don\u0027t know what those are going to be, and we have to assume they are qualitative in nature, so we will likely need to run through Placement again in that case, which means we\u0027ll need to eventually change the solution to that patch above.","commit_id":"3ea34f8cfc7abda1f53f8e8fe309473af436d2a1"}]}
