github.com/verrazzano/verrazzano@v1.7.1/tests/e2e/clusterapi/capi/prerequisites.go (about) 1 // Copyright (c) 2023, Oracle and/or its affiliates. 2 // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. 3 4 package capi 5 6 import ( 7 "context" 8 "encoding/base64" 9 "github.com/verrazzano/verrazzano/pkg/k8sutil" 10 "github.com/verrazzano/verrazzano/tests/e2e/backup/helpers" 11 "go.uber.org/zap" 12 v1 "k8s.io/api/core/v1" 13 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 14 "os" 15 ) 16 17 func (c CAPITestImpl) ProcessOCIPrivateKeysBase64(file, key string, log *zap.SugaredLogger) error { 18 _, err := os.Stat(file) 19 if err != nil { 20 log.Errorf("file '%s' not found", file) 21 return err 22 } 23 data, err := os.ReadFile(file) 24 if err != nil { 25 log.Errorf("failed reading file contents: %v", err) 26 return err 27 } 28 29 return os.Setenv(key, base64.StdEncoding.EncodeToString(data)) 30 } 31 32 func (c CAPITestImpl) ProcessOCISSHKeys(file, key string, log *zap.SugaredLogger) error { 33 _, err := os.Stat(file) 34 if err != nil { 35 log.Errorf("file '%s' not found", file) 36 return err 37 } 38 data, err := os.ReadFile(file) 39 if err != nil { 40 log.Errorf("failed reading file contents: %v", err) 41 return err 42 } 43 44 return os.Setenv(key, string(data)) 45 } 46 47 func (c CAPITestImpl) ProcessOCIPrivateKeysSingleLine(file, key string, log *zap.SugaredLogger) error { 48 _, err := os.Stat(file) 49 if err != nil { 50 log.Errorf("file '%s' not found", file) 51 return err 52 } 53 54 tmpFile, err := os.CreateTemp(os.TempDir(), "testkey") 55 if err != nil { 56 log.Errorf("Failed to create temporary file : %v", zap.Error(err)) 57 return err 58 } 59 60 var cmdArgs []string 61 var bcmd helpers.BashCommand 62 ocicmd := "awk 'NF {sub(/\\r/, \"\"); printf \"%s\\\\n\",$0;}' " + file + "> " + tmpFile.Name() 63 cmdArgs = append(cmdArgs, "/bin/bash", "-c", ocicmd) 64 bcmd.CommandArgs = cmdArgs 65 keydata := helpers.Runner(&bcmd, log) 66 if keydata.CommandError != nil { 67 return keydata.CommandError 68 } 69 70 bdata, err := os.ReadFile(tmpFile.Name()) 71 if err != nil { 72 log.Errorf("failed reading file contents: %v", err) 73 return err 74 } 75 76 return os.Setenv(key, string(bdata)) 77 } 78 79 func (c CAPITestImpl) CreateNamespace(namespace string, log *zap.SugaredLogger) error { 80 log.Infof("creating namespace '%s'", namespace) 81 k8s, err := k8sutil.GetKubernetesClientset() 82 if err != nil { 83 return err 84 } 85 86 nsObj := &v1.Namespace{ 87 ObjectMeta: metav1.ObjectMeta{ 88 Name: namespace, 89 }, 90 } 91 _, err = k8s.CoreV1().Namespaces().Create(context.TODO(), nsObj, metav1.CreateOptions{}) 92 if err != nil { 93 log.Errorf("failed to create namespace %v", zap.Error(err)) 94 return err 95 } 96 return nil 97 98 } 99 100 func (c CAPITestImpl) SetImageID(key string, log *zap.SugaredLogger) error { 101 oci, err := NewClient(GetOCIConfigurationProvider(log)) 102 if err != nil { 103 log.Error("Unable to create OCI client %v", zap.Error(err)) 104 return err 105 } 106 nodeShape := "VM.Standard.E4.Flex" 107 id, err := oci.GetImageIDByName(context.TODO(), OCICompartmentID, OracleLinuxDisplayName, OperatingSystem, OperatingSystemVersion, nodeShape, log) 108 if err != nil { 109 log.Error("Unable to fetch image id %v", zap.Error(err)) 110 return err 111 } 112 return os.Setenv(key, id) 113 }