VOL-2112 move to voltha-lib-go
Change-Id: I3435b8acb982deeab6b6ac28e798d7722ad01d0a
diff --git a/vendor/gopkg.in/jcmturner/gokrb5.v7/krberror/error.go b/vendor/gopkg.in/jcmturner/gokrb5.v7/krberror/error.go
new file mode 100644
index 0000000..d591bde
--- /dev/null
+++ b/vendor/gopkg.in/jcmturner/gokrb5.v7/krberror/error.go
@@ -0,0 +1,67 @@
+// Package krberror provides error type and functions for gokrb5.
+package krberror
+
+import (
+ "fmt"
+ "strings"
+)
+
+// Error type descriptions.
+const (
+ separator = " < "
+ EncodingError = "Encoding_Error"
+ NetworkingError = "Networking_Error"
+ DecryptingError = "Decrypting_Error"
+ EncryptingError = "Encrypting_Error"
+ ChksumError = "Checksum_Error"
+ KRBMsgError = "KRBMessage_Handling_Error"
+ ConfigError = "Configuration_Error"
+ KDCError = "KDC_Error"
+)
+
+// Krberror is an error type for gokrb5
+type Krberror struct {
+ RootCause string
+ EText []string
+}
+
+// Error function to implement the error interface.
+func (e Krberror) Error() string {
+ return fmt.Sprintf("[Root cause: %s] ", e.RootCause) + strings.Join(e.EText, separator)
+}
+
+// Add another error statement to the error.
+func (e *Krberror) Add(et string, s string) {
+ e.EText = append([]string{fmt.Sprintf("%s: %s", et, s)}, e.EText...)
+}
+
+// NewKrberror creates a new instance of Krberror.
+func NewKrberror(et, s string) Krberror {
+ return Krberror{
+ RootCause: et,
+ EText: []string{s},
+ }
+}
+
+// Errorf appends to or creates a new Krberror.
+func Errorf(err error, et, format string, a ...interface{}) Krberror {
+ if e, ok := err.(Krberror); ok {
+ e.Add(et, fmt.Sprintf(format, a...))
+ return e
+ }
+ return NewErrorf(et, format+": %s", append(a, err)...)
+}
+
+// NewErrorf creates a new Krberror from a formatted string.
+func NewErrorf(et, format string, a ...interface{}) Krberror {
+ var s string
+ if len(a) > 0 {
+ s = fmt.Sprintf("%s: %s", et, fmt.Sprintf(format, a...))
+ } else {
+ s = fmt.Sprintf("%s: %s", et, format)
+ }
+ return Krberror{
+ RootCause: et,
+ EText: []string{s},
+ }
+}