Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "flag"
- "fmt"
- "net/url"
- "os"
- "strings"
- "time"
- )
- var dispersion int
- var loginDispersion int
- var retries int
- var waitForParents bool
- var logLevel int
- var mode string
- var urlString string
- var username string
- var password string
- func main() {
- parseCommand()
- hostname, error := os.Hostname()
- if error != nil {
- panic(error)
- }
- fmt.Println("Starting config check at", time.Now())
- shortHostname := strings.Split(hostname, ".")[0]
- fmt.Println("full hostname: ", hostname)
- fmt.Println("short hostname: ", shortHostname)
- fmt.Println(username, password, mode, urlString)
- fmt.Println(dispersion)
- }
- func parseCommand() {
- var dispersionPtr = flag.Int("dispersion", 300, "Dispersion range in seconds.")
- var loginDispersionPtr = flag.Int("login_dispersion", 0, "Login dispersion range in seconds.")
- var retriesPtr = flag.Int("retries", 3, "Retry connection attempts to TO URL <number> times.")
- var waitForParentsPtr = flag.Bool("wait_for_parents", true, "Do not update if a parent cache is still pending.")
- var logLevelPtr = flag.String("log_level", "WARN", "Log level: <ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, NONE> Default:WARN")
- flag.Parse()
- dispersion = *dispersionPtr
- loginDispersion = *loginDispersionPtr
- retries = *retriesPtr
- waitForParents = *waitForParentsPtr
- switch *logLevelPtr {
- case "ALL":
- logLevel = 7
- case "TRACE":
- logLevel = 6
- case "DEBUG":
- logLevel = 5
- case "INFO":
- logLevel = 4
- case "WARN":
- logLevel = 3
- case "ERROR":
- logLevel = 2
- case "FATAL":
- logLevel = 1
- case "NONE":
- logLevel = 0
- }
- args := flag.Args()
- if len(args) < 3 {
- usage()
- }
- mode = args[0]
- if mode != "syncds" && mode != "report" && mode != "badass" && mode != "revalidate" {
- usage()
- }
- urlString = args[1]
- var e error
- toURL, e := url.Parse(urlString)
- if e != nil {
- usage()
- }
- //if strings.ContainsAny(args[2], ":") == true {
- if strings.Count(args[2], ":") == 1 {
- username = strings.Split(args[2], ":")[0]
- password = strings.Split(args[2], ":")[1]
- } else {
- usage()
- }
- /*switch mode {
- case "syncds":
- mode =
- }
- */
- for i, arg := range args {
- fmt.Println(i, arg)
- }
- fmt.Println(username)
- fmt.Println(password)
- fmt.Println(*dispersionPtr)
- fmt.Println(*loginDispersionPtr)
- fmt.Println(*retriesPtr)
- fmt.Println(*waitForParentsPtr)
- fmt.Println(*logLevelPtr)
- fmt.Println(mode)
- fmt.Println(toURL)
- fmt.Println(toURL.Scheme)
- fmt.Println(toURL.Host)
- return
- }
- func usage() {
- fmt.Println("====-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-====")
- fmt.Println("")
- fmt.Println("Usage: traffic_ops_ort [optional flags] <mode> <log_level> <Traffic_Ops_URL> <Traffic_Ops_Login>")
- fmt.Println("")
- fmt.Println("")
- fmt.Println("<mode> = interactive - asks questions during config process.")
- fmt.Println("<mode> = report - prints config differences and exits.")
- fmt.Println("<mode> = badass - attempts to fix all config differences that it can.")
- fmt.Println("<mode> = syncds - syncs delivery services with what is configured in Traffic Ops.")
- fmt.Println("<mode> = revalidate - checks for updated revalidations in Traffic Ops and applies them. Requires Traffic Ops 2.1.")
- fmt.Println("")
- fmt.Println("<Traffic_Ops_URL> = URL to Traffic Ops host. Example: https://trafficops.company.net")
- fmt.Println("")
- fmt.Println("<Traffic_Ops_Login> => Example: 'username:password'")
- fmt.Println("")
- fmt.Println("[optional flags]:")
- fmt.Println("--dispersion=<time> => wait a random number between 0 and <time> before starting. Default = 300.")
- fmt.Println("--login_dispersion=<time> => wait a random number between 0 and <time> before login. Default = 0.")
- fmt.Println("--retries=<number> => retry connection to Traffic Ops URL <number> times. Default = 3.")
- fmt.Println("--wait_for_parents=<0|1> => do not update if parent_pending = 1 in the update json. Default = 1, wait for parents.")
- fmt.Println("--log_level=<ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, NONE> => Logging level. Default is WARN")
- fmt.Println("")
- fmt.Println("====-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-====")
- os.Exit(0)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement