Files
blazar/doc/source/cli/host-reservation.rst
Mark Powers f5e6d24826 Add resource properties discovery API
This allows users to query for resource properties of hosts,
allowing them to be used in creating leases more effectively. Two new
API endpoints are added for hosts, ``/properties`` and
``/properties/<property_name>``, which allow for listing available
properties, and updating a property respectively. Properties can be
listed with detail, showing possible values and visibility. Admins can
list public and private properties.

A new database table is added ``resource_properties``, which stores
property names and resource types. Resource specific property tables
(e.g. ``computehost_extra_capabilities``) entries store a foreign key to
``resource_properties``, rather than the capability name.

Implements blueprint resource-properties-discovery-api

Change-Id: Ib9f1140c44c5e4fbef6e019c48a842869368cb21
2022-02-10 17:23:15 +00:00

13 KiB

Host Reservation

Prerequisites

The following packages should be installed:

  • blazar
  • blazar-nova
  • python-blazarclient

1. Add hosts into the freepool

  1. Add hosts into the Blazar freepool using the host-create command:
# Using the blazar CLI
blazar host-create compute-1

# Using the openstack CLI
openstack reservation host create compute-1
  1. Check hosts in the freepool:
# Using the blazar CLI
blazar host-list

# Using the openstack CLI
openstack reservation host list

Result:

+----+---------------------+-------+-----------+----------+
| id | hypervisor_hostname | vcpus | memory_mb | local_gb |
+----+---------------------+-------+-----------+----------+
| 1  | compute-1           |     2 |      3951 |       38 |
+----+---------------------+-------+-----------+----------+
  1. (Optional) Add extra capabilities to host to add other properties. These can be used to filter hosts when creating a reservation.
# Using the blazar CLI
blazar host-update --extra gpu=True compute-1

# Using the openstack CLI
openstack reservation host set --extra gpu=True compute-1

Result:

Updated host: compute-1

Multiple --extra parameters can be included. They can also be specified in host-create. Properties can be made private or public. By default, they are public.

# Using the blazar CLI
blazar host-capability-update gpu --private

# Using the openstack CLI
openstack reservation host capability update gpu --private

Result:

Updated host extra capability: gpu

2. Create a lease

  1. Create a lease (compute host reservation) using lease-create command:
# Using the blazar CLI
blazar lease-create --physical-reservation min=1,max=1,hypervisor_properties='[">=", "$vcpus", "2"]' --start-date "2020-06-08 12:00" --end-date "2020-06-09 12:00" lease-1

# Using the openstack CLI
openstack reservation lease create --reservation resource_type=physical:host,min=1,max=1,hypervisor_properties='[">=", "$vcpus", "2"]' --start-date "2020-06-08 12:00" --end-date "2020-06-09 12:00" lease-1

Note

The --physical-reservation flag is not available in the openstack client, instead use --reservation resource_type=physical:host as shown above.

Result:

+---------------+---------------------------------------------------------------------------------------------------------------------------------------------+
| Field         | Value                                                                                                                                       |
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------+
| action        |                                                                                                                                             |
| created_at    | 2020-06-08 02:43:40                                                                                                                         |
| end_date      | 2020-06-09T12:00:00.000000                                                                                                                  |
| events        | {"status": "UNDONE", "lease_id": "6638c31e-f6c8-4982-9b98-d2ca0a8cb646", "event_type": "before_end_lease", "created_at": "2020-06-08        |
|               | 02:43:40", "updated_at": null, "time": "2020-06-08T12:00:00.000000", "id": "420caf25-dba5-4ac3-b377-50503ea5c886"}                          |
|               | {"status": "UNDONE", "lease_id": "6638c31e-f6c8-4982-9b98-d2ca0a8cb646", "event_type": "start_lease", "created_at": "2020-06-08 02:43:40",  |
|               | "updated_at": null, "time": "2020-06-08T12:00:00.000000", "id": "b9696139-55a1-472d-baff-5fade2c15243"}                                     |
|               | {"status": "UNDONE", "lease_id": "6638c31e-f6c8-4982-9b98-d2ca0a8cb646", "event_type": "end_lease", "created_at": "2020-06-08 02:43:40",    |
|               | "updated_at": null, "time": "2020-06-09T12:00:00.000000", "id": "ff9e6f52-db50-475a-81f1-e6897fdc769d"}                                     |
| id            | 6638c31e-f6c8-4982-9b98-d2ca0a8cb646                                                                                                        |
| name          | lease-1                                                                                                                                     |
| project_id    | 4527fa2138564bd4933887526d01bc95                                                                                                            |
| reservations  | {"status": "pending", "lease_id": "6638c31e-f6c8-4982-9b98-d2ca0a8cb646", "resource_id": "8", "max": 1, "created_at": "2020-06-08           |
|               | 02:43:40", "min": 1, "updated_at": null, "hypervisor_properties": "[\">=\", \"$vcpus\", \"2\"]", "resource_properties": "", "id":           |
|               | "4d3dd68f-0e3f-4f6b-bef7-617525c74ccb", "resource_type": "physical:host"}                                                                   |
| start_date    | 2020-06-08T12:00:00.000000                                                                                                                  |
| status        |                                                                                                                                             |
| status_reason |                                                                                                                                             |
| trust_id      | ba4c321878d84d839488216de0a9e945                                                                                                            |
| updated_at    |                                                                                                                                             |
| user_id       |                                                                                                                                             |
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------+
  1. Check leases:
# Using the blazar CLI
blazar lease-list

# Using the openstack CLI
openstack reservation lease list

Result:

+--------------------------------------+---------+----------------------------+----------------------------+
| id                                   | name    | start_date                 | end_date                   |
+--------------------------------------+---------+----------------------------+----------------------------+
| 6638c31e-f6c8-4982-9b98-d2ca0a8cb646 | lease-1 | 2020-06-08T12:00:00.000000 | 2020-06-09T12:00:00.000000 |
+--------------------------------------+---------+----------------------------+----------------------------+
  1. Alternatively, create leases with resource properties. First list properties.
# Using the blazar CLI
blazar host-capability-list

# Using the openstack CLI
openstack reservation host capability list

Result:

+----------+
| property |
+----------+
| gpu      |
+----------+

List possible values for a property

# Using the blazar CLI
blazar host-capability-show gpu

# Using the openstack CLI
openstack reservation host capability show gpu

Result:

+-------------------+-------+
| Field             | Value |
+-------------------+-------+
| capability_values | True  |
|                   | False |
| private           | False |
| property          | gpu   |
+-------------------+-------+

Create a lease.

# Using the blazar CLI
blazar lease-create --physical-reservation min=1,max=1,resource_properties='["=", "$gpu", "True"]' --start-date "2020-06-08 12:00" --end-date "2020-06-09 12:00" lease-1

# Using the openstack CLI
openstack reservation lease create --reservation resource_type=physical:host,min=1,max=1,resource_properties='[">=", "$vcpus", "2"]' --start-date "2020-06-08 12:00" --end-date "2020-06-09 12:00" lease-1

Result:

+---------------+---------------------------------------------------------------------------------------------------------------------------------------------+
| Field         | Value                                                                                                                                       |
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------+
| action        |                                                                                                                                             |
| created_at    | 2020-06-08 02:43:40                                                                                                                         |
| end_date      | 2020-06-09T12:00:00.000000                                                                                                                  |
| events        | {"status": "UNDONE", "lease_id": "6638c31e-f6c8-4982-9b98-d2ca0a8cb646", "event_type": "before_end_lease", "created_at": "2020-06-08        |
|               | 02:43:40", "updated_at": null, "time": "2020-06-08T12:00:00.000000", "id": "420caf25-dba5-4ac3-b377-50503ea5c886"}                          |
|               | {"status": "UNDONE", "lease_id": "6638c31e-f6c8-4982-9b98-d2ca0a8cb646", "event_type": "start_lease", "created_at": "2020-06-08 02:43:40",  |
|               | "updated_at": null, "time": "2020-06-08T12:00:00.000000", "id": "b9696139-55a1-472d-baff-5fade2c15243"}                                     |
|               | {"status": "UNDONE", "lease_id": "6638c31e-f6c8-4982-9b98-d2ca0a8cb646", "event_type": "end_lease", "created_at": "2020-06-08 02:43:40",    |
|               | "updated_at": null, "time": "2020-06-09T12:00:00.000000", "id": "ff9e6f52-db50-475a-81f1-e6897fdc769d"}                                     |
| id            | 6638c31e-f6c8-4982-9b98-d2ca0a8cb646                                                                                                        |
| name          | lease-1                                                                                                                                     |
| project_id    | 4527fa2138564bd4933887526d01bc95                                                                                                            |
| reservations  | {"status": "pending", "lease_id": "6638c31e-f6c8-4982-9b98-d2ca0a8cb646", "resource_id": "8", "max": 1, "created_at": "2020-06-08           |
|               | 02:43:40", "min": 1, "updated_at": null, "hypervisor_properties": "", "resource_properties": "[\"=\", \"$gpu\", \"True\"]", "id":           |
|               | "4d3dd68f-0e3f-4f6b-bef7-617525c74ccb", "resource_type": "physical:host"}                                                                   |
| start_date    | 2020-06-08T12:00:00.000000                                                                                                                  |
| status        |                                                                                                                                             |
| status_reason |                                                                                                                                             |
| trust_id      | ba4c321878d84d839488216de0a9e945                                                                                                            |
| updated_at    |                                                                                                                                             |
| user_id       |                                                                                                                                             |
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------+

3. Use the leased resources

  1. Create a server: Please specify the reservation id as a scheduler hint.
openstack server create --flavor <flavor> --image <image> --network <network> --hint reservation=4d3dd68f-0e3f-4f6b-bef7-617525c74ccb <server-name>