Re-write Fuxi with Golang

Registered by hongbin

Re-write Fuxi by using Golang.

* Refer Fuxi's python code and https://github.com/j-griffith/cinder-docker-driver as a base
* Use gophercloud to talk to cinder

Blueprint information

Status:
Not started
Approver:
Antoni Segura Puimedon
Priority:
Undefined
Drafter:
hongbin
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

Possible approach for this is to build off the existing golang version at
    https://github.com/j-griffith/cinder-docker-driver

Priorities:
    * Update existing code to work with current docker-volume-plugin-helper
    * Reset all the deps including/especially Gophercloud (that's still pinned to a very old version)
          - Needs things like Keystone V3
          - NoAuth support, looks like it needs a PR to GopherCloud last time I looked
    * Unit tests
    * Need to decide how to deal with the lack of os-brick in golang
        - ? Port functionality of os-brick into a go pkg?
        - ? Figure out some way to bind?
            * If we go with this option, we could leverage this work: https://github.com/leonwanghui/os-brick . This is a fork of os-brick to turn it into a service. With that, it is possible to develop a golang client to interface with the service. However, I see it as a temporary solution. The long-term solution is fully re-implementing os-brick in go IMO.
        - ? Write a new pkg, or find and existing Open Source equivalent that we can leverage?

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.