Introduce a new job with a golang CPI skeleton #278
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As mentioned before in the community meeting, we are currently developing and started using a new Golang-based Openstack CPI. Over the course of the next weeks/months we will follow up with many small PRs that you can easily follow and review, hoping that we catch up with the our internal implementation and use/develop directly from this upstream code-base.
Outcome of this PR
With this PR, we are introducing a new independent job for the Bosh release which can be used instead to use the Golang version of the CPI. Instead of doing a big bang rollout, we are developing and improving the Go-based implementation one CPI method at a time. With the help of the cpi.erb template we navigate unimplemented/erroneous cpi method calls to the the ruby or go implementations.
In this PR, we introduce the skeleton of the src folder, and only an implementation of the 'info' CPI method call.
Background
Maintaining the existing Ruby CPI implies sustaining the used openstack-fog and fog core libraries. But that would be very problematic since the communities for these libraries do not seem to be active since some years now.
Fog isn't just a thin wrapper around the OpenStack API. On the contrary, Fog returns rich modules and classes that need to be refreshed, updated, ... . That means, replacing Fog calls by REST calls isn't a trivial task and will finally end up in a more or less complete re-implementation of the CPI.
A Golang based CPI reimplementation would profit from the existence of an actively maintained Golang SDK for OpenStack (see: https://github.com/gophercloud/gophercloud)
Worth to mention, this is not a 1:1 implementation of the Ruby CPI. We try to improve and change the structure as we best see fit. Deprecated APIs are not supported by this CPI, hence we only support the Octavia APIs, Compute APIs, Networking APIs ... and not the neutron/networking endpoints.