agent
包括 agent.py、agent_api.py、agent_device_driver.py agent_manager.py 等模块,实现 LBaaS 服务的 agent 部分。
agent.py
按照标准流程,启动了一个 LbaasAgentService 服务,主代码如下。
其中,管理服务类为 agent_manager 中的 LbaasAgentManager 类。
LbaasAgentService 类是一个 rpc 服务类,定期执行管理服务类中的周期性任务。
agent_manager.py
主要就是定义了 LbaasAgentManager 类,继承自 n_rpc.RpcCallback 和 periodic_task.PeriodicTasks。
作为 agent 中的管理类。它实现了 LBaaS 中定义的各种操作 API,包括:
agent_updated
collect_stats
create_member
create_pool
create_pool_health_monitor
create_vip
delete_member
delete_pool
delete_pool_health_monitor
delete_vip
initialize_service_hook
periodic_resync
remove_orphans
sync_state
update_member
update_pool
update_pool_health_monitor
update_vip
这些操作又是通过调用更下一层的 driver 来实现。
同时,它定义了一个 rpc api 调用成员,向 topics.LOADBALANCER_PLUGIN 主题发送消息。
agent_api.py
主要定义了 LbaasAgentApi 类,继承自 n_rpc.RpcProxy,也是一个典型的 RPC 代理类。
这个类在 LbaasAgentManager 类中使用,用来负责替 agent 向指定的主题发送消息,调用监听者的对应方法。主要包括:
get_logical_device
get_ready_devices
plug_vip_port
pool_deployed
pool_destroyed
unplug_vip_port
update_pool_stats
update_status
agent_device_driver.py
主要定义了 AgentDeviceDriver 类,是一个抽象类,抽象出来支持 LBaaS agent 所需要 API 的一个驱动类。这些 API 包括对 pool、member 等资源的 CRUD 等。
Last updated
Was this helpful?