Advertisement
Guest User

Untitled

a guest
Jul 5th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.26 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "flag"
  5. "fmt"
  6. "net/url"
  7. "os"
  8. "strings"
  9. "time"
  10. )
  11.  
  12. var dispersion int
  13. var loginDispersion int
  14. var retries int
  15. var waitForParents bool
  16. var logLevel int
  17.  
  18. var mode string
  19. var urlString string
  20. var username string
  21. var password string
  22.  
  23. func main() {
  24.  
  25. parseCommand()
  26.  
  27. hostname, error := os.Hostname()
  28. if error != nil {
  29. panic(error)
  30. }
  31. fmt.Println("Starting config check at", time.Now())
  32.  
  33. shortHostname := strings.Split(hostname, ".")[0]
  34.  
  35. fmt.Println("full hostname: ", hostname)
  36. fmt.Println("short hostname: ", shortHostname)
  37. fmt.Println(username, password, mode, urlString)
  38. fmt.Println(dispersion)
  39.  
  40. }
  41.  
  42. func parseCommand() {
  43.  
  44. var dispersionPtr = flag.Int("dispersion", 300, "Dispersion range in seconds.")
  45. var loginDispersionPtr = flag.Int("login_dispersion", 0, "Login dispersion range in seconds.")
  46. var retriesPtr = flag.Int("retries", 3, "Retry connection attempts to TO URL <number> times.")
  47. var waitForParentsPtr = flag.Bool("wait_for_parents", true, "Do not update if a parent cache is still pending.")
  48. var logLevelPtr = flag.String("log_level", "WARN", "Log level: <ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, NONE> Default:WARN")
  49. flag.Parse()
  50. dispersion = *dispersionPtr
  51. loginDispersion = *loginDispersionPtr
  52. retries = *retriesPtr
  53. waitForParents = *waitForParentsPtr
  54.  
  55. switch *logLevelPtr {
  56. case "ALL":
  57. logLevel = 7
  58. case "TRACE":
  59. logLevel = 6
  60. case "DEBUG":
  61. logLevel = 5
  62. case "INFO":
  63. logLevel = 4
  64. case "WARN":
  65. logLevel = 3
  66. case "ERROR":
  67. logLevel = 2
  68. case "FATAL":
  69. logLevel = 1
  70. case "NONE":
  71. logLevel = 0
  72. }
  73.  
  74. args := flag.Args()
  75.  
  76. if len(args) < 3 {
  77. usage()
  78. }
  79. mode = args[0]
  80. if mode != "syncds" && mode != "report" && mode != "badass" && mode != "revalidate" {
  81. usage()
  82. }
  83. urlString = args[1]
  84. var e error
  85. toURL, e := url.Parse(urlString)
  86. if e != nil {
  87. usage()
  88. }
  89. //if strings.ContainsAny(args[2], ":") == true {
  90. if strings.Count(args[2], ":") == 1 {
  91. username = strings.Split(args[2], ":")[0]
  92. password = strings.Split(args[2], ":")[1]
  93. } else {
  94. usage()
  95. }
  96.  
  97. /*switch mode {
  98. case "syncds":
  99. mode =
  100. }
  101. */
  102. for i, arg := range args {
  103. fmt.Println(i, arg)
  104. }
  105. fmt.Println(username)
  106. fmt.Println(password)
  107. fmt.Println(*dispersionPtr)
  108. fmt.Println(*loginDispersionPtr)
  109. fmt.Println(*retriesPtr)
  110. fmt.Println(*waitForParentsPtr)
  111. fmt.Println(*logLevelPtr)
  112. fmt.Println(mode)
  113. fmt.Println(toURL)
  114. fmt.Println(toURL.Scheme)
  115. fmt.Println(toURL.Host)
  116.  
  117. return
  118. }
  119.  
  120. func usage() {
  121. fmt.Println("====-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-====")
  122. fmt.Println("")
  123. fmt.Println("Usage: traffic_ops_ort [optional flags] <mode> <log_level> <Traffic_Ops_URL> <Traffic_Ops_Login>")
  124. fmt.Println("")
  125. fmt.Println("")
  126. fmt.Println("<mode> = interactive - asks questions during config process.")
  127. fmt.Println("<mode> = report - prints config differences and exits.")
  128. fmt.Println("<mode> = badass - attempts to fix all config differences that it can.")
  129. fmt.Println("<mode> = syncds - syncs delivery services with what is configured in Traffic Ops.")
  130. fmt.Println("<mode> = revalidate - checks for updated revalidations in Traffic Ops and applies them. Requires Traffic Ops 2.1.")
  131. fmt.Println("")
  132. fmt.Println("<Traffic_Ops_URL> = URL to Traffic Ops host. Example: https://trafficops.company.net")
  133. fmt.Println("")
  134. fmt.Println("<Traffic_Ops_Login> => Example: 'username:password'")
  135. fmt.Println("")
  136. fmt.Println("[optional flags]:")
  137. fmt.Println("--dispersion=<time> => wait a random number between 0 and <time> before starting. Default = 300.")
  138. fmt.Println("--login_dispersion=<time> => wait a random number between 0 and <time> before login. Default = 0.")
  139. fmt.Println("--retries=<number> => retry connection to Traffic Ops URL <number> times. Default = 3.")
  140. fmt.Println("--wait_for_parents=<0|1> => do not update if parent_pending = 1 in the update json. Default = 1, wait for parents.")
  141. fmt.Println("--log_level=<ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, NONE> => Logging level. Default is WARN")
  142. fmt.Println("")
  143. fmt.Println("====-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-====")
  144. os.Exit(0)
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement