)]}'
{"doc/source/specs/rocky/placement-api.rst":[{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"610c966bbbde7078740cf96a007a45fb99bb2b78","unresolved":false,"context_lines":[{"line_number":33,"context_line":"Use Cases"},{"line_number":34,"context_line":"---------"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* A user wants to reserve instance resources without the anti-affinity policy."},{"line_number":37,"context_line":"* A user wants to reserve instance resources more than the amount of hosts."},{"line_number":38,"context_line":"* An admin wants to allow users to reserve more resources than the physical"},{"line_number":39,"context_line":"  amount (resource overcommitment)."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_ab19cf7a","line":36,"range":{"start_line":36,"start_character":45,"end_line":36,"end_character":70},"updated":"2018-06-19 08:06:45.000000000","message":"with affinity policy?","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"c13d22e94d5eda977a207d278123b5277ea6ee86","unresolved":false,"context_lines":[{"line_number":33,"context_line":"Use Cases"},{"line_number":34,"context_line":"---------"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* A user wants to reserve instance resources without the anti-affinity policy."},{"line_number":37,"context_line":"* A user wants to reserve instance resources more than the amount of hosts."},{"line_number":38,"context_line":"* An admin wants to allow users to reserve more resources than the physical"},{"line_number":39,"context_line":"  amount (resource overcommitment)."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_03b9b177","line":36,"range":{"start_line":36,"start_character":45,"end_line":36,"end_character":70},"in_reply_to":"5f7c97a3_ab19cf7a","updated":"2018-06-20 08:04:14.000000000","message":"Done","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"610c966bbbde7078740cf96a007a45fb99bb2b78","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"},{"line_number":42,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Use the `custom resource class`_ to represent reservation resources and use the"},{"line_number":45,"context_line":"`nested resource provider`_ to manage capacity and usage of reservation"},{"line_number":46,"context_line":"resources."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_cbde8b69","line":43,"updated":"2018-06-19 08:06:45.000000000","message":"Could you add an info that which steps are same with current implementation and which steps are different?\n\nFor example, Blazar fetches the hypervisor infor at the creating host.  In current implementation, Blazar adds the host into freepool. According to the proposal, the freepool is not needed?","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"c13d22e94d5eda977a207d278123b5277ea6ee86","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"},{"line_number":42,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Use the `custom resource class`_ to represent reservation resources and use the"},{"line_number":45,"context_line":"`nested resource provider`_ to manage capacity and usage of reservation"},{"line_number":46,"context_line":"resources."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_1ef4a8f0","line":43,"in_reply_to":"5f7c97a3_cbde8b69","updated":"2018-06-20 08:04:14.000000000","message":"I updated these sections and wrote all the steps which interact with Nova and Placement. If any step is removed by this spec, that is clearly described as a note at the end of each section.","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"610c966bbbde7078740cf96a007a45fb99bb2b78","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"1. Get hypervisor information and store it into the computehosts table."},{"line_number":54,"context_line":"2. Get the compute node inventory by calling the `List resource provider"},{"line_number":55,"context_line":"   inventories API`_ and store it into the new `computehost_inventories table`_"},{"line_number":56,"context_line":"   in the Blazar DB."},{"line_number":57,"context_line":"3. Create a `nested resource provider`_ as a child of the compute node"},{"line_number":58,"context_line":"   resource provider by calling the `Create resource provider API`_."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_cb6e8b2b","line":55,"range":{"start_line":55,"start_character":39,"end_line":55,"end_character":79},"updated":"2018-06-19 08:06:45.000000000","message":"How is the new table used in the BP?  It looks like no step uses the table.","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"c13d22e94d5eda977a207d278123b5277ea6ee86","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"1. Get hypervisor information and store it into the computehosts table."},{"line_number":54,"context_line":"2. Get the compute node inventory by calling the `List resource provider"},{"line_number":55,"context_line":"   inventories API`_ and store it into the new `computehost_inventories table`_"},{"line_number":56,"context_line":"   in the Blazar DB."},{"line_number":57,"context_line":"3. Create a `nested resource provider`_ as a child of the compute node"},{"line_number":58,"context_line":"   resource provider by calling the `Create resource provider API`_."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_1e5d8878","line":55,"range":{"start_line":55,"start_character":39,"end_line":55,"end_character":79},"in_reply_to":"5f7c97a3_cb6e8b2b","updated":"2018-06-20 08:04:14.000000000","message":"This is used at the step 1 of the \u0027When creating a lease:\u0027 section. I added it.","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"610c966bbbde7078740cf96a007a45fb99bb2b78","unresolved":false,"context_lines":[{"line_number":54,"context_line":"2. Get the compute node inventory by calling the `List resource provider"},{"line_number":55,"context_line":"   inventories API`_ and store it into the new `computehost_inventories table`_"},{"line_number":56,"context_line":"   in the Blazar DB."},{"line_number":57,"context_line":"3. Create a `nested resource provider`_ as a child of the compute node"},{"line_number":58,"context_line":"   resource provider by calling the `Create resource provider API`_."},{"line_number":59,"context_line":"   This resource provider is referred to as *\u0027blazar resource provider\u0027* in"},{"line_number":60,"context_line":"   the following section."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_2e54edfd","line":57,"updated":"2018-06-19 08:06:45.000000000","message":"Just a question because I\u0027m not familiar with the Placement.  From my understand, a resource provider is associated with a host aggregate. But the proposal seems to add the new resource provider to a HOST.  Does it work?","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"c13d22e94d5eda977a207d278123b5277ea6ee86","unresolved":false,"context_lines":[{"line_number":54,"context_line":"2. Get the compute node inventory by calling the `List resource provider"},{"line_number":55,"context_line":"   inventories API`_ and store it into the new `computehost_inventories table`_"},{"line_number":56,"context_line":"   in the Blazar DB."},{"line_number":57,"context_line":"3. Create a `nested resource provider`_ as a child of the compute node"},{"line_number":58,"context_line":"   resource provider by calling the `Create resource provider API`_."},{"line_number":59,"context_line":"   This resource provider is referred to as *\u0027blazar resource provider\u0027* in"},{"line_number":60,"context_line":"   the following section."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_9ea4384d","line":57,"in_reply_to":"5f7c97a3_2e54edfd","updated":"2018-06-20 08:04:14.000000000","message":"A resource provider does not need to be associated with aggregates. The nested provider can be associated to a host by specifying the resource provider UUID of the host as a \u0027parent_provider_uuid\u0027 parameter when creating the nested resource provider. I tested and it worked.","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"610c966bbbde7078740cf96a007a45fb99bb2b78","unresolved":false,"context_lines":[{"line_number":57,"context_line":"3. Create a `nested resource provider`_ as a child of the compute node"},{"line_number":58,"context_line":"   resource provider by calling the `Create resource provider API`_."},{"line_number":59,"context_line":"   This resource provider is referred to as *\u0027blazar resource provider\u0027* in"},{"line_number":60,"context_line":"   the following section."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"   Create resource provider request example:"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_ebc26786","line":60,"updated":"2018-06-19 08:06:45.000000000","message":"Question: how the resource provider avoids non-reserved instances are scheduled to the host?","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"c13d22e94d5eda977a207d278123b5277ea6ee86","unresolved":false,"context_lines":[{"line_number":57,"context_line":"3. Create a `nested resource provider`_ as a child of the compute node"},{"line_number":58,"context_line":"   resource provider by calling the `Create resource provider API`_."},{"line_number":59,"context_line":"   This resource provider is referred to as *\u0027blazar resource provider\u0027* in"},{"line_number":60,"context_line":"   the following section."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"   Create resource provider request example:"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_be5d7449","line":60,"in_reply_to":"5f7c97a3_ebc26786","updated":"2018-06-20 08:04:14.000000000","message":"As I described in the \u0027When launching instances (from user point of view):\u0027 section, this spec still depends on the BlazarFilter. The BlazarFilter checks the extra_spec of the flavor and eliminates non-reserved instances.","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"610c966bbbde7078740cf96a007a45fb99bb2b78","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"5. Create a private flavor which has"},{"line_number":112,"context_line":"   ``resources:CUSTOM_RESREVATION_{reservation UUID}\u003d1`` in it\u0027s `extra_spec`_."},{"line_number":113,"context_line":"6. Create a server group if (anti-)affinity policy is specified by a user."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Note that blazar does not create a host aggregate."},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_ab18ef1d","line":113,"range":{"start_line":113,"start_character":0,"end_line":113,"end_character":74},"updated":"2018-06-19 08:06:45.000000000","message":"I\u0027m not clear why the server group is created here.   When the user set (anti-)affinity \u003d True, Blazar sets total equals to 1 for each inventory, doesn\u0027t it?  This doesn\u0027t require the private flavor to have the server group.","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"c13d22e94d5eda977a207d278123b5277ea6ee86","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"5. Create a private flavor which has"},{"line_number":112,"context_line":"   ``resources:CUSTOM_RESREVATION_{reservation UUID}\u003d1`` in it\u0027s `extra_spec`_."},{"line_number":113,"context_line":"6. Create a server group if (anti-)affinity policy is specified by a user."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Note that blazar does not create a host aggregate."},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_5929da86","line":113,"range":{"start_line":113,"start_character":0,"end_line":113,"end_character":74},"in_reply_to":"5f7c97a3_ab18ef1d","updated":"2018-06-20 08:04:14.000000000","message":"Nice catch! The server group is not needed any more. I wrote it as a note.","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"610c966bbbde7078740cf96a007a45fb99bb2b78","unresolved":false,"context_lines":[{"line_number":202,"context_line":"A new column **affinity_policy** is added to the instance_reservations table"},{"line_number":203,"context_line":"for managing affinity policy. The value can be \u0027affinity\u0027, \u0027anti-affinity\u0027 or"},{"line_number":204,"context_line":"just NULL. NULL means no affinity policy is applied to the instance"},{"line_number":205,"context_line":"reservation. The **affinity** column is dropped instead."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":".. _instance_reservations table:"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_cbd20bfe","line":205,"updated":"2018-06-19 08:06:45.000000000","message":"Why is the affinity column dropped?  From the description, the column takes 3 types of value among \u0027affinity\u0027, \u0027anti-affinity\u0027 and NULL.  Is there any problem when the column changes to accept NULL?","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"c13d22e94d5eda977a207d278123b5277ea6ee86","unresolved":false,"context_lines":[{"line_number":202,"context_line":"A new column **affinity_policy** is added to the instance_reservations table"},{"line_number":203,"context_line":"for managing affinity policy. The value can be \u0027affinity\u0027, \u0027anti-affinity\u0027 or"},{"line_number":204,"context_line":"just NULL. NULL means no affinity policy is applied to the instance"},{"line_number":205,"context_line":"reservation. The **affinity** column is dropped instead."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":".. _instance_reservations table:"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_79f13695","line":205,"in_reply_to":"5f7c97a3_cbd20bfe","updated":"2018-06-20 08:04:14.000000000","message":"I changed it because I feel the True/False is not intuitive. Some people may misunderstand that \u0027affinity\u003dFalse\u0027 means \u0027no affinity policy is applied\u0027 while it actually means \u0027anti-affinity policy is applied\u0027.\n\nHowever, now that I think it does not directly related to this spec and should be discussed at the separate context. So I removed this change. thanks!","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"610c966bbbde7078740cf96a007a45fb99bb2b78","unresolved":false,"context_lines":[{"line_number":221,"context_line":"The boolean parameter *\u0027affinity\u0027* is removed from and a new string parameter"},{"line_number":222,"context_line":"*\u0027affinity_policy\u0027* is added to the `Create lease API`_. This parameter can be"},{"line_number":223,"context_line":"\u0027affinity\u0027 or \u0027anti-affinity\u0027. It is an optional parameter and no affinity"},{"line_number":224,"context_line":"policy is applied if it\u0027s not specified."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Example of the create lease request:"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_0b37a34d","line":224,"updated":"2018-06-19 08:06:45.000000000","message":"As I commented the DB impact section, if the affinity column accepts NULL, not requested in API level, the API impact is just relaxing the limitation for the affinity key.","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"c13d22e94d5eda977a207d278123b5277ea6ee86","unresolved":false,"context_lines":[{"line_number":221,"context_line":"The boolean parameter *\u0027affinity\u0027* is removed from and a new string parameter"},{"line_number":222,"context_line":"*\u0027affinity_policy\u0027* is added to the `Create lease API`_. This parameter can be"},{"line_number":223,"context_line":"\u0027affinity\u0027 or \u0027anti-affinity\u0027. It is an optional parameter and no affinity"},{"line_number":224,"context_line":"policy is applied if it\u0027s not specified."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Example of the create lease request:"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_7905b613","line":224,"in_reply_to":"5f7c97a3_0b37a34d","updated":"2018-06-20 08:04:14.000000000","message":"Same with above.","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"610c966bbbde7078740cf96a007a45fb99bb2b78","unresolved":false,"context_lines":[{"line_number":268,"context_line":"Other deployer impact"},{"line_number":269,"context_line":"---------------------"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"* The Placement API has to be newer than Ver. XXX (TBD)."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"Developer impact"},{"line_number":274,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_ae60fdd0","line":271,"updated":"2018-06-19 08:06:45.000000000","message":"Once the Placement support has finished, the old scheduling is completely removed? or supported in few cycle?","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"c13d22e94d5eda977a207d278123b5277ea6ee86","unresolved":false,"context_lines":[{"line_number":268,"context_line":"Other deployer impact"},{"line_number":269,"context_line":"---------------------"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"* The Placement API has to be newer than Ver. XXX (TBD)."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"Developer impact"},{"line_number":274,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_74193d20","line":271,"in_reply_to":"5f7c97a3_ae60fdd0","updated":"2018-06-20 08:04:14.000000000","message":"It is an important discussion point. From the code maintenance point of view, it\u0027s better to remove old scheduling. On the other hand, perhaps some users want to use instance reservation without the latest Placement API, then they need the old scheduling.","commit_id":"667af105f44355e8bfeab5df22a1ca1f8d9310f4"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2d432cc817c7555f2da4cdfe1415a6db75d1213d","unresolved":false,"context_lines":[{"line_number":64,"context_line":".. sourcecode:: json"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    {"},{"line_number":67,"context_line":"        \"name\": \"Blazar\","},{"line_number":68,"context_line":"        \"parent_provider_uuid\": \"542df8ed-9be2-49b9-b4db-6d3183ff8ec8\""},{"line_number":69,"context_line":"    }"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_8e22af53","line":67,"range":{"start_line":67,"start_character":17,"end_line":67,"end_character":23},"updated":"2018-06-21 02:48:54.000000000","message":"+1\nAn alternative is to make it identical like \"Blazar_\u003chostname\u003e\", but I agree this is better because we can use ``GET /resource_providers?name\u003d\"Blazar\"`` to list all the hosts that belongs to Blazar.","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2d432cc817c7555f2da4cdfe1415a6db75d1213d","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        \"name\": \"CUSTOM_RESERVATION_4d17d41a-830d-47b2-91c7-4f9fc0ae611e\""},{"line_number":89,"context_line":"    }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"4. Add the custom resource class into the blazar resource provider\u0027s inventory"},{"line_number":92,"context_line":"   by calling the `Update resource provider inventories API`_ with the"},{"line_number":93,"context_line":"   **total**  parameter which equals to the amount of instances reserved for"},{"line_number":94,"context_line":"   the host."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"   Update resource provider inventories request example:"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":".. sourcecode:: json"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    {"},{"line_number":101,"context_line":"        \"inventories\": {"},{"line_number":102,"context_line":"            \"CUSTOM_RESERVATION_4d17d41a-830d-47b2-91c7-4f9fc0ae611e\": {"},{"line_number":103,"context_line":"                \"total\": 3,"},{"line_number":104,"context_line":"                \"allocation_ratio\": 1.0,"},{"line_number":105,"context_line":"                \"min_unit\": 1,"},{"line_number":106,"context_line":"                \"max_unit\": 1,"},{"line_number":107,"context_line":"                \"step_size\": 1"},{"line_number":108,"context_line":"            },"},{"line_number":109,"context_line":"            \"snip\""},{"line_number":110,"context_line":"        },"},{"line_number":111,"context_line":"        \"resource_provider_generation\": 5"},{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"5. Create a private flavor which has"},{"line_number":115,"context_line":"   ``resources:CUSTOM_RESREVATION_{reservation UUID}\u003d1`` in it\u0027s `extra_spec`_."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_8eacef88","line":112,"range":{"start_line":91,"start_character":0,"end_line":112,"end_character":5},"updated":"2018-06-21 02:48:54.000000000","message":"We could move this process to the \"start a lease\" event so that we can prevent anyone from accidentally using the reserved resource before the lease starts.","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"237419c7210156a612b677d171f67845378edaa1","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        \"name\": \"CUSTOM_RESERVATION_4d17d41a-830d-47b2-91c7-4f9fc0ae611e\""},{"line_number":89,"context_line":"    }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"4. Add the custom resource class into the blazar resource provider\u0027s inventory"},{"line_number":92,"context_line":"   by calling the `Update resource provider inventories API`_ with the"},{"line_number":93,"context_line":"   **total**  parameter which equals to the amount of instances reserved for"},{"line_number":94,"context_line":"   the host."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"   Update resource provider inventories request example:"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":".. sourcecode:: json"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    {"},{"line_number":101,"context_line":"        \"inventories\": {"},{"line_number":102,"context_line":"            \"CUSTOM_RESERVATION_4d17d41a-830d-47b2-91c7-4f9fc0ae611e\": {"},{"line_number":103,"context_line":"                \"total\": 3,"},{"line_number":104,"context_line":"                \"allocation_ratio\": 1.0,"},{"line_number":105,"context_line":"                \"min_unit\": 1,"},{"line_number":106,"context_line":"                \"max_unit\": 1,"},{"line_number":107,"context_line":"                \"step_size\": 1"},{"line_number":108,"context_line":"            },"},{"line_number":109,"context_line":"            \"snip\""},{"line_number":110,"context_line":"        },"},{"line_number":111,"context_line":"        \"resource_provider_generation\": 5"},{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"5. Create a private flavor which has"},{"line_number":115,"context_line":"   ``resources:CUSTOM_RESREVATION_{reservation UUID}\u003d1`` in it\u0027s `extra_spec`_."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_9f517b10","line":112,"range":{"start_line":91,"start_character":0,"end_line":112,"end_character":5},"in_reply_to":"5f7c97a3_8eacef88","updated":"2018-06-21 06:26:58.000000000","message":"Agree. Done.","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2d432cc817c7555f2da4cdfe1415a6db75d1213d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"5. Create a private flavor which has"},{"line_number":115,"context_line":"   ``resources:CUSTOM_RESREVATION_{reservation UUID}\u003d1`` in it\u0027s `extra_spec`_."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":".. note::"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_ae276b63","line":115,"range":{"start_line":115,"start_character":22,"end_line":115,"end_character":33},"updated":"2018-06-21 02:48:54.000000000","message":"RESERVATION","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"237419c7210156a612b677d171f67845378edaa1","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"5. Create a private flavor which has"},{"line_number":115,"context_line":"   ``resources:CUSTOM_RESREVATION_{reservation UUID}\u003d1`` in it\u0027s `extra_spec`_."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":".. note::"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_ff798f92","line":115,"range":{"start_line":115,"start_character":22,"end_line":115,"end_character":33},"in_reply_to":"5f7c97a3_ae276b63","updated":"2018-06-21 06:26:58.000000000","message":"Done","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2d432cc817c7555f2da4cdfe1415a6db75d1213d","unresolved":false,"context_lines":[{"line_number":125,"context_line":"When starting a lease:"},{"line_number":126,"context_line":"----------------------"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"1. Add the lease owner\u0027s project to the private flavor access rights list."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"When launching instances (from user point of view):"},{"line_number":131,"context_line":"---------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_6e515362","line":128,"range":{"start_line":128,"start_character":0,"end_line":128,"end_character":73},"updated":"2018-06-21 02:48:54.000000000","message":"As said above, if we move the creating the inventory here, we could move this process to the \"creating a lease\" event so that a user can receive the \"ticket\" in advance.\n\nThis might be useful in the long term view when we want to expand the feature to reserve timely discontinuous reservation(such as 2:00-11:00AM and 3:00-9:00PM) for one reservation uuid, which means one flavor. I know the change is not trivial in user perspective though... Anyway, at least it can be noted in alternative section, IMO.","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"237419c7210156a612b677d171f67845378edaa1","unresolved":false,"context_lines":[{"line_number":125,"context_line":"When starting a lease:"},{"line_number":126,"context_line":"----------------------"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"1. Add the lease owner\u0027s project to the private flavor access rights list."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"When launching instances (from user point of view):"},{"line_number":131,"context_line":"---------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_9fb09bff","line":128,"range":{"start_line":128,"start_character":0,"end_line":128,"end_character":73},"in_reply_to":"5f7c97a3_6e515362","updated":"2018-06-21 06:26:58.000000000","message":"The discontinuous reservation sounds interesting. What about registering it as a new blueprint?\n\nOn the other hand, I\u0027m not sure if it\u0027s good to make the unusable flavor visible. Let\u0027s think of a situation where there is a lease which is scheduled to start at 12:00. The lease owner tries to launching an instance using the flavor at 12:00:00 but it may fail because the start_lease has not completed yet. You know, there may be a little time lag for starting the lease. This is a bad user experience and that\u0027s why I think it\u0027s better to make the flavor visible at the end of the start_lease.\n\nIn terms of a \"ticket\", I think the response of the \"Show lease\" API is enough.","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"eff2a49fe590cbb9fc31f2e5457b09f2a2f6ee19","unresolved":false,"context_lines":[{"line_number":125,"context_line":"When starting a lease:"},{"line_number":126,"context_line":"----------------------"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"1. Add the lease owner\u0027s project to the private flavor access rights list."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"When launching instances (from user point of view):"},{"line_number":131,"context_line":"---------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_5a5e9145","line":128,"range":{"start_line":128,"start_character":0,"end_line":128,"end_character":73},"in_reply_to":"5f7c97a3_9fb09bff","updated":"2018-06-21 07:28:47.000000000","message":"Ah, thank you for the explanation in details. That sells me!","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2d432cc817c7555f2da4cdfe1415a6db75d1213d","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"   It still depends on the *BlazarFilter* though the *BlazarFilter* will be"},{"line_number":146,"context_line":"   ideally removed in the future. The *BlazarFilter* is changed to check if"},{"line_number":147,"context_line":"   ``resources:CUSTOM_RESREVATION_{reservation UUID}\u003d1`` is in flavor extra"},{"line_number":148,"context_line":"   specs to distinguish the request from normal, i.e. non-reserved, instance"},{"line_number":149,"context_line":"   creation requests."},{"line_number":150,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_6e90734f","line":147,"range":{"start_line":147,"start_character":34,"end_line":147,"end_character":54},"updated":"2018-06-21 02:48:54.000000000","message":"nit: Do we need uuid check in the filter? The filter\u0027s responsibility is only to check the prefix. Something like * is enough here, IMO.","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"237419c7210156a612b677d171f67845378edaa1","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"   It still depends on the *BlazarFilter* though the *BlazarFilter* will be"},{"line_number":146,"context_line":"   ideally removed in the future. The *BlazarFilter* is changed to check if"},{"line_number":147,"context_line":"   ``resources:CUSTOM_RESREVATION_{reservation UUID}\u003d1`` is in flavor extra"},{"line_number":148,"context_line":"   specs to distinguish the request from normal, i.e. non-reserved, instance"},{"line_number":149,"context_line":"   creation requests."},{"line_number":150,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_9f7e5b19","line":147,"range":{"start_line":147,"start_character":34,"end_line":147,"end_character":54},"in_reply_to":"5f7c97a3_6e90734f","updated":"2018-06-21 06:26:58.000000000","message":"Right. I\u0027ve removed the UUID.","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2d432cc817c7555f2da4cdfe1415a6db75d1213d","unresolved":false,"context_lines":[{"line_number":167,"context_line":"   inventory API`_."},{"line_number":168,"context_line":"3. Delete the **CUSTOM_RESERVATION_{reservation_UUID}** resource class by"},{"line_number":169,"context_line":"   calling the `Delete resource class API`_."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":".. _custom resource class: https://specs.openstack.org/openstack/nova-specs/specs/ocata/implemented/custom-resource-classes.html"},{"line_number":172,"context_line":".. _List resource provider inventories API: https://developer.openstack.org/api-ref/placement/#list-resource-provider-inventories"},{"line_number":173,"context_line":".. _nested resource provider: https://specs.openstack.org/openstack/nova-specs/specs/ocata/approved/nested-resource-providers.html"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_0e169ff3","line":170,"updated":"2018-06-21 02:48:54.000000000","message":"Good to add \"when deleting a host\" section.","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"237419c7210156a612b677d171f67845378edaa1","unresolved":false,"context_lines":[{"line_number":167,"context_line":"   inventory API`_."},{"line_number":168,"context_line":"3. Delete the **CUSTOM_RESERVATION_{reservation_UUID}** resource class by"},{"line_number":169,"context_line":"   calling the `Delete resource class API`_."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":".. _custom resource class: https://specs.openstack.org/openstack/nova-specs/specs/ocata/implemented/custom-resource-classes.html"},{"line_number":172,"context_line":".. _List resource provider inventories API: https://developer.openstack.org/api-ref/placement/#list-resource-provider-inventories"},{"line_number":173,"context_line":".. _nested resource provider: https://specs.openstack.org/openstack/nova-specs/specs/ocata/approved/nested-resource-providers.html"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_df8db32a","line":170,"in_reply_to":"5f7c97a3_0e169ff3","updated":"2018-06-21 06:26:58.000000000","message":"Done","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2d432cc817c7555f2da4cdfe1415a6db75d1213d","unresolved":false,"context_lines":[{"line_number":231,"context_line":"---------------"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"The **affinity** parameter of the `Create lease API`_ is changed to be an"},{"line_number":234,"context_line":"optional paramwter. If the **affinity** parameter is not given, no affinity"},{"line_number":235,"context_line":"policy is applied."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":".. _Create lease API: https://developer.openstack.org/api-ref/reservation/v1/index.html#create-lease"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_2ee83bdd","line":234,"range":{"start_line":234,"start_character":9,"end_line":234,"end_character":18},"updated":"2018-06-21 02:48:54.000000000","message":"strike!","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"237419c7210156a612b677d171f67845378edaa1","unresolved":false,"context_lines":[{"line_number":231,"context_line":"---------------"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"The **affinity** parameter of the `Create lease API`_ is changed to be an"},{"line_number":234,"context_line":"optional paramwter. If the **affinity** parameter is not given, no affinity"},{"line_number":235,"context_line":"policy is applied."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":".. _Create lease API: https://developer.openstack.org/api-ref/reservation/v1/index.html#create-lease"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_bf8237c6","line":234,"range":{"start_line":234,"start_character":9,"end_line":234,"end_character":18},"in_reply_to":"5f7c97a3_2ee83bdd","updated":"2018-06-21 06:26:58.000000000","message":"Done","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2d432cc817c7555f2da4cdfe1415a6db75d1213d","unresolved":false,"context_lines":[{"line_number":302,"context_line":"References"},{"line_number":303,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":".. [#placement_api] https://docs.openstack.org/nova/queens/user/placement.html"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"History"},{"line_number":308,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_8ed70f23","line":305,"range":{"start_line":305,"start_character":52,"end_line":305,"end_character":58},"updated":"2018-06-21 02:48:54.000000000","message":"nit: The latest might be better since the doc is going to be improved before Rocky to explain nested providers in more details...","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"237419c7210156a612b677d171f67845378edaa1","unresolved":false,"context_lines":[{"line_number":302,"context_line":"References"},{"line_number":303,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":".. [#placement_api] https://docs.openstack.org/nova/queens/user/placement.html"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"History"},{"line_number":308,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_bfd0f7c9","line":305,"range":{"start_line":305,"start_character":52,"end_line":305,"end_character":58},"in_reply_to":"5f7c97a3_8ed70f23","updated":"2018-06-21 06:26:58.000000000","message":"Done","commit_id":"0e81085475a2ef9e5b53ec3785bbdbde6aa6a64f"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"0b09d5ebfa89f28a860df9ab7c9f91cea0bd0b14","unresolved":false,"context_lines":[{"line_number":51,"context_line":"---------------------"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"1. Get hypervisor information and store it into the computehosts table."},{"line_number":54,"context_line":"2. Get the compute node inventory by calling the `List resource provider"},{"line_number":55,"context_line":"   inventories API`_ and store it into the new `computehost_inventories table`_"},{"line_number":56,"context_line":"   in the Blazar DB."},{"line_number":57,"context_line":"3. Create a `nested resource provider`_ as a child of the compute node"},{"line_number":58,"context_line":"   resource provider by calling the `Create resource provider API`_."},{"line_number":59,"context_line":"   This resource provider is referred to as *\u0027blazar resource provider\u0027* in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_f3263e16","line":56,"range":{"start_line":54,"start_character":0,"end_line":56,"end_character":20},"updated":"2018-06-27 05:57:07.000000000","message":"To be clarified, the table is used for allowing overcommiting? or check step_size, min_unit, max_unit, reserved and etc?","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"bc2b8b43bab68f9105e1a398f7479996092db1c8","unresolved":false,"context_lines":[{"line_number":51,"context_line":"---------------------"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"1. Get hypervisor information and store it into the computehosts table."},{"line_number":54,"context_line":"2. Get the compute node inventory by calling the `List resource provider"},{"line_number":55,"context_line":"   inventories API`_ and store it into the new `computehost_inventories table`_"},{"line_number":56,"context_line":"   in the Blazar DB."},{"line_number":57,"context_line":"3. Create a `nested resource provider`_ as a child of the compute node"},{"line_number":58,"context_line":"   resource provider by calling the `Create resource provider API`_."},{"line_number":59,"context_line":"   This resource provider is referred to as *\u0027blazar resource provider\u0027* in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_e954ef24","line":56,"range":{"start_line":54,"start_character":0,"end_line":56,"end_character":20},"in_reply_to":"5f7c97a3_ae5e1910","updated":"2018-06-28 05:44:55.000000000","message":"Thanks the detail!  I\u0027m okay to unscope the overcommiting in this spec.\n\nOn the other hand, remaining the table for step_size sounds reasonable for me. The parent resource has a constraint for a resource consumer with the step_size. If VCPU step_size is two in the parent resource provider, the custom reservation class placed on the provider should be 2, 4, 6...\n\nOf course, I\u0027m okay to introduce the table in the next step.","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"e1da86c7d2a6c5abe62669f60165935e12c4fed3","unresolved":false,"context_lines":[{"line_number":51,"context_line":"---------------------"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"1. Get hypervisor information and store it into the computehosts table."},{"line_number":54,"context_line":"2. Get the compute node inventory by calling the `List resource provider"},{"line_number":55,"context_line":"   inventories API`_ and store it into the new `computehost_inventories table`_"},{"line_number":56,"context_line":"   in the Blazar DB."},{"line_number":57,"context_line":"3. Create a `nested resource provider`_ as a child of the compute node"},{"line_number":58,"context_line":"   resource provider by calling the `Create resource provider API`_."},{"line_number":59,"context_line":"   This resource provider is referred to as *\u0027blazar resource provider\u0027* in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_77eafa74","line":56,"range":{"start_line":54,"start_character":0,"end_line":56,"end_character":20},"in_reply_to":"5f7c97a3_e954ef24","updated":"2018-06-28 06:57:41.000000000","message":"I separated these things into https://review.openstack.org/#/c/578641/","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"288397d3e6c104c9518828895f91bc8b738afe36","unresolved":false,"context_lines":[{"line_number":51,"context_line":"---------------------"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"1. Get hypervisor information and store it into the computehosts table."},{"line_number":54,"context_line":"2. Get the compute node inventory by calling the `List resource provider"},{"line_number":55,"context_line":"   inventories API`_ and store it into the new `computehost_inventories table`_"},{"line_number":56,"context_line":"   in the Blazar DB."},{"line_number":57,"context_line":"3. Create a `nested resource provider`_ as a child of the compute node"},{"line_number":58,"context_line":"   resource provider by calling the `Create resource provider API`_."},{"line_number":59,"context_line":"   This resource provider is referred to as *\u0027blazar resource provider\u0027* in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_ae5e1910","line":56,"range":{"start_line":54,"start_character":0,"end_line":56,"end_character":20},"in_reply_to":"5f7c97a3_f3263e16","updated":"2018-06-27 06:41:09.000000000","message":"The table is used for both of them. Now that I feel that the following 2 topics are squashed into this spec. It complicates this spec.\n\n1. Use the Placement to support instance reservation.\n2. Align Blazar\u0027s resource management policy with Placement. e.g. Blazar will strictly follows compute resource provider inventory including allocation_ratio, step_size, etc.\n\nThe computehost_inventories table is introduced for the second topic. Now that I think these two topics should be separately discussed for moving forward step by step.\n\nIf you agree, I will separate the computehost_inventory table and over commitments related parts from this spec.","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2571c131efcfbc8f2a024bb96ec326e2dca1e14d","unresolved":false,"context_lines":[{"line_number":54,"context_line":"2. Get the compute node inventory by calling the `List resource provider"},{"line_number":55,"context_line":"   inventories API`_ and store it into the new `computehost_inventories table`_"},{"line_number":56,"context_line":"   in the Blazar DB."},{"line_number":57,"context_line":"3. Create a `nested resource provider`_ as a child of the compute node"},{"line_number":58,"context_line":"   resource provider by calling the `Create resource provider API`_."},{"line_number":59,"context_line":"   This resource provider is referred to as *\u0027blazar resource provider\u0027* in"},{"line_number":60,"context_line":"   the following sections."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_d417689c","line":58,"range":{"start_line":57,"start_character":3,"end_line":58,"end_character":68},"updated":"2018-06-27 08:45:46.000000000","message":"To create the resource provider as a child of a compute node, we need the compute node\u0027s uuid, so it seems that we should have it in the blazar\u0027s database.","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"67c2e6b7893a0b5f4894823e0de06161d1596614","unresolved":false,"context_lines":[{"line_number":54,"context_line":"2. Get the compute node inventory by calling the `List resource provider"},{"line_number":55,"context_line":"   inventories API`_ and store it into the new `computehost_inventories table`_"},{"line_number":56,"context_line":"   in the Blazar DB."},{"line_number":57,"context_line":"3. Create a `nested resource provider`_ as a child of the compute node"},{"line_number":58,"context_line":"   resource provider by calling the `Create resource provider API`_."},{"line_number":59,"context_line":"   This resource provider is referred to as *\u0027blazar resource provider\u0027* in"},{"line_number":60,"context_line":"   the following sections."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_8300bc68","line":58,"range":{"start_line":57,"start_character":3,"end_line":58,"end_character":68},"in_reply_to":"5f7c97a3_d417689c","updated":"2018-06-28 02:37:39.000000000","message":"Thanks. I added a new column \"resource_provider_uuid\" into the computehosts table.","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2571c131efcfbc8f2a024bb96ec326e2dca1e14d","unresolved":false,"context_lines":[{"line_number":77,"context_line":"   and **allocation_ratio** column of the new `computehost_inventories table`_"},{"line_number":78,"context_line":"   to get resource overcommitment policy."},{"line_number":79,"context_line":"2. Update the computehost_allocations table."},{"line_number":80,"context_line":"3. Create a custom resource class **CUSTOM_RESERVATION_{reservation UUID}** by"},{"line_number":81,"context_line":"   calling the `Create resource class API`_."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"   Create resource class request example:"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_349a5c12","line":81,"range":{"start_line":80,"start_character":3,"end_line":81,"end_character":44},"updated":"2018-06-27 08:45:46.000000000","message":"To do this, we need the uuid of the child resource provider we have created before, which means a) we should store it in Blazar DB or b) call ``GET /resource_provider?in_tree\u003d{compute_uuid}``\n\nMy preference so far is the first approach because the only way to distinguish the blazar RP from the others is to see its name (Blazar) and that sounds a bit uncertain to me...","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"67c2e6b7893a0b5f4894823e0de06161d1596614","unresolved":false,"context_lines":[{"line_number":77,"context_line":"   and **allocation_ratio** column of the new `computehost_inventories table`_"},{"line_number":78,"context_line":"   to get resource overcommitment policy."},{"line_number":79,"context_line":"2. Update the computehost_allocations table."},{"line_number":80,"context_line":"3. Create a custom resource class **CUSTOM_RESERVATION_{reservation UUID}** by"},{"line_number":81,"context_line":"   calling the `Create resource class API`_."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"   Create resource class request example:"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_23f52885","line":81,"range":{"start_line":80,"start_character":3,"end_line":81,"end_character":44},"in_reply_to":"5f7c97a3_349a5c12","updated":"2018-06-28 02:37:39.000000000","message":"Agree. I added a new column for keeping the child resource provider uuid.","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"0b09d5ebfa89f28a860df9ab7c9f91cea0bd0b14","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":".. _computehost_inventories table:"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"The computehost_inventories table:"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":".. sourcecode:: none"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_13fe5a37","line":219,"updated":"2018-06-27 05:57:07.000000000","message":"Questions about its table column and the data.\n\n1. How this table is mapped to the API response[a]?  I imagined \u0027name\u0027 column represents resource_class name in the response. Is it right?\n2. The inventory is changeable by the update API[b] and Blazar should follow the change. IMO, the table needs a column for resource_provider_generation.  And how does the table follow the change?\n\na. https://developer.openstack.org/api-ref/placement/#list-resource-provider-inventories\nb. https://developer.openstack.org/api-ref/placement/#update-resource-provider-inventories","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"288397d3e6c104c9518828895f91bc8b738afe36","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":".. _computehost_inventories table:"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"The computehost_inventories table:"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":".. sourcecode:: none"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_ceaef5e2","line":219,"in_reply_to":"5f7c97a3_13fe5a37","updated":"2018-06-27 06:41:09.000000000","message":"They are important and difficult points. As I commented above, how about discussing this topic in another spec?","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"0b09d5ebfa89f28a860df9ab7c9f91cea0bd0b14","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"None"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"Other deployer impact"},{"line_number":282,"context_line":"---------------------"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"* The Placement API has to be newer than Ver. XXX (TBD)."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_13c65a4a","line":281,"range":{"start_line":281,"start_character":0,"end_line":281,"end_character":21},"updated":"2018-06-27 05:57:07.000000000","message":"IIUC, the computehost_inventories table stores the info only when the create host API is called.  How the existing host get the info in upgrade?","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"288397d3e6c104c9518828895f91bc8b738afe36","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"None"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"Other deployer impact"},{"line_number":282,"context_line":"---------------------"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"* The Placement API has to be newer than Ver. XXX (TBD)."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_0e92ad9f","line":281,"range":{"start_line":281,"start_character":0,"end_line":281,"end_character":21},"in_reply_to":"5f7c97a3_13c65a4a","updated":"2018-06-27 06:41:09.000000000","message":"Same with above.","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"0b09d5ebfa89f28a860df9ab7c9f91cea0bd0b14","unresolved":false,"context_lines":[{"line_number":326,"context_line":"  allocation_ratio. And update it to return how much instance can be launched"},{"line_number":327,"context_line":"  on each available host."},{"line_number":328,"context_line":"* Update the pickup_hosts() to support arbitrary affinity policy."},{"line_number":329,"context_line":"* Update the reserve_resource() and update_reservation() to support multiple"},{"line_number":330,"context_line":"  allocations which have the same reservation id and computehost id."},{"line_number":331,"context_line":"* Update the _create_resources() of the instance plugin to create the"},{"line_number":332,"context_line":"  **CUSTOM_RESERVATION_{reservation UUID}** class and add it into the private"},{"line_number":333,"context_line":"  flavor extra specs."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_33c7d69a","line":330,"range":{"start_line":329,"start_character":0,"end_line":330,"end_character":68},"updated":"2018-06-27 05:57:07.000000000","message":"What\u0027s the workitem?  IIRC, both methods have already supported a mapping one reservation to one computehost.","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"e1da86c7d2a6c5abe62669f60165935e12c4fed3","unresolved":false,"context_lines":[{"line_number":326,"context_line":"  allocation_ratio. And update it to return how much instance can be launched"},{"line_number":327,"context_line":"  on each available host."},{"line_number":328,"context_line":"* Update the pickup_hosts() to support arbitrary affinity policy."},{"line_number":329,"context_line":"* Update the reserve_resource() and update_reservation() to support multiple"},{"line_number":330,"context_line":"  allocations which have the same reservation id and computehost id."},{"line_number":331,"context_line":"* Update the _create_resources() of the instance plugin to create the"},{"line_number":332,"context_line":"  **CUSTOM_RESERVATION_{reservation UUID}** class and add it into the private"},{"line_number":333,"context_line":"  flavor extra specs."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_37fc823e","line":330,"range":{"start_line":329,"start_character":0,"end_line":330,"end_character":68},"in_reply_to":"5f7c97a3_2cd8b57e","updated":"2018-06-28 06:57:41.000000000","message":"Thank you for the notice! I will carefully consider impacts on the other parts.","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"bc2b8b43bab68f9105e1a398f7479996092db1c8","unresolved":false,"context_lines":[{"line_number":326,"context_line":"  allocation_ratio. And update it to return how much instance can be launched"},{"line_number":327,"context_line":"  on each available host."},{"line_number":328,"context_line":"* Update the pickup_hosts() to support arbitrary affinity policy."},{"line_number":329,"context_line":"* Update the reserve_resource() and update_reservation() to support multiple"},{"line_number":330,"context_line":"  allocations which have the same reservation id and computehost id."},{"line_number":331,"context_line":"* Update the _create_resources() of the instance plugin to create the"},{"line_number":332,"context_line":"  **CUSTOM_RESERVATION_{reservation UUID}** class and add it into the private"},{"line_number":333,"context_line":"  flavor extra specs."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_2cd8b57e","line":330,"range":{"start_line":329,"start_character":0,"end_line":330,"end_character":68},"in_reply_to":"5f7c97a3_2e0a09d0","updated":"2018-06-28 05:44:55.000000000","message":"I hope this doesn\u0027t have effect to this spec, but as you mentioned some of code assumes one host only accomodate one reservation.\n\nhttps://github.com/openstack/blazar/blob/master/blazar/db/sqlalchemy/utils.py#L203","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"288397d3e6c104c9518828895f91bc8b738afe36","unresolved":false,"context_lines":[{"line_number":326,"context_line":"  allocation_ratio. And update it to return how much instance can be launched"},{"line_number":327,"context_line":"  on each available host."},{"line_number":328,"context_line":"* Update the pickup_hosts() to support arbitrary affinity policy."},{"line_number":329,"context_line":"* Update the reserve_resource() and update_reservation() to support multiple"},{"line_number":330,"context_line":"  allocations which have the same reservation id and computehost id."},{"line_number":331,"context_line":"* Update the _create_resources() of the instance plugin to create the"},{"line_number":332,"context_line":"  **CUSTOM_RESERVATION_{reservation UUID}** class and add it into the private"},{"line_number":333,"context_line":"  flavor extra specs."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_2e0a09d0","line":330,"range":{"start_line":329,"start_character":0,"end_line":330,"end_character":68},"in_reply_to":"5f7c97a3_33c7d69a","updated":"2018-06-27 06:41:09.000000000","message":"Currently, both methods support only \"anti-affinity\" policy. It means no record has the same pair of reservation_id and computehost_id with other records.\nTo support multiple instances to be reserved on the same host, this constraint have to be solved. I mean, if \"reservation-foo\" reserves 3 instances on the \"compute-1\", 3 records which have the pair of \"reservation-foo\" and \"compute-1\" are inserted into the computehost_allocations table. I thought of the alternative approach that adds a new column \"amount\" into the computehost_allocations table. However, I think the current approach is better because it can utilize a large part of current code and doesn\u0027t change DB schema.","commit_id":"542643da3fb3da4a45706e00dadcdcf85421cf3a"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"58909b53f8ebf7d07acd164c2e7b646343f79bb3","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"1. Get hypervisor information and store it into the computehosts table. At this"},{"line_number":50,"context_line":"   time, store the UUID of the hypervisor into the new"},{"line_number":51,"context_line":"   **resource_provider_uuid** column in the `computehosts table`_."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":".. note::"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_6eec2592","line":51,"range":{"start_line":51,"start_character":5,"end_line":51,"end_character":27},"updated":"2018-07-02 04:44:38.000000000","message":"\"host_resource_provider\", \"host_rp_uuid\" or etc look less confusing with \"reservation_provider_uuid\".","commit_id":"b6654c19fe13e73875d0d67eb3f724457988c586"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"67a97fe998c00b8addf8794a0067b65f2d96b221","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"1. Get hypervisor information and store it into the computehosts table. At this"},{"line_number":50,"context_line":"   time, store the UUID of the hypervisor into the new"},{"line_number":51,"context_line":"   **resource_provider_uuid** column in the `computehosts table`_."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":".. note::"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_f1849ab4","line":51,"range":{"start_line":51,"start_character":5,"end_line":51,"end_character":27},"in_reply_to":"5f7c97a3_6eec2592","updated":"2018-07-02 05:16:25.000000000","message":"I removed the \u0027reservation_provider_uuid\u0027.","commit_id":"b6654c19fe13e73875d0d67eb3f724457988c586"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"c62ad915c9cfdab2d8796262d4dc4cb5505667e0","unresolved":false,"context_lines":[{"line_number":77,"context_line":".. sourcecode:: json"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    {"},{"line_number":80,"context_line":"        \"name\": \"Blazar\","},{"line_number":81,"context_line":"        \"parent_provider_uuid\": \"542df8ed-9be2-49b9-b4db-6d3183ff8ec8\""},{"line_number":82,"context_line":"    }"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_e7f15ce0","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":25},"updated":"2018-06-29 05:14:38.000000000","message":"When I was testing the placement client branch starting from [1], I found that the name of the RP should be identical[2].\n\n[1] https://review.openstack.org/#/c/578017/3\n[2] http://paste.openstack.org/show/724564/\n\nSo at least this name \"Blazar\" is not allowed.\nI suppose naming this \"Blazar_{compute_host_uuid}\" so that we can get this child provider from compute host. Then we don\u0027t need to register rp_uuid to the database.","commit_id":"b6654c19fe13e73875d0d67eb3f724457988c586"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"67a97fe998c00b8addf8794a0067b65f2d96b221","unresolved":false,"context_lines":[{"line_number":77,"context_line":".. sourcecode:: json"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    {"},{"line_number":80,"context_line":"        \"name\": \"Blazar\","},{"line_number":81,"context_line":"        \"parent_provider_uuid\": \"542df8ed-9be2-49b9-b4db-6d3183ff8ec8\""},{"line_number":82,"context_line":"    }"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_d16dde2f","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":25},"in_reply_to":"5f7c97a3_e7f15ce0","updated":"2018-07-02 05:16:25.000000000","message":"Nice catch! I changed the name and UUID of the reservation resource provider.","commit_id":"b6654c19fe13e73875d0d67eb3f724457988c586"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"bc2b8b43bab68f9105e1a398f7479996092db1c8","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":".. sourcecode:: json"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    {"},{"line_number":80,"context_line":"        \"name\": \"Blazar\","},{"line_number":81,"context_line":"        \"parent_provider_uuid\": \"542df8ed-9be2-49b9-b4db-6d3183ff8ec8\""},{"line_number":82,"context_line":"    }"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"3. Store the UUID of the created reservation provider into the new"},{"line_number":85,"context_line":"   **resevation_provider_uuid** column in the `computehosts table`_"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_a95d977d","line":82,"range":{"start_line":79,"start_character":0,"end_line":82,"end_character":5},"updated":"2018-06-28 05:44:55.000000000","message":"My understand of Tetsuro\u0027s comment is the create resource provider API requires its body to have uuid key-value which matches a compute host uuid.  Then it creates a new resource provider which have the uuid.","commit_id":"b6654c19fe13e73875d0d67eb3f724457988c586"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"c62ad915c9cfdab2d8796262d4dc4cb5505667e0","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":".. sourcecode:: json"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    {"},{"line_number":80,"context_line":"        \"name\": \"Blazar\","},{"line_number":81,"context_line":"        \"parent_provider_uuid\": \"542df8ed-9be2-49b9-b4db-6d3183ff8ec8\""},{"line_number":82,"context_line":"    }"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"3. Store the UUID of the created reservation provider into the new"},{"line_number":85,"context_line":"   **resevation_provider_uuid** column in the `computehosts table`_"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_e78ddc35","line":82,"range":{"start_line":79,"start_character":0,"end_line":82,"end_character":5},"in_reply_to":"5f7c97a3_17d626c6","updated":"2018-06-29 05:14:38.000000000","message":"Right, its uuid is generated in placement automatically. What we should do is to use the compute host uuid as its *parent* uuid.","commit_id":"b6654c19fe13e73875d0d67eb3f724457988c586"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"101649db559792d4a8735e8071f5176899782e4d","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":".. sourcecode:: json"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    {"},{"line_number":80,"context_line":"        \"name\": \"Blazar\","},{"line_number":81,"context_line":"        \"parent_provider_uuid\": \"542df8ed-9be2-49b9-b4db-6d3183ff8ec8\""},{"line_number":82,"context_line":"    }"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"3. Store the UUID of the created reservation provider into the new"},{"line_number":85,"context_line":"   **resevation_provider_uuid** column in the `computehosts table`_"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_17d626c6","line":82,"range":{"start_line":79,"start_character":0,"end_line":82,"end_character":5},"in_reply_to":"5f7c97a3_a95d977d","updated":"2018-06-28 06:54:46.000000000","message":"The compute host uuid is used by the compute node resource provider. You can check it by comparing results of the following commands.\n\n$ openstack hypervisor list --os-compute-api-version 2.53\n$ openstack resource provider list\n\nSo, the uuid of the reservation provider have to be different from the compute host uuid. Send this sample request and the uuid of the resource provider is automatically generated.","commit_id":"b6654c19fe13e73875d0d67eb3f724457988c586"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"593249a53eee240dc52fe2011c68e40209b48143","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":".. sourcecode:: json"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    {"},{"line_number":80,"context_line":"        \"name\": \"Blazar\","},{"line_number":81,"context_line":"        \"parent_provider_uuid\": \"542df8ed-9be2-49b9-b4db-6d3183ff8ec8\""},{"line_number":82,"context_line":"    }"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"3. Store the UUID of the created reservation provider into the new"},{"line_number":85,"context_line":"   **resevation_provider_uuid** column in the `computehosts table`_"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_cacc6564","line":82,"range":{"start_line":79,"start_character":0,"end_line":82,"end_character":5},"in_reply_to":"5f7c97a3_e78ddc35","updated":"2018-06-29 06:38:42.000000000","message":"Got it. Thanks for the clarified! I thought the parent provider id is different from host uuid.","commit_id":"b6654c19fe13e73875d0d67eb3f724457988c586"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"bc2b8b43bab68f9105e1a398f7479996092db1c8","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    }"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"3. Store the UUID of the created reservation provider into the new"},{"line_number":85,"context_line":"   **resevation_provider_uuid** column in the `computehosts table`_"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"4. Add the host into the freepool."},{"line_number":88,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_895c5b7e","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":67},"updated":"2018-06-28 05:44:55.000000000","message":"I think the column is not needed if I understand correctly.","commit_id":"b6654c19fe13e73875d0d67eb3f724457988c586"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"67a97fe998c00b8addf8794a0067b65f2d96b221","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    }"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"3. Store the UUID of the created reservation provider into the new"},{"line_number":85,"context_line":"   **resevation_provider_uuid** column in the `computehosts table`_"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"4. Add the host into the freepool."},{"line_number":88,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_b18e22cf","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":67},"in_reply_to":"5f7c97a3_0e4d71c4","updated":"2018-07-02 05:16:25.000000000","message":"Agree. Done.","commit_id":"b6654c19fe13e73875d0d67eb3f724457988c586"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"101649db559792d4a8735e8071f5176899782e4d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    }"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"3. Store the UUID of the created reservation provider into the new"},{"line_number":85,"context_line":"   **resevation_provider_uuid** column in the `computehosts table`_"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"4. Add the host into the freepool."},{"line_number":88,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_d7df4ed5","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":67},"in_reply_to":"5f7c97a3_895c5b7e","updated":"2018-06-28 06:54:46.000000000","message":"The uuid of the reservation provider is created when calling the create resource provider API at step 2. This uuid is needed to access the reservation provider.","commit_id":"b6654c19fe13e73875d0d67eb3f724457988c586"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"58909b53f8ebf7d07acd164c2e7b646343f79bb3","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    }"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"3. Store the UUID of the created reservation provider into the new"},{"line_number":85,"context_line":"   **resevation_provider_uuid** column in the `computehosts table`_"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"4. Add the host into the freepool."},{"line_number":88,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_0e4d71c4","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":67},"in_reply_to":"5f7c97a3_d7df4ed5","updated":"2018-07-02 04:44:38.000000000","message":"Now that I\u0027m thinking about it based on Tetsuro\u0027s comment, the reservation_provider_uuid is not needed.  The Placement API doesn\u0027t accept duplicated provider name. Tetsuro\u0027s suggestion is \u0027Blazar_\u003chost provider uuid\u003e\u0027 and it\u0027s an unique key.","commit_id":"b6654c19fe13e73875d0d67eb3f724457988c586"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"c62ad915c9cfdab2d8796262d4dc4cb5505667e0","unresolved":false,"context_lines":[{"line_number":101,"context_line":".. sourcecode:: json"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    {"},{"line_number":104,"context_line":"        \"name\": \"CUSTOM_RESERVATION_4d17d41a-830d-47b2-91c7-4f9fc0ae611e\""},{"line_number":105,"context_line":"    }"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"4. Create a private flavor which has"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_a7704442","line":104,"range":{"start_line":104,"start_character":36,"end_line":104,"end_character":72},"updated":"2018-06-29 05:14:38.000000000","message":"Lower characters and hyphens are forbidden for RC names in placement.\n\nI suppose we just change this to upper characters and under scores like:\n\"4D17D41A_830D_47B2_91C7_4F9FC0AE611E\"\n\nThis translation can be done in placement client libraries in blazar.","commit_id":"b6654c19fe13e73875d0d67eb3f724457988c586"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"67a97fe998c00b8addf8794a0067b65f2d96b221","unresolved":false,"context_lines":[{"line_number":101,"context_line":".. sourcecode:: json"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    {"},{"line_number":104,"context_line":"        \"name\": \"CUSTOM_RESERVATION_4d17d41a-830d-47b2-91c7-4f9fc0ae611e\""},{"line_number":105,"context_line":"    }"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"4. Create a private flavor which has"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_91ef6685","line":104,"range":{"start_line":104,"start_character":36,"end_line":104,"end_character":72},"in_reply_to":"5f7c97a3_a7704442","updated":"2018-07-02 05:16:25.000000000","message":"Thanks! I think this translation should be done in the resource plugin.","commit_id":"b6654c19fe13e73875d0d67eb3f724457988c586"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"cdbce20675557a1ff946ea07cc43d94b44017edd","unresolved":false,"context_lines":[{"line_number":64,"context_line":".. sourcecode:: json"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    {"},{"line_number":67,"context_line":"        \"name\": \"blazar_542df8ed-9be2-49b9-b4db-6d3183ff8ec8\","},{"line_number":68,"context_line":"        \"uuid\": \"blazar_542df8ed-9be2-49b9-b4db-6d3183ff8ec8\","},{"line_number":69,"context_line":"        \"parent_provider_uuid\": \"542df8ed-9be2-49b9-b4db-6d3183ff8ec8\""},{"line_number":70,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_74c6064c","line":67,"range":{"start_line":67,"start_character":24,"end_line":67,"end_character":60},"updated":"2018-07-04 03:44:42.000000000","message":"I think it is better if this name is not uuid but compute host\u0027s *name*:\n\"blazar_compute-1\"\nThen we can skip one step (that we translate to uuid from host name) when starting the lease and calling this reservation provider from compute host\u0027s name since we decided that blazar doesn\u0027t always have host\u0027s uuid now.","commit_id":"0b8e3e2a520d41651bf81d6689ff796bdc3e6ac6"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"b57f2ca0c4da6459675cf649d6e84f2a9df9963b","unresolved":false,"context_lines":[{"line_number":64,"context_line":".. sourcecode:: json"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    {"},{"line_number":67,"context_line":"        \"name\": \"blazar_542df8ed-9be2-49b9-b4db-6d3183ff8ec8\","},{"line_number":68,"context_line":"        \"uuid\": \"blazar_542df8ed-9be2-49b9-b4db-6d3183ff8ec8\","},{"line_number":69,"context_line":"        \"parent_provider_uuid\": \"542df8ed-9be2-49b9-b4db-6d3183ff8ec8\""},{"line_number":70,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_7f501f5f","line":67,"range":{"start_line":67,"start_character":24,"end_line":67,"end_character":60},"in_reply_to":"5f7c97a3_74c6064c","updated":"2018-07-04 06:54:43.000000000","message":"Agree. And I think it\u0027s better to use it as the  UUID of the reservation resource provider.","commit_id":"0b8e3e2a520d41651bf81d6689ff796bdc3e6ac6"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"cdbce20675557a1ff946ea07cc43d94b44017edd","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"When starting a lease:"},{"line_number":113,"context_line":"----------------------"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"1. Add the custom resource class **CUSTOM_RESERVATION_{reservation UUID}** into"},{"line_number":116,"context_line":"   the reservation provider\u0027s inventory by calling the `Update resource"},{"line_number":117,"context_line":"   provider inventories API`_ with the **total**  parameter which equals to the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_144232ad","line":114,"updated":"2018-07-04 03:44:42.000000000","message":"Here we can call\n``GET /placement/resource_proiders?name\u003dblazar_compute-1``\nto get the reservation provider uuid  in advance.\n\nIf the reservation provider\u0027s name is with host uuid instead of host name, we should call\n``GET /placement/resource_proiders?name\u003dcompute-1``\nin advance to call\n``GET /placement/resource_proiders?name\u003dblazar_{host_uuid}``,\nwhich is not efficient, IMO.","commit_id":"0b8e3e2a520d41651bf81d6689ff796bdc3e6ac6"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"b57f2ca0c4da6459675cf649d6e84f2a9df9963b","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"When starting a lease:"},{"line_number":113,"context_line":"----------------------"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"1. Add the custom resource class **CUSTOM_RESERVATION_{reservation UUID}** into"},{"line_number":116,"context_line":"   the reservation provider\u0027s inventory by calling the `Update resource"},{"line_number":117,"context_line":"   provider inventories API`_ with the **total**  parameter which equals to the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_5fd8c3ee","line":114,"in_reply_to":"5f7c97a3_144232ad","updated":"2018-07-04 06:54:43.000000000","message":"Cool. Furthermore, we can use \"blazar_{hostname}\" as the UUID of reservation resource provider. Then, above GET calls are not needed.","commit_id":"0b8e3e2a520d41651bf81d6689ff796bdc3e6ac6"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"cdbce20675557a1ff946ea07cc43d94b44017edd","unresolved":false,"context_lines":[{"line_number":264,"context_line":"Other deployer impact"},{"line_number":265,"context_line":"---------------------"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"* The Placement API has to be newer than Ver. XXX (TBD)."},{"line_number":268,"context_line":"* To upgrade from the previous version, run the DB upgrade script and the newly"},{"line_number":269,"context_line":"  introduced columns are updated. The reservation provider is created for each"},{"line_number":270,"context_line":"  existing compute host at this time."}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_14deb2da","line":267,"range":{"start_line":267,"start_character":46,"end_line":267,"end_character":49},"updated":"2018-07-04 03:44:42.000000000","message":"1.29 is enough for this feature.\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/placement/rest_api_version_history.rst","commit_id":"0b8e3e2a520d41651bf81d6689ff796bdc3e6ac6"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"b57f2ca0c4da6459675cf649d6e84f2a9df9963b","unresolved":false,"context_lines":[{"line_number":264,"context_line":"Other deployer impact"},{"line_number":265,"context_line":"---------------------"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"* The Placement API has to be newer than Ver. XXX (TBD)."},{"line_number":268,"context_line":"* To upgrade from the previous version, run the DB upgrade script and the newly"},{"line_number":269,"context_line":"  introduced columns are updated. The reservation provider is created for each"},{"line_number":270,"context_line":"  existing compute host at this time."}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_7fd57fb6","line":267,"range":{"start_line":267,"start_character":46,"end_line":267,"end_character":49},"in_reply_to":"5f7c97a3_14deb2da","updated":"2018-07-04 06:54:43.000000000","message":"thanks!","commit_id":"0b8e3e2a520d41651bf81d6689ff796bdc3e6ac6"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"cdbce20675557a1ff946ea07cc43d94b44017edd","unresolved":false,"context_lines":[{"line_number":265,"context_line":"---------------------"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"* The Placement API has to be newer than Ver. XXX (TBD)."},{"line_number":268,"context_line":"* To upgrade from the previous version, run the DB upgrade script and the newly"},{"line_number":269,"context_line":"  introduced columns are updated. The reservation provider is created for each"},{"line_number":270,"context_line":"  existing compute host at this time."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_94e3a2a0","line":269,"range":{"start_line":268,"start_character":70,"end_line":269,"end_character":20},"updated":"2018-07-04 03:44:42.000000000","message":"This might be misleading since we no longer want a new column.","commit_id":"0b8e3e2a520d41651bf81d6689ff796bdc3e6ac6"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"b57f2ca0c4da6459675cf649d6e84f2a9df9963b","unresolved":false,"context_lines":[{"line_number":265,"context_line":"---------------------"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"* The Placement API has to be newer than Ver. XXX (TBD)."},{"line_number":268,"context_line":"* To upgrade from the previous version, run the DB upgrade script and the newly"},{"line_number":269,"context_line":"  introduced columns are updated. The reservation provider is created for each"},{"line_number":270,"context_line":"  existing compute host at this time."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_3fdb87ea","line":269,"range":{"start_line":268,"start_character":70,"end_line":269,"end_character":20},"in_reply_to":"5f7c97a3_94e3a2a0","updated":"2018-07-04 06:54:43.000000000","message":"Done","commit_id":"0b8e3e2a520d41651bf81d6689ff796bdc3e6ac6"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"cdbce20675557a1ff946ea07cc43d94b44017edd","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"To support starting the lease:"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"* Update the on_start() of the instamce plugin to add the"},{"line_number":321,"context_line":"  **CUSTOM_RESERVATION_{reservation UUID}** into the reservation provider"},{"line_number":322,"context_line":"  inventory. The **total** parameter equals to the number of entries of the"},{"line_number":323,"context_line":"  computehost_allocations table which have the same reservation id and"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_d4927afc","line":320,"range":{"start_line":320,"start_character":31,"end_line":320,"end_character":39},"updated":"2018-07-04 03:44:42.000000000","message":"instance","commit_id":"0b8e3e2a520d41651bf81d6689ff796bdc3e6ac6"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"b57f2ca0c4da6459675cf649d6e84f2a9df9963b","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"To support starting the lease:"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"* Update the on_start() of the instamce plugin to add the"},{"line_number":321,"context_line":"  **CUSTOM_RESERVATION_{reservation UUID}** into the reservation provider"},{"line_number":322,"context_line":"  inventory. The **total** parameter equals to the number of entries of the"},{"line_number":323,"context_line":"  computehost_allocations table which have the same reservation id and"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f7c97a3_5f01a338","line":320,"range":{"start_line":320,"start_character":31,"end_line":320,"end_character":39},"in_reply_to":"5f7c97a3_d4927afc","updated":"2018-07-04 06:54:43.000000000","message":"Done","commit_id":"0b8e3e2a520d41651bf81d6689ff796bdc3e6ac6"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"6d46aedaa83cf5030bb572f4f399c8c4cabff39d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  the amount of hosts."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* A user has to specify the server group when the user launches instances on"},{"line_number":28,"context_line":"  reserved resources. If it is not specified, instances are possibly launched"},{"line_number":29,"context_line":"  more than the reserved amount."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Use Cases"},{"line_number":32,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_fd18c083","line":29,"range":{"start_line":28,"start_character":46,"end_line":29,"end_character":32},"updated":"2018-07-16 22:11:45.000000000","message":"more instances than the reserved amount are possibly launched.","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"a4e0000404e8818a1a76afb2f444d610e7356fad","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  the amount of hosts."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* A user has to specify the server group when the user launches instances on"},{"line_number":28,"context_line":"  reserved resources. If it is not specified, instances are possibly launched"},{"line_number":29,"context_line":"  more than the reserved amount."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Use Cases"},{"line_number":32,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_df48538b","line":29,"range":{"start_line":28,"start_character":46,"end_line":29,"end_character":32},"in_reply_to":"5f7c97a3_fd18c083","updated":"2018-07-17 05:32:17.000000000","message":"Done","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"1e8fc6200ba01411cb51de2eae9aa571229008de","unresolved":false,"context_lines":[{"line_number":32,"context_line":"---------"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"* A user wants to reserve instance resources with arbitrary affinity policy."},{"line_number":35,"context_line":"* A user wants to reserve instance resources more than the amount of hosts."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Proposed change"},{"line_number":38,"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":12,"id":"5f7c97a3_df7549ca","line":35,"range":{"start_line":35,"start_character":2,"end_line":35,"end_character":75},"updated":"2018-07-10 09:59:18.000000000","message":"A user wants to reserve more instances than the number of hosts.","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"a4e0000404e8818a1a76afb2f444d610e7356fad","unresolved":false,"context_lines":[{"line_number":32,"context_line":"---------"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"* A user wants to reserve instance resources with arbitrary affinity policy."},{"line_number":35,"context_line":"* A user wants to reserve instance resources more than the amount of hosts."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Proposed change"},{"line_number":38,"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":12,"id":"5f7c97a3_bf43176b","line":35,"range":{"start_line":35,"start_character":2,"end_line":35,"end_character":75},"in_reply_to":"5f7c97a3_df7549ca","updated":"2018-07-17 05:32:17.000000000","message":"Done","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"1e8fc6200ba01411cb51de2eae9aa571229008de","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"2. Create a `nested resource provider`_ as a child of the compute node"},{"line_number":52,"context_line":"   resource provider by calling the `Create resource provider API`_. The UUID"},{"line_number":53,"context_line":"   of the compute node resource provider can be gotten by calling the `List"},{"line_number":54,"context_line":"   resource providers API`_ with the **name** option query,"},{"line_number":55,"context_line":"   e.g. ``GET /placement/resource_proiders?name\u003dcompute-1``."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_bf288d97","line":53,"range":{"start_line":53,"start_character":48,"end_line":53,"end_character":54},"updated":"2018-07-10 09:59:18.000000000","message":"retrieved","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"1e8fc6200ba01411cb51de2eae9aa571229008de","unresolved":false,"context_lines":[{"line_number":57,"context_line":"   The child resource provider is referred to as *\u0027reservation provider\u0027* in"},{"line_number":58,"context_line":"   the following sections."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"   Create resource provider request example:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"   ``POST /placement/resource_providers``"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_a2007201","line":60,"updated":"2018-07-10 09:59:18.000000000","message":"Shouldn\u0027t that be \"Create reservation provider\"?","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"a4e0000404e8818a1a76afb2f444d610e7356fad","unresolved":false,"context_lines":[{"line_number":57,"context_line":"   The child resource provider is referred to as *\u0027reservation provider\u0027* in"},{"line_number":58,"context_line":"   the following sections."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"   Create resource provider request example:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"   ``POST /placement/resource_providers``"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_7a0cad38","line":60,"in_reply_to":"5f7c97a3_a2007201","updated":"2018-07-17 05:32:17.000000000","message":"Done","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"59b927d4f70183180e1e15027052135c98c7e5df","unresolved":false,"context_lines":[{"line_number":57,"context_line":"   The child resource provider is referred to as *\u0027reservation provider\u0027* in"},{"line_number":58,"context_line":"   the following sections."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"   Create resource provider request example:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"   ``POST /placement/resource_providers``"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_dec0d44d","line":60,"in_reply_to":"5f7c97a3_a2007201","updated":"2018-07-11 05:19:18.000000000","message":"I think it\u0027s just a miss of \"Create resource provider request body example\".","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"a4e0000404e8818a1a76afb2f444d610e7356fad","unresolved":false,"context_lines":[{"line_number":57,"context_line":"   The child resource provider is referred to as *\u0027reservation provider\u0027* in"},{"line_number":58,"context_line":"   the following sections."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"   Create resource provider request example:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"   ``POST /placement/resource_providers``"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_3a12b556","line":60,"in_reply_to":"5f7c97a3_dec0d44d","updated":"2018-07-17 05:32:17.000000000","message":"Done","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"59b927d4f70183180e1e15027052135c98c7e5df","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    {"},{"line_number":67,"context_line":"        \"name\": \"blazar_compute-1\","},{"line_number":68,"context_line":"        \"uuid\": \"blazar_compute-1\","},{"line_number":69,"context_line":"        \"parent_provider_uuid\": \"542df8ed-9be2-49b9-b4db-6d3183ff8ec8\""},{"line_number":70,"context_line":"    }"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_84ef7085","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":35},"updated":"2018-07-11 05:19:18.000000000","message":"It\u0027s not a uuid.  Now is it needed to specify the id in API request?","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"a4e0000404e8818a1a76afb2f444d610e7356fad","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    {"},{"line_number":67,"context_line":"        \"name\": \"blazar_compute-1\","},{"line_number":68,"context_line":"        \"uuid\": \"blazar_compute-1\","},{"line_number":69,"context_line":"        \"parent_provider_uuid\": \"542df8ed-9be2-49b9-b4db-6d3183ff8ec8\""},{"line_number":70,"context_line":"    }"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_7f07bf1e","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":35},"in_reply_to":"5f7c97a3_84ef7085","updated":"2018-07-17 05:32:17.000000000","message":"Thanks! No, it\u0027s not needed. I\u0027ve removed it.","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"6d46aedaa83cf5030bb572f4f399c8c4cabff39d","unresolved":false,"context_lines":[{"line_number":99,"context_line":"   lower case and hyphen cannot be used."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"4. Create a private flavor which has"},{"line_number":102,"context_line":"   ``resources:CUSTOM_RESERVATION_{reservation UUID}\u003d1`` in it\u0027s `extra_spec`_."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":".. note::"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_2587fe5d","line":102,"range":{"start_line":102,"start_character":60,"end_line":102,"end_character":64},"updated":"2018-07-16 22:11:45.000000000","message":"its","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"a4e0000404e8818a1a76afb2f444d610e7356fad","unresolved":false,"context_lines":[{"line_number":99,"context_line":"   lower case and hyphen cannot be used."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"4. Create a private flavor which has"},{"line_number":102,"context_line":"   ``resources:CUSTOM_RESERVATION_{reservation UUID}\u003d1`` in it\u0027s `extra_spec`_."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":".. note::"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_3ffdc708","line":102,"range":{"start_line":102,"start_character":60,"end_line":102,"end_character":64},"in_reply_to":"5f7c97a3_2587fe5d","updated":"2018-07-17 05:32:17.000000000","message":"Done","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"6d46aedaa83cf5030bb572f4f399c8c4cabff39d","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":".. note::"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"   * A host aggregate is not created for each instance reservation any more"},{"line_number":107,"context_line":"     because reserved hosts can be distinguished by the reservation provider"},{"line_number":108,"context_line":"     inventory."},{"line_number":109,"context_line":"   * A server group is not created any more because the proposed approach does"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_c5e5ea3f","line":106,"range":{"start_line":106,"start_character":67,"end_line":106,"end_character":75},"updated":"2018-07-16 22:11:45.000000000","message":"anymore","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"a4e0000404e8818a1a76afb2f444d610e7356fad","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":".. note::"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"   * A host aggregate is not created for each instance reservation any more"},{"line_number":107,"context_line":"     because reserved hosts can be distinguished by the reservation provider"},{"line_number":108,"context_line":"     inventory."},{"line_number":109,"context_line":"   * A server group is not created any more because the proposed approach does"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_fa299d88","line":106,"range":{"start_line":106,"start_character":67,"end_line":106,"end_character":75},"in_reply_to":"5f7c97a3_c5e5ea3f","updated":"2018-07-17 05:32:17.000000000","message":"Done","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"6d46aedaa83cf5030bb572f4f399c8c4cabff39d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"   * A host aggregate is not created for each instance reservation any more"},{"line_number":107,"context_line":"     because reserved hosts can be distinguished by the reservation provider"},{"line_number":108,"context_line":"     inventory."},{"line_number":109,"context_line":"   * A server group is not created any more because the proposed approach does"},{"line_number":110,"context_line":"     not depend on the ServerGroup(Anti)AffinityFilter."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"When starting a lease:"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_e5ea660c","line":109,"range":{"start_line":109,"start_character":35,"end_line":109,"end_character":43},"updated":"2018-07-16 22:11:45.000000000","message":"anymore","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"a4e0000404e8818a1a76afb2f444d610e7356fad","unresolved":false,"context_lines":[{"line_number":106,"context_line":"   * A host aggregate is not created for each instance reservation any more"},{"line_number":107,"context_line":"     because reserved hosts can be distinguished by the reservation provider"},{"line_number":108,"context_line":"     inventory."},{"line_number":109,"context_line":"   * A server group is not created any more because the proposed approach does"},{"line_number":110,"context_line":"     not depend on the ServerGroup(Anti)AffinityFilter."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"When starting a lease:"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_9a1ae968","line":109,"range":{"start_line":109,"start_character":35,"end_line":109,"end_character":43},"in_reply_to":"5f7c97a3_e5ea660c","updated":"2018-07-17 05:32:17.000000000","message":"Done","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"6d46aedaa83cf5030bb572f4f399c8c4cabff39d","unresolved":false,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":"To support the lease creation:"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"* Update the query_available_hosts() to return how much instance can be"},{"line_number":341,"context_line":"  launched on each available host."},{"line_number":342,"context_line":"* Update the pickup_hosts() to support arbitrary affinity policy."},{"line_number":343,"context_line":"* Update the reserve_resource() and update_reservation() to support multiple"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_45479a1f","line":340,"range":{"start_line":340,"start_character":47,"end_line":340,"end_character":64},"updated":"2018-07-16 22:11:45.000000000","message":"Should it be \"how many instances\" instead?","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"a4e0000404e8818a1a76afb2f444d610e7356fad","unresolved":false,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":"To support the lease creation:"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"* Update the query_available_hosts() to return how much instance can be"},{"line_number":341,"context_line":"  launched on each available host."},{"line_number":342,"context_line":"* Update the pickup_hosts() to support arbitrary affinity policy."},{"line_number":343,"context_line":"* Update the reserve_resource() and update_reservation() to support multiple"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_5a38d1d2","line":340,"range":{"start_line":340,"start_character":47,"end_line":340,"end_character":64},"in_reply_to":"5f7c97a3_45479a1f","updated":"2018-07-17 05:32:17.000000000","message":"Done","commit_id":"ef18de5696032123d6bbd9ddbba8ccb6f7f1ddb4"}]}
