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  }