Vcenter plugin to vrouter rest interface

Registered by Rudra Rugge on 2016-06-09

Currently vcenter plugin uses Thrift connections to each of the vrouters. This will be replaced with the new REST API provided by the vrouter agent.

Implementation
------------------------

Vcenter plugin will re-use the code from java-api library for interactions with both vrouter agent and Contrail's API server.

Since Thrift will be removed, vcenter-plugin will need to serialize Port objects in json.

VCenter plugin will send upon restart a special sync/connect request to vrouter agent.

Add/Delete REST requests will contain a field called "port_type=2", to indicate the client is the vcenter-plugin.

Vrouter-agent will save all the added ports info in a file, and it will read it upon its restart. From the vcenter-plugin's perspective, add/delete operations are atomic, and vrouter-agent will return success only after the port has been saved.

Vcenter plugin will implement a retry mechanism for failed REST requests.

- Vcenter plugin restart case:
After vcenter-plugin is restarted, it will send a sync/connect request. If vrouter-agent receives the sync request, it will mark all the ports as “NOT seen”. Vcenter-plugin will send “Add” requests for all ports already present. When vrouter-agent receives “Add” for a port, it will mark the port as “Seen”. After a timeout since the reception of sync request, vrouter-agent will delete all the ports for which it has not seen “Add” (Ports still in “NOT seen” state).

-Vrouter-agent restart case:
Vrouter-agent saves all the added ports info in a file, which is read upon vrouter-agent restarts.
While vrouter-agent is down, if the vcenter-plugin sends any REST request, the request will fail. Vcenter-plugin will add all the failed ports to a retry list.

Test impact
------------------
Following scenarios need to be covered by testing:
- Plugin start with empty ports
- Plugin restart with empty ports
- Add port
- Delete port
- Plugin restart with active ports
- Vrouter crash/stop, add one port, vrouter start
- Vrouter crash/stop, delete one port, vrouter start
- Vrouter crash/stop, add several ports, vrouter start
- Vrouter crash/stop, delete several ports, vrouter start
- Plugin stop, add port , plugin start
- Plugin stop, delete port , plugin start

Blueprint information

Status:
Complete
Approver:
Rudra Rugge
Priority:
High
Drafter:
Rudra Rugge
Direction:
Approved
Assignee:
Andra Cismaru
Definition:
Approved
Series goal:
Accepted for r3.1
Implementation:
Implemented
Milestone target:
milestone icon r3.1.0.0-fcs
Started by
Rudra Rugge on 2016-06-09
Completed by
Rudra Rugge on 2016-08-15

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.