F5Networks / f5-openstack-agent

The F5 Agent for OpenStack Neutron allows you to deploy BIG-IP services in an OpenStack environment.
http://clouddocs.f5.com/products/openstack/agent/latest
Apache License 2.0
14 stars 38 forks source link

Default pool ID ignored in listener update #645

Closed jlongstaf closed 7 years ago

jlongstaf commented 7 years ago

Description

Agent fails to set virtual server pool reference on BIG-IP in response to lbaas-listener-update --default-pool-id

Agent Version

9.2.0

Operating System

SuSE

OpenStack Release

Mitaka

Description

We are seeing issues with the ‘detached’ pool functionality. Specifically, when we issue and update listener command from the CLI with a default pool set we see the listener default pool is set in Neutron, but in the VS on the devices the pool is set to None.

I think I see why, I just don’t understand how it can ever have worked, unless I’m missing something. As far as I can see everything on the agent is done with reference to a service dict, which is passed via RPC from the driver. Pools are built in the service builder as a list of dicts with key ‘pools’ https://github.com/F5Networks/f5-openstack-lbaasv2-driver/blob/mitaka/f5lbaasdriver/v2/bigip/service_builder.py#L133-L134

In the agent code I see this method https://github.com/F5Networks/f5-openstack-agent/blob/master/f5_openstack_agent/lbaasv2/drivers/bigip/service_adapter.py#L127-L138 which as far as I can tell is never called (https://github.com/F5Networks/f5-openstack-agent/search?utf8=%E2%9C%93&q=get_vip_default_pool&type=)

I’m also seeing this being used to get a pool from the service service[“pool”] e.g. https://github.com/F5Networks/f5-openstack-agent/blob/master/f5_openstack_agent/lbaasv2/drivers/bigip/service_adapter.py#L95-L98 and it’s not clear to me from the driver service builder code how the key “pool” can exist in the service dict.

Can you confirm the lbaas-listener-update –default-pool xxxx yyyy works? It’s critical to our customers use case, specifically for blue/green deployment scenarios.

Deployment

Multiple BIG-IPs.

jlongstaf commented 7 years ago

The agent currently supports listener create and update with default-pool-id. The agent code does not directly process 'default-pool-id' and instead relies on association between pools and listeners defined in the service object. These associations are correctly defined in the service object passed from driver to agent when default-pool-id is present in the CLI or REST API.