github.com/kubernetes-incubator/kube-aws@v0.16.4/test/helper/helper.go (about) 1 package helper 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 ) 8 9 const ( 10 dummyKey = `-----BEGIN RSA PRIVATE KEY----- 11 ZHVtbXkK 12 -----END RSA PRIVATE KEY-----` 13 14 dummyCert = `-----BEGIN CERTIFICATE----- 15 MIIBvjCCAWgCCQDQ4pUwqdLIIDANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQGEwJV 16 UzESMBAGA1UECAwJQW50YXJ0aWNhMRowGAYDVQQKDBFUZXN0IFdpZGdldHMgSW5j 17 LjERMA8GA1UECwwIVGVzdCBMYWIxEzARBgNVBAMMCmR1bW15LWNlcnQwIBcNMTgw 18 NDMwMDk1NDExWhgPMjUxNzEyMzAwOTU0MTFaMGUxCzAJBgNVBAYTAlVTMRIwEAYD 19 VQQIDAlBbnRhcnRpY2ExGjAYBgNVBAoMEVRlc3QgV2lkZ2V0cyBJbmMuMREwDwYD 20 VQQLDAhUZXN0IExhYjETMBEGA1UEAwwKZHVtbXktY2VydDBcMA0GCSqGSIb3DQEB 21 AQUAA0sAMEgCQQDgd2lsmEBDXMxZsaFUSwnC/FF3x/62SIb3/f8mrGrBtb6Vim11 22 s7T0zFCm9cWbTi63bzWRFs3gP2FwwU1MF5RDAgMBAAEwDQYJKoZIhvcNAQELBQAD 23 QQA0bLc3+5kpZuJaAK+C0XvTPZFz8Vx1nv8YnwoIJdEvvGOPGAqvrA8Y0Fvs7L11 24 Z3leoFbVQmybV7EcduIrOANA 25 -----END CERTIFICATE-----` 26 ) 27 28 func WithTempDir(fn func(dir string)) { 29 dir, err := ioutil.TempDir("", "test-temp-dir") 30 31 if err != nil { 32 panic(err) 33 } 34 35 defer os.RemoveAll(dir) 36 37 fn(dir) 38 } 39 40 func WithDummyCredentials(fn func(dir string)) { 41 withDummyCredentials(true, fn) 42 } 43 44 func WithDummyCredentialsButCAKey(fn func(dir string)) { 45 withDummyCredentials(false, fn) 46 } 47 48 func withDummyCredentials(alsoWriteCAKey bool, fn func(dir string)) { 49 dir, err := ioutil.TempDir("", "dummy-credentials") 50 51 if err != nil { 52 panic(err) 53 } 54 55 // Remove all the contents in the dir including *.pem.enc created by ReadOrUpdateCompactAssets() 56 // Otherwise we end up with a lot of garbage directories we failed to remove as they aren't empty in 57 // config/temp, nodepool/config/temp, test/integration/temp 58 defer os.RemoveAll(dir) 59 60 for _, pairName := range []string{"ca", "apiserver", "kube-controller-manager", "kube-scheduler", "worker", "admin", "etcd", "etcd-client", "apiserver-aggregator"} { 61 certFile := fmt.Sprintf("%s/%s.pem", dir, pairName) 62 if err := ioutil.WriteFile(certFile, []byte(dummyCert), 0644); err != nil { 63 panic(err) 64 } 65 defer os.Remove(certFile) 66 67 if pairName != "ca" || alsoWriteCAKey { 68 keyFile := fmt.Sprintf("%s/%s-key.pem", dir, pairName) 69 if err := ioutil.WriteFile(keyFile, []byte(dummyKey), 0644); err != nil { 70 panic(err) 71 } 72 defer os.Remove(keyFile) 73 } 74 } 75 76 type symlink struct { 77 from string 78 to string 79 } 80 81 symlinks := []symlink{ 82 {"ca.pem", "worker-ca.pem"}, 83 {"ca.pem", "etcd-trusted-ca.pem"}, 84 } 85 86 if alsoWriteCAKey { 87 symlinks = append(symlinks, symlink{"ca-key.pem", "worker-ca-key.pem"}) 88 } 89 90 wd, err := os.Getwd() 91 if err != nil { 92 panic(err) 93 } 94 95 if err := os.Chdir(dir); err != nil { 96 panic(err) 97 } 98 99 for _, sl := range symlinks { 100 from := sl.from 101 to := sl.to 102 103 if _, err := os.Lstat(to); err == nil { 104 if err := os.Remove(to); err != nil { 105 panic(err) 106 } 107 } 108 109 if err := os.Symlink(from, to); err != nil { 110 panic(err) 111 } 112 defer os.Remove(to) 113 } 114 115 if err := os.Chdir(wd); err != nil { 116 panic(err) 117 } 118 119 fn(dir) 120 }