application.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package errors
  2. import (
  3. "fmt"
  4. "net/url"
  5. "github.com/Sirupsen/logrus"
  6. )
  7. // ApplicationError error group indicates application related errors.
  8. // Starting with error code 3xxx.
  9. const ApplicationError = 3000
  10. // ErrUnknownApplicationError indicates an unknown application error.
  11. const ErrUnknownApplicationError = 3001
  12. // UnknownApplicationError ...
  13. func UnknownApplicationError(e error) Error {
  14. err := Error{
  15. Message: fmt.Sprintf("unknown application error: %v", e),
  16. Code: ErrUnknownApplicationError,
  17. }
  18. logrus.WithFields(logrus.Fields(err.Args)).Error(err)
  19. return err
  20. }
  21. // ErrMustBeLoopbackURL indicates that given url does not resolv to a known looback ip addr.
  22. const ErrMustBeLoopbackURL = 3002
  23. // MustBeLoopbackURL ...
  24. func MustBeLoopbackURL(url *url.URL) Error {
  25. err := Error{
  26. Message: "url must resolve to a known looback ip addr",
  27. Code: ErrMustBeLoopbackURL,
  28. Args: map[string]interface{}{
  29. "url": url.String(),
  30. },
  31. }
  32. logrus.WithFields(logrus.Fields(err.Args)).Error(err)
  33. return err
  34. }
  35. // ErrBadURL indicates that given url string can not be parsed.
  36. const ErrBadURL = 3003
  37. // BadURL ...
  38. func BadURL(urlStr string, e error) Error {
  39. err := Error{
  40. Message: fmt.Sprintf("url string can not be parsed: %v", e),
  41. Code: ErrBadURL,
  42. Args: map[string]interface{}{
  43. "url": urlStr,
  44. },
  45. }
  46. logrus.WithFields(logrus.Fields(err.Args)).Error(err)
  47. return err
  48. }
  49. // ErrEmptyValue indicates that given value is empty.
  50. const ErrEmptyValue = 3004
  51. // EmptyValue ...
  52. func EmptyValue(key string, value interface{}) Error {
  53. err := Error{
  54. Message: fmt.Sprintf("value is empty: %v", value),
  55. Code: ErrEmptyValue,
  56. Args: map[string]interface{}{
  57. "key": key,
  58. "value": value,
  59. },
  60. }
  61. logrus.WithFields(logrus.Fields(err.Args)).Error(err)
  62. return err
  63. }
  64. // ErrNotIPv4 indicates that given value is not an IPv4.
  65. const ErrNotIPv4 = 3005
  66. // NotIPv4 ...
  67. func NotIPv4(str string) Error {
  68. err := Error{
  69. Message: fmt.Sprintf("'%s' is not an IPv4 address", str),
  70. Code: ErrNotIPv4,
  71. }
  72. logrus.WithFields(logrus.Fields(err.Args)).Error(err)
  73. return err
  74. }
  75. // ErrConflictingDemands indicates that users demands are conflicting with each other.
  76. const ErrConflictingDemands = 3006
  77. // ConflictingDemands ...
  78. func ConflictingDemands(msg string) Error {
  79. err := Error{
  80. Message: msg,
  81. Code: ErrConflictingDemands,
  82. }
  83. logrus.WithFields(logrus.Fields(err.Args)).Error(err)
  84. return err
  85. }
  86. // ErrNotHostname indicates that given value is not an hostname.
  87. const ErrNotHostname = 3007
  88. // NotHostname ...
  89. func NotHostname(str string) Error {
  90. err := Error{
  91. Message: fmt.Sprintf("'%s' is not a valid host name", str),
  92. Code: ErrNotHostname,
  93. }
  94. logrus.WithFields(logrus.Fields(err.Args)).Error(err)
  95. return err
  96. }
  97. // ErrNotCIDR indicates that given value is not a CIDR.
  98. const ErrNotCIDR = 3008
  99. // NotCIDR ...
  100. func NotCIDR(str string) Error {
  101. err := Error{
  102. Message: fmt.Sprintf("'%s' is not a valid CIDR", str),
  103. Code: ErrNotCIDR,
  104. }
  105. logrus.WithFields(logrus.Fields(err.Args)).Error(err)
  106. return err
  107. }
  108. // ErrInvalidPort indicates that given value is not a valid port number.
  109. const ErrInvalidPort = 3009
  110. // InvalidPort ...
  111. func InvalidPort(str string) Error {
  112. err := Error{
  113. Message: fmt.Sprintf("'%s' is not a valid port number", str),
  114. Code: ErrInvalidPort,
  115. }
  116. logrus.WithFields(logrus.Fields(err.Args)).Error(err)
  117. return err
  118. }
  119. // ErrUnconfirmed indicates a UI confirmation dialog is cancelled by the user.
  120. const ErrUnconfirmed = 3010
  121. // Unconfirmed ...
  122. func Unconfirmed(str string) Error {
  123. err := Error{
  124. Message: fmt.Sprintf("confirmation failed: '%s'", str),
  125. Code: ErrUnconfirmed,
  126. }
  127. logrus.WithFields(logrus.Fields(err.Args)).Error(err)
  128. return err
  129. }
  130. // ErrNotValidNetworkType indicates that supplied network type is invalid.
  131. const ErrNotValidNetworkType = 3011
  132. // NotValidNetworkType ...
  133. func NotValidNetworkType(key string, value interface{}) Error {
  134. err := Error{
  135. Message: fmt.Sprintf("invalid network type: %v", value),
  136. Code: ErrNotValidNetworkType,
  137. Args: map[string]interface{}{
  138. "key": key,
  139. "value": value,
  140. },
  141. }
  142. logrus.WithFields(logrus.Fields(err.Args)).Error(err)
  143. return err
  144. }