[openstack-dev] [LBaaS][octavia] - Flavors discussion - continue

Evgeny Fedoruk EvgenyF at Radware.com
Thu Jul 6 16:03:08 UTC 2017


Hi All,

Following the Flavors discussion that was held on last Thursday, as promised, here is a description of use cases and CLI commands to demonstrate Flavor usage.
I  would appreciate your feedback and thoughts about it.

I prefer to do it on a mailing list first, since if we agree on this, it may change the RST.
Attached, please find:
1. TXT document, specifying a fuller description of the data model, meta structure, CLI commands, bootstrap process and validations.
2. PNG file showing the data model.

Follows a summary:

Terms:
*Provider:
    LBaaS service provider. Life cycle managed by Octavia
*Provider_Meta_Spec:
    A certain version of a Provider's meta data specification. Life cycle managed by Octavia.
    The meta data specification is a formal description of the meta data, defining structure and data types.
    The meta spec, is versioned and each Provider may have several versions of a meta spec.
*Provider_Flavor_Profile:
    An instance of a provider's meta data modeled by a specific Provider_Meta_Spec.
    Provider may have several flavor profiles of the same Meta Spec with
    Different parameter values.
*Flavor:
   LBaaS service flavor. While no scheduling exists - just a logical entity with 1:1 relation to the Provider_Flavor_Profile

CLI examples: 
Please Copy/Paste it to some editor in order to see the output tables normally


> lbaas provider-list
+--------------------------------------+---------------+----------------------------------+--------------------------+---------+---------+
| id                                   | name          | description                      | driver                   | enabled | default |
+--------------------------------------+---------------|----------------------------------+--------------------------+---------+---------+
| ad8102ae-2ae0-4038-a98e-f7f721c8eec8 | octavia       |                                  | octavia.drivers.octavia. |  true   | true    |
|                                      |               |                                  | driver.OctaviaDriver     |         |         |
| 7953d045-92cc-4d2c-a3b1-35175c1f06c4 | radware       |                                  | octavia.drivers.radware. |  true   | false   |
|                                      |               |                                  | v2_driver.               |         |         |
|                                      |               |                                  | RadwareLBaaSV2Driver     |         |         |
+--------------------------------------+---------------+----------------------------------+--------------------------+---------+---------+
        
> lbaas provider-meta-spec-list --provider octavia
+--------------------------------------+---------------+---------------------------------------+---------+---------+
| id                                   | name          | provider_id                           | version | enabled |
+--------------------------------------+---------------|---------------------------------------+---------+---------+
| 1696eb95-8c9e-4cb4-bd6e-ccf49b1fad23 | octavia_1.0   | f56ac751-f890-440e-8786-999a7ab8ec2f  | 1.0     | false   |
| 8ju7eb94-7c9y-2cb4-bd4e-gcf49b1fki91 | octavia_2.0   | f56ac751-f890-440e-8786-999a7ab8ec2f  | 2.0     | true    |
+--------------------------------------+---------------+---------------------------------------+---------+---------+

> lbaas provider-meta-spec-show octavia_2.0
+---------------------+------------------------------------------------------------------------------+
| Field               | Value                                                                        |
+---------------------+------------------------------------------------------------------------------+
| id                  | 8ju7eb94-7c9y-2cb4-bd4e-gcf49b1fki91                                         |
| name                | octavia_2.0                                                                  |
| provider_id         | f56ac751-f890-440e-8786-999a7ab8ec2f                                         |
| meta_spec           | [{name: "any_string", type: string, default: ""},                            |
|                     | {name: "one_of_string", type: string, default: "A", values: "A,B,C"},        |
|                     | {name: "range_int", type: integer, default: 1000, values: "1000:10000"},     |
|                     | {name: "one_of_int", type: integer, default: 50, values: "10,25,50,75,100"}, |
|                     | {name: "any_int", type: integer, default: 0},                                |
|                     | {name: "bool", type: boolean, default: "false"},                             |
|                     |{name: "list", type: list, default: []},                                      |
|                     |{name: "map", type: map, default: {}}]                                        |
| version             | "2.0"                                                                        |
| enabled             | true                                                                         |
+---------------------+------------------------------------------------------------------------------+

> lbaas flavor-profile-create --name octavia_default --meta-spec octavia_2.0 --meta-file /tmp/meta_params.yaml
Created a new flavor profile:
+-----------------------+-----------------------------------------+
| Field                 | Value                                   |
+-----------------------+-----------------------------------------+
| id                    | cf1ac751-f890-440e-8786-999a7ab8egy7    |
| name                  | actavia_default                         |
| description           |                                         |
| provider_meta_spec_id | 8ju7eb94-7c9y-2cb4-bd4e-gcf49b1fki91    |
|                       |                                         |
| meta_data             | {"any_string", "", "one_of_string":     |
|                       | "A", "range_int": 1000,    "one_of_int":|
|                       | 75,    "any_int": 0, "bool": "false",   |
|                       | "list": [],    "map": {}}               |
| enabled               | true                                    |
+-----------------------+-----------------------------------------+

> lbaas flavor-create --name default --provider-profile octavia_default
Created a new flavor:
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| id                  | f56ac751-f890-440e-8786-999a7ab8ec2f |
| name                | default                              |
| description         |                                      |
| flavor_profile_id   | cf1ac751-f890-440e-8786-999a7ab8egy7 |
| enabled             | True                                 |
+---------------------+--------------------------------------+

> lbaas loadbalancer-create --flavor default tenant-subnet
Created a new loadbalancer:
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| admin_state_up      | True                                 |
| description         |                                      |
| id                  | f56ac751-f890-440e-8786-999a7ab8ec2f |
| listeners           |                                      |
| name                |                                      |
| operating_status    | ONLINE                               |
| provider            | octavia                              |
| provider_profile    | octavia_default                      |
| flavor              | default                              |
| provisioning_status | ACTIVE                               |
| tenant_id           | 1081145e96684447b0a35bc81c5b9433     |
| vip_address         | 192.168.33.178                       |
| vip_port_id         | 48fc5824-e7ec-4d11-af2b-d3a190ce7d9a |
| vip_subnet_id       | 1966c9a5-174d-4b39-b1e3-ff19a6621bef |
+---------------------+--------------------------------------+


Bootstrap:
* Providers are loaded into the Octavia providers DB table
    from configuration file on each startup
    Format: service_provider = <Name>:<Desc>:<Driver_FQN>:<enabled true/false>:[default]
* For each provider, new driver API get_meta_spec() is called for getting the meta specification.
    It returns a list of meta data specifications which then get persisted in the database.
* Meta specs are immutable, otherwise - startup error will be issued.


Regards,
Evgeny

-------------- next part --------------
A non-text attachment was scrubbed...
Name: Data_Model.png
Type: image/png
Size: 31850 bytes
Desc: Data_Model.png
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20170706/51c7e3f1/attachment.png>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Flavors.txt
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20170706/51c7e3f1/attachment.txt>


More information about the OpenStack-dev mailing list