CLI request when namespace is in argument and part of the path (#12720)

* CLI makes request to incorrect URL when namespace is both provided as argument and part of the path
fixes #12675

* adding change log

* removing a switch and addressing a possibility of out of bound index
This commit is contained in:
hghaf099 2021-10-21 22:35:13 -04:00 committed by GitHub
parent fa5ea438c1
commit b472d7ed3f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 5 deletions

3
changelog/12720.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:bug
cli: fixes CLI requests when namespace is both provided as argument and part of the path
```

View File

@ -106,13 +106,29 @@ func isKVv2(path string, client *api.Client) (string, bool, error) {
}
func addPrefixToVKVPath(p, mountPath, apiPrefix string) string {
switch {
case p == mountPath, p == strings.TrimSuffix(mountPath, "/"):
if p == mountPath || p == strings.TrimSuffix(mountPath, "/") {
return path.Join(mountPath, apiPrefix)
default:
p = strings.TrimPrefix(p, mountPath)
return path.Join(mountPath, apiPrefix, p)
}
tp := strings.TrimPrefix(p, mountPath)
for {
// If the entire mountPath is included in the path, we are done
if tp != p {
break
}
// Trim the parts of the mountPath that are not included in the
// path, for example, in cases where the mountPath contains
// namespaces which are not included in the path.
partialMountPath := strings.SplitN(mountPath, "/", 2)
if len(partialMountPath) <= 1 || partialMountPath[1] == ""{
break
}
mountPath = partialMountPath[1]
tp = strings.TrimPrefix(p, mountPath)
}
return path.Join(mountPath, apiPrefix, tp)
}
func getHeaderForMap(header string, data map[string]interface{}) string {