github.com/jlmeeker/kismatic@v1.10.1-0.20180612190640-57f9005a1f1a/integration-tests/cloud_integration.go (about) 1 package integration_tests 2 3 import ( 4 "fmt" 5 "time" 6 7 "github.com/apprenda/kismatic/pkg/retry" 8 ) 9 10 func testAWSCloudProvider(node NodeDeets, sshKey string) error { 11 // uses an ECR image to test cloud-provider 12 if err := runViaSSH([]string{`sudo kubectl --kubeconfig /root/.kube/config run cloud-provider-nginx --image=633668368853.dkr.ecr.us-east-1.amazonaws.com/kismatic/nginx --replicas=2 --port=80`}, []NodeDeets{node}, sshKey, 1*time.Minute); err != nil { 13 return fmt.Errorf("error creating nginx deployment: %v", err) 14 } 15 16 if err := runViaSSH([]string{`sudo kubectl --kubeconfig /root/.kube/config expose deployment cloud-provider-nginx --port=80 --type=LoadBalancer`}, []NodeDeets{node}, sshKey, 1*time.Minute); err != nil { 17 return fmt.Errorf("error creating exposing nginx deployment with a LoadBalancer: %v", err) 18 } 19 20 testErr := retry.WithBackoff(func() error { 21 return runViaSSH([]string{"curl `sudo kubectl --kubeconfig /root/.kube/config get svc cloud-provider-nginx -o jsonpath={.status.loadBalancer.ingress[0].hostname}`"}, []NodeDeets{node}, sshKey, 1*time.Minute) 22 }, 8) 23 24 if testErr != nil { 25 // get info for diagnosing failure 26 runViaSSH([]string{"sudo kubectl --kubeconfig /root/.kube/config describe svc cloud-provider-nginx"}, []NodeDeets{node}, sshKey, 1*time.Minute) 27 } 28 29 if err := runViaSSH([]string{`sudo kubectl --kubeconfig /root/.kube/config delete svc cloud-provider-nginx`}, []NodeDeets{node}, sshKey, 1*time.Minute); err != nil { 30 return fmt.Errorf("error deleting service: %v", err) 31 } 32 33 if testErr != nil { 34 return fmt.Errorf("error curling LoadBalancer endpoint: %v", testErr) 35 } 36 37 return nil 38 }