diff --git a/doc/source/contributor/index.rst b/doc/source/contributor/index.rst index 7bde255df2..d875959a90 100644 --- a/doc/source/contributor/index.rst +++ b/doc/source/contributor/index.rst @@ -98,6 +98,15 @@ Version 14.0 (caracal) specs/version14.0/* +Version 15.0 (Dalmatian) +```````````````````````` + +.. toctree:: + :glob: + :maxdepth: 1 + + specs/version15.0/* + .. only:: latex Module Reference diff --git a/specs/version15.0/resize.rst b/specs/version15.0/resize.rst new file mode 100644 index 0000000000..14f1f505f1 --- /dev/null +++ b/specs/version15.0/resize.rst @@ -0,0 +1,149 @@ +====================== +Load balancer resizing +====================== +Link to blueprint: https://blueprints.launchpad.net/octavia/+spec/octavia-resize-loadbalancer + +This spec's goal is to describe the functionality of resizing of load +balancers. The main aim of this new feature is to enable you to change the +flavor directly from the API. + +Problem description +=================== +Today's users can't easily change the flavor. They have to recreate their load +balancer with the new flavor and migrate their configurations such as +l7 rules, listeners, etc. +This can be very tedious for a user who wants to quickly resize his load +balancer. It can be especially complicated to script. + +Proposed change +=============== +The proposed change would be to add an endpoint to allow load balancer +resizing. It would also be easy to cancel a resize in progress and return +to the previous flavor. + +To achieve this, the endpoint will launch a workflow to initiate a failover +with the new flavor ID. This will involve patching the `get_failover_LB_flow` +to add the `flavorId` parameter. At the end of the workflow the `flavor_id` +will be updated in the `loadbalancer` table. + +A check will be added before the start of the failover to prevent migration +to a flavor profile topology different from the original one. A user cannot +migrate from a flavorprofile standalone to active/passive. + +If a problem occurs during resizing, the load balancer status will be set +to ERROR. The flavor will remain the same in database, allowing the user +to perform a failover or retry the same call. + +Alternatives +------------ + * Rebuild the vm of the loadbalancer with the new flavor compute. + * Use the "backup" and "restore". + + +Data model impact +----------------- +None + + +REST API impact +--------------- +Add one endpoint in `/v2.0/lbaas/loadbalancers`. + +To run this endpoint, the user must have the role `load-balancer:write"`. + +Start a resize of a load balancer:: + + PUT /v2.0/lbaas/loadbalancers/{loadbalancer_id}/resize + + { + "new_flavor_id": "6d425a5e-429f-4848-b240-ab31c6d211e4" + } + +.. list-table:: Response code + :widths: 15 50 + :header-rows: 1 + + * - Code + - Description + * - 202 Accepted + - Resize starting + * - 400 Bad request + - Resize object is invalid + * - 401 Unauthorized + - X-Auth-Token is invalid + * - 403 Forbidden + - X-Auth-Token is valid, but the associated project does not have + the appropriate role/scope + * - 404 Not Found + - Load balancer not found + +Security impact +--------------- +None + +Notifications impact +-------------------- +Add a notification to announce a loadbalancer resize. + +Other end user impact +--------------------- +Add one command to launch resize in CLI client. + +Start a resize: openstack loadbalancer resize \ + --flavor \ + + +Add functions to resize in the `openstacksdk`. + +Performance Impact +------------------ +None + + +Other deployer impact +--------------------- +None + + +Developer impact +---------------- +None + + +Implementation +============== + +Assignee(s) +----------- +TBD + +Work Items +---------- + - Create endpoints + - Patch the `get_failover_LB_flow` to add `flavorId` parameter. + - Add unit tests + - Add API functional tests + - Add tempest tests + - Update Octavia CLI and OpenstackSDK + - Write Documentation + +Dependencies +============ +None + +Testing +======= +Tempest tests should be added for testing this new feature: + - Create a loadbalancer + - Try to resize + +Documentation Impact +==================== + - A user guide to explain how that works. + - Add a note on the fact that some flavor changes can cause data plane + downtime. Similarly, going from a newer image tag to an older one may + cause failures or features to be disabled. + +References +========== +None