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  }