stack/erp5: Fix NEO URL formatting for WCFS
The NEO/go commit kirr/neo@8c974485 changed the URL with which a NEO/go client can be loaded from
// neo://name@master1,master2,...,masterN?options
to
neo(s)://[credentials@]master1,master2,...,masterN/name?options
We need to apply this change in the NEO URL structure to instance-wcfs.cfg.in to use WCFS with NEO storage.
Why?
The URL in instance-wcfs.cfg.in is finally send to wcfs binary, which will open a NEO/go client with this URL via the "openClientByURL" function [1]. If the URL formatting instance-wcfs.cfg.in follows the old pattern, NEO/go is unable to create a NEO/go client and may even raise an exception [2], because information regarding NEO server is at the wrong position of the URL.
[1] See https://lab.nexedi.com/kirr/neo/blob/87199da2b163c09ed3946b7ab9bb00a5b987d377/go/neo/client.go#L416-534 for openClientByURL.
[2] For instance when using the old pattern of putting the cluster name in the "user" part, NEO/go will raise "credentials can be specified only with neos:// scheme", because NEO/go reserves the "user" part for encryption information, see https://lab.nexedi.com/kirr/neo/blob/87199da2b163c09ed3946b7ab9bb00a5b987d377/go/neo/client.go#L449
This is a follow-up MR of !1283 (closed).
Currently the proposed fix can't be automatically tested by our integration test suite. Please see this comment for an explanation.
@jerome, is it okay to build the URL here with strong concatenation?
I noticed you suggested adding Do not build/parse URL by string manipulation
to coding crimes in this forum entry.
Maybe we could consider using namedtuple
with urlunparse
as it is demonstrated here.