diff --git a/doc/source/cli/flavor-based-instance-reservation.rst b/doc/source/cli/flavor-based-instance-reservation.rst new file mode 100644 index 00000000..32ba7834 --- /dev/null +++ b/doc/source/cli/flavor-based-instance-reservation.rst @@ -0,0 +1,200 @@ +================================= +Flavor-based Instance 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: + +.. sourcecode:: console + + # Using the blazar CLI + blazar host-create compute-1 + + # Using the openstack CLI + openstack reservation host create compute-1 + +.. + +2. Check hosts in the freepool: + +.. sourcecode:: console + + # Using the blazar CLI + blazar host-list + + # Using the openstack CLI + openstack reservation host list + +.. + +Result: + +.. sourcecode:: console + + +----+---------------------+-------+-----------+----------+ + | id | hypervisor_hostname | vcpus | memory_mb | local_gb | + +----+---------------------+-------+-----------+----------+ + | 1 | compute-1 | 2 | 3951 | 38 | + +----+---------------------+-------+-----------+----------+ + +.. + +2. Create a lease +----------------- + +1. Create a lease (instance reservation) using lease-create command: + +.. sourcecode:: console + + # Using the blazar CLI + blazar lease-create --reservation resource_type=flavor:instance,flavor_id=3,amount=1 --start-date "2024-08-23 12:00" --end-date "2024-09-08 13:00" lease-1 + + # Using the openstack CLI + openstack reservation lease create --reservation resource_type=flavor:instance,flavor_id=3,amount=1 --start-date "2024-08-23 14:00" --end-date "2024-09-08 15:00" lease-1 + +.. + +Result: + +.. sourcecode:: console + + +--------------+-------------------------------------------------------------------------------------------------------------------------------------+ + | Field | Value | + +--------------+-------------------------------------------------------------------------------------------------------------------------------------+ + | created_at | 2024-08-23 12:40:53 | + | degraded | False | + | end_date | 2024-09-08T15:00:00.000000 | + | events | { | + | | "id": "29e939d9-a158-4376-86d7-5093c3a379cb", | + | | "lease_id": "d7779e56-2b78-4465-8f19-9cc916d97b11", | + | | "event_type": "end_lease", | + | | "time": "2024-09-08T15:00:00.000000", | + | | "status": "UNDONE", | + | | "created_at": "2024-08-23 12:40:53", | + | | "updated_at": null | + | | } | + | | { | + | | "id": "6c985a6e-416a-496a-9714-ae7b2dea0753", | + | | "lease_id": "d7779e56-2b78-4465-8f19-9cc916d97b11", | + | | "event_type": "before_end_lease", | + | | "time": "2024-09-08T14:00:00.000000", | + | | "status": "UNDONE", | + | | "created_at": "2024-08-23 12:40:53", | + | | "updated_at": null | + | | } | + | | { | + | | "id": "e3308415-78b1-441d-8881-74e9569e0635", | + | | "lease_id": "d7779e56-2b78-4465-8f19-9cc916d97b11", | + | | "event_type": "start_lease", | + | | "time": "2024-08-23T14:00:00.000000", | + | | "status": "UNDONE", | + | | "created_at": "2024-08-23 12:40:53", | + | | "updated_at": null | + | | } | + | id | d7779e56-2b78-4465-8f19-9cc916d97b11 | + | name | lease-1 | + | project_id | 09dd299a860b4933a2ebc271377e77a6 | + | reservations | { | + | | "id": "c1fb5090-e046-42a5-8287-2aa380a8d31a", | + | | "lease_id": "d7779e56-2b78-4465-8f19-9cc916d97b11", | + | | "resource_id": "41448036-4bd0-4b03-bd72-829ad636024b", | + | | "resource_type": "flavor:instance", | + | | "status": "pending", | + | | "missing_resources": false, | + | | "resources_changed": false, | + | | "created_at": "2024-08-23 12:40:53", | + | | "updated_at": "2024-08-23 12:40:53", | + | | "vcpus": 2, | + | | "memory_mb": 4096, | + | | "disk_gb": 40, | + | | "amount": 1, | + | | "affinity": null, | + | | "resource_properties": "{\"id\": \"3\", \"name\": \"m1.medium\", \"ram\": 4096, \"disk\": 40, \"swap\": \"\", \"OS-FLV-EXT- | + | | DATA:ephemeral\": 0, \"OS-FLV-DISABLED:disabled\": false, \"vcpus\": 2, \"os-flavor-access:is_public\": true, \"rxtx_factor\": 1.0, | + | | \"extra_specs\": {\"hw_rng:allowed\": \"True\"}}", | + | | "flavor_id": "c1fb5090-e046-42a5-8287-2aa380a8d31a", | + | | "aggregate_id": 6, | + | | "server_group_id": null | + | | } | + | start_date | 2024-08-23T14:00:00.000000 | + | status | PENDING | + | trust_id | 8023d766983a493c898991430493e81a | + | updated_at | 2024-08-23 12:40:53 | + | user_id | 3ecacbbc4acc467faa664ee26eea115d | + +--------------+-------------------------------------------------------------------------------------------------------------------------------------+ + +.. + +2. Check leases: + +.. sourcecode:: console + + # Using the blazar CLI + blazar lease-list + + # Using the openstack CLI + openstack reservation lease list + +.. + +Result: + +.. sourcecode:: console + + +--------------------------------------+---------+----------------------------+----------------------------+ + | id | name | start_date | end_date | + +--------------------------------------+---------+----------------------------+----------------------------+ + | d7779e56-2b78-4465-8f19-9cc916d97b11 | lease-1 | 2024-08-23T14:00:00.000000 | 2024-09-08T15:00:00.000000 | + +--------------------------------------+---------+----------------------------+----------------------------+ + +.. + +3. Use the leased resources +--------------------------- + +While the reservation you created is active you can see and use the flavor of your reservation. + +.. sourcecode:: console + + openstack flavor list + +.. + +Result: + +.. sourcecode:: console + + +--------------------------------------+--------------------------------------------------+-------+------+-----------+-------+-----------+ + | ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public | + +--------------------------------------+--------------------------------------------------+-------+------+-----------+-------+-----------+ + | 1 | m1.tiny | 512 | 1 | 0 | 1 | True | + | 2 | m1.small | 2048 | 20 | 0 | 1 | True | + | 3 | m1.medium | 4096 | 40 | 0 | 2 | True | + | 4 | m1.large | 8192 | 80 | 0 | 4 | True | + | 42 | m1.nano | 192 | 1 | 0 | 1 | True | + | 5 | m1.xlarge | 16384 | 160 | 0 | 8 | True | + | 84 | m1.micro | 256 | 1 | 0 | 1 | True | + | c1 | cirros256 | 256 | 1 | 0 | 1 | True | + | c1fb5090-e046-42a5-8287-2aa380a8d31a | reservation:c1fb5090-e046-42a5-8287-2aa380a8d31a | 4096 | 40 | 0 | 2 | False | + +--------------------------------------+--------------------------------------------------+-------+------+-----------+-------+-----------+ + +.. + +1. Create a server: Please specify the flavor of the reservation. + +.. sourcecode:: console + + openstack server create --flavor c1fb5090-e046-42a5-8287-2aa380a8d31a --image --network + +.. diff --git a/doc/source/cli/index.rst b/doc/source/cli/index.rst index 8306facb..85e176b6 100644 --- a/doc/source/cli/index.rst +++ b/doc/source/cli/index.rst @@ -6,6 +6,7 @@ Command-Line Interface Reference host-reservation instance-reservation + flavor-based-instance-reservation floatingip-reservation Two command-line interfaces exist: one as a standalone ``blazar`` client and diff --git a/doc/source/user/architecture.rst b/doc/source/user/architecture.rst index 77a5baf7..435752bc 100644 --- a/doc/source/user/architecture.rst +++ b/doc/source/user/architecture.rst @@ -104,6 +104,22 @@ for oversubscribing with multiple reservation types (hosts supporting the virtual instance reservation cannot also be targeted for compute host reservation at the same time). +Flavor-based instance reservation +--------------------------------- + +Flavor-based instance reservation is similar in design to virtual instance +reservation. However, instead of accepting specific amounts of resources as +arguments, the reservation is based on an existing Nova flavor which must be +accessible to the user. + +.. note:: + + The implementation of flavor-based instance reservation is still incomplete. + Only a limited number of flavor extra specs is supported. Virtual instance + reservations and flavor-based instance reservations cannot yet be created on + the same resources. Affinity rules and resource traits are not yet + supported. + Neutron resource reservation ++++++++++++++++++++++++++++ diff --git a/releasenotes/notes/flavor-based-instance-reservation-5a375363e8011775.yaml b/releasenotes/notes/flavor-based-instance-reservation-5a375363e8011775.yaml new file mode 100644 index 00000000..b4ce855d --- /dev/null +++ b/releasenotes/notes/flavor-based-instance-reservation-5a375363e8011775.yaml @@ -0,0 +1,9 @@ +--- +features: + - | + Add a new resource type ``flavor:instance`` to reserve instances based on + existing flavors. This is implemented by a new plugin named + ``flavor.instance.plugin``. Note that this feature is available as a + preview but is not yet complete. See `documentation + `__ for + more details.