)]}'
{"specs/newton/approved/add-qualitative-requirements.rst":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"86f6fa184b02886b3867ae9e0dd6b5918630414c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/add-qualitative-requirements"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This blueprint aims to add a new \u0027requirements\u0027 parameter to the Nova API for"},{"line_number":14,"context_line":"passing in the qualitative features that are needed for the VM."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aa08908_0096d2ef","line":14,"updated":"2016-06-06 18:13:09.000000000","message":"@Yingxin: Actually, quantitative resources should eventually go into a \u0027resources\u0027 dictionary in the request_spec and be broken out of the flavor.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":15648,"name":"Yingxin","email":"yingxin.cheng@intel.com","username":"Yingxin"},"change_message_id":"6538b87c162e99d7e56d51ad192a4bc29dd3191c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/add-qualitative-requirements"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This blueprint aims to add a new \u0027requirements\u0027 parameter to the Nova API for"},{"line_number":14,"context_line":"passing in the qualitative features that are needed for the VM."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_b886cfd8","line":14,"range":{"start_line":14,"start_character":15,"end_line":14,"end_character":34},"updated":"2016-05-10 10:51:44.000000000","message":"Quantitative features are specified in \u0027flavor\u0027, and qualitative features are specified in \u0027requirements\u0027. So there\u0027s no need to enumerate all the combinations of qual and quan features in flavors.\n\nThat sounds good!","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"0657b2faa766c38eab5a978cdeb48734261e58d4","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"When creating a new VM, the way to specify what you would like in that VM is by"},{"line_number":20,"context_line":"specifying the \u0027flavor\u0027 parameter to the Nova API. Flavors are defined"},{"line_number":21,"context_line":"combinations of the quantitative aspects of the the host (vCPUs, RAM, disk). In"},{"line_number":22,"context_line":"order to specify a qualitative requirement, such as running on a host with a"},{"line_number":23,"context_line":"GPU, that must be added to the flavor\u0027s `extra_specs` field. With the growth of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_4cdb457c","line":20,"updated":"2016-05-11 22:50:39.000000000","message":"Hm, also image metadata properties. Typically, in image metadata, some properties can represent requirements needed for that image in order to run.\n\nFor example, if an image requires a Hyper-V Generation 2 VM, then the image will have the following metadata property: hw_machine_type\u003dhyperv-gen2. A generation 2 VM image will not be able to boot on hosts that cannot create generation 2 VMs (Win Hyper-V / Server 2012 R2 or older).","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"a9b42981cefaa40011a6b3920957f75323f1f67d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"When creating a new VM, the way to specify what you would like in that VM is by"},{"line_number":20,"context_line":"specifying the \u0027flavor\u0027 parameter to the Nova API. Flavors are defined"},{"line_number":21,"context_line":"combinations of the quantitative aspects of the the host (vCPUs, RAM, disk). In"},{"line_number":22,"context_line":"order to specify a qualitative requirement, such as running on a host with a"},{"line_number":23,"context_line":"GPU, that must be added to the flavor\u0027s `extra_specs` field. With the growth of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_4e562bd3","line":20,"in_reply_to":"dab17558_4cdb457c","updated":"2016-05-13 19:21:29.000000000","message":"Image metadata is a factor in host selection, but is not part of a user request.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"86f6fa184b02886b3867ae9e0dd6b5918630414c","unresolved":false,"context_lines":[{"line_number":20,"context_line":"specifying the \u0027flavor\u0027 parameter to the Nova API. Flavors are defined"},{"line_number":21,"context_line":"combinations of the quantitative aspects of the the host (vCPUs, RAM, disk). In"},{"line_number":22,"context_line":"order to specify a qualitative requirement, such as running on a host with a"},{"line_number":23,"context_line":"GPU, that must be added to the flavor\u0027s `extra_specs` field. With the growth of"},{"line_number":24,"context_line":"qualitative features in compute, such as the programmable FPGA, this would"},{"line_number":25,"context_line":"cause the number of flavors needed to describe all the possible permutations to"},{"line_number":26,"context_line":"grow exponentially."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aa08908_e098e61d","line":23,"updated":"2016-06-06 18:13:09.000000000","message":"I think the example of GPU above is actually a poor example of qualitative capability requirements. GPUs really are *quantitative* resources that should be consumed by a guest in the same way that, say, vCPU or RAM is consumed. The fact that GPU resources aren\u0027t treated like any other resource is a failure of Nova.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":15648,"name":"Yingxin","email":"yingxin.cheng@intel.com","username":"Yingxin"},"change_message_id":"d047396cac7337233889f36105ed91d3eca58a06","unresolved":false,"context_lines":[{"line_number":20,"context_line":"specifying the \u0027flavor\u0027 parameter to the Nova API. Flavors are defined"},{"line_number":21,"context_line":"combinations of the quantitative aspects of the the host (vCPUs, RAM, disk). In"},{"line_number":22,"context_line":"order to specify a qualitative requirement, such as running on a host with a"},{"line_number":23,"context_line":"GPU, that must be added to the flavor\u0027s `extra_specs` field. With the growth of"},{"line_number":24,"context_line":"qualitative features in compute, such as the programmable FPGA, this would"},{"line_number":25,"context_line":"cause the number of flavors needed to describe all the possible permutations to"},{"line_number":26,"context_line":"grow exponentially."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3aaa91ec_1904b3be","line":23,"in_reply_to":"7aa08908_e098e61d","updated":"2016-06-22 06:55:36.000000000","message":"@Jay. Agreed that GPUs are more like quantitative resources, currently part of my work is in GPU virtualization.\n\nBut note GPU is much more complex than I thought. Different vendors have different solutions. For example in citrix\u0027s solution[1], the attributes of VGPUs are pre-defined in XenServer level, but QEMU-KVMGT has a more flexible solution to allow users to specify quantitative attributes of a VGPU according to their performance requirement. While AMD has another solution built upon SR-IOV.\n\nI haven\u0027t thought through the implementation in Nova. But nova may have to implement different logics to handle GPU devices among vendors. And user may have to firstly specify the type of GPU device from request_spec. That\u0027s the qualitative part of GPU.\n\n\n[1] https://review.openstack.org/#/c/280099/","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"86f6fa184b02886b3867ae9e0dd6b5918630414c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"combinations of the quantitative aspects of the the host (vCPUs, RAM, disk). In"},{"line_number":22,"context_line":"order to specify a qualitative requirement, such as running on a host with a"},{"line_number":23,"context_line":"GPU, that must be added to the flavor\u0027s `extra_specs` field. With the growth of"},{"line_number":24,"context_line":"qualitative features in compute, such as the programmable FPGA, this would"},{"line_number":25,"context_line":"cause the number of flavors needed to describe all the possible permutations to"},{"line_number":26,"context_line":"grow exponentially."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aa08908_40a0da43","line":24,"updated":"2016-06-06 18:13:09.000000000","message":"FPGAs are also a poor example of qualitative capabilities :) An execution context for a programmed RT netlist on an FPGA is a quantitative resource in the system.\n\nA better example of a qualitative capability would be the requirement that a target host expose a particular x86 CPU instruction set extension like AVX2 so that the guest can take advantage of that.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"a5c065cc9ec758ff5182a540019006c9ed2c89c0","unresolved":false,"context_lines":[{"line_number":21,"context_line":"combinations of the quantitative aspects of the the host (vCPUs, RAM, disk). In"},{"line_number":22,"context_line":"order to specify a qualitative requirement, such as running on a host with a"},{"line_number":23,"context_line":"GPU, that must be added to the flavor\u0027s `extra_specs` field. With the growth of"},{"line_number":24,"context_line":"qualitative features in compute, such as the programmable FPGA, this would"},{"line_number":25,"context_line":"cause the number of flavors needed to describe all the possible permutations to"},{"line_number":26,"context_line":"grow exponentially."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aa08908_b3deacda","line":24,"in_reply_to":"7aa08908_40a0da43","updated":"2016-06-08 16:00:38.000000000","message":"OK, I can change the examples. I used GPU and FPGA because they were discussed in Austin.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":136,"name":"Tim Bell","email":"tim.bell@cern.ch","username":"tim-bell"},"change_message_id":"55dc1077b443c815ad8c8260ca61c3172bd16e0b","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As a user of the cloud, I would like to be able to select what I want without"},{"line_number":35,"context_line":"having to wade through a list of hundreds or even thousands of flavors. I\u0027d"},{"line_number":36,"context_line":"like to pick the basic size, along with any additional features I might want."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_f2ea220e","line":36,"range":{"start_line":36,"start_character":28,"end_line":36,"end_character":29},"updated":"2016-05-10 16:09:40.000000000","message":"I think there are two levels for the \u0027want\u0027.\n1. A requirement, e.g. I must have an FPGA\n2. A wish, e.g. I\u0027d like an SSD if available, but I could handle spinning disks","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":15648,"name":"Yingxin","email":"yingxin.cheng@intel.com","username":"Yingxin"},"change_message_id":"2a83cdbe7236eb7690e4f33ca69ce2dd368454b9","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As a user of the cloud, I would like to be able to select what I want without"},{"line_number":35,"context_line":"having to wade through a list of hundreds or even thousands of flavors. I\u0027d"},{"line_number":36,"context_line":"like to pick the basic size, along with any additional features I might want."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_46d439bc","line":36,"range":{"start_line":36,"start_character":28,"end_line":36,"end_character":29},"in_reply_to":"dab17558_2e9be773","updated":"2016-05-15 14:52:37.000000000","message":"Maybe we can design the \"requirement\" as a meaningful set of required features and wished/preferred features for the following considerations:\n1. The user may not understand all the hardware capabilities in a OpenStack cloud, but he/she can understand a \"requirement\" configured by admin with detailed explanation.\n2. It is easier for the admin to limit user\u0027s choices and do the billing. Like the existing flavor system, the user can only choose from a pre-defined combination of qualitative resources.\n3. If a feature is a wished one, its schedule decision should be made according to its weigh value in the weighers. Compared with setting the weigh value in \"nova.conf\", it is easier for the admin to set the value with the specified preferred feature right in the \"requirement\".\n\n\u003d\u003d\u003d\n\nSome thoughts about how to make scheduler generic in qualitative part:\n\nA generic scheduler should have an abstraction about how the capabilities are organised and used.\n\nAnd an \"external\" service like Nova or Ironic can do the following things according to the scheduler abstraction:\n1. Define a set of capabilities(maybe ENUM) that this service can understand, and this service can expand this set if it is going to support more features.\n2. The service drivers or other components of this service can discover those capabilities automatically and register them into scheduler database based on the pre-defined capabilities.\n3. The admin can configure the flavors or \"requirements\" based on the capabilities pre-defined by this service.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"a9b42981cefaa40011a6b3920957f75323f1f67d","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As a user of the cloud, I would like to be able to select what I want without"},{"line_number":35,"context_line":"having to wade through a list of hundreds or even thousands of flavors. I\u0027d"},{"line_number":36,"context_line":"like to pick the basic size, along with any additional features I might want."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_2e9be773","line":36,"range":{"start_line":36,"start_character":28,"end_line":36,"end_character":29},"in_reply_to":"dab17558_a605fb11","updated":"2016-05-13 19:21:29.000000000","message":"Well, I\u0027ve always thought that the scheduler had no business knowing the internals of Ironic, and should simply pass the request for a baremetal flavor to the (any) ironic host for handling there. But given the present system, what would you see as a change that would improve this?","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"cb3f0e5d48f937a9a9f12b649dc1d649be4dcc68","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As a user of the cloud, I would like to be able to select what I want without"},{"line_number":35,"context_line":"having to wade through a list of hundreds or even thousands of flavors. I\u0027d"},{"line_number":36,"context_line":"like to pick the basic size, along with any additional features I might want."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_a605fb11","line":36,"range":{"start_line":36,"start_character":28,"end_line":36,"end_character":29},"in_reply_to":"dab17558_f2ea220e","updated":"2016-05-10 16:19:54.000000000","message":"Can we address the baremetal use case where \"features\" are much more numerous? I think this is the use case were flavor explosion is very present and could be addressed by this spec. I\u0027m thinking about RAID levels, network capacity, network redundancy (lacp, active/passive), etc.\n\nNot all features can be addressed by more filters/features in the nova-scheduler, at scheduling time. In fact, I think some might need to be proxied/forwarded to the virt driver (like Ironic) at provisioning time.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"a9b42981cefaa40011a6b3920957f75323f1f67d","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As a user of the cloud, I would like to be able to select what I want without"},{"line_number":35,"context_line":"having to wade through a list of hundreds or even thousands of flavors. I\u0027d"},{"line_number":36,"context_line":"like to pick the basic size, along with any additional features I might want."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_0ee8a3e1","line":36,"range":{"start_line":36,"start_character":28,"end_line":36,"end_character":29},"in_reply_to":"dab17558_f2ea220e","updated":"2016-05-13 19:21:29.000000000","message":"So maybe something like (stealing from regex):\n\nRequired: -- requirement SSD\nWish: --requirement SSD?\n\nOr would a separate parameter such as \u0027optional\u0027 or \u0027prefer\u0027 be better?","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ea1c581d2abf93d6ab4113e102b79dbaff9e6b0c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The code in nova/api will be modified to look in the request body for a"},{"line_number":42,"context_line":"\u0027requirements\u0027 key in the server dict, and pass it on to compute in"},{"line_number":43,"context_line":"anticipation of modifying the API to include that key.  The"},{"line_number":44,"context_line":"`build_filter_properties` of scheduler_utils will be modified to accept this"},{"line_number":45,"context_line":"new parameter, and add the requirements to the return filter properties, where"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_52b87be5","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":14},"updated":"2016-05-10 01:16:23.000000000","message":"This sounds like user can request anything he wanted. There isn\u0027t a way for admin to limit what user can get.\n\nFor admin can limit what user can get, there should have a thing like flavor, admin creates it, and user choice one of it.\n\ni\u0027m still thinking of something like resource-template....it should be a template to describe all the capabilities the guest needed. When user boots a new instance, he needs choice a flavor and a template.\n\nSo we may have top resource like /templates. Admin will create some template.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c362ef2ebcf92854829400670e31f8acd662d1b4","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The code in nova/api will be modified to look in the request body for a"},{"line_number":42,"context_line":"\u0027requirements\u0027 key in the server dict, and pass it on to compute in"},{"line_number":43,"context_line":"anticipation of modifying the API to include that key.  The"},{"line_number":44,"context_line":"`build_filter_properties` of scheduler_utils will be modified to accept this"},{"line_number":45,"context_line":"new parameter, and add the requirements to the return filter properties, where"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bab6814e_03e340a5","line":42,"in_reply_to":"bab6814e_43261617","updated":"2016-05-25 20:04:18.000000000","message":"@Alex - just because someone *can* request something doesn\u0027t mean that they get it. I\u0027m not sure of all the ways that an operator would want to limit a feature, such as avx2 in your example, to some projects and not others, but I\u0027m sure that could be done in either policy (for permission to access) or a filter (to only allow avx2 with certain flavors).","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":2033,"name":"Belmiro Moreira","email":"moreira.belmiro.email.lists@gmail.com","username":"moreira-belmiro-email-lists"},"change_message_id":"f80d926233559d70aa4b5bffd510de969e94380c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The code in nova/api will be modified to look in the request body for a"},{"line_number":42,"context_line":"\u0027requirements\u0027 key in the server dict, and pass it on to compute in"},{"line_number":43,"context_line":"anticipation of modifying the API to include that key.  The"},{"line_number":44,"context_line":"`build_filter_properties` of scheduler_utils will be modified to accept this"},{"line_number":45,"context_line":"new parameter, and add the requirements to the return filter properties, where"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_d3e704aa","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":14},"in_reply_to":"dab17558_0655e7f8","updated":"2016-05-11 08:06:37.000000000","message":"Some properties can be stored already using glance metadata. But provide the same image with different metadata I don\u0027t find it very flexible.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"cb3f0e5d48f937a9a9f12b649dc1d649be4dcc68","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The code in nova/api will be modified to look in the request body for a"},{"line_number":42,"context_line":"\u0027requirements\u0027 key in the server dict, and pass it on to compute in"},{"line_number":43,"context_line":"anticipation of modifying the API to include that key.  The"},{"line_number":44,"context_line":"`build_filter_properties` of scheduler_utils will be modified to accept this"},{"line_number":45,"context_line":"new parameter, and add the requirements to the return filter properties, where"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_0655e7f8","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":14},"in_reply_to":"dab17558_52b87be5","updated":"2016-05-10 16:19:54.000000000","message":"Can Glance metadata be used for that purpose?","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":136,"name":"Tim Bell","email":"tim.bell@cern.ch","username":"tim-bell"},"change_message_id":"6bcad5c39b318b03400e4d9facdbf43c6a957747","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The code in nova/api will be modified to look in the request body for a"},{"line_number":42,"context_line":"\u0027requirements\u0027 key in the server dict, and pass it on to compute in"},{"line_number":43,"context_line":"anticipation of modifying the API to include that key.  The"},{"line_number":44,"context_line":"`build_filter_properties` of scheduler_utils will be modified to accept this"},{"line_number":45,"context_line":"new parameter, and add the requirements to the return filter properties, where"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_86c6f765","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":14},"in_reply_to":"dab17558_52b87be5","updated":"2016-05-10 16:25:49.000000000","message":"I wondered if a flavor could include a list of the require/desire keys allowed, e.g. on my c3.large instance, you can asked for FPGA and/or SSD features. This would also give admins control over what could be requested.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":2033,"name":"Belmiro Moreira","email":"moreira.belmiro.email.lists@gmail.com","username":"moreira-belmiro-email-lists"},"change_message_id":"f80d926233559d70aa4b5bffd510de969e94380c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The code in nova/api will be modified to look in the request body for a"},{"line_number":42,"context_line":"\u0027requirements\u0027 key in the server dict, and pass it on to compute in"},{"line_number":43,"context_line":"anticipation of modifying the API to include that key.  The"},{"line_number":44,"context_line":"`build_filter_properties` of scheduler_utils will be modified to accept this"},{"line_number":45,"context_line":"new parameter, and add the requirements to the return filter properties, where"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_73957831","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":14},"in_reply_to":"dab17558_52b87be5","updated":"2016-05-11 08:06:37.000000000","message":"The problem that I see with the templates is that the admin needs to anticipate all possible combinations and we will end up with an explosion of them.\nIf I understood correctly this proposal the user can request anything he wants but then we can also have a scheduler filter to apply some policy. Scheduler filters can be extended by each cloud provider.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"a9b42981cefaa40011a6b3920957f75323f1f67d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The code in nova/api will be modified to look in the request body for a"},{"line_number":42,"context_line":"\u0027requirements\u0027 key in the server dict, and pass it on to compute in"},{"line_number":43,"context_line":"anticipation of modifying the API to include that key.  The"},{"line_number":44,"context_line":"`build_filter_properties` of scheduler_utils will be modified to accept this"},{"line_number":45,"context_line":"new parameter, and add the requirements to the return filter properties, where"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_8e2bf3ea","line":42,"in_reply_to":"dab17558_554eeac1","updated":"2016-05-13 19:21:29.000000000","message":"@Alex: if the user specifies `--requirement foo` and there is no such thing as a foo, they should get a `400 Bad Request` back.\n\n@Tim: something like feature permissions on a flavor is certainly a possibility, but I worry about ongoing upkeep as new hardware is added to a cloud, and all those permission have to be updated.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":11189,"name":"yuntongjin","email":"yuntong.jin@intel.com","username":"yuntong"},"change_message_id":"09df4e8d83dda0bc07aba714ca4c0d77adaac95e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The code in nova/api will be modified to look in the request body for a"},{"line_number":42,"context_line":"\u0027requirements\u0027 key in the server dict, and pass it on to compute in"},{"line_number":43,"context_line":"anticipation of modifying the API to include that key.  The"},{"line_number":44,"context_line":"`build_filter_properties` of scheduler_utils will be modified to accept this"},{"line_number":45,"context_line":"new parameter, and add the requirements to the return filter properties, where"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_554eeac1","line":42,"in_reply_to":"dab17558_86c6f765","updated":"2016-05-13 02:11:47.000000000","message":"plus limit list, \nWe could define what qualitative should controlled by admin, and those should be limited in flavor, other could in image property.\nand  limit list should be configurable by admin with a default list.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"49ccbebc382df6a5285058cc32cbe567906db32b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The code in nova/api will be modified to look in the request body for a"},{"line_number":42,"context_line":"\u0027requirements\u0027 key in the server dict, and pass it on to compute in"},{"line_number":43,"context_line":"anticipation of modifying the API to include that key.  The"},{"line_number":44,"context_line":"`build_filter_properties` of scheduler_utils will be modified to accept this"},{"line_number":45,"context_line":"new parameter, and add the requirements to the return filter properties, where"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bab6814e_43261617","line":42,"in_reply_to":"dab17558_8e2bf3ea","updated":"2016-05-25 07:11:17.000000000","message":"@Ed, That means if I have resource with specific capability, then user can free to get it. I think the question is whether user can free to get specific capability.\n\nFor hardware capabilities, they aren\u0027t free most time. For example, user want to get a host support cpu feature avx2, and the number of host support avx2 are limited in the cluster, Operator didn\u0027t want to free to provider to user\n\nFor the capabilities of hypervisor, they are free most time. I want to a vm with support os_secure_boot, some of new version hypervisor support that, but in the cluster not all the hypervisor upgraded to new version. But operator want to satisfy the user who have specific requirement.\n\n@Claudiu @Belmiro, yes, at least, separated the extra_spec stuff out of flavor, it is better than before.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"0657b2faa766c38eab5a978cdeb48734261e58d4","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The code in nova/api will be modified to look in the request body for a"},{"line_number":42,"context_line":"\u0027requirements\u0027 key in the server dict, and pass it on to compute in"},{"line_number":43,"context_line":"anticipation of modifying the API to include that key.  The"},{"line_number":44,"context_line":"`build_filter_properties` of scheduler_utils will be modified to accept this"},{"line_number":45,"context_line":"new parameter, and add the requirements to the return filter properties, where"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_f2ac94a0","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":14},"in_reply_to":"dab17558_d3e704aa","updated":"2016-05-11 22:50:39.000000000","message":"Sooo... throwing this out there... \n\nIf we are going to have defined resource-templates or whatever, it seems that the number of them can still be exponential. But it\u0027s still better than having it all in flavor extra_spec. :)\n\nWhat if instead we have something like a \"flavor topping\" or \"flavor extra_topping\", which is just a single key-value thing. Then, you can request them:\n\n    nova boot --flavor m1.small --flavor_topping t1.foo --flavor_topping t1.bar ...\n\nor, maybe like this:\n\n    nova boot --flavor m1.small --flavor_topping os_secure_boot\u003drequired ...\n\nAlso, I am imagining this in horizon as having an \"Add topping\" button, and you can just add in what you want.\n\nI think this could make pricing a little easier too. Although, not sure how it would go with combo toppings (special offer! 3 toppings for the price of 2!)","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"0657b2faa766c38eab5a978cdeb48734261e58d4","unresolved":false,"context_lines":[{"line_number":49,"context_line":"instance. Novaclient / openstackclient will also be updated to allow the user"},{"line_number":50,"context_line":"to include a new multi-value command line option `--requires` that will specify"},{"line_number":51,"context_line":"the required feature."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Alternatives"},{"line_number":54,"context_line":"------------"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_d797c2e9","line":52,"updated":"2016-05-11 22:50:39.000000000","message":"Hm, I think there is still something that should be taken into account.\n\n1. What sort of validation are we going to have for those requested qualitative features? What if a user passes in a flavor extra_spec that still have some qualitative features, especially conflicting ones? Which ones do you take into account? Raise error on conflicting values? The same question applies to image metadata properties. Also, what if the same feature is requested twice, or 2 mutually exclusive features are requested? (hm, for this, host_capabilities could help, IMO).\n\n2. ? Are we going to have some object model for it, and fields not defined in that object will be ignored? \n\n3. Any details on the format of those requirements entries? Will it have the same structure as the flavor extra_specs?\n\n4. What about adding new requirements to an instance? (via resize).","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"a9b42981cefaa40011a6b3920957f75323f1f67d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"instance. Novaclient / openstackclient will also be updated to allow the user"},{"line_number":50,"context_line":"to include a new multi-value command line option `--requires` that will specify"},{"line_number":51,"context_line":"the required feature."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Alternatives"},{"line_number":54,"context_line":"------------"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_6e34cffa","line":52,"in_reply_to":"dab17558_d797c2e9","updated":"2016-05-13 19:21:29.000000000","message":"1: The flavor always trumps whatever the user requests. If the flavor specifies spinning disk, they can\u0027t request that and also SSD. I would prefer that if they did so they get the spinning disk from the flavor, but I could also see the argument for returning a 400 in that case.\n\n2. That\u0027s trickier, as each deployment may have radically different hardware. An object would have to be defined in code, and would thus have to contain every possible qualitative aspect that any deployment may need.\n\n3. Initially I think following the design in extra_specs would be the least disruptive way forward, but I\u0027m open to other suggestions.\n\n4. You mean the case where a user says \"I want the same RAM/CPU/Disk, but with an SSD instead of a spinning disk\"? Hmmm... that\u0027s not a simple flavor change, is it? It\u0027s a flavor + qualitative change. I suppose that should be possible, but I think it\u0027s a little beyond the scope of this initial change.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"86f6fa184b02886b3867ae9e0dd6b5918630414c","unresolved":false,"context_lines":[{"line_number":53,"context_line":"Alternatives"},{"line_number":54,"context_line":"------------"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"The only other alternative is to contintue packing these things into the"},{"line_number":57,"context_line":"flavor\u0027s extra_specs, and deal with the resulting exponential growth of"},{"line_number":58,"context_line":"flavors."},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aa08908_20a30e51","line":56,"updated":"2016-06-06 18:13:09.000000000","message":"s/contintue/continue/","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":2033,"name":"Belmiro Moreira","email":"moreira.belmiro.email.lists@gmail.com","username":"moreira-belmiro-email-lists"},"change_message_id":"f80d926233559d70aa4b5bffd510de969e94380c","unresolved":false,"context_lines":[{"line_number":60,"context_line":"Data model impact"},{"line_number":61,"context_line":"-----------------"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"None"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"REST API impact"},{"line_number":66,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_7350d832","line":63,"range":{"start_line":63,"start_character":0,"end_line":63,"end_character":4},"updated":"2016-05-11 08:06:37.000000000","message":"Are the requirements saved in the DB?\nIt will be useful for VM rescheduling (live-migration, resize, ...)","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"a9b42981cefaa40011a6b3920957f75323f1f67d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"Data model impact"},{"line_number":61,"context_line":"-----------------"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"None"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"REST API impact"},{"line_number":66,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_2e02c70b","line":63,"range":{"start_line":63,"start_character":0,"end_line":63,"end_character":4},"in_reply_to":"dab17558_7350d832","updated":"2016-05-13 19:21:29.000000000","message":"I am planning on storing them in the RequestSpec as they are now. There will be a follow-up spec on decomposing flavors to their component parts so that a flavor only exists at the API layer; when that happens, the storage requirements will definitely change.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":2033,"name":"Belmiro Moreira","email":"moreira.belmiro.email.lists@gmail.com","username":"moreira-belmiro-email-lists"},"change_message_id":"f80d926233559d70aa4b5bffd510de969e94380c","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"This proposal would add an API microversion for the inclusion of a"},{"line_number":69,"context_line":"`requirements` key in the request body\u0027s `server` dictionary for the Nova API"},{"line_number":70,"context_line":"create call. No changes would be made to the response."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"I\u0027m not sure if this is the correct section, but Horizon will have to be"},{"line_number":73,"context_line":"updated to allow users to specify their requirements in addition to picking a"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_33013007","line":70,"range":{"start_line":70,"start_character":53,"end_line":70,"end_character":54},"updated":"2016-05-11 08:06:37.000000000","message":"When getting the details of the server it would be great if the user can get the requirements that were specified at creation time.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"dca175f4181fc6780dc4251b58f3fbc54e617561","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"This proposal would add an API microversion for the inclusion of a"},{"line_number":69,"context_line":"`requirements` key in the request body\u0027s `server` dictionary for the Nova API"},{"line_number":70,"context_line":"create call. No changes would be made to the response."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"I\u0027m not sure if this is the correct section, but Horizon will have to be"},{"line_number":73,"context_line":"updated to allow users to specify their requirements in addition to picking a"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aa08908_7845f515","line":70,"range":{"start_line":70,"start_character":53,"end_line":70,"end_character":54},"in_reply_to":"dab17558_19690fbf","updated":"2016-06-09 18:59:35.000000000","message":"Well, now that I\u0027ve looked into it, I don\u0027t see anything in the API to return anything about the original request specifications. So I think that\u0027s out of scope for this spec.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"a9b42981cefaa40011a6b3920957f75323f1f67d","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"This proposal would add an API microversion for the inclusion of a"},{"line_number":69,"context_line":"`requirements` key in the request body\u0027s `server` dictionary for the Nova API"},{"line_number":70,"context_line":"create call. No changes would be made to the response."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"I\u0027m not sure if this is the correct section, but Horizon will have to be"},{"line_number":73,"context_line":"updated to allow users to specify their requirements in addition to picking a"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_19690fbf","line":70,"range":{"start_line":70,"start_character":53,"end_line":70,"end_character":54},"in_reply_to":"dab17558_33013007","updated":"2016-05-13 19:21:29.000000000","message":"Yes, that\u0027s a good point. I\u0027ll add that in the next revision.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"0657b2faa766c38eab5a978cdeb48734261e58d4","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"4. Modify novaclient and openstackclient to add a new multi-value `--requires`"},{"line_number":135,"context_line":"command-line option that will then be passed as server[\u0027requirements\u0027]."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Dependencies"},{"line_number":139,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_974d3ac6","line":136,"updated":"2016-05-11 22:50:39.000000000","message":"tempest test for this would also be nice.","commit_id":"a5fcfdad9578b575790674c25243fe6079ed4772"}]}
