github.com/docker/compose-on-kubernetes@v0.5.0/internal/e2e/compose/install.go (about) 1 package compose 2 3 import ( 4 "context" 5 "io" 6 "os" 7 "os/exec" 8 "time" 9 10 "github.com/docker/compose-on-kubernetes/api/constants" 11 "github.com/docker/compose-on-kubernetes/install" 12 "github.com/docker/compose-on-kubernetes/internal/e2e/cluster" 13 "github.com/docker/compose-on-kubernetes/internal/e2e/wait" 14 log "github.com/sirupsen/logrus" 15 "k8s.io/client-go/rest" 16 ) 17 18 // Install installs the compose api extension 19 func Install(config *rest.Config, ns, tag, pullSecret string) (func(), error) { 20 _, deleteNs, err := cluster.CreateNamespace(config, config, ns) 21 if err != nil { 22 return nil, err 23 } 24 25 err = install.Uninstall(config, ns, false) 26 if err != nil { 27 return nil, err 28 } 29 30 err = install.WaitNPods(config, ns, 0, install.TimeoutDefault) 31 if err != nil { 32 return nil, err 33 } 34 35 err = install.Unsafe(context.Background(), config, install.UnsafeOptions{ 36 OptionsCommon: install.OptionsCommon{ 37 Namespace: ns, 38 Tag: tag, 39 PullSecret: pullSecret, 40 ReconciliationInterval: constants.DefaultFullSyncInterval, 41 HealthzCheckPort: 8080, 42 }, 43 Coverage: true, 44 }) 45 if err != nil { 46 return nil, err 47 } 48 49 err = install.WaitNPods(config, ns, 2, 2*time.Minute) 50 if err != nil { 51 return nil, err 52 } 53 err = wait.For(30, func() (bool, error) { 54 return install.IsRunning(config) 55 }) 56 if err != nil { 57 return nil, err 58 } 59 60 cleanup := func() { 61 { 62 cmd := exec.Command("./retrieve-coverage") 63 stdout, err := cmd.StdoutPipe() 64 if err != nil { 65 log.Errorf("Unable to retrieve stdout: %s", err) 66 } else { 67 go io.Copy(os.Stdout, stdout) 68 } 69 stderr, err := cmd.StderrPipe() 70 if err != nil { 71 log.Errorf("Unable to retrieve stderr: %s", err) 72 } else { 73 go io.Copy(os.Stderr, stderr) 74 } 75 err = cmd.Run() 76 if err != nil { 77 log.Errorf("Unable to retrieve coverage: %s", err) 78 } 79 } 80 install.Uninstall(config, ns, false) 81 deleteNs() 82 } 83 84 return cleanup, nil 85 }