mirror of https://github.com/ceph/go-ceph
nfs admin: fix handling of non-existing psuedo_paths for export info
Fixes: #815 When updates to the NFS mgr API were recently merged on Ceph main branch the go-ceph test started failing. This occurred because go-ceph was unintentionally relying on invalid JSON (an empty string) returned from the API call for an invalid export pseudo path. On ceph main it now returns an empty JSON object. This change treats both empty string and empty JSON object as an error explicitly. Signed-off-by: John Mulligan <jmulligan@redhat.com>
This commit is contained in:
parent
d930ba7157
commit
daf48e4aa2
|
@ -4,6 +4,8 @@
|
||||||
package nfs
|
package nfs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
"github.com/ceph/go-ceph/internal/commands"
|
"github.com/ceph/go-ceph/internal/commands"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -26,6 +28,10 @@ const (
|
||||||
Unspecifiedquash SquashMode = ""
|
Unspecifiedquash SquashMode = ""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
errNoExportInfo = errors.New("No export info found")
|
||||||
|
)
|
||||||
|
|
||||||
// SecType indicates the kind of security/authentication to be used by an export.
|
// SecType indicates the kind of security/authentication to be used by an export.
|
||||||
type SecType string
|
type SecType string
|
||||||
|
|
||||||
|
@ -115,6 +121,11 @@ func parseExportsList(res commands.Response) ([]ExportInfo, error) {
|
||||||
|
|
||||||
func parseExportInfo(res commands.Response) (ExportInfo, error) {
|
func parseExportInfo(res commands.Response) (ExportInfo, error) {
|
||||||
i := ExportInfo{}
|
i := ExportInfo{}
|
||||||
|
// different versions of ceph may return nothing or empty json.
|
||||||
|
// detect these cases and return a specific error
|
||||||
|
if res.NoStatus().EmptyBody().Ok() {
|
||||||
|
return i, errNoExportInfo
|
||||||
|
}
|
||||||
if err := res.NoStatus().Unmarshal(&i).End(); err != nil {
|
if err := res.NoStatus().Unmarshal(&i).End(); err != nil {
|
||||||
return i, err
|
return i, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue