make libvirt error types private

also change ErrIsNotFound to IsNotFound

Signed-off-by: Penghui Liao <liaoishere@gmail.com>
This commit is contained in:
Penghui Liao 2018-03-23 10:59:12 +08:00
parent 482640a285
commit 2d4c9f9f6d
No known key found for this signature in database
GPG Key ID: B847939A95E9B47A
4 changed files with 192 additions and 193 deletions

View File

@ -1964,192 +1964,192 @@ const (
StreamEventHangup StreamEventType = 8
)
// ErrorLevel as declared in libvirt/virterror.h:44
type ErrorLevel int32
// errorLevel as declared in libvirt/virterror.h:44
type errorLevel int32
// ErrorLevel enumeration from libvirt/virterror.h:44
// errorLevel enumeration from libvirt/virterror.h:44
const (
ErrNone ErrorLevel = iota
ErrWarning ErrorLevel = 1
ErrError ErrorLevel = 2
errNone errorLevel = iota
errWarning errorLevel = 1
errError errorLevel = 2
)
// ErrorDomain as declared in libvirt/virterror.h:139
type ErrorDomain int32
// errorDomain as declared in libvirt/virterror.h:139
type errorDomain int32
// ErrorDomain enumeration from libvirt/virterror.h:139
// errorDomain enumeration from libvirt/virterror.h:139
const (
FromNone ErrorDomain = iota
FromXen ErrorDomain = 1
FromXend ErrorDomain = 2
FromXenstore ErrorDomain = 3
FromSexpr ErrorDomain = 4
FromXML ErrorDomain = 5
FromDom ErrorDomain = 6
FromRPC ErrorDomain = 7
FromProxy ErrorDomain = 8
FromConf ErrorDomain = 9
FromQemu ErrorDomain = 10
FromNet ErrorDomain = 11
FromTest ErrorDomain = 12
FromRemote ErrorDomain = 13
FromOpenvz ErrorDomain = 14
FromXenxm ErrorDomain = 15
FromStatsLinux ErrorDomain = 16
FromLxc ErrorDomain = 17
FromStorage ErrorDomain = 18
FromNetwork ErrorDomain = 19
FromDomain ErrorDomain = 20
FromUml ErrorDomain = 21
FromNodedev ErrorDomain = 22
FromXenInotify ErrorDomain = 23
FromSecurity ErrorDomain = 24
FromVbox ErrorDomain = 25
FromInterface ErrorDomain = 26
FromOne ErrorDomain = 27
FromEsx ErrorDomain = 28
FromPhyp ErrorDomain = 29
FromSecret ErrorDomain = 30
FromCPU ErrorDomain = 31
FromXenapi ErrorDomain = 32
FromNwfilter ErrorDomain = 33
FromHook ErrorDomain = 34
FromDomainSnapshot ErrorDomain = 35
FromAudit ErrorDomain = 36
FromSysinfo ErrorDomain = 37
FromStreams ErrorDomain = 38
FromVmware ErrorDomain = 39
FromEvent ErrorDomain = 40
FromLibxl ErrorDomain = 41
FromLocking ErrorDomain = 42
FromHyperv ErrorDomain = 43
FromCapabilities ErrorDomain = 44
FromURI ErrorDomain = 45
FromAuth ErrorDomain = 46
FromDbus ErrorDomain = 47
FromParallels ErrorDomain = 48
FromDevice ErrorDomain = 49
FromSSH ErrorDomain = 50
FromLockspace ErrorDomain = 51
FromInitctl ErrorDomain = 52
FromIdentity ErrorDomain = 53
FromCgroup ErrorDomain = 54
FromAccess ErrorDomain = 55
FromSystemd ErrorDomain = 56
FromBhyve ErrorDomain = 57
FromCrypto ErrorDomain = 58
FromFirewall ErrorDomain = 59
FromPolkit ErrorDomain = 60
FromThread ErrorDomain = 61
FromAdmin ErrorDomain = 62
FromLogging ErrorDomain = 63
FromXenxl ErrorDomain = 64
FromPerf ErrorDomain = 65
FromLibssh ErrorDomain = 66
fromNone errorDomain = iota
fromXen errorDomain = 1
fromXend errorDomain = 2
fromXenstore errorDomain = 3
fromSexpr errorDomain = 4
fromXML errorDomain = 5
fromDom errorDomain = 6
fromRPC errorDomain = 7
fromProxy errorDomain = 8
fromConf errorDomain = 9
fromQemu errorDomain = 10
fromNet errorDomain = 11
fromTest errorDomain = 12
fromRemote errorDomain = 13
fromOpenvz errorDomain = 14
fromXenxm errorDomain = 15
fromStatsLinux errorDomain = 16
fromLxc errorDomain = 17
fromStorage errorDomain = 18
fromNetwork errorDomain = 19
fromDomain errorDomain = 20
fromUml errorDomain = 21
fromNodedev errorDomain = 22
fromXenInotify errorDomain = 23
fromSecurity errorDomain = 24
fromVbox errorDomain = 25
fromInterface errorDomain = 26
fromOne errorDomain = 27
fromEsx errorDomain = 28
fromPhyp errorDomain = 29
fromSecret errorDomain = 30
fromCPU errorDomain = 31
fromXenapi errorDomain = 32
fromNwfilter errorDomain = 33
fromHook errorDomain = 34
fromDomainSnapshot errorDomain = 35
fromAudit errorDomain = 36
fromSysinfo errorDomain = 37
fromStreams errorDomain = 38
fromVmware errorDomain = 39
fromEvent errorDomain = 40
fromLibxl errorDomain = 41
fromLocking errorDomain = 42
fromHyperv errorDomain = 43
fromCapabilities errorDomain = 44
fromURI errorDomain = 45
fromAuth errorDomain = 46
fromDbus errorDomain = 47
fromParallels errorDomain = 48
fromDevice errorDomain = 49
fromSSH errorDomain = 50
fromLockspace errorDomain = 51
fromInitctl errorDomain = 52
fromIdentity errorDomain = 53
fromCgroup errorDomain = 54
fromAccess errorDomain = 55
fromSystemd errorDomain = 56
fromBhyve errorDomain = 57
fromCrypto errorDomain = 58
fromFirewall errorDomain = 59
fromPolkit errorDomain = 60
fromThread errorDomain = 61
fromAdmin errorDomain = 62
fromLogging errorDomain = 63
fromXenxl errorDomain = 64
fromPerf errorDomain = 65
fromLibssh errorDomain = 66
)
// ErrorNumber as declared in libvirt/virterror.h:322
type ErrorNumber int32
// errorNumber as declared in libvirt/virterror.h:322
type errorNumber int32
// ErrorNumber enumeration from libvirt/virterror.h:322
// errorNumber enumeration from libvirt/virterror.h:322
const (
ErrOk ErrorNumber = iota
ErrInternalError ErrorNumber = 1
ErrNoMemory ErrorNumber = 2
ErrNoSupport ErrorNumber = 3
ErrUnknownHost ErrorNumber = 4
ErrNoConnect ErrorNumber = 5
ErrInvalidConn ErrorNumber = 6
ErrInvalidDomain ErrorNumber = 7
ErrInvalidArg ErrorNumber = 8
ErrOperationFailed ErrorNumber = 9
ErrGetFailed ErrorNumber = 10
ErrPostFailed ErrorNumber = 11
ErrHTTPError ErrorNumber = 12
ErrSexprSerial ErrorNumber = 13
ErrNoXen ErrorNumber = 14
ErrXenCall ErrorNumber = 15
ErrOsType ErrorNumber = 16
ErrNoKernel ErrorNumber = 17
ErrNoRoot ErrorNumber = 18
ErrNoSource ErrorNumber = 19
ErrNoTarget ErrorNumber = 20
ErrNoName ErrorNumber = 21
ErrNoOs ErrorNumber = 22
ErrNoDevice ErrorNumber = 23
ErrNoXenstore ErrorNumber = 24
ErrDriverFull ErrorNumber = 25
ErrCallFailed ErrorNumber = 26
ErrXMLError ErrorNumber = 27
ErrDomExist ErrorNumber = 28
ErrOperationDenied ErrorNumber = 29
ErrOpenFailed ErrorNumber = 30
ErrReadFailed ErrorNumber = 31
ErrParseFailed ErrorNumber = 32
ErrConfSyntax ErrorNumber = 33
ErrWriteFailed ErrorNumber = 34
ErrXMLDetail ErrorNumber = 35
ErrInvalidNetwork ErrorNumber = 36
ErrNetworkExist ErrorNumber = 37
ErrSystemError ErrorNumber = 38
ErrRPC ErrorNumber = 39
ErrGnutlsError ErrorNumber = 40
WarNoNetwork ErrorNumber = 41
ErrNoDomain ErrorNumber = 42
ErrNoNetwork ErrorNumber = 43
ErrInvalidMac ErrorNumber = 44
ErrAuthFailed ErrorNumber = 45
ErrInvalidStoragePool ErrorNumber = 46
ErrInvalidStorageVol ErrorNumber = 47
WarNoStorage ErrorNumber = 48
ErrNoStoragePool ErrorNumber = 49
ErrNoStorageVol ErrorNumber = 50
WarNoNode ErrorNumber = 51
ErrInvalidNodeDevice ErrorNumber = 52
ErrNoNodeDevice ErrorNumber = 53
ErrNoSecurityModel ErrorNumber = 54
ErrOperationInvalid ErrorNumber = 55
WarNoInterface ErrorNumber = 56
ErrNoInterface ErrorNumber = 57
ErrInvalidInterface ErrorNumber = 58
ErrMultipleInterfaces ErrorNumber = 59
WarNoNwfilter ErrorNumber = 60
ErrInvalidNwfilter ErrorNumber = 61
ErrNoNwfilter ErrorNumber = 62
ErrBuildFirewall ErrorNumber = 63
WarNoSecret ErrorNumber = 64
ErrInvalidSecret ErrorNumber = 65
ErrNoSecret ErrorNumber = 66
ErrConfigUnsupported ErrorNumber = 67
ErrOperationTimeout ErrorNumber = 68
ErrMigratePersistFailed ErrorNumber = 69
ErrHookScriptFailed ErrorNumber = 70
ErrInvalidDomainSnapshot ErrorNumber = 71
ErrNoDomainSnapshot ErrorNumber = 72
ErrInvalidStream ErrorNumber = 73
ErrArgumentUnsupported ErrorNumber = 74
ErrStorageProbeFailed ErrorNumber = 75
ErrStoragePoolBuilt ErrorNumber = 76
ErrSnapshotRevertRisky ErrorNumber = 77
ErrOperationAborted ErrorNumber = 78
ErrAuthCancelled ErrorNumber = 79
ErrNoDomainMetadata ErrorNumber = 80
ErrMigrateUnsafe ErrorNumber = 81
ErrOverflow ErrorNumber = 82
ErrBlockCopyActive ErrorNumber = 83
ErrOperationUnsupported ErrorNumber = 84
ErrSSH ErrorNumber = 85
ErrAgentUnresponsive ErrorNumber = 86
ErrResourceBusy ErrorNumber = 87
ErrAccessDenied ErrorNumber = 88
ErrDbusService ErrorNumber = 89
ErrStorageVolExist ErrorNumber = 90
ErrCPUIncompatible ErrorNumber = 91
ErrXMLInvalidSchema ErrorNumber = 92
ErrMigrateFinishOk ErrorNumber = 93
ErrAuthUnavailable ErrorNumber = 94
ErrNoServer ErrorNumber = 95
ErrNoClient ErrorNumber = 96
ErrAgentUnsynced ErrorNumber = 97
ErrLibssh ErrorNumber = 98
errOk errorNumber = iota
errInternalError errorNumber = 1
errNoMemory errorNumber = 2
errNoSupport errorNumber = 3
errUnknownHost errorNumber = 4
errNoConnect errorNumber = 5
errInvalidConn errorNumber = 6
errInvalidDomain errorNumber = 7
errInvalidArg errorNumber = 8
errOperationFailed errorNumber = 9
errGetFailed errorNumber = 10
errPostFailed errorNumber = 11
errHTTPError errorNumber = 12
errSexprSerial errorNumber = 13
errNoXen errorNumber = 14
errXenCall errorNumber = 15
errOsType errorNumber = 16
errNoKernel errorNumber = 17
errNoRoot errorNumber = 18
errNoSource errorNumber = 19
errNoTarget errorNumber = 20
errNoName errorNumber = 21
errNoOs errorNumber = 22
errNoDevice errorNumber = 23
errNoXenstore errorNumber = 24
errDriverFull errorNumber = 25
errCallFailed errorNumber = 26
errXMLError errorNumber = 27
errDomExist errorNumber = 28
errOperationDenied errorNumber = 29
errOpenFailed errorNumber = 30
errReadFailed errorNumber = 31
errParseFailed errorNumber = 32
errConfSyntax errorNumber = 33
errWriteFailed errorNumber = 34
errXMLDetail errorNumber = 35
errInvalidNetwork errorNumber = 36
errNetworkExist errorNumber = 37
errSystemError errorNumber = 38
errRPC errorNumber = 39
errGnutlsError errorNumber = 40
warNoNetwork errorNumber = 41
errNoDomain errorNumber = 42
errNoNetwork errorNumber = 43
errInvalidMac errorNumber = 44
errAuthFailed errorNumber = 45
errInvalidStoragePool errorNumber = 46
errInvalidStorageVol errorNumber = 47
warNoStorage errorNumber = 48
errNoStoragePool errorNumber = 49
errNoStorageVol errorNumber = 50
warNoNode errorNumber = 51
errInvalidNodeDevice errorNumber = 52
errNoNodeDevice errorNumber = 53
errNoSecurityModel errorNumber = 54
errOperationInvalid errorNumber = 55
warNoInterface errorNumber = 56
errNoInterface errorNumber = 57
errInvalidInterface errorNumber = 58
errMultipleInterfaces errorNumber = 59
warNoNwfilter errorNumber = 60
errInvalidNwfilter errorNumber = 61
errNoNwfilter errorNumber = 62
errBuildFirewall errorNumber = 63
warNoSecret errorNumber = 64
errInvalidSecret errorNumber = 65
errNoSecret errorNumber = 66
errConfigUnsupported errorNumber = 67
errOperationTimeout errorNumber = 68
errMigratePersistFailed errorNumber = 69
errHookScriptFailed errorNumber = 70
errInvalidDomainSnapshot errorNumber = 71
errNoDomainSnapshot errorNumber = 72
errInvalidStream errorNumber = 73
errArgumentUnsupported errorNumber = 74
errStorageProbeFailed errorNumber = 75
errStoragePoolBuilt errorNumber = 76
errSnapshotRevertRisky errorNumber = 77
errOperationAborted errorNumber = 78
errAuthCancelled errorNumber = 79
errNoDomainMetadata errorNumber = 80
errMigrateUnsafe errorNumber = 81
errOverflow errorNumber = 82
errBlockCopyActive errorNumber = 83
errOperationUnsupported errorNumber = 84
errSSH errorNumber = 85
errAgentUnresponsive errorNumber = 86
errResourceBusy errorNumber = 87
errAccessDenied errorNumber = 88
errDbusService errorNumber = 89
errStorageVolExist errorNumber = 90
errCPUIncompatible errorNumber = 91
errXMLInvalidSchema errorNumber = 92
errMigrateFinishOk errorNumber = 93
errAuthUnavailable errorNumber = 94
errNoServer errorNumber = 95
errNoClient errorNumber = 96
errAgentUnsynced errorNumber = 97
errLibssh errorNumber = 98
)

View File

@ -56,6 +56,7 @@ TRANSLATOR:
- {action: replace, from: "Rpc([A-Z]|$)", to: "RPC$1"}
- {action: replace, from: "Ssh([A-Z]|$)", to: "SSH$1"}
- {action: replace, from: "Http([A-Z]|$)", to: "HTTP$1"}
- {transform: unexport, from: "^(Err|From|War)"}
const:
- {action: accept, from: "^VIR_"}
# Special case to prevent a collision with a type:

20
rpc.go
View File

@ -18,7 +18,6 @@ import (
"bytes"
"encoding/binary"
"errors"
"fmt"
"io"
"strings"
"sync/atomic"
@ -115,10 +114,10 @@ type libvirtError struct {
}
func (e libvirtError) Error() string {
return fmt.Sprintf("%s, code: %d, domain id: %d", e.Message, e.Code, e.DomainID)
return e.Message
}
func checkError(err error, expectedError ErrorNumber) bool {
func checkError(err error, expectedError errorNumber) bool {
e, ok := err.(libvirtError)
if ok {
return e.Code == uint32(expectedError)
@ -126,14 +125,9 @@ func checkError(err error, expectedError ErrorNumber) bool {
return false
}
// ErrIsNotFound detects libvirt's ERR_NO_DOMAIN.
func ErrIsNotFound(err error) bool {
return checkError(err, ErrNoDomain)
}
// ErrIsOK detects libvirt's ERR_OK.
func ErrIsOK(err error) bool {
return checkError(err, ErrOk)
// IsNotFound detects libvirt's ERR_NO_DOMAIN.
func IsNotFound(err error) bool {
return checkError(err, errNoDomain)
}
// listen processes incoming data and routes
@ -351,6 +345,10 @@ func decodeError(buf []byte) error {
if strings.Contains(e.Message, "unknown procedure") {
return ErrUnsupported
}
// if libvirt returns ERR_OK, ignore the error
if checkError(e, errOk) {
return nil
}
return e
}

View File

@ -89,7 +89,7 @@ var (
}
testErrorMessage = []byte{
0x00, 0x00, 0x00, 0x37, // code (55, ErrOperationInvalid)
0x00, 0x00, 0x00, 0x37, // code (55, errOperationInvalid)
0x00, 0x00, 0x00, 0x0a, // domain id
// message ("Requested operation is not valid: domain is not running")
@ -107,7 +107,7 @@ var (
}
testErrorNotFoundMessage = []byte{
0x00, 0x00, 0x00, 0x2a, // code (42 ErrDoDmain)
0x00, 0x00, 0x00, 0x2a, // code (42 errDoDmain)
0x00, 0x00, 0x00, 0x0a, // domain id
// message
@ -224,7 +224,7 @@ func TestDecodeEvent(t *testing.T) {
func TestDecodeError(t *testing.T) {
expectedMsg := "Requested operation is not valid: domain is not running"
expectedCode := ErrOperationInvalid
expectedCode := errOperationInvalid
err := decodeError(testErrorMessage)
e := err.(libvirtError)
@ -238,7 +238,7 @@ func TestDecodeError(t *testing.T) {
func TestErrNotFound(t *testing.T) {
err := decodeError(testErrorNotFoundMessage)
ok := ErrIsNotFound(err)
ok := IsNotFound(err)
if !ok {
t.Errorf("expected true, got %t", ok)
}