)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a90d28c213ed1fdbc98e9ba05a6e8a06f5ff1f86","unresolved":false,"context_lines":[{"line_number":16,"context_line":"This specification attempts to provide a workflow for placing"},{"line_number":17,"context_line":"instances on a specific VMware vcenter resource pool."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"blueprint: vmware-resource-pool"},{"line_number":20,"context_line":"Change-Id: Ibd3aae2cff09be1f46594b23fb60d79b1bd46ebf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"df7087c5_ba0bed27","line":19,"range":{"start_line":19,"start_character":11,"end_line":19,"end_character":31},"updated":"2018-03-15 00:23:43.000000000","message":"This should be the spec filename.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"}],"specs/rocky/approved/vmware-resource-pool-placement.rst":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"ce2c6117b445a85ebe1651a2c3b18c216e2f2b24","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/vmware-resource-pool"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In case of VMware virt driver, vcenter cluster is exposed as compute node."},{"line_number":14,"context_line":"A cluster can have upto 64 ESXi hosts. vcenter resource pools [1]_ allows to"},{"line_number":15,"context_line":"compartmentalize the CPU and memory to different organizations/tenants."},{"line_number":16,"context_line":"Resource pools can be configured to have reservation and limit values for"},{"line_number":17,"context_line":"CPU and memory."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff6b8bd7_e8514610","line":15,"range":{"start_line":14,"start_character":0,"end_line":15,"end_character":71},"updated":"2018-03-06 12:32:36.000000000","message":"This sentence is not grammatically correct, but I\u0027m not exactly sure what you\u0027re trying to say so don\u0027t have an alternative.\n\nAlso: \"up to\".","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"ce2c6117b445a85ebe1651a2c3b18c216e2f2b24","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":".. code::"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"              Nova controller (n-cond)"},{"line_number":44,"context_line":"                /                   \\"},{"line_number":45,"context_line":"         vcenter cluster1/nova-cpu1  vcenter cluster2/nova-cpu2"},{"line_number":46,"context_line":"         /           \\               /     \\"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff6b8bd7_48407236","line":43,"range":{"start_line":43,"start_character":19,"end_line":43,"end_character":29},"updated":"2018-03-06 12:32:36.000000000","message":"conductor?","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"ce2c6117b445a85ebe1651a2c3b18c216e2f2b24","unresolved":false,"context_lines":[{"line_number":65,"context_line":"Proposed change"},{"line_number":66,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# Define resource tracking model for vcenter resource pools: Since vcenter"},{"line_number":69,"context_line":"resource pool is a logical construct under vcenter cluster,"},{"line_number":70,"context_line":"it can be represented as a nested resource provider. Resource pools share the"},{"line_number":71,"context_line":"CPU and Memory from the parent vcenter cluster. Therefore, the parent resource"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff6b8bd7_8859aaff","line":68,"updated":"2018-03-06 12:32:36.000000000","message":"This formatting is wrong see http://logs.openstack.org/67/549067/3/check/build-openstack-sphinx-docs/61f59bd/html/specs/rocky/approved/vmware-resource-pool-placement.html","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"ce2c6117b445a85ebe1651a2c3b18c216e2f2b24","unresolved":false,"context_lines":[{"line_number":109,"context_line":"resource pool nested resource provider."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":".. note:: No new resource classes, say, ``CUSTOM_RESOURCE_POOL_VCPU``,"},{"line_number":112,"context_line":"          ``CUSTOM_RESOURCE_POOL_MEMORY_MB`` for resource pool is defined"},{"line_number":113,"context_line":"          because CPU and memory of resource pool is part of vcenter cluster."},{"line_number":114,"context_line":"          It does not have separate capacity. Otherwise, if new resource class"},{"line_number":115,"context_line":"          is defined, then it requires additional validation to ensure"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff6b8bd7_686696f0","line":112,"range":{"start_line":112,"start_character":63,"end_line":112,"end_character":65},"updated":"2018-03-06 12:32:36.000000000","message":"are","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"1a7629a2b049da8d95e73a8d3eff4b65b8f9f744","unresolved":false,"context_lines":[{"line_number":109,"context_line":"resource pool nested resource provider."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":".. note:: No new resource classes, say, ``CUSTOM_RESOURCE_POOL_VCPU``,"},{"line_number":112,"context_line":"          ``CUSTOM_RESOURCE_POOL_MEMORY_MB`` for resource pool is defined"},{"line_number":113,"context_line":"          because CPU and memory of resource pool is part of vcenter cluster."},{"line_number":114,"context_line":"          It does not have separate capacity. Otherwise, if new resource class"},{"line_number":115,"context_line":"          is defined, then it requires additional validation to ensure"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_7965a8e0","line":112,"range":{"start_line":112,"start_character":63,"end_line":112,"end_character":65},"in_reply_to":"ff6b8bd7_686696f0","updated":"2018-03-12 23:04:24.000000000","message":"Done","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"ce2c6117b445a85ebe1651a2c3b18c216e2f2b24","unresolved":false,"context_lines":[{"line_number":131,"context_line":"           obj_fields.ResourceClass.CPU: {"},{"line_number":132,"context_line":"               \"total\": 4,"},{"line_number":133,"context_line":"               \"reserved\": 0,"},{"line_number":134,"context_line":"               \"min_unit\": CONF.reserved_host_cpus,"},{"line_number":135,"context_line":"               \"max_unit\": MAX_CPU_PER_HOST,"},{"line_number":136,"context_line":"               \"step_size\": 1,"},{"line_number":137,"context_line":"               \"allocation_ratio\": CONF.cpu_allocation_ratio"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff6b8bd7_68d9b681","line":134,"updated":"2018-03-06 12:32:36.000000000","message":"I don\u0027t think you mean min_unit here do you?\n\nYou might mean reserved, but I don\u0027t think that makes any sense for a resource pool. Reserved are the cpus that the host is using for its own operation. min_unit is the smallest allocation we allow of this resource class.","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"1a7629a2b049da8d95e73a8d3eff4b65b8f9f744","unresolved":false,"context_lines":[{"line_number":131,"context_line":"           obj_fields.ResourceClass.CPU: {"},{"line_number":132,"context_line":"               \"total\": 4,"},{"line_number":133,"context_line":"               \"reserved\": 0,"},{"line_number":134,"context_line":"               \"min_unit\": CONF.reserved_host_cpus,"},{"line_number":135,"context_line":"               \"max_unit\": MAX_CPU_PER_HOST,"},{"line_number":136,"context_line":"               \"step_size\": 1,"},{"line_number":137,"context_line":"               \"allocation_ratio\": CONF.cpu_allocation_ratio"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_1964ace3","line":134,"in_reply_to":"ff6b8bd7_68d9b681","updated":"2018-03-12 23:04:24.000000000","message":"That\u0027s right. CONF.reserved_host_cpus should be reserved","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"ce2c6117b445a85ebe1651a2c3b18c216e2f2b24","unresolved":false,"context_lines":[{"line_number":139,"context_line":"           obj_fields.ResourceClass.MEMORY_MB: {"},{"line_number":140,"context_line":"               \"total\": 2,"},{"line_number":141,"context_line":"               \"reserved\": 0,"},{"line_number":142,"context_line":"               \"min_unit\": CONF.reserved_host_memory_mb,"},{"line_number":143,"context_line":"               \"max_unit\": MAX_MEM_MB_PER_HOST,"},{"line_number":144,"context_line":"               \"step_size\": 1,"},{"line_number":145,"context_line":"               \"allocation_ratio\": CONF.CONF.ram_allocation_ratio"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff6b8bd7_28e3be35","line":142,"updated":"2018-03-06 12:32:36.000000000","message":"ditto?","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"ce2c6117b445a85ebe1651a2c3b18c216e2f2b24","unresolved":false,"context_lines":[{"line_number":163,"context_line":"pools, the resource provider will be updated automatically in"},{"line_number":164,"context_line":"``update_provider_tree()``."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"# Define requests using flavor:"},{"line_number":167,"context_line":"Instances can be placed on a given vcenter resource pool by using flavor"},{"line_number":168,"context_line":"with request containing traits pointing to custom traits for resource pool"},{"line_number":169,"context_line":"and tenant."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff6b8bd7_086d9a97","line":166,"updated":"2018-03-06 12:32:36.000000000","message":"formatting","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"1a7629a2b049da8d95e73a8d3eff4b65b8f9f744","unresolved":false,"context_lines":[{"line_number":163,"context_line":"pools, the resource provider will be updated automatically in"},{"line_number":164,"context_line":"``update_provider_tree()``."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"# Define requests using flavor:"},{"line_number":167,"context_line":"Instances can be placed on a given vcenter resource pool by using flavor"},{"line_number":168,"context_line":"with request containing traits pointing to custom traits for resource pool"},{"line_number":169,"context_line":"and tenant."}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_d99b94c6","line":166,"in_reply_to":"ff6b8bd7_086d9a97","updated":"2018-03-12 23:04:24.000000000","message":"Done","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"8b61b3010be5555e10e7cb40171d11cc4ccd2428","unresolved":false,"context_lines":[{"line_number":166,"context_line":"# Define requests using flavor:"},{"line_number":167,"context_line":"Instances can be placed on a given vcenter resource pool by using flavor"},{"line_number":168,"context_line":"with request containing traits pointing to custom traits for resource pool"},{"line_number":169,"context_line":"and tenant."},{"line_number":170,"context_line":"For example::"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    resources:VCPU\u003d2"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f9dbf25_aef80cc4","line":169,"updated":"2018-03-02 09:50:06.000000000","message":"We also need to make sure that if no resource pool is specified in the flavor, the instance will be placed in the root resource pool which corresponds to the cluster (current behavior). During the Rocky PTG we agreed that root resource providers will have a specific trait, so we may need to leverage this to be able to place instances in the root resource pol.","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"3008094d3fd5619f9f1e072f05e5b674455c27d3","unresolved":false,"context_lines":[{"line_number":166,"context_line":"# Define requests using flavor:"},{"line_number":167,"context_line":"Instances can be placed on a given vcenter resource pool by using flavor"},{"line_number":168,"context_line":"with request containing traits pointing to custom traits for resource pool"},{"line_number":169,"context_line":"and tenant."},{"line_number":170,"context_line":"For example::"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    resources:VCPU\u003d2"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f9dbf25_df0896da","line":169,"in_reply_to":"1f9dbf25_aef80cc4","updated":"2018-03-03 01:13:05.000000000","message":"Rado,\nGood point. By default, it goes to default resource pool. But, it is better to create a provider for that too.","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"184d2eff603dceb9d74d496c5eb6e400432ccf06","unresolved":false,"context_lines":[{"line_number":166,"context_line":"# Define requests using flavor:"},{"line_number":167,"context_line":"Instances can be placed on a given vcenter resource pool by using flavor"},{"line_number":168,"context_line":"with request containing traits pointing to custom traits for resource pool"},{"line_number":169,"context_line":"and tenant."},{"line_number":170,"context_line":"For example::"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    resources:VCPU\u003d2"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_999f5c02","line":169,"in_reply_to":"1f9dbf25_df0896da","updated":"2018-03-12 23:14:13.000000000","message":"Rado,\nOn a second thought, having a separate resource provider for root resource pool would mean expressing\n\"trait:CUSTOM_RESOURCE_POOL_A\u003drequired\" in the flavor.\nThis is not the default workflow. Given, the placement happens at the cluster i.e root resource pool, do we need to create resource provider for that?\n\nOne more point is that root resource pool can be used by any tenant as opposed to child resource pools which are dedicated to specific tenant.","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"6f33e5a6eb2d8475c6f952cc332d64a671e0ec58","unresolved":false,"context_lines":[{"line_number":166,"context_line":"# Define requests using flavor:"},{"line_number":167,"context_line":"Instances can be placed on a given vcenter resource pool by using flavor"},{"line_number":168,"context_line":"with request containing traits pointing to custom traits for resource pool"},{"line_number":169,"context_line":"and tenant."},{"line_number":170,"context_line":"For example::"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    resources:VCPU\u003d2"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_06075bcc","line":169,"in_reply_to":"df7087c5_999f5c02","updated":"2018-03-13 08:34:03.000000000","message":"The root resource provider is already created and it should correspond to the root resource pool of the cluster:\n\nhttps://review.openstack.org/#/c/536348/5/nova/virt/vmwareapi/driver.py@389\n\nWe still need to figure out how to make the scheduler to place instance there by default.","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"ce2c6117b445a85ebe1651a2c3b18c216e2f2b24","unresolved":false,"context_lines":[{"line_number":241,"context_line":"Work Items"},{"line_number":242,"context_line":"----------"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"# In VMware driver, add code to:"},{"line_number":245,"context_line":"* discover resource pools from vcenter cluster"},{"line_number":246,"context_line":"* update the provider tree to contain nested resource provider for"},{"line_number":247,"context_line":"resource pools"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff6b8bd7_880e8ae3","line":244,"updated":"2018-03-06 12:32:36.000000000","message":"formatting","commit_id":"cc037023fcdb9beee3c5da53613fd2ef0829bbed"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"47031daae5611d101b5112e8d4a83ee4c9c2a26b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/vmware-resource-pool"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In case of VMware virt driver, vcenter cluster is exposed as compute node."},{"line_number":14,"context_line":"A cluster can have up to 64 ESXi hosts. vcenter resource pools [1]_ allows to"},{"line_number":15,"context_line":"carve out cpu and memory from a cluster that can be assigned to different"},{"line_number":16,"context_line":"organizations/tenants."},{"line_number":17,"context_line":"Resource pools can be configured to have reservation and limit values for"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_da3853ef","line":14,"range":{"start_line":14,"start_character":68,"end_line":14,"end_character":74},"updated":"2018-03-13 11:41:48.000000000","message":"make it possible","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"98043d139089dc4e51e89c8f5f5088cf3065ac3f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/vmware-resource-pool"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In case of VMware virt driver, vcenter cluster is exposed as compute node."},{"line_number":14,"context_line":"A cluster can have up to 64 ESXi hosts. vcenter resource pools [1]_ allows to"},{"line_number":15,"context_line":"carve out cpu and memory from a cluster that can be assigned to different"},{"line_number":16,"context_line":"organizations/tenants."},{"line_number":17,"context_line":"Resource pools can be configured to have reservation and limit values for"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_550cedea","line":14,"range":{"start_line":14,"start_character":68,"end_line":14,"end_character":74},"in_reply_to":"df7087c5_da3853ef","updated":"2018-03-14 21:31:23.000000000","message":"Done","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5107d47a94d10a916d9112e5ea2722e1e71c6c93","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Resource pools can be configured to have reservation and limit values for"},{"line_number":18,"context_line":"cpu and memory. The max value for cpu and memory limit on any resource pool"},{"line_number":19,"context_line":"can be anywhere between 0 and cluster\u0027s total cpu and memory."},{"line_number":20,"context_line":"The sum of reservation values across on resource pools cannot exceed the total"},{"line_number":21,"context_line":"capacity of cluster\u0027s cpu and memory."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Telco operators running Virtual Network Functions (VNFs) on VMware would like"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_1f8a14be","line":20,"range":{"start_line":20,"start_character":30,"end_line":20,"end_character":40},"updated":"2018-03-14 16:46:01.000000000","message":"s/across on/across/","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"98043d139089dc4e51e89c8f5f5088cf3065ac3f","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Resource pools can be configured to have reservation and limit values for"},{"line_number":18,"context_line":"cpu and memory. The max value for cpu and memory limit on any resource pool"},{"line_number":19,"context_line":"can be anywhere between 0 and cluster\u0027s total cpu and memory."},{"line_number":20,"context_line":"The sum of reservation values across on resource pools cannot exceed the total"},{"line_number":21,"context_line":"capacity of cluster\u0027s cpu and memory."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Telco operators running Virtual Network Functions (VNFs) on VMware would like"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_15faf5bb","line":20,"range":{"start_line":20,"start_character":30,"end_line":20,"end_character":40},"in_reply_to":"df7087c5_1f8a14be","updated":"2018-03-14 21:31:23.000000000","message":"Done","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5107d47a94d10a916d9112e5ea2722e1e71c6c93","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":".. code::"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"              Nova conductor (n-cond)"},{"line_number":48,"context_line":"                /                   \\"},{"line_number":49,"context_line":"         vcenter cluster1/nova-cpu1  vcenter cluster2/nova-cpu2"},{"line_number":50,"context_line":"         /           \\               /     \\"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_9f32a40f","line":47,"range":{"start_line":47,"start_character":14,"end_line":47,"end_character":37},"updated":"2018-03-14 16:46:01.000000000","message":"the nova conductor is not a part of the vcenter-specific hierarchy.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"95bbab4cf28f9475b398cb77ce3df625f3cab045","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":".. code::"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"              Nova conductor (n-cond)"},{"line_number":48,"context_line":"                /                   \\"},{"line_number":49,"context_line":"         vcenter cluster1/nova-cpu1  vcenter cluster2/nova-cpu2"},{"line_number":50,"context_line":"         /           \\               /     \\"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_948042f7","line":47,"range":{"start_line":47,"start_character":14,"end_line":47,"end_character":37},"in_reply_to":"df7087c5_55570dcb","updated":"2018-03-14 21:34:17.000000000","message":"Yeah, please remove.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"491ddcdc496193c1481878321473590107177972","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":".. code::"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"              Nova conductor (n-cond)"},{"line_number":48,"context_line":"                /                   \\"},{"line_number":49,"context_line":"         vcenter cluster1/nova-cpu1  vcenter cluster2/nova-cpu2"},{"line_number":50,"context_line":"         /           \\               /     \\"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_94dda2e1","line":47,"range":{"start_line":47,"start_character":14,"end_line":47,"end_character":37},"in_reply_to":"df7087c5_948042f7","updated":"2018-03-14 21:47:56.000000000","message":"sure.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"98043d139089dc4e51e89c8f5f5088cf3065ac3f","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":".. code::"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"              Nova conductor (n-cond)"},{"line_number":48,"context_line":"                /                   \\"},{"line_number":49,"context_line":"         vcenter cluster1/nova-cpu1  vcenter cluster2/nova-cpu2"},{"line_number":50,"context_line":"         /           \\               /     \\"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_55570dcb","line":47,"range":{"start_line":47,"start_character":14,"end_line":47,"end_character":37},"in_reply_to":"df7087c5_9f32a40f","updated":"2018-03-14 21:31:23.000000000","message":"It was added to give an idea about nova and vcenter mapping. I can remove nova-conductor if it adds confusion.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5107d47a94d10a916d9112e5ea2722e1e71c6c93","unresolved":false,"context_lines":[{"line_number":50,"context_line":"         /           \\               /     \\"},{"line_number":51,"context_line":"     res.poolA    res. poolB       ...      ..."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"In the diagram above, consider resource pool A allocated to tenant A"},{"line_number":54,"context_line":"and resource pool B allocated to tenant B."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Given a vcenter cluster A with, say, 6 vCPUs, 3GB capacity, one possible way to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_df2b3c92","line":53,"range":{"start_line":53,"start_character":47,"end_line":53,"end_character":56},"updated":"2018-03-14 16:46:01.000000000","message":"s/allocated/assigned/g\n\nAllocated means something very specific in placement.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"98043d139089dc4e51e89c8f5f5088cf3065ac3f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"         /           \\               /     \\"},{"line_number":51,"context_line":"     res.poolA    res. poolB       ...      ..."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"In the diagram above, consider resource pool A allocated to tenant A"},{"line_number":54,"context_line":"and resource pool B allocated to tenant B."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Given a vcenter cluster A with, say, 6 vCPUs, 3GB capacity, one possible way to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_b50b09d4","line":53,"range":{"start_line":53,"start_character":47,"end_line":53,"end_character":56},"in_reply_to":"df7087c5_df2b3c92","updated":"2018-03-14 21:31:23.000000000","message":"Done","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5107d47a94d10a916d9112e5ea2722e1e71c6c93","unresolved":false,"context_lines":[{"line_number":62,"context_line":"             /                      \\"},{"line_number":63,"context_line":"      res.poolA (4vCPUs, 2GB)    res. poolB (2vCPUs, 1GB)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"When tenant B is not utilizing its entire capacity, tenant A can burst"},{"line_number":66,"context_line":"upto to the available capacity on the vcenter cluster. But during contention,"},{"line_number":67,"context_line":"vcenter will ensure that the tenant A gets the reserved capacity."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_32114f53","line":66,"range":{"start_line":65,"start_character":52,"end_line":66,"end_character":53},"updated":"2018-03-14 16:46:01.000000000","message":"this is really a completely foreign concept to the rest of nova. resources in nova are consumed by an instance. resources are not dynamically assigned to an instance or taken away from an instance based on some dynamic CPU load.\n\nIt\u0027s worth noting that the NFV use case you note in this spec is 100% in opposition to this behaviour of dynamic resource consumption. In the vast majority of VNF deployments, the VNF vendor wants isolated and dedicated resources that are not moved at-will between providers of those resources (because the moving of VMs across providers results in unpredictable performance).","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"491ddcdc496193c1481878321473590107177972","unresolved":false,"context_lines":[{"line_number":62,"context_line":"             /                      \\"},{"line_number":63,"context_line":"      res.poolA (4vCPUs, 2GB)    res. poolB (2vCPUs, 1GB)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"When tenant B is not utilizing its entire capacity, tenant A can burst"},{"line_number":66,"context_line":"upto to the available capacity on the vcenter cluster. But during contention,"},{"line_number":67,"context_line":"vcenter will ensure that the tenant A gets the reserved capacity."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_14651246","line":66,"range":{"start_line":65,"start_character":52,"end_line":66,"end_character":53},"in_reply_to":"df7087c5_32114f53","updated":"2018-03-14 21:47:56.000000000","message":"With respect to nova, the vcpus assigned is still the same. We do not take away the vcpus from an instance. But at the underlying ESXi hypervisor, the share of physical resources allocated is equally split between virtual machines by default. But for some workloads, splitting the shares equally could affect performance. When virtual machines are placed under a vcenter resource pool, the reservation setting on the resource pool (in addition to the reservation setting on virtual machine https://specs.openstack.org/openstack/nova-specs/specs/mitaka/implemented/vmware-limits.html) ensures that the workload can get the minimum guarantee i.e more than the equal shares.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5107d47a94d10a916d9112e5ea2722e1e71c6c93","unresolved":false,"context_lines":[{"line_number":133,"context_line":"The inventory data for resource pools would look like::"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"       {"},{"line_number":136,"context_line":"           obj_fields.ResourceClass.CPU: {"},{"line_number":137,"context_line":"               \"total\": 4,"},{"line_number":138,"context_line":"               \"reserved\": CONF.reserved_host_cpus,"},{"line_number":139,"context_line":"               \"min_unit\": 1,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_1299abc2","line":136,"range":{"start_line":136,"start_character":36,"end_line":136,"end_character":39},"updated":"2018-03-14 16:46:01.000000000","message":"VCPU","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"c0a751f29d1d10db1380eda365dbf27e031980b8","unresolved":false,"context_lines":[{"line_number":135,"context_line":"       {"},{"line_number":136,"context_line":"           obj_fields.ResourceClass.CPU: {"},{"line_number":137,"context_line":"               \"total\": 4,"},{"line_number":138,"context_line":"               \"reserved\": CONF.reserved_host_cpus,"},{"line_number":139,"context_line":"               \"min_unit\": 1,"},{"line_number":140,"context_line":"               \"max_unit\": min(MAX_CPU_PER_HOST, MAX_CPU_PER_RP)"},{"line_number":141,"context_line":"               \"step_size\": 1,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_86e84be2","line":138,"updated":"2018-03-13 08:37:01.000000000","message":"I think only the root resource provider which corresponds to the root resource pool should have \"reserved\" cpu capacity. Nested resource providers should have reserved\u003d0.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5107d47a94d10a916d9112e5ea2722e1e71c6c93","unresolved":false,"context_lines":[{"line_number":135,"context_line":"       {"},{"line_number":136,"context_line":"           obj_fields.ResourceClass.CPU: {"},{"line_number":137,"context_line":"               \"total\": 4,"},{"line_number":138,"context_line":"               \"reserved\": CONF.reserved_host_cpus,"},{"line_number":139,"context_line":"               \"min_unit\": 1,"},{"line_number":140,"context_line":"               \"max_unit\": min(MAX_CPU_PER_HOST, MAX_CPU_PER_RP)"},{"line_number":141,"context_line":"               \"step_size\": 1,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_92ea9b0c","line":138,"range":{"start_line":138,"start_character":45,"end_line":138,"end_character":47},"updated":"2018-03-14 16:46:01.000000000","message":"_vcpus","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"47031daae5611d101b5112e8d4a83ee4c9c2a26b","unresolved":false,"context_lines":[{"line_number":135,"context_line":"       {"},{"line_number":136,"context_line":"           obj_fields.ResourceClass.CPU: {"},{"line_number":137,"context_line":"               \"total\": 4,"},{"line_number":138,"context_line":"               \"reserved\": CONF.reserved_host_cpus,"},{"line_number":139,"context_line":"               \"min_unit\": 1,"},{"line_number":140,"context_line":"               \"max_unit\": min(MAX_CPU_PER_HOST, MAX_CPU_PER_RP)"},{"line_number":141,"context_line":"               \"step_size\": 1,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_3d2f098f","line":138,"in_reply_to":"df7087c5_86e84be2","updated":"2018-03-13 11:41:48.000000000","message":"Is it? Presumably there might be a situation where a resource pool wants to have some cpus reserved for something. Shadow vms? dunno.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5107d47a94d10a916d9112e5ea2722e1e71c6c93","unresolved":false,"context_lines":[{"line_number":135,"context_line":"       {"},{"line_number":136,"context_line":"           obj_fields.ResourceClass.CPU: {"},{"line_number":137,"context_line":"               \"total\": 4,"},{"line_number":138,"context_line":"               \"reserved\": CONF.reserved_host_cpus,"},{"line_number":139,"context_line":"               \"min_unit\": 1,"},{"line_number":140,"context_line":"               \"max_unit\": min(MAX_CPU_PER_HOST, MAX_CPU_PER_RP)"},{"line_number":141,"context_line":"               \"step_size\": 1,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_f2e0b728","line":138,"in_reply_to":"df7087c5_86e84be2","updated":"2018-03-14 16:46:01.000000000","message":"The reserved value of the VCPU inventory item should be the amount reserved for the *host* -- i.e. the hypervisor, which in this case would be the vcenter virt driver.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"98043d139089dc4e51e89c8f5f5088cf3065ac3f","unresolved":false,"context_lines":[{"line_number":135,"context_line":"       {"},{"line_number":136,"context_line":"           obj_fields.ResourceClass.CPU: {"},{"line_number":137,"context_line":"               \"total\": 4,"},{"line_number":138,"context_line":"               \"reserved\": CONF.reserved_host_cpus,"},{"line_number":139,"context_line":"               \"min_unit\": 1,"},{"line_number":140,"context_line":"               \"max_unit\": min(MAX_CPU_PER_HOST, MAX_CPU_PER_RP)"},{"line_number":141,"context_line":"               \"step_size\": 1,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_74b24e4b","line":138,"in_reply_to":"df7087c5_f2e0b728","updated":"2018-03-14 21:31:23.000000000","message":"yes reserved amount refers to operator configured value for the vcenter virt driver.\n\nalso, i see it is  reserved_host_cpus not reserved_host_vcpus https://github.com/openstack/nova/blob/f96e89cc5183e107cffeaf47525ab337c18d7e14/nova/conf/compute.py#L384","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"c0a751f29d1d10db1380eda365dbf27e031980b8","unresolved":false,"context_lines":[{"line_number":143,"context_line":"           },"},{"line_number":144,"context_line":"           obj_fields.ResourceClass.MEMORY_MB: {"},{"line_number":145,"context_line":"               \"total\": 2,"},{"line_number":146,"context_line":"               \"reserved\": CONF.reserved_host_memory_mb,"},{"line_number":147,"context_line":"               \"min_unit\": 1,"},{"line_number":148,"context_line":"               \"max_unit\": min(MAX_MEM_MB_PER_HOST, MAX_MEM_MB_PER_RP)"},{"line_number":149,"context_line":"               \"step_size\": 1,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_a6e54f0b","line":146,"updated":"2018-03-13 08:37:01.000000000","message":"same comment here","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"98043d139089dc4e51e89c8f5f5088cf3065ac3f","unresolved":false,"context_lines":[{"line_number":143,"context_line":"           },"},{"line_number":144,"context_line":"           obj_fields.ResourceClass.MEMORY_MB: {"},{"line_number":145,"context_line":"               \"total\": 2,"},{"line_number":146,"context_line":"               \"reserved\": CONF.reserved_host_memory_mb,"},{"line_number":147,"context_line":"               \"min_unit\": 1,"},{"line_number":148,"context_line":"               \"max_unit\": min(MAX_MEM_MB_PER_HOST, MAX_MEM_MB_PER_RP)"},{"line_number":149,"context_line":"               \"step_size\": 1,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_b4e4660e","line":146,"in_reply_to":"df7087c5_a6e54f0b","updated":"2018-03-14 21:31:23.000000000","message":"Done","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5107d47a94d10a916d9112e5ea2722e1e71c6c93","unresolved":false,"context_lines":[{"line_number":151,"context_line":"           }"},{"line_number":152,"context_line":"       }"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Here except except ``total`` and ``max_unit`` field, rest of the fields are"},{"line_number":155,"context_line":"same as the inventory configuration for compute node."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":".. note:: In VMware driver, ``MAX_CPU_PER_HOST`` and ``MAX_MEM_MB_PER_HOST``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_523e438b","line":154,"range":{"start_line":154,"start_character":5,"end_line":154,"end_character":18},"updated":"2018-03-14 16:46:01.000000000","message":"s/except except/except/","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5107d47a94d10a916d9112e5ea2722e1e71c6c93","unresolved":false,"context_lines":[{"line_number":151,"context_line":"           }"},{"line_number":152,"context_line":"       }"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Here except except ``total`` and ``max_unit`` field, rest of the fields are"},{"line_number":155,"context_line":"same as the inventory configuration for compute node."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":".. note:: In VMware driver, ``MAX_CPU_PER_HOST`` and ``MAX_MEM_MB_PER_HOST``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_d251f3da","line":154,"range":{"start_line":154,"start_character":46,"end_line":154,"end_character":51},"updated":"2018-03-14 16:46:01.000000000","message":"s/field//\n\nsince you say \"rest of the fields\" after this, you do not need to say that \u0027total\u0027 and \u0027max_unit\u0027 are fields, since it is implied.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"98043d139089dc4e51e89c8f5f5088cf3065ac3f","unresolved":false,"context_lines":[{"line_number":151,"context_line":"           }"},{"line_number":152,"context_line":"       }"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Here except except ``total`` and ``max_unit`` field, rest of the fields are"},{"line_number":155,"context_line":"same as the inventory configuration for compute node."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":".. note:: In VMware driver, ``MAX_CPU_PER_HOST`` and ``MAX_MEM_MB_PER_HOST``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_54ef0ae8","line":154,"range":{"start_line":154,"start_character":46,"end_line":154,"end_character":51},"in_reply_to":"df7087c5_d251f3da","updated":"2018-03-14 21:31:23.000000000","message":"Done","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5107d47a94d10a916d9112e5ea2722e1e71c6c93","unresolved":false,"context_lines":[{"line_number":163,"context_line":"          to the cpu and memory limit value configured on the vcenter resource"},{"line_number":164,"context_line":"          pool respectively."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"VMware virt driver would discover the available resource pools under a given"},{"line_number":167,"context_line":"compute node i.e vcenter cluster. Creating nested resource provider, traits,"},{"line_number":168,"context_line":"updating inventory can all be handled using ``update_provider_tree()`` [2]_."},{"line_number":169,"context_line":"Whenever there is change in limits and reservation value on the resource"},{"line_number":170,"context_line":"pools, the resource provider will be updated automatically in"},{"line_number":171,"context_line":"``update_provider_tree()``."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Syntax In Flavors"},{"line_number":174,"context_line":"~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_525723cb","line":171,"range":{"start_line":166,"start_character":0,"end_line":171,"end_character":27},"updated":"2018-03-14 16:46:01.000000000","message":"++\n\nThis is precisely how I expected this to work.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5107d47a94d10a916d9112e5ea2722e1e71c6c93","unresolved":false,"context_lines":[{"line_number":177,"context_line":"and tenant."},{"line_number":178,"context_line":"For example::"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    resources:VCPU\u003d2"},{"line_number":181,"context_line":"    resources:MEMORY_MB\u003d1024"},{"line_number":182,"context_line":"    trait:CUSTOM_RESOURCE_POOL_A\u003drequired"},{"line_number":183,"context_line":"    trait:CUSTOM_TENANT_A\u003drequired"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_f21517e6","line":181,"range":{"start_line":180,"start_character":0,"end_line":181,"end_character":28},"updated":"2018-03-14 16:46:01.000000000","message":"technically, you don\u0027t need to use these because VCPU and MEMORY_MB are settable on the flavor.vcpus and flavor.memory_mb attributes directly.\n\n(though of course it doesn\u0027t *hurt* to set these overrides in the extra specs)","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"98043d139089dc4e51e89c8f5f5088cf3065ac3f","unresolved":false,"context_lines":[{"line_number":177,"context_line":"and tenant."},{"line_number":178,"context_line":"For example::"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    resources:VCPU\u003d2"},{"line_number":181,"context_line":"    resources:MEMORY_MB\u003d1024"},{"line_number":182,"context_line":"    trait:CUSTOM_RESOURCE_POOL_A\u003drequired"},{"line_number":183,"context_line":"    trait:CUSTOM_TENANT_A\u003drequired"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_9507e582","line":181,"range":{"start_line":180,"start_character":0,"end_line":181,"end_character":28},"in_reply_to":"df7087c5_f21517e6","updated":"2018-03-14 21:31:23.000000000","message":"makes sense.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5107d47a94d10a916d9112e5ea2722e1e71c6c93","unresolved":false,"context_lines":[{"line_number":185,"context_line":"Alternatives"},{"line_number":186,"context_line":"------------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"None"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Data model impact"},{"line_number":191,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_b2c23f58","line":188,"range":{"start_line":188,"start_character":0,"end_line":188,"end_character":4},"updated":"2018-03-14 16:46:01.000000000","message":"You could just use nova host aggregates to segregate workloads into vCenter resource pools.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"491ddcdc496193c1481878321473590107177972","unresolved":false,"context_lines":[{"line_number":185,"context_line":"Alternatives"},{"line_number":186,"context_line":"------------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"None"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Data model impact"},{"line_number":191,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_7449eeb4","line":188,"range":{"start_line":188,"start_character":0,"end_line":188,"end_character":4},"in_reply_to":"df7087c5_54762a40","updated":"2018-03-14 21:47:56.000000000","message":"ah, got it.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"98043d139089dc4e51e89c8f5f5088cf3065ac3f","unresolved":false,"context_lines":[{"line_number":185,"context_line":"Alternatives"},{"line_number":186,"context_line":"------------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"None"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Data model impact"},{"line_number":191,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_b57f89de","line":188,"range":{"start_line":188,"start_character":0,"end_line":188,"end_character":4},"in_reply_to":"df7087c5_b2c23f58","updated":"2018-03-14 21:31:23.000000000","message":"host aggregates work at the level of vcenter cluster not resource pools within a cluster.\nIn my opinion, dedicating host aggregates i.e one or more vcenter cluster per tenant is not really multi-tenancy since we are not efficiently leveraging same hardware for multiple tenants and still provide resource guarantees.","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"95bbab4cf28f9475b398cb77ce3df625f3cab045","unresolved":false,"context_lines":[{"line_number":185,"context_line":"Alternatives"},{"line_number":186,"context_line":"------------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"None"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Data model impact"},{"line_number":191,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_54762a40","line":188,"range":{"start_line":188,"start_character":0,"end_line":188,"end_character":4},"in_reply_to":"df7087c5_b57f89de","updated":"2018-03-14 21:34:17.000000000","message":"I don\u0027t disagree with you. Just pointing out that it\u0027s an alternative :)","commit_id":"9f577cdd5dc6bc9893719c698a6dc3def3000310"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a90d28c213ed1fdbc98e9ba05a6e8a06f5ff1f86","unresolved":false,"context_lines":[{"line_number":54,"context_line":"In the diagram above, consider resource pool A assigned to tenant A"},{"line_number":55,"context_line":"and resource pool B allocated to tenant B."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Given a vcenter cluster A with, say, 6 vCPUs, 3GB capacity (excluding"},{"line_number":58,"context_line":"virtualization overhead), one possible way to allocate capacity for tenant A"},{"line_number":59,"context_line":"and B is represented below:"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_a5150e42","line":57,"range":{"start_line":57,"start_character":24,"end_line":57,"end_character":25},"updated":"2018-03-15 00:23:43.000000000","message":"1? The cluster is 1, the resource pools are A and B.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"5aa119d735d629341b94c4aeb98eef67d4d623e9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"In the diagram above, consider resource pool A assigned to tenant A"},{"line_number":55,"context_line":"and resource pool B allocated to tenant B."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Given a vcenter cluster A with, say, 6 vCPUs, 3GB capacity (excluding"},{"line_number":58,"context_line":"virtualization overhead), one possible way to allocate capacity for tenant A"},{"line_number":59,"context_line":"and B is represented below:"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_651a9617","line":57,"range":{"start_line":57,"start_character":24,"end_line":57,"end_character":25},"in_reply_to":"df7087c5_a5150e42","updated":"2018-03-15 01:22:09.000000000","message":"Done","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a90d28c213ed1fdbc98e9ba05a6e8a06f5ff1f86","unresolved":false,"context_lines":[{"line_number":65,"context_line":"      res.poolA (4vCPUs, 2GB)    res. poolB (2vCPUs, 1GB)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"When tenant B is not utilizing its entire capacity, tenant A can burst"},{"line_number":68,"context_line":"upto to the available capacity of the physical resources on the cluster."},{"line_number":69,"context_line":"But during contention, vcenter will ensure that the tenant A gets the reserved"},{"line_number":70,"context_line":"capacity."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_651b7672","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":4},"updated":"2018-03-15 00:23:43.000000000","message":"up","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"5aa119d735d629341b94c4aeb98eef67d4d623e9","unresolved":false,"context_lines":[{"line_number":65,"context_line":"      res.poolA (4vCPUs, 2GB)    res. poolB (2vCPUs, 1GB)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"When tenant B is not utilizing its entire capacity, tenant A can burst"},{"line_number":68,"context_line":"upto to the available capacity of the physical resources on the cluster."},{"line_number":69,"context_line":"But during contention, vcenter will ensure that the tenant A gets the reserved"},{"line_number":70,"context_line":"capacity."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_05df1a3a","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":4},"in_reply_to":"df7087c5_651b7672","updated":"2018-03-15 01:22:09.000000000","message":"Done","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a90d28c213ed1fdbc98e9ba05a6e8a06f5ff1f86","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"When tenant B is not utilizing its entire capacity, tenant A can burst"},{"line_number":68,"context_line":"upto to the available capacity of the physical resources on the cluster."},{"line_number":69,"context_line":"But during contention, vcenter will ensure that the tenant A gets the reserved"},{"line_number":70,"context_line":"capacity."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Proposed change"},{"line_number":73,"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":6,"id":"df7087c5_e520e69d","line":70,"range":{"start_line":69,"start_character":0,"end_line":70,"end_character":9},"updated":"2018-03-15 00:23:43.000000000","message":"How? Dynamically load balancing? If so, does that get reflected back properly into openstack (nova or placement) so that the nova scheduler works properly based on where tenant resources are allocated within a cluster?","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"5aa119d735d629341b94c4aeb98eef67d4d623e9","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"When tenant B is not utilizing its entire capacity, tenant A can burst"},{"line_number":68,"context_line":"upto to the available capacity of the physical resources on the cluster."},{"line_number":69,"context_line":"But during contention, vcenter will ensure that the tenant A gets the reserved"},{"line_number":70,"context_line":"capacity."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Proposed change"},{"line_number":73,"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":6,"id":"df7087c5_a5d2ee26","line":70,"range":{"start_line":69,"start_character":0,"end_line":70,"end_character":9},"in_reply_to":"df7087c5_e520e69d","updated":"2018-03-15 01:22:09.000000000","message":"That\u0027s correct, by load balancing. Load balancing will still be within the scope of resource pool (and same cluster i.e same compute). Nova scheduler would work correctly even under this changes.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a90d28c213ed1fdbc98e9ba05a6e8a06f5ff1f86","unresolved":false,"context_lines":[{"line_number":79,"context_line":"provided by a set of ESXi hosts in the cluster minus the overhead of the"},{"line_number":80,"context_line":"virtualization layer. The total capacity of a system resource pool"},{"line_number":81,"context_line":"indicates resources available to run virtual machines on that cluster."},{"line_number":82,"context_line":"There cannot be more than one system resource pool within a vcenter"},{"line_number":83,"context_line":"cluster."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Admins can create resource pools under the system resource pool to be"},{"line_number":86,"context_line":"assigned for specific tenants."}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_c53922d7","line":83,"range":{"start_line":82,"start_character":0,"end_line":83,"end_character":8},"updated":"2018-03-15 00:23:43.000000000","message":"I\u0027m confused because the diagrams above show more than one resource pool within a cluster.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"f5efcc9d01efefbdbc34f6e6fc58f974906e5bf0","unresolved":false,"context_lines":[{"line_number":79,"context_line":"provided by a set of ESXi hosts in the cluster minus the overhead of the"},{"line_number":80,"context_line":"virtualization layer. The total capacity of a system resource pool"},{"line_number":81,"context_line":"indicates resources available to run virtual machines on that cluster."},{"line_number":82,"context_line":"There cannot be more than one system resource pool within a vcenter"},{"line_number":83,"context_line":"cluster."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Admins can create resource pools under the system resource pool to be"},{"line_number":86,"context_line":"assigned for specific tenants."}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_9786e9b8","line":83,"range":{"start_line":82,"start_character":0,"end_line":83,"end_character":8},"in_reply_to":"df7087c5_99caa59e","updated":"2018-03-15 17:21:53.000000000","message":"Exactly right!","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"5aa119d735d629341b94c4aeb98eef67d4d623e9","unresolved":false,"context_lines":[{"line_number":79,"context_line":"provided by a set of ESXi hosts in the cluster minus the overhead of the"},{"line_number":80,"context_line":"virtualization layer. The total capacity of a system resource pool"},{"line_number":81,"context_line":"indicates resources available to run virtual machines on that cluster."},{"line_number":82,"context_line":"There cannot be more than one system resource pool within a vcenter"},{"line_number":83,"context_line":"cluster."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Admins can create resource pools under the system resource pool to be"},{"line_number":86,"context_line":"assigned for specific tenants."}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_e5a9c68f","line":83,"range":{"start_line":82,"start_character":0,"end_line":83,"end_character":8},"in_reply_to":"df7087c5_c53922d7","updated":"2018-03-15 01:22:09.000000000","message":"Multiple resource pools shown in the diagram are created by admin. This line mentions about system resource pool which is present by default on a cluster.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"392d4db503de0413a8c4ea8d2b9057ae2f1f7b9a","unresolved":false,"context_lines":[{"line_number":79,"context_line":"provided by a set of ESXi hosts in the cluster minus the overhead of the"},{"line_number":80,"context_line":"virtualization layer. The total capacity of a system resource pool"},{"line_number":81,"context_line":"indicates resources available to run virtual machines on that cluster."},{"line_number":82,"context_line":"There cannot be more than one system resource pool within a vcenter"},{"line_number":83,"context_line":"cluster."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Admins can create resource pools under the system resource pool to be"},{"line_number":86,"context_line":"assigned for specific tenants."}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_99caa59e","line":83,"range":{"start_line":82,"start_character":0,"end_line":83,"end_character":8},"in_reply_to":"df7087c5_e5a9c68f","updated":"2018-03-15 13:20:22.000000000","message":"So \u0027system resource pool\u0027 is equivalent to a cluster which is 1:1 with nova-compute services, but the resource pools that the VMs run in are 1:M with the system resource pool, is that correct?","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a90d28c213ed1fdbc98e9ba05a6e8a06f5ff1f86","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        \"parent_provider_uuid\": \"eaaf1c04-ced2-40e4-89a2-87edded06d64\""},{"line_number":105,"context_line":"    }"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Next step would be to create and associate custom traits"},{"line_number":108,"context_line":"``CUSTOM_RESOURCE_POOL_XX`` and ``CUSTOM_TENANT_XX``"},{"line_number":109,"context_line":"to represent resource pool name and tenant id to the resource pool"},{"line_number":110,"context_line":"nested resource provider."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Example::"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_a56c2ece","line":110,"range":{"start_line":107,"start_character":0,"end_line":110,"end_character":25},"updated":"2018-03-15 00:23:43.000000000","message":"Who/what is going to do this? The virt driver?","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"b39bd47be44fdb91a3cc0f31b998eae599eae5ff","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        \"parent_provider_uuid\": \"eaaf1c04-ced2-40e4-89a2-87edded06d64\""},{"line_number":105,"context_line":"    }"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Next step would be to create and associate custom traits"},{"line_number":108,"context_line":"``CUSTOM_RESOURCE_POOL_XX`` and ``CUSTOM_TENANT_XX``"},{"line_number":109,"context_line":"to represent resource pool name and tenant id to the resource pool"},{"line_number":110,"context_line":"nested resource provider."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Example::"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_1e1aa816","line":110,"range":{"start_line":107,"start_character":0,"end_line":110,"end_character":25},"in_reply_to":"df7087c5_09bb55e5","updated":"2018-03-19 18:15:34.000000000","message":"The resource provider and traits are constructs only understood by OpenStack/virt driver and hence traits is handled by nova.\n\nHere is the table giving the list of items we are discussing and who owns it. \n(Hopefully the table is shown correctly. If not, please use this\nhttp://paste.openstack.org/raw/704810/)\n+--------------------------------------------------------------------+-----------------+\n|                                Item                                | CreatedBy/Owner |\n+--------------------------------------------------------------------+-----------------+\n| vCenter cluster                                                    | VC admin        |\n| (this has a system resource pool created automatically by vcenter) |                 |\n| Resource provider for cluster/system resource pool                 | Nova            |\n| vCenter resource pool                                              | VC admin        |\n| Nested resource provider for resource pool                         | Nova            |\n| Traits for nested resource provider                                | Nova            |\n+--------------------------------------------------------------------+-----------------+\n\n\n\n\n\nThe main use case for resource pools in vcenter is to create tenant based placement.\nhttps://pubs.vmware.com/vsphere-4-esx-vcenter/index.jsp?topic\u003d/com.vmware.vsphere.resourcemanagement.doc_41/managing_resource_pools/c_why_use_resource_pools.html","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f8d5a5ce0e32fc98cede52c62c77076549047b75","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        \"parent_provider_uuid\": \"eaaf1c04-ced2-40e4-89a2-87edded06d64\""},{"line_number":105,"context_line":"    }"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Next step would be to create and associate custom traits"},{"line_number":108,"context_line":"``CUSTOM_RESOURCE_POOL_XX`` and ``CUSTOM_TENANT_XX``"},{"line_number":109,"context_line":"to represent resource pool name and tenant id to the resource pool"},{"line_number":110,"context_line":"nested resource provider."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Example::"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_09bb55e5","line":110,"range":{"start_line":107,"start_character":0,"end_line":110,"end_character":25},"in_reply_to":"df7087c5_321b6b73","updated":"2018-03-19 16:00:06.000000000","message":"If the admin is creating RESOURCE_POOL_A (under the system resource pool / cluster? Which is also created by the admin?), then why doesn\u0027t the admin also set those traits on RESOURCE_POOL_A? Why does the virt driver need to be tightly coupled into knowing that the admin created RESOURCE_POOL_A for a specific use case?\n\nWhat if we wanted to create resource pool nested resource providers which weren\u0027t assigned to a single tenant in the future?\n\nI guess I\u0027m just confused about the modeling. Nova creates the compute node resource provider. Then the admin creates what? A resource provider, nested under the compute node RP, which represents the system resource pool / cluster? And then the virt driver creates tenant-specific nested resource providers under the admin-defined system resource pool, which is nested under the compute node RP?\n\nSo:\n\ncompute node RP (created by nova)\n|\n-\u003e system resource pool (created by admin)\n   |\n   -\u003e tenant-specific resource pool (created by virt driver)\n\nIs that right?\n\nThis document could probably be cleaned up a bit to distinguish who is creating what and when.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"5aa119d735d629341b94c4aeb98eef67d4d623e9","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        \"parent_provider_uuid\": \"eaaf1c04-ced2-40e4-89a2-87edded06d64\""},{"line_number":105,"context_line":"    }"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Next step would be to create and associate custom traits"},{"line_number":108,"context_line":"``CUSTOM_RESOURCE_POOL_XX`` and ``CUSTOM_TENANT_XX``"},{"line_number":109,"context_line":"to represent resource pool name and tenant id to the resource pool"},{"line_number":110,"context_line":"nested resource provider."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Example::"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_c5ce0259","line":110,"range":{"start_line":107,"start_character":0,"end_line":110,"end_character":25},"in_reply_to":"df7087c5_a56c2ece","updated":"2018-03-15 01:22:09.000000000","message":"Yes, from virt driver using update_traits() method in provider tree.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"392d4db503de0413a8c4ea8d2b9057ae2f1f7b9a","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        \"parent_provider_uuid\": \"eaaf1c04-ced2-40e4-89a2-87edded06d64\""},{"line_number":105,"context_line":"    }"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Next step would be to create and associate custom traits"},{"line_number":108,"context_line":"``CUSTOM_RESOURCE_POOL_XX`` and ``CUSTOM_TENANT_XX``"},{"line_number":109,"context_line":"to represent resource pool name and tenant id to the resource pool"},{"line_number":110,"context_line":"nested resource provider."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Example::"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_f93c0194","line":110,"range":{"start_line":107,"start_character":0,"end_line":110,"end_character":25},"in_reply_to":"df7087c5_c5ce0259","updated":"2018-03-15 13:20:22.000000000","message":"How does the virt driver know that CUSTOM_TENANT_A should be associated with some specific resource pool? Or there is 1 resource pool per tenant so CUSTOM_RESOURCE_POOL_A is where CUSTOM_TENANT_A is going to be restricted to run?","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"f5efcc9d01efefbdbc34f6e6fc58f974906e5bf0","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        \"parent_provider_uuid\": \"eaaf1c04-ced2-40e4-89a2-87edded06d64\""},{"line_number":105,"context_line":"    }"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Next step would be to create and associate custom traits"},{"line_number":108,"context_line":"``CUSTOM_RESOURCE_POOL_XX`` and ``CUSTOM_TENANT_XX``"},{"line_number":109,"context_line":"to represent resource pool name and tenant id to the resource pool"},{"line_number":110,"context_line":"nested resource provider."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Example::"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_321b6b73","line":110,"range":{"start_line":107,"start_character":0,"end_line":110,"end_character":25},"in_reply_to":"df7087c5_f93c0194","updated":"2018-03-15 17:21:53.000000000","message":"RESOURCE_POOL_A will be created on vcenter by the admin, for which the virt driver will create a nested resource provider A and associate traits CUSTOM_RESOURCE_POOL_A and CUSTOM_TENANT_A using update_provider_tree().\n\nThere will be only one resource pool per tenant within a cluster. So, CUSTOM_RESOURCE_POOL_A is where CUSTOM_TENANT_A is going to restricted to run.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a90d28c213ed1fdbc98e9ba05a6e8a06f5ff1f86","unresolved":false,"context_lines":[{"line_number":136,"context_line":"          same. Anything different would cause inconsistency in resource"},{"line_number":137,"context_line":"          representation."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"CRUD operations on vcenter resource pools is outside the scope of VMware"},{"line_number":140,"context_line":"virt driver. The total reservation for cpu/memory among the resource pools"},{"line_number":141,"context_line":"cannot exceed the total cpu/memory on the vcenter cluster."},{"line_number":142,"context_line":"But, each resource pool can have a limit upto the system resource pool\u0027s"},{"line_number":143,"context_line":"total capacity."}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_259edeb8","line":140,"range":{"start_line":139,"start_character":0,"end_line":140,"end_character":12},"updated":"2018-03-15 00:23:43.000000000","message":"Umm, so all of this is going to be pre-created outside of nova? What is the nova-scheduler going to be doing then?\n\nThe nova-compute service is creating and \u0027owns\u0027 the compute node resource provider. Is the cluster RP a child of the compute node RP and then the resource pool RPs are children of the cluster RP?","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"5aa119d735d629341b94c4aeb98eef67d4d623e9","unresolved":false,"context_lines":[{"line_number":136,"context_line":"          same. Anything different would cause inconsistency in resource"},{"line_number":137,"context_line":"          representation."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"CRUD operations on vcenter resource pools is outside the scope of VMware"},{"line_number":140,"context_line":"virt driver. The total reservation for cpu/memory among the resource pools"},{"line_number":141,"context_line":"cannot exceed the total cpu/memory on the vcenter cluster."},{"line_number":142,"context_line":"But, each resource pool can have a limit upto the system resource pool\u0027s"},{"line_number":143,"context_line":"total capacity."}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_a5418eab","line":140,"range":{"start_line":139,"start_character":0,"end_line":140,"end_character":12},"in_reply_to":"df7087c5_259edeb8","updated":"2018-03-15 01:22:09.000000000","message":"Yes, resource pools are to be managed by vcenter admins along with creating clusters.\n\ncluster RP is same as compute node RP in case of VMware.\nResource pool RPs would be children on cluster/compute node RP.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a90d28c213ed1fdbc98e9ba05a6e8a06f5ff1f86","unresolved":false,"context_lines":[{"line_number":145,"context_line":"The validation for limit and reservation on a resource pool would be handled"},{"line_number":146,"context_line":"in VMware virt driver."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"The inventory data for compute node\u0027s resource provider would be updated as::"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"       {"},{"line_number":151,"context_line":"           obj_fields.ResourceClass.VCPU: {"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_65b7f63b","line":148,"updated":"2018-03-15 00:23:43.000000000","message":"Who is updating this? The virt driver or the external system? Because if nova creates the compute node resource provider, we assert that nova \u0027owns\u0027 it and can set inventory on it during the periodic task update_available_resource, which means nova will overwrite any inventory set on that provider outside of nova.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"5aa119d735d629341b94c4aeb98eef67d4d623e9","unresolved":false,"context_lines":[{"line_number":145,"context_line":"The validation for limit and reservation on a resource pool would be handled"},{"line_number":146,"context_line":"in VMware virt driver."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"The inventory data for compute node\u0027s resource provider would be updated as::"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"       {"},{"line_number":151,"context_line":"           obj_fields.ResourceClass.VCPU: {"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_851b2ac8","line":148,"in_reply_to":"df7087c5_65b7f63b","updated":"2018-03-15 01:22:09.000000000","message":"This will be set by the virt driver using update_provider_tree()\nhttps://github.com/openstack/nova/blob/master/nova/virt/driver.py#L833","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a90d28c213ed1fdbc98e9ba05a6e8a06f5ff1f86","unresolved":false,"context_lines":[{"line_number":202,"context_line":"          ``MAX_VCPU_PER_RP`` and ``MAX_MEM_MB_PER_RP`` refers to the cpu and"},{"line_number":203,"context_line":"          memory limit value configured on the vcenter resource pool"},{"line_number":204,"context_line":"          respectively."},{"line_number":205,"context_line":"          ``UNMANAGED_VCPU`` and ``UNMANAGED_MEMORY_MB`` refers to the cpu and"},{"line_number":206,"context_line":"          memory consumed by VMs on vcenter cluster that are not managed by"},{"line_number":207,"context_line":"          OpenStack. For example, this could be NSX edge gateways."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"VMware virt driver would discover the available resource pools under a given"},{"line_number":210,"context_line":"compute node i.e vcenter cluster. Creating nested resource provider, traits,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_c595a288","line":207,"range":{"start_line":205,"start_character":10,"end_line":207,"end_character":20},"updated":"2018-03-15 00:23:43.000000000","message":"Who is setting these? They should just be considered as part of the reserved_host_cpus and reserved_host_memory_mb config options as normal.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"392d4db503de0413a8c4ea8d2b9057ae2f1f7b9a","unresolved":false,"context_lines":[{"line_number":202,"context_line":"          ``MAX_VCPU_PER_RP`` and ``MAX_MEM_MB_PER_RP`` refers to the cpu and"},{"line_number":203,"context_line":"          memory limit value configured on the vcenter resource pool"},{"line_number":204,"context_line":"          respectively."},{"line_number":205,"context_line":"          ``UNMANAGED_VCPU`` and ``UNMANAGED_MEMORY_MB`` refers to the cpu and"},{"line_number":206,"context_line":"          memory consumed by VMs on vcenter cluster that are not managed by"},{"line_number":207,"context_line":"          OpenStack. For example, this could be NSX edge gateways."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"VMware virt driver would discover the available resource pools under a given"},{"line_number":210,"context_line":"compute node i.e vcenter cluster. Creating nested resource provider, traits,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_d907bdc9","line":207,"range":{"start_line":205,"start_character":10,"end_line":207,"end_character":20},"in_reply_to":"df7087c5_25ca5e1a","updated":"2018-03-15 13:20:22.000000000","message":"\u003e I thought it would be nice to have an option for operator to set aside a value independent of automatically computed cpu/mem values.\n\nAnd how is the operator going to set those values to be used by the virt driver? New config options? If so, that\u0027s basically redundant with the existing \"reserved\" options already used for setting inventory on a compute node resource provider.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"5aa119d735d629341b94c4aeb98eef67d4d623e9","unresolved":false,"context_lines":[{"line_number":202,"context_line":"          ``MAX_VCPU_PER_RP`` and ``MAX_MEM_MB_PER_RP`` refers to the cpu and"},{"line_number":203,"context_line":"          memory limit value configured on the vcenter resource pool"},{"line_number":204,"context_line":"          respectively."},{"line_number":205,"context_line":"          ``UNMANAGED_VCPU`` and ``UNMANAGED_MEMORY_MB`` refers to the cpu and"},{"line_number":206,"context_line":"          memory consumed by VMs on vcenter cluster that are not managed by"},{"line_number":207,"context_line":"          OpenStack. For example, this could be NSX edge gateways."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"VMware virt driver would discover the available resource pools under a given"},{"line_number":210,"context_line":"compute node i.e vcenter cluster. Creating nested resource provider, traits,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_25ca5e1a","line":207,"range":{"start_line":205,"start_character":10,"end_line":207,"end_character":20},"in_reply_to":"df7087c5_c595a288","updated":"2018-03-15 01:22:09.000000000","message":"will be set by virt driver. Do you mean update CONF.reserved_host_cpus and CONF.reserved_host_memory_mb variable directly? I thought it would be nice to have an option for operator to set aside a value independent of automatically computed cpu/mem values. Also, during upgrade it would become tricky to persist the config option value, no?","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"f5efcc9d01efefbdbc34f6e6fc58f974906e5bf0","unresolved":false,"context_lines":[{"line_number":202,"context_line":"          ``MAX_VCPU_PER_RP`` and ``MAX_MEM_MB_PER_RP`` refers to the cpu and"},{"line_number":203,"context_line":"          memory limit value configured on the vcenter resource pool"},{"line_number":204,"context_line":"          respectively."},{"line_number":205,"context_line":"          ``UNMANAGED_VCPU`` and ``UNMANAGED_MEMORY_MB`` refers to the cpu and"},{"line_number":206,"context_line":"          memory consumed by VMs on vcenter cluster that are not managed by"},{"line_number":207,"context_line":"          OpenStack. For example, this could be NSX edge gateways."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"VMware virt driver would discover the available resource pools under a given"},{"line_number":210,"context_line":"compute node i.e vcenter cluster. Creating nested resource provider, traits,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_f2865366","line":207,"range":{"start_line":205,"start_character":10,"end_line":207,"end_character":20},"in_reply_to":"df7087c5_d907bdc9","updated":"2018-03-15 17:21:53.000000000","message":"No, we will not introduce new config option.\nOperator will set the reserved value using the existing CONF.reserved_host_memory_mb and CONF.reserved_host_cpus.\n\nThe \"reserved\" field in the inventory will use the value of CONF.reserved_*","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"b39bd47be44fdb91a3cc0f31b998eae599eae5ff","unresolved":false,"context_lines":[{"line_number":202,"context_line":"          ``MAX_VCPU_PER_RP`` and ``MAX_MEM_MB_PER_RP`` refers to the cpu and"},{"line_number":203,"context_line":"          memory limit value configured on the vcenter resource pool"},{"line_number":204,"context_line":"          respectively."},{"line_number":205,"context_line":"          ``UNMANAGED_VCPU`` and ``UNMANAGED_MEMORY_MB`` refers to the cpu and"},{"line_number":206,"context_line":"          memory consumed by VMs on vcenter cluster that are not managed by"},{"line_number":207,"context_line":"          OpenStack. For example, this could be NSX edge gateways."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"VMware virt driver would discover the available resource pools under a given"},{"line_number":210,"context_line":"compute node i.e vcenter cluster. Creating nested resource provider, traits,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_9eb0f8df","line":207,"range":{"start_line":205,"start_character":10,"end_line":207,"end_character":20},"in_reply_to":"df7087c5_e9eaa1aa","updated":"2018-03-19 18:15:34.000000000","message":"Sorry about the confusion. I didn\u0027t mean to say we will introduce another config option for reserved values. We will leverage the existing option for operator to update. The UNMANAGED_* are just python variables automatically updated by the driver. I will clarify in next patch.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f8d5a5ce0e32fc98cede52c62c77076549047b75","unresolved":false,"context_lines":[{"line_number":202,"context_line":"          ``MAX_VCPU_PER_RP`` and ``MAX_MEM_MB_PER_RP`` refers to the cpu and"},{"line_number":203,"context_line":"          memory limit value configured on the vcenter resource pool"},{"line_number":204,"context_line":"          respectively."},{"line_number":205,"context_line":"          ``UNMANAGED_VCPU`` and ``UNMANAGED_MEMORY_MB`` refers to the cpu and"},{"line_number":206,"context_line":"          memory consumed by VMs on vcenter cluster that are not managed by"},{"line_number":207,"context_line":"          OpenStack. For example, this could be NSX edge gateways."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"VMware virt driver would discover the available resource pools under a given"},{"line_number":210,"context_line":"compute node i.e vcenter cluster. Creating nested resource provider, traits,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_e9eaa1aa","line":207,"range":{"start_line":205,"start_character":10,"end_line":207,"end_character":20},"in_reply_to":"df7087c5_f2865366","updated":"2018-03-19 16:00:06.000000000","message":"Why do we need two sets of \u0027reserved\u0027 inventory config options? Why can\u0027t the operator just set the existing options? If they are leveraging this resource pools thing, then they bump up the value of the reserved option.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"392d4db503de0413a8c4ea8d2b9057ae2f1f7b9a","unresolved":false,"context_lines":[{"line_number":207,"context_line":"          OpenStack. For example, this could be NSX edge gateways."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"VMware virt driver would discover the available resource pools under a given"},{"line_number":210,"context_line":"compute node i.e vcenter cluster. Creating nested resource provider, traits,"},{"line_number":211,"context_line":"updating inventory can all be handled using ``update_provider_tree()`` [2]_."},{"line_number":212,"context_line":"Whenever there is change in limits and reservation value on the resource"},{"line_number":213,"context_line":"pools, the resource provider will be updated automatically in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_99262568","line":210,"range":{"start_line":210,"start_character":34,"end_line":210,"end_character":67},"updated":"2018-03-15 13:20:22.000000000","message":"I thought you said above (L139) that the admin was going to create the resource pools which are nested under the \u0027system resource pool\u0027 so why would the virt driver be creating them?","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f8d5a5ce0e32fc98cede52c62c77076549047b75","unresolved":false,"context_lines":[{"line_number":207,"context_line":"          OpenStack. For example, this could be NSX edge gateways."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"VMware virt driver would discover the available resource pools under a given"},{"line_number":210,"context_line":"compute node i.e vcenter cluster. Creating nested resource provider, traits,"},{"line_number":211,"context_line":"updating inventory can all be handled using ``update_provider_tree()`` [2]_."},{"line_number":212,"context_line":"Whenever there is change in limits and reservation value on the resource"},{"line_number":213,"context_line":"pools, the resource provider will be updated automatically in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_89268516","line":210,"range":{"start_line":210,"start_character":34,"end_line":210,"end_character":67},"in_reply_to":"df7087c5_326ccb9a","updated":"2018-03-19 16:00:06.000000000","message":"OK, I was totally not following that the admin is going to create resource pools in vcenter, not in placement, and that the resource pools from vcenter are going to be proxied through the virt driver and created in placement, via update_provider_tree.\n\nWhat then happens if the admin removes a resource pool in vcenter? Is the virt driver going to detect that and remove the related resource provider(s) in placement? What if there are nova server instances using allocations from those nested resource pool providers in placement? Then we can\u0027t delete the provider since it has consumers using it.\n\nThis gets pretty nasty with proxying this out of band vcenter information through the driver, and it\u0027s something we\u0027ve always said nova doesn\u0027t support (mirroring and handling out of band changes with the underlying hypervisor).","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"8ec58ca45eb7ea3e69d7e9110e8a3a0a3abf72dd","unresolved":false,"context_lines":[{"line_number":207,"context_line":"          OpenStack. For example, this could be NSX edge gateways."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"VMware virt driver would discover the available resource pools under a given"},{"line_number":210,"context_line":"compute node i.e vcenter cluster. Creating nested resource provider, traits,"},{"line_number":211,"context_line":"updating inventory can all be handled using ``update_provider_tree()`` [2]_."},{"line_number":212,"context_line":"Whenever there is change in limits and reservation value on the resource"},{"line_number":213,"context_line":"pools, the resource provider will be updated automatically in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_a839faf2","line":210,"range":{"start_line":210,"start_character":34,"end_line":210,"end_character":67},"in_reply_to":"df7087c5_5e7580cb","updated":"2018-03-19 22:40:48.000000000","message":"Matt, \nI was wrong about the managedBy property. It is only applicable for VMs not resource pools.\nThis out of band management issue applies not only to resource pool but even for clusters i.e admin could delete the cluster too.  Doing modifications on vcenter objects managed by high level platform, in this case, OpenStack is not recommended in general. They are not supported actions. I will mention that in the spec/doc.\n\nHaving said, that I\u0027m following up with vcenter team internally to add warning for modify/delete operation on resource pool, clusters.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"b39bd47be44fdb91a3cc0f31b998eae599eae5ff","unresolved":false,"context_lines":[{"line_number":207,"context_line":"          OpenStack. For example, this could be NSX edge gateways."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"VMware virt driver would discover the available resource pools under a given"},{"line_number":210,"context_line":"compute node i.e vcenter cluster. Creating nested resource provider, traits,"},{"line_number":211,"context_line":"updating inventory can all be handled using ``update_provider_tree()`` [2]_."},{"line_number":212,"context_line":"Whenever there is change in limits and reservation value on the resource"},{"line_number":213,"context_line":"pools, the resource provider will be updated automatically in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_5e7580cb","line":210,"range":{"start_line":210,"start_character":34,"end_line":210,"end_character":67},"in_reply_to":"df7087c5_89268516","updated":"2018-03-19 18:15:34.000000000","message":"You\u0027re right. Admin could remove the resource pool out of band. But that is definitely not a recommended operation. This problem could happen for any resource on vcenter. We could set the \"managed_by\" property on the resource pool to indicate the admin that the resource is being managed by OpenStack. \nWe already do that for VMs.\nhttps://github.com/openstack/nova/blob/master/nova/virt/vmwareapi/vm_util.py#L294\n\nThis will warn the admin when attempting to modify/delete the resource.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"f5efcc9d01efefbdbc34f6e6fc58f974906e5bf0","unresolved":false,"context_lines":[{"line_number":207,"context_line":"          OpenStack. For example, this could be NSX edge gateways."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"VMware virt driver would discover the available resource pools under a given"},{"line_number":210,"context_line":"compute node i.e vcenter cluster. Creating nested resource provider, traits,"},{"line_number":211,"context_line":"updating inventory can all be handled using ``update_provider_tree()`` [2]_."},{"line_number":212,"context_line":"Whenever there is change in limits and reservation value on the resource"},{"line_number":213,"context_line":"pools, the resource provider will be updated automatically in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_326ccb9a","line":210,"range":{"start_line":210,"start_character":34,"end_line":210,"end_character":67},"in_reply_to":"df7087c5_99262568","updated":"2018-03-15 17:21:53.000000000","message":"Creating resource provider is different from creating actual resource itself.\n\nHere, \n1. admin creates only the resource pool on vcenter. \n2. The corresponding resource provider (nested) will be created by virt driver via update_provider_tree()\n\nL139 refers to #1\nL210 refers to #2.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"66de69f3e72c6bb07ff9b99365a0f38863872904","unresolved":false,"context_lines":[{"line_number":221,"context_line":"and tenant."},{"line_number":222,"context_line":"For example::"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    trait:CUSTOM_RESOURCE_POOL_A\u003drequired"},{"line_number":225,"context_line":"    trait:CUSTOM_TENANT_A\u003drequired"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"Alternatives"},{"line_number":228,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_e526a668","line":225,"range":{"start_line":224,"start_character":0,"end_line":225,"end_character":34},"updated":"2018-03-15 00:31:08.000000000","message":"If I\u0027m understanding this correctly, the external system (MANO?) is going to pre-determine where all instances for this tenant should go, tag those with specific traits and use specific (private?) flavors for that tenant to assign VMs for that tenant directly to that resource pool.\n\nI\u0027ve heard similar requests to completely bypass the nova-scheduler by picking things down to the level of the exact host, NUMA nodes, and CPUs to pin and it\u0027s generally shot down, but seems we could make that all happen by simply having the external system model everything in Placement, tag them with custom traits, and then send the server create request with a dynamic flavor with required traits putting the resources directly where the MANO system said they should go. Maybe I\u0027m conflating what these two requirements are, but they sound pretty similar.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"5aa119d735d629341b94c4aeb98eef67d4d623e9","unresolved":false,"context_lines":[{"line_number":221,"context_line":"and tenant."},{"line_number":222,"context_line":"For example::"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    trait:CUSTOM_RESOURCE_POOL_A\u003drequired"},{"line_number":225,"context_line":"    trait:CUSTOM_TENANT_A\u003drequired"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"Alternatives"},{"line_number":228,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_00a7080d","line":225,"range":{"start_line":224,"start_character":0,"end_line":225,"end_character":34},"in_reply_to":"df7087c5_e526a668","updated":"2018-03-15 01:22:09.000000000","message":"That\u0027s correct! Only exception is that MANO being aware of exact host. nova-scheduler is still responsible for identifying the right host/compute that has the resource pool. I think the same applies to NUMA and CPU pinning. I\u0027m also thinking of a scale-out scenario where resource pool for a tenant can be created in different compute/clusters. Then, nova-scheduler can pick any of the resource pool RP that can meet the resource requirements.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a90d28c213ed1fdbc98e9ba05a6e8a06f5ff1f86","unresolved":false,"context_lines":[{"line_number":297,"context_line":"* In VMware virt driver, discover resource pools from vcenter cluster"},{"line_number":298,"context_line":"* update the provider tree to contain nested resource provider for"},{"line_number":299,"context_line":"  resource pools"},{"line_number":300,"context_line":"* add tests in VMware CI to test this new capability"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"Dependencies"},{"line_number":303,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_05f5daec","line":300,"range":{"start_line":300,"start_character":2,"end_line":300,"end_character":52},"updated":"2018-03-15 00:23:43.000000000","message":"I doubt anyone is going to do this. It\u0027s not an API change so Tempest would have tests for it. You would need a special tempest plugin to hook in new tests for this.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1cde101beae5a16722dfc71a8cd2a8bd083f2b1e","unresolved":false,"context_lines":[{"line_number":297,"context_line":"* In VMware virt driver, discover resource pools from vcenter cluster"},{"line_number":298,"context_line":"* update the provider tree to contain nested resource provider for"},{"line_number":299,"context_line":"  resource pools"},{"line_number":300,"context_line":"* add tests in VMware CI to test this new capability"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"Dependencies"},{"line_number":303,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_05439a14","line":300,"range":{"start_line":300,"start_character":2,"end_line":300,"end_character":52},"in_reply_to":"df7087c5_05f5daec","updated":"2018-03-15 00:26:31.000000000","message":"\u003e It\u0027s not an API change so Tempest would have tests for it.\n\n*would NOT have tests for it","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"5aa119d735d629341b94c4aeb98eef67d4d623e9","unresolved":false,"context_lines":[{"line_number":297,"context_line":"* In VMware virt driver, discover resource pools from vcenter cluster"},{"line_number":298,"context_line":"* update the provider tree to contain nested resource provider for"},{"line_number":299,"context_line":"  resource pools"},{"line_number":300,"context_line":"* add tests in VMware CI to test this new capability"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"Dependencies"},{"line_number":303,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_65fcd63d","line":300,"range":{"start_line":300,"start_character":2,"end_line":300,"end_character":52},"in_reply_to":"df7087c5_05f5daec","updated":"2018-03-15 01:22:09.000000000","message":"oh yes. this cannot be part of generic tempest cases.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a90d28c213ed1fdbc98e9ba05a6e8a06f5ff1f86","unresolved":false,"context_lines":[{"line_number":310,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"* Unit tests"},{"line_number":313,"context_line":"* Tempest tests to be run on VMware CI"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"Documentation Impact"},{"line_number":316,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_c5da8276","line":313,"range":{"start_line":313,"start_character":2,"end_line":313,"end_character":38},"updated":"2018-03-15 00:23:43.000000000","message":"I\u0027ll give $100 if this actually happens.","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"5aa119d735d629341b94c4aeb98eef67d4d623e9","unresolved":false,"context_lines":[{"line_number":310,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"* Unit tests"},{"line_number":313,"context_line":"* Tempest tests to be run on VMware CI"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"Documentation Impact"},{"line_number":316,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df7087c5_05a15a46","line":313,"range":{"start_line":313,"start_character":2,"end_line":313,"end_character":38},"in_reply_to":"df7087c5_c5da8276","updated":"2018-03-15 01:22:09.000000000","message":"I\u0027ll try to get it from you after the code is merged :-)","commit_id":"9dafb013f4dc726ef441252529126179bd40e367"}],"specs/rocky/approved/vmware-resource-pool.rst":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3c1ab1c5124a749785ef24930e8edea578eeb56c","unresolved":false,"context_lines":[{"line_number":172,"context_line":"          Implementation of this spec would change that to report the"},{"line_number":173,"context_line":"          system resource pool\u0027s cpu and memory."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"The inventory data for resource pools created by admin would look like::"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"       {"},{"line_number":178,"context_line":"           obj_fields.ResourceClass.VCPU: {"}],"source_content_type":"text/x-rst","patch_set":7,"id":"df7087c5_09835558","line":175,"updated":"2018-03-19 15:46:37.000000000","message":"If you want to avoid confusion on who the admin is here and what they are doing you could expand this sentence a bit:\n\nResource pools are created in vCenter by the admin. The VMware virt driver will then create inventory representing those pools that looks like::\n\nor something to that effect. May not be necessary but an option if more clarity is needed.","commit_id":"af1d2ffbd4288e5dbf7acc72ac27c1f3d62dec5c"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"2cb59ef632fd5f8188b294d05bdac28ab583067e","unresolved":false,"context_lines":[{"line_number":172,"context_line":"          Implementation of this spec would change that to report the"},{"line_number":173,"context_line":"          system resource pool\u0027s cpu and memory."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"The inventory data for resource pools created by admin would look like::"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"       {"},{"line_number":178,"context_line":"           obj_fields.ResourceClass.VCPU: {"}],"source_content_type":"text/x-rst","patch_set":7,"id":"df7087c5_0188096f","line":175,"in_reply_to":"df7087c5_09835558","updated":"2018-03-19 18:18:24.000000000","message":"Would something like this help?\nhttp://paste.openstack.org/raw/704810/","commit_id":"af1d2ffbd4288e5dbf7acc72ac27c1f3d62dec5c"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3c1ab1c5124a749785ef24930e8edea578eeb56c","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"* Unit tests"},{"line_number":312,"context_line":"* Tempest tests to be run on VMware CI using flavor with custom traits"},{"line_number":313,"context_line":"  for resource pool placement"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"Documentation Impact"},{"line_number":316,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"df7087c5_c93f9d85","line":313,"updated":"2018-03-19 15:46:37.000000000","message":"Even if it is not necessary here in this spec, somewhere we should document/write down the steps for the testing plan for this stuff in more detail so that we can track some incremental progress on it. We keep talking about \"make VMware ci better\" but the state of that improvement is invisible.","commit_id":"af1d2ffbd4288e5dbf7acc72ac27c1f3d62dec5c"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"2cb59ef632fd5f8188b294d05bdac28ab583067e","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"* Unit tests"},{"line_number":312,"context_line":"* Tempest tests to be run on VMware CI using flavor with custom traits"},{"line_number":313,"context_line":"  for resource pool placement"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"Documentation Impact"},{"line_number":316,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"df7087c5_c1f691fa","line":313,"in_reply_to":"df7087c5_c93f9d85","updated":"2018-03-19 18:18:24.000000000","message":"I agree. We can probably begin with a wiki page.","commit_id":"af1d2ffbd4288e5dbf7acc72ac27c1f3d62dec5c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0fb0c8586e21cf75176c690627ef15b77dff2369","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Use Cases"},{"line_number":40,"context_line":"---------"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Telco operators running VNFs on VMware platform would like to leverage"},{"line_number":43,"context_line":"the resource pools to carve out capacity for different services or tenants"},{"line_number":44,"context_line":"from same vcenter cluster. Each resource pool can be configured to meet"},{"line_number":45,"context_line":"specific SLA which is expressed using limit and reservation."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":".. code::"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"         vcenter cluster1/nova-cpu1  vcenter cluster2/nova-cpu2"},{"line_number":50,"context_line":"           (system resource pool)       (system resource pool)"},{"line_number":51,"context_line":"              /           \\                 /     \\"},{"line_number":52,"context_line":"          res.poolA    res. poolB         ...      ..."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"In the diagram above, consider resource pool A assigned to tenant A"},{"line_number":55,"context_line":"and resource pool B allocated to tenant B."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Given a vcenter cluster 1 with, say, 6 vCPUs, 3GB capacity (excluding"},{"line_number":58,"context_line":"virtualization overhead), one possible way to allocate capacity for tenant A"},{"line_number":59,"context_line":"and B is represented below:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":".. code::"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"             vcenter cluster (6vCPUs, 3GB)"},{"line_number":64,"context_line":"             /                      \\"},{"line_number":65,"context_line":"      res.poolA (4vCPUs, 2GB)    res. poolB (2vCPUs, 1GB)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"When tenant B is not utilizing its entire capacity, tenant A can burst"},{"line_number":68,"context_line":"up to the available capacity of the physical resources on the cluster."},{"line_number":69,"context_line":"But during contention, vcenter will ensure that the tenant A gets the reserved"},{"line_number":70,"context_line":"capacity."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Proposed change"},{"line_number":73,"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":8,"id":"bf659307_8fd137fe","line":70,"range":{"start_line":42,"start_character":0,"end_line":70,"end_character":9},"updated":"2018-04-11 15:32:24.000000000","message":"What you are describing above is really a need for complex *quotas*, not really complex inventory or allocation management.\n\nQuota management is not something that the placement service is responsible for, FYI.","commit_id":"1816c4144618c79bbb6efb0b72ba3da71ea0c933"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0fb0c8586e21cf75176c690627ef15b77dff2369","unresolved":false,"context_lines":[{"line_number":79,"context_line":"provided by a set of ESXi hosts in the cluster minus the overhead of the"},{"line_number":80,"context_line":"virtualization layer. The total capacity of a system resource pool"},{"line_number":81,"context_line":"indicates resources available to run virtual machines on that cluster."},{"line_number":82,"context_line":"There cannot be more than one system resource pool within a vcenter"},{"line_number":83,"context_line":"cluster."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Vcenter admin can create resource pools under the system resource pool to be"},{"line_number":86,"context_line":"assigned for specific tenants."}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf659307_0f15279c","line":83,"range":{"start_line":82,"start_character":0,"end_line":83,"end_character":8},"updated":"2018-04-11 15:32:24.000000000","message":"I don\u0027t really understand why this is... why call it a resource pool at all if the vCenter cluster\u0027s resources are always equal to the resources of the single resource pool that the cluster can contain?","commit_id":"1816c4144618c79bbb6efb0b72ba3da71ea0c933"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"41f1bc4dafd7f949ac6b827d2dcf53f4608376df","unresolved":false,"context_lines":[{"line_number":79,"context_line":"provided by a set of ESXi hosts in the cluster minus the overhead of the"},{"line_number":80,"context_line":"virtualization layer. The total capacity of a system resource pool"},{"line_number":81,"context_line":"indicates resources available to run virtual machines on that cluster."},{"line_number":82,"context_line":"There cannot be more than one system resource pool within a vcenter"},{"line_number":83,"context_line":"cluster."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Vcenter admin can create resource pools under the system resource pool to be"},{"line_number":86,"context_line":"assigned for specific tenants."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_99ff6033","line":83,"range":{"start_line":82,"start_character":0,"end_line":83,"end_character":8},"in_reply_to":"9f6a8fd7_760e1b3c","updated":"2018-04-19 19:31:19.000000000","message":"ack, no worries. It\u0027s just odd terminology, that\u0027s all.","commit_id":"1816c4144618c79bbb6efb0b72ba3da71ea0c933"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"34682f506124e242356218c1bd6d6ed502d76da7","unresolved":false,"context_lines":[{"line_number":79,"context_line":"provided by a set of ESXi hosts in the cluster minus the overhead of the"},{"line_number":80,"context_line":"virtualization layer. The total capacity of a system resource pool"},{"line_number":81,"context_line":"indicates resources available to run virtual machines on that cluster."},{"line_number":82,"context_line":"There cannot be more than one system resource pool within a vcenter"},{"line_number":83,"context_line":"cluster."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Vcenter admin can create resource pools under the system resource pool to be"},{"line_number":86,"context_line":"assigned for specific tenants."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_760e1b3c","line":83,"range":{"start_line":82,"start_character":0,"end_line":83,"end_character":8},"in_reply_to":"bf659307_0f15279c","updated":"2018-04-19 19:21:26.000000000","message":"Root resource pool is the term used in vcenter. https://docs.vmware.com/en/VMware-vSphere/6.0/com.vmware.vsphere.resmgmt.doc/GUID-60077B40-66FF-4625-934A-641703ED7601.html\n\nI thought using \"root\" would be more confusing because we have root resource provider in placement.\n\nI can change \"system\" to \"root\", please let me know.","commit_id":"1816c4144618c79bbb6efb0b72ba3da71ea0c933"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0fb0c8586e21cf75176c690627ef15b77dff2369","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Vcenter admin can create resource pools under the system resource pool to be"},{"line_number":86,"context_line":"assigned for specific tenants."},{"line_number":87,"context_line":"Since vcenter resource pool is a logical construct under vcenter cluster,"},{"line_number":88,"context_line":"it can be represented as a nested resource provider. Resource pools share the"},{"line_number":89,"context_line":"cpu and memory from the system resource pool of the vcenter cluster."},{"line_number":90,"context_line":"Therefore, the parent resource provider for resource pool would be compute"},{"line_number":91,"context_line":"node whose inventory for cpu and memory would come from system resource pool."}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf659307_4f4c7fc7","line":88,"range":{"start_line":87,"start_character":0,"end_line":88,"end_character":52},"updated":"2018-04-11 15:32:24.000000000","message":"Recommend using aggregates, not child providers, because you are essentially looking for the \"placement request filter\" work that Dan Smith is doing. And that uses aggregates to \"pre-filter\" compute hosts (resource providers) that are associated with a specific aggregate that a tenant is \"pinned\" to.\n\nWhat you are really needing, though, is a complex *quota management system* which is not what you will get with the placement API.","commit_id":"1816c4144618c79bbb6efb0b72ba3da71ea0c933"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"34682f506124e242356218c1bd6d6ed502d76da7","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Vcenter admin can create resource pools under the system resource pool to be"},{"line_number":86,"context_line":"assigned for specific tenants."},{"line_number":87,"context_line":"Since vcenter resource pool is a logical construct under vcenter cluster,"},{"line_number":88,"context_line":"it can be represented as a nested resource provider. Resource pools share the"},{"line_number":89,"context_line":"cpu and memory from the system resource pool of the vcenter cluster."},{"line_number":90,"context_line":"Therefore, the parent resource provider for resource pool would be compute"},{"line_number":91,"context_line":"node whose inventory for cpu and memory would come from system resource pool."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_f9e9bc19","line":88,"range":{"start_line":87,"start_character":0,"end_line":88,"end_character":52},"in_reply_to":"bf659307_4f4c7fc7","updated":"2018-04-19 19:21:26.000000000","message":"Using aggregates with tenant mapping can dedicate vcenter cluster(s) to a tenant. But this spec is about partitioning a vcenter cluster to multiple tenants and make sure the available capacity for each partition/resource pool is exposed to the nova scheduler. If we use host aggregates, we will not be able to expose the  resource pools capacity to the scheduler.  That\u0027s why placement service is used instead of host aggregates.","commit_id":"1816c4144618c79bbb6efb0b72ba3da71ea0c933"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0fb0c8586e21cf75176c690627ef15b77dff2369","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        \"parent_provider_uuid\": \"eaaf1c04-ced2-40e4-89a2-87edded06d64\""},{"line_number":105,"context_line":"    }"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Next step would be to create and associate custom traits"},{"line_number":108,"context_line":"``CUSTOM_RESOURCE_POOL_XX`` and ``CUSTOM_TENANT_XX``"},{"line_number":109,"context_line":"to represent resource pool name and tenant id to the resource pool"},{"line_number":110,"context_line":"nested resource provider."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Example::"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf659307_4f8f9fcc","line":110,"range":{"start_line":107,"start_character":0,"end_line":110,"end_character":25},"updated":"2018-04-11 15:32:24.000000000","message":"With the placement request work, you would not even need to do this. Instead, you would add aggregate metadata indicating which tenant is in the aggregate and the placement request filter would simply return to the scheduler those compute hosts that are in that aggregate.","commit_id":"1816c4144618c79bbb6efb0b72ba3da71ea0c933"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"5c77be238edab1002e73563c910c66f995abd192","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        \"parent_provider_uuid\": \"eaaf1c04-ced2-40e4-89a2-87edded06d64\""},{"line_number":105,"context_line":"    }"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Next step would be to create and associate custom traits"},{"line_number":108,"context_line":"``CUSTOM_RESOURCE_POOL_XX`` and ``CUSTOM_TENANT_XX``"},{"line_number":109,"context_line":"to represent resource pool name and tenant id to the resource pool"},{"line_number":110,"context_line":"nested resource provider."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Example::"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_cc03d872","line":110,"range":{"start_line":107,"start_character":0,"end_line":110,"end_character":25},"in_reply_to":"9f6a8fd7_59f9c84a","updated":"2018-04-19 20:09:49.000000000","message":"Thanks! Let me remove \"CUSTOM_TENANT_XX\" and leave tenant based filtering to use aggregates + metadata.","commit_id":"1816c4144618c79bbb6efb0b72ba3da71ea0c933"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"41f1bc4dafd7f949ac6b827d2dcf53f4608376df","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        \"parent_provider_uuid\": \"eaaf1c04-ced2-40e4-89a2-87edded06d64\""},{"line_number":105,"context_line":"    }"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Next step would be to create and associate custom traits"},{"line_number":108,"context_line":"``CUSTOM_RESOURCE_POOL_XX`` and ``CUSTOM_TENANT_XX``"},{"line_number":109,"context_line":"to represent resource pool name and tenant id to the resource pool"},{"line_number":110,"context_line":"nested resource provider."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Example::"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_59f9c84a","line":110,"range":{"start_line":107,"start_character":0,"end_line":110,"end_character":25},"in_reply_to":"9f6a8fd7_f98f7c20","updated":"2018-04-19 19:31:19.000000000","message":"Yes, you absolutely can have multiple tenants associated with a single nova host aggregate.","commit_id":"1816c4144618c79bbb6efb0b72ba3da71ea0c933"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"34682f506124e242356218c1bd6d6ed502d76da7","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        \"parent_provider_uuid\": \"eaaf1c04-ced2-40e4-89a2-87edded06d64\""},{"line_number":105,"context_line":"    }"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Next step would be to create and associate custom traits"},{"line_number":108,"context_line":"``CUSTOM_RESOURCE_POOL_XX`` and ``CUSTOM_TENANT_XX``"},{"line_number":109,"context_line":"to represent resource pool name and tenant id to the resource pool"},{"line_number":110,"context_line":"nested resource provider."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Example::"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_f98f7c20","line":110,"range":{"start_line":107,"start_character":0,"end_line":110,"end_character":25},"in_reply_to":"bf659307_4f8f9fcc","updated":"2018-04-19 19:21:26.000000000","message":"Just to understand this better: can we have multiple tenants associated to single aggregate? The reason is that we need a vcenter cluster to be used by multiple tenants. \n\nAlso, I feel using traits mentioned here would cut down the # steps to create aggregate, add metadata etc.","commit_id":"1816c4144618c79bbb6efb0b72ba3da71ea0c933"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5b2cf573f3807f26c29e3bd427ddd73e984ff871","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Use Cases"},{"line_number":40,"context_line":"---------"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Telco operators running VNFs on VMware platform would like to leverage"},{"line_number":43,"context_line":"the resource pools to carve out capacity for different services or tenants"},{"line_number":44,"context_line":"from same vcenter cluster. Each resource pool can be configured to meet"},{"line_number":45,"context_line":"specific SLA which is expressed using limit and reservation."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":".. code::"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_3c8dc728","line":45,"range":{"start_line":42,"start_character":0,"end_line":45,"end_character":60},"updated":"2018-12-05 23:38:55.000000000","message":"so this reads like a usecase to be addressed by blazar not nova.\n\nthey had a spec for rocky \nhttps://review.openstack.org/#/c/576343/17/doc/source/specs/rocky/placement-api.rst\n\nand we had several other conversation at the denver ptg\ncovering host and instance reservation.\n\ni woudl recommend reading https://etherpad.openstack.org/p/r.d1b6c7b07e0ecc1679d0e38457007c86\n\nbut i think we should proably look to combin this effort with the blazar effort or just use blazar for this usecase.","commit_id":"ef8caf85839a3a68185ecb911f9859ae768a1d4e"}]}
