github.com/apprenda/kismatic@v1.12.0/integration-tests/addons.go (about)

     1  package integration_tests
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"os/exec"
     7  	"time"
     8  
     9  	"github.com/apprenda/kismatic/pkg/retry"
    10  )
    11  
    12  func verifyHeapster(master NodeDeets, sshKey string) error {
    13  	// create volumes for alertmanager, prometheus-server and grafana
    14  	cmd := exec.Command("./kismatic", "volume", "add", "1", "-f", "kismatic-testing.yaml")
    15  	cmd.Stdout = os.Stdout
    16  	cmd.Stderr = os.Stderr
    17  
    18  	if err := cmd.Run(); err != nil {
    19  		return fmt.Errorf("error adding volume: %v", err)
    20  	}
    21  
    22  	// copy PVCs
    23  	pvcs := []string{"influxdb-pvc.yaml"}
    24  	for _, f := range pvcs {
    25  		if err := copyFileToRemote(fmt.Sprintf("test-resources/heapster/%s", f), fmt.Sprintf("/tmp/%s", f), master, sshKey, 1*time.Minute); err != nil {
    26  			return fmt.Errorf("error copying %s: %v", f, err)
    27  		}
    28  	}
    29  
    30  	// create PVCs
    31  	for _, f := range pvcs {
    32  		if err := runViaSSH([]string{fmt.Sprintf("sudo kubectl --kubeconfig /root/.kube/config apply -f /tmp/%s", f)}, []NodeDeets{master}, sshKey, 1*time.Minute); err != nil {
    33  			return fmt.Errorf("error creating pvc %s: %v", f, err)
    34  		}
    35  	}
    36  
    37  	// verify pods are up
    38  	deployments := map[string]int{
    39  		"heapster":          3,
    40  		"heapster-influxdb": 1,
    41  	}
    42  	return verifyDeployment(deployments, master, sshKey)
    43  }
    44  
    45  func verifyTiller(master NodeDeets, sshKey string) error {
    46  	// verify pods are up
    47  	deployments := map[string]int{
    48  		"tiller-deploy": 1,
    49  	}
    50  	return verifyDeployment(deployments, master, sshKey)
    51  }
    52  
    53  func verifyDeployment(deployments map[string]int, master NodeDeets, sshKey string) error {
    54  	for k, v := range deployments {
    55  		if err := retry.WithBackoff(func() error {
    56  			return runViaSSH([]string{fmt.Sprintf("sudo kubectl --kubeconfig /root/.kube/config get deployment %s -n kube-system -o jsonpath='{.status.availableReplicas}' | grep %d", k, v)}, []NodeDeets{master}, sshKey, 1*time.Minute)
    57  		}, 10); err != nil {
    58  			return fmt.Errorf("error verifying deployment %s: %v", k, err)
    59  		}
    60  	}
    61  
    62  	return nil
    63  }