Add pool management support to the kubectl plugin

Registered by Antoni Segura Puimedon

Kuryr's kubectl /oc plugin is very useful for seeing the current networking status for vifs. It would be great if we can use it to display and manage pools

Blueprint information

Status:
Not started
Approver:
Antoni Segura Puimedon
Priority:
Undefined
Drafter:
Antoni Segura Puimedon
Direction:
Approved
Assignee:
Maysa de Macedo Souza
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

Since we currently do not have CRDs for pools and ports, this will have to rely (at least for now) on getting the information from the kuryr controller memory. We currently optionally bind a flask server to localhost for doing pool management work. We could probably access it from the plugin interface somehow (safe).

Things to add:

kubectl plugin kuryr get pool
kubectl plugin kuryr get pools

List the pools that exist putting which node they belong to and so on.
The basic information is the name, size, usage and availability.
In the wide format we can probably show the Security Groups applied and stuff like that

kubectl plugin kuryr get port
kubectl plugin kuryr get ports

This is not supported by the pool management flask server, but maybe we can extend it to give port information. It could give you information about which pool the port belongs, Security Groups, If it is being used (the pod name)

kubectl plugin kuryr scale pools poolname --replicas=300
kubectl plugin kuryr scale pools/poolname --replicas=300

Set the specified pool port amount to 300. This does not mean increase by three hundred but rather to grow the pool to 300 ports of size. This should be rejected if there's more than 300 ports used in the pool.

Gerrit topic: https://review.openstack.org/#q,topic:bp/kubectl-plugin-pool-support,n,z

Addressed by: https://review.openstack.org/548453
    Add pool management support to kubectl plugin

Addressed by: https://review.openstack.org/548661
    [WIP] Add pool management support to kubectl plugin

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.