New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Octavia: support L7 policy/rule operations #832
Comments
@lingxiankong Thanks for noting this :) I see the L7 stuff defined here: https://github.com/openstack/octavia/blob/master/octavia/api/v2/controllers/l7rule.py But I also see it in the Neutron LBaaS code: https://github.com/openstack/neutron-lbaas/search?q=l7 Does this mean that L7 is supported in both Octavia and the "deprecated" Neutron LBaaS? Or does Octavia use the The reason I ask is because, given my comment earlier today (#831 (comment)), I'm wondering if:
I apologize if I'm making this more difficult than it really is. |
hi, @jtopjian AFAIK, the octavia l7 functionality is totally back-compatible with neutron-lbaas, octavia just has more features than the deprecated neutron-lbaas. I was a developer in octavia, btw. |
@jtopjian if you don't mind, i can hand up to help with this issue. |
We'd love to get your help on this, whether answering questions, implementing the code, or both 😄
OK, that's good to know. So implementing this should be quite simple: it'll go in the
Right, and this is what I'm trying to sort out. We've been able to introduce Octavia support into Gophercloud by re-using current Neutron LBaaS v2 package. This has worked very well so far. But #831 introduced a feature that is only available in Octavia and not Neutron LBaaS. Thinking long-term, I'm wondering if there will be enough Octavia-only features that warrant a dedicated octavia/lbaas_v2 package. Kind of like if Octavia-lbaasv2 was really a v3 API release. But if L7 works with both neutron and octavia, then that decision doesn't need to be made here. :) |
@jtopjian in my understanding, the octavia project started by using lbaas v2 api as a baseline and lbaas v2 api has been stopped development since then, so people who are still using lbaas v2 can always use the interface in |
This is a kind of problem we've run into before. Rather than a v3 API, the Octavia enhancements sound similar to a microversion increase (if you think of the I'm sure that most Octavia-only features can be added to the existing |
@jtopjian what do you think about having a top-level Edit: Delegating calls may not get us much (I think someone looked into that for block storage). In that case, just copy/paste I guess. |
I see similarity between lbaasv2/Octavia and microversions and I think it'll be interesting to keep an eye on this to see if it presents a solution we haven't thought of. I'm kind of hoping some serendipitous solution pops up that we're all in awe over :) Until then, I think we can proceed as normal and just be mindful. |
This seems different to me. It sounds like microversions are [potentially-backwards-incompatible] changes to a service. Octavia isn't a part of the networking service; it's a service of its own. It seems odd to call a subpackage of |
I agree. The reason I am comparing it to a microversion is because I'm anticipating a backwards incompatible change (and by backwards incompatible I mean a more Go-ish breaking change such as the removal of a request body parameter or something like that). So at the moment the two situations are a bit different. My spidey sense is being cautious, though.
Agreed. On one hand we get a big win by piggybacking off of the existing |
I should also mention that if we did make a new first-class The problems I'm anticipating all stem from implementing the LBaaS v2 API in a single place. |
Right, I'm suggesting a new top-level |
Sounds like |
For gophercloud#832 L7policy functionality in Octavia is backward compatible with Neutron-LBaaS. Octavia L7 policy create API: https://developer.openstack.org/api-ref/load-balancer/v2/index.html#create-an-l7-policy
For gophercloud#832 L7policy functionality in Octavia is backward compatible with Neutron-LBaaS. Octavia L7 policy create API: https://developer.openstack.org/api-ref/load-balancer/v2/index.html#create-an-l7-policy
For gophercloud#832 L7policy functionality in Octavia is backward compatible with Neutron-LBaaS. Octavia L7 policy create API: https://developer.openstack.org/api-ref/load-balancer/v2/index.html#create-an-l7-policy
For gophercloud#832 L7policy functionality in Octavia is backward compatible with Neutron-LBaaS. Octavia L7 policy create API: https://developer.openstack.org/api-ref/load-balancer/v2/index.html#create-an-l7-policy
For gophercloud#832 L7policy functionality in Octavia is backward compatible with Neutron-LBaaS. Octavia L7 policy create API implementation: https://github.com/openstack/octavia/blob/master/octavia/api/v2/controllers/l7policy.py#L140 Neutron-LBaaS L7 policy create API implementation: https://github.com/openstack/neutron-lbaas/blob/8e8a6c47c7d38fa7b61850ff9ea2cf130718ded3/neutron_lbaas/services/loadbalancer/plugin.py#L913 Octavia L7 policy create API doc: https://developer.openstack.org/api-ref/load-balancer/v2/index.html#create-an-l7-policy
For gophercloud#832 Neutron-LBaaS l7 policy list API implementation: https://github.com/openstack/neutron-lbaas/blob/8e8a6c47c7d38fa7b61850ff9ea2cf130718ded3/neutron_lbaas/services/loadbalancer/plugin.py#L967 Octavia l7 policy list API implementation: https://github.com/openstack/octavia/blob/54a4cf00cf304b108013ca4487c138c13f30983d/octavia/api/v2/controllers/l7policy.py#L61
For gophercloud#832 Neutron-LBaaS l7 policy get API implementation: https://github.com/openstack/neutron-lbaas/blob/8e8a6c47c7d38fa7b61850ff9ea2cf130718ded3/neutron_lbaas/services/loadbalancer/plugin.py#L971 Octavia l7 policy get API implementation: https://github.com/openstack/octavia/blob/54a4cf00cf304b108013ca4487c138c13f30983d/octavia/api/v2/controllers/l7policy.py#L47
For gophercloud#832 Neutron-LBaaS l7 policy delete API implementation: https://github.com/openstack/neutron-lbaas/blob/8e8a6c47c7d38fa7b61850ff9ea2cf130718ded3/neutron_lbaas/services/loadbalancer/plugin.py#L954 Octavia l7 policy delete API implementation: https://github.com/openstack/octavia/blob/54a4cf00cf304b108013ca4487c138c13f30983d/octavia/api/v2/controllers/l7policy.py#L253
For gophercloud#832 L7policy functionality in Octavia is backward compatible with Neutron-LBaaS. Octavia L7 policy create API implementation: https://github.com/openstack/octavia/blob/master/octavia/api/v2/controllers/l7policy.py#L140 Neutron-LBaaS L7 policy create API implementation: https://github.com/openstack/neutron-lbaas/blob/8e8a6c47c7d38fa7b61850ff9ea2cf130718ded3/neutron_lbaas/services/loadbalancer/plugin.py#L913 Octavia L7 policy create API doc: https://developer.openstack.org/api-ref/load-balancer/v2/index.html#create-an-l7-policy
For gophercloud#832 L7policy functionality in Octavia is backward compatible with Neutron-LBaaS. Octavia L7 policy create API implementation: https://github.com/openstack/octavia/blob/master/octavia/api/v2/controllers/l7policy.py#L140 Neutron-LBaaS L7 policy create API implementation: https://github.com/openstack/neutron-lbaas/blob/8e8a6c47c7d38fa7b61850ff9ea2cf130718ded3/neutron_lbaas/services/loadbalancer/plugin.py#L913 Octavia L7 policy create API doc: https://developer.openstack.org/api-ref/load-balancer/v2/index.html#create-an-l7-policy
* LBaaS v2 l7 policy support [Part 1]: create l7policy For #832 L7policy functionality in Octavia is backward compatible with Neutron-LBaaS. Octavia L7 policy create API implementation: https://github.com/openstack/octavia/blob/master/octavia/api/v2/controllers/l7policy.py#L140 Neutron-LBaaS L7 policy create API implementation: https://github.com/openstack/neutron-lbaas/blob/8e8a6c47c7d38fa7b61850ff9ea2cf130718ded3/neutron_lbaas/services/loadbalancer/plugin.py#L913 Octavia L7 policy create API doc: https://developer.openstack.org/api-ref/load-balancer/v2/index.html#create-an-l7-policy * Use original type for the response fields * Change to use lbClient for octavia acceptance test
For gophercloud#832 Neutron-LBaaS l7 policy list API implementation: https://github.com/openstack/neutron-lbaas/blob/8e8a6c47c7d38fa7b61850ff9ea2cf130718ded3/neutron_lbaas/services/loadbalancer/plugin.py#L967 Octavia l7 policy list API implementation: https://github.com/openstack/octavia/blob/54a4cf00cf304b108013ca4487c138c13f30983d/octavia/api/v2/controllers/l7policy.py#L61
For gophercloud#832 Neutron-LBaaS l7 policy list API implementation: https://github.com/openstack/neutron-lbaas/blob/8e8a6c47c7d38fa7b61850ff9ea2cf130718ded3/neutron_lbaas/services/loadbalancer/plugin.py#L967 Octavia l7 policy list API implementation: https://github.com/openstack/octavia/blob/54a4cf00cf304b108013ca4487c138c13f30983d/octavia/api/v2/controllers/l7policy.py#L61
For gophercloud#832 Neutron-LBaaS l7 policy list API implementation: https://github.com/openstack/neutron-lbaas/blob/8e8a6c47c7d38fa7b61850ff9ea2cf130718ded3/neutron_lbaas/services/loadbalancer/plugin.py#L967 Octavia l7 policy list API implementation: https://github.com/openstack/octavia/blob/54a4cf00cf304b108013ca4487c138c13f30983d/octavia/api/v2/controllers/l7policy.py#L61
For gophercloud#832 Neutron-LBaaS l7 policy get API implementation: https://github.com/openstack/neutron-lbaas/blob/8e8a6c47c7d38fa7b61850ff9ea2cf130718ded3/neutron_lbaas/services/loadbalancer/plugin.py#L971 Octavia l7 policy get API implementation: https://github.com/openstack/octavia/blob/54a4cf00cf304b108013ca4487c138c13f30983d/octavia/api/v2/controllers/l7policy.py#L47
For gophercloud#832 Neutron-LBaaS l7 policy delete API implementation: https://github.com/openstack/neutron-lbaas/blob/8e8a6c47c7d38fa7b61850ff9ea2cf130718ded3/neutron_lbaas/services/loadbalancer/plugin.py#L954 Octavia l7 policy delete API implementation: https://github.com/openstack/octavia/blob/54a4cf00cf304b108013ca4487c138c13f30983d/octavia/api/v2/controllers/l7policy.py#L253
* LBaaS v2 l7 policy support - part 3: get l7policy For #832 Neutron-LBaaS l7 policy get API implementation: https://github.com/openstack/neutron-lbaas/blob/8e8a6c47c7d38fa7b61850ff9ea2cf130718ded3/neutron_lbaas/services/loadbalancer/plugin.py#L971 Octavia l7 policy get API implementation: https://github.com/openstack/octavia/blob/54a4cf00cf304b108013ca4487c138c13f30983d/octavia/api/v2/controllers/l7policy.py#L47 * LBaaS v2 l7 policy support - part 4: delete l7policy For #832 Neutron-LBaaS l7 policy delete API implementation: https://github.com/openstack/neutron-lbaas/blob/8e8a6c47c7d38fa7b61850ff9ea2cf130718ded3/neutron_lbaas/services/loadbalancer/plugin.py#L954 Octavia l7 policy delete API implementation: https://github.com/openstack/octavia/blob/54a4cf00cf304b108013ca4487c138c13f30983d/octavia/api/v2/controllers/l7policy.py#L253 * Add missing parameter
For gophercloud#832 Neutron-LBaaS l7 policy update API implementation: https://github.com/openstack/neutron-lbaas/blob/ac720b2a49720fb99e4189f93d5a83cfb295ccb3/neutron_lbaas/services/loadbalancer/plugin.py#L931 Octavia l7 policy update API implementation: https://github.com/openstack/octavia/blob/06bf5c58d5845f684fcaf933605ed112586eefc3/octavia/api/v2/controllers/l7policy.py#L204
For gophercloud#832 Neutron-LBaaS l7 policy update API implementation: https://github.com/openstack/neutron-lbaas/blob/ac720b2a49720fb99e4189f93d5a83cfb295ccb3/neutron_lbaas/services/loadbalancer/plugin.py#L931 Octavia l7 policy update API implementation: https://github.com/openstack/octavia/blob/06bf5c58d5845f684fcaf933605ed112586eefc3/octavia/api/v2/controllers/l7policy.py#L204
For gophercloud#832 Neutron-LBaaS l7 policy update API implementation: https://github.com/openstack/neutron-lbaas/blob/ac720b2a49720fb99e4189f93d5a83cfb295ccb3/neutron_lbaas/services/loadbalancer/plugin.py#L931 Octavia l7 policy update API implementation: https://github.com/openstack/octavia/blob/06bf5c58d5845f684fcaf933605ed112586eefc3/octavia/api/v2/controllers/l7policy.py#L204
For gophercloud#832 Neutron-LBaaS l7 policy update API implementation: https://github.com/openstack/neutron-lbaas/blob/ac720b2a49720fb99e4189f93d5a83cfb295ccb3/neutron_lbaas/services/loadbalancer/plugin.py#L931 Octavia l7 policy update API implementation: https://github.com/openstack/octavia/blob/06bf5c58d5845f684fcaf933605ed112586eefc3/octavia/api/v2/controllers/l7policy.py#L204
* LBaaS v2 l7 policy support - part 5: update l7policy For #832 Neutron-LBaaS l7 policy update API implementation: https://github.com/openstack/neutron-lbaas/blob/ac720b2a49720fb99e4189f93d5a83cfb295ccb3/neutron_lbaas/services/loadbalancer/plugin.py#L931 Octavia l7 policy update API implementation: https://github.com/openstack/octavia/blob/06bf5c58d5845f684fcaf933605ed112586eefc3/octavia/api/v2/controllers/l7policy.py#L204 * Allow empty string for name and description fields
For gophercloud#832 Octavia l7 rule create API implementation: https://github.com/openstack/octavia/blob/06bf5c58d5845f684fcaf933605ed112586eefc3/octavia/api/v2/controllers/l7rule.py#L146
* Octavia l7 rule support - part 1: create For #832 Octavia l7 rule create API implementation: https://github.com/openstack/octavia/blob/06bf5c58d5845f684fcaf933605ed112586eefc3/octavia/api/v2/controllers/l7rule.py#L146 * Use project_id instead of tenant_id
For gophercloud#832 Octavia l7 rule list API implementation: - https://github.com/openstack/octavia/blob/69a45c254be854dbdbff946dbe2564711cdecec3/octavia/api/v2/controllers/l7rule.py#L59 - https://github.com/openstack/octavia/blob/69a45c254be854dbdbff946dbe2564711cdecec3/octavia/api/v2/types/l7rule.py#L26
For gophercloud#832 Octavia l7 rule Get API implementation: - https://github.com/openstack/octavia/blob/69a45c254be854dbdbff946dbe2564711cdecec3/octavia/api/v2/controllers/l7rule.py#L45 - https://github.com/openstack/octavia/blob/69a45c254be854dbdbff946dbe2564711cdecec3/octavia/api/v2/types/l7rule.py#L26
For gophercloud#832 Octavia l7 rule Delete API implementation: - https://github.com/openstack/octavia/blob/69a45c254be854dbdbff946dbe2564711cdecec3/octavia/api/v2/controllers/l7rule.py#L228
For gophercloud#832 Octavia l7 rule PUT API implementation: - https://github.com/openstack/octavia/blob/69a45c254be854dbdbff946dbe2564711cdecec3/octavia/api/v2/controllers/l7rule.py#L189
* Octavia l7 rule support - part 5(final): update For #832 Octavia l7 rule PUT API implementation: - https://github.com/openstack/octavia/blob/69a45c254be854dbdbff946dbe2564711cdecec3/octavia/api/v2/controllers/l7rule.py#L189 * Catch error when constructing update request body
hi, @jtopjian this issue could be closed :-) I will submit follow up patches for improvement or potential bugfix, thanks a lot for your review so far! |
Sounds good! As well, thank you for your work implementing this -- it's very much appreciated! 🎉 |
Please refer to: https://docs.openstack.org/octavia/latest/user/guides/l7.html
The text was updated successfully, but these errors were encountered: