github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/cmd/subd/tests.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "net/http" 7 "os" 8 "strings" 9 ) 10 11 var externallyPatchablePath = "latest/is-externally-patchable" 12 13 func checkExternallyPatchable() (bool, error) { 14 resp, err := http.Get(metadataServer + externallyPatchablePath) 15 if err != nil { 16 return false, err 17 } 18 defer resp.Body.Close() 19 if resp.StatusCode != 200 { 20 return false, nil 21 } 22 if body, err := ioutil.ReadAll(resp.Body); err != nil { 23 return false, err 24 } else { 25 value := strings.TrimSpace(string(body)) 26 if value == "true" { 27 return true, nil 28 } else { 29 return false, nil 30 } 31 } 32 } 33 34 func runTestAndExit(test func() (bool, error)) { 35 if patchable, err := checkExternallyPatchable(); err != nil { 36 fmt.Fprintln(os.Stderr, err) 37 os.Exit(1) 38 } else if patchable { 39 os.Exit(0) 40 } 41 os.Exit(1) 42 }