@@ -774,11 +774,53 @@ func deleteCloudFormationStack(prov client.ConfigProvider, t *cfn_bootstrap.Temp
774774}
775775
776776func ensureTestImageUploaded (e2eCtx * E2EContext ) error {
777+ By ("ensureTestImageUploaded: Starting function" )
778+
779+ if e2eCtx .Environment .BootstrapAccessKey == nil {
780+ return fmt .Errorf ("BootstrapAccessKey is nil" )
781+ }
782+
783+ By (fmt .Sprintf ("ensureTestImageUploaded: BootstrapAccessKey - AccessKeyId: %s, Status: %s" ,
784+ * e2eCtx .Environment .BootstrapAccessKey .AccessKeyId ,
785+ * e2eCtx .Environment .BootstrapAccessKey .Status ))
786+
787+ if e2eCtx .BootstrapUserAWSSession == nil {
788+ return fmt .Errorf ("BootstrapUserAWSSession is nil" )
789+ }
790+
791+ By ("ensureTestImageUploaded: Creating AWS session for ECR Public" )
777792 sessionForRepo := NewAWSSessionRepoWithKey (e2eCtx .Environment .BootstrapAccessKey )
778793
794+ if sess , ok := sessionForRepo .(* session.Session ); ok {
795+ creds , err := sess .Config .Credentials .Get ()
796+ if err != nil {
797+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to get credentials from session: %v" , err ))
798+ return fmt .Errorf ("failed to get credentials: %w" , err )
799+ }
800+ By (fmt .Sprintf ("ensureTestImageUploaded: Session credentials - AccessKeyId: %s, ProviderName: %s" ,
801+ creds .AccessKeyID , creds .ProviderName ))
802+ } else {
803+ By ("ensureTestImageUploaded: WARNING: Session is not *session.Session type" )
804+ }
805+
806+ By ("ensureTestImageUploaded: Creating ECR Public client" )
779807 ecrSvc := ecrpublic .New (sessionForRepo )
808+
809+ By ("ensureTestImageUploaded: Testing ECR Public connection" )
810+ _ , err := ecrSvc .DescribeRegistries (& ecrpublic.DescribeRegistriesInput {})
811+ if err != nil {
812+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to connect to ECR Public: %v" , err ))
813+ if awsErr , ok := err .(awserr.Error ); ok {
814+ By (fmt .Sprintf ("ensureTestImageUploaded: AWS Error - Code: %s, Message: %s, RequestID: %s" ,
815+ awsErr .Code (), awsErr .Message (), awsErr .RequestID ()))
816+ }
817+ return fmt .Errorf ("failed to connect to ECR Public: %w" , err )
818+ }
819+ By ("ensureTestImageUploaded: Successfully connected to ECR Public" )
820+
780821 repoName := ""
781822 if err := wait .WaitForWithRetryable (wait .NewBackoff (), func () (bool , error ) {
823+ By ("ensureTestImageUploaded: Attempting to create ECR Public repository" )
782824 output , err := ecrSvc .CreateRepository (& ecrpublic.CreateRepositoryInput {
783825 RepositoryName : aws .String ("capa/update" ),
784826 CatalogData : & ecrpublic.RepositoryCatalogDataInput {
@@ -788,10 +830,13 @@ func ensureTestImageUploaded(e2eCtx *E2EContext) error {
788830
789831 if err != nil {
790832 if ! awserrors .IsRepositoryExists (err ) {
833+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to create repository: %v" , err ))
791834 return false , err
792835 }
836+ By ("ensureTestImageUploaded: Repository already exists, describing it" )
793837 out , err := ecrSvc .DescribeRepositories (& ecrpublic.DescribeRepositoriesInput {RepositoryNames : []* string {aws .String ("capa/update" )}})
794838 if err != nil || len (out .Repositories ) == 0 {
839+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to describe existing repository: %v" , err ))
795840 return false , err
796841 }
797842 repoName = aws .StringValue (out .Repositories [0 ].RepositoryUri )
@@ -801,28 +846,42 @@ func ensureTestImageUploaded(e2eCtx *E2EContext) error {
801846
802847 return true , nil
803848 }, awserrors .UnrecognizedClientException ); err != nil {
849+ By (fmt .Sprintf ("ensureTestImageUploaded: Repository creation failed: %v" , err ))
804850 return err
805851 }
806852
853+ By (fmt .Sprintf ("ensureTestImageUploaded: Repository ready - %s" , repoName ))
854+
855+ By ("ensureTestImageUploaded: Inspecting Docker image" )
807856 cmd := exec .Command ("docker" , "inspect" , "--format='{{index .Id}}'" , "gcr.io/k8s-staging-cluster-api/capa-manager:e2e" )
808857 var stdOut bytes.Buffer
809858 cmd .Stdout = & stdOut
810- err : = cmd .Run ()
859+ err = cmd .Run ()
811860 if err != nil {
861+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to inspect Docker image: %v" , err ))
812862 return err
813863 }
814864
815865 imageSha := strings .ReplaceAll (strings .TrimSuffix (stdOut .String (), "\n " ), "'" , "" )
866+ By (fmt .Sprintf ("ensureTestImageUploaded: Docker image SHA: %s" , imageSha ))
816867
817868 ecrImageName := repoName + ":e2e"
869+ By (fmt .Sprintf ("ensureTestImageUploaded: Tagging image as %s" , ecrImageName ))
818870 cmd = exec .Command ("docker" , "tag" , imageSha , ecrImageName ) //nolint:gosec
819871 err = cmd .Run ()
820872 if err != nil {
873+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to tag Docker image: %v" , err ))
821874 return err
822875 }
823876
877+ By ("ensureTestImageUploaded: Getting ECR authorization token" )
824878 outToken , err := ecrSvc .GetAuthorizationToken (& ecrpublic.GetAuthorizationTokenInput {})
825879 if err != nil {
880+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to get authorization token: %v" , err ))
881+ if awsErr , ok := err .(awserr.Error ); ok {
882+ By (fmt .Sprintf ("ensureTestImageUploaded: AWS Error getting token - Code: %s, Message: %s, RequestID: %s" ,
883+ awsErr .Code (), awsErr .Message (), awsErr .RequestID ()))
884+ }
826885 return err
827886 }
828887
@@ -831,22 +890,31 @@ func ensureTestImageUploaded(e2eCtx *E2EContext) error {
831890
832891 strList := strings .Split (string (decodedUsernamePassword ), ":" )
833892 if len (strList ) != 2 {
893+ By ("ensureTestImageUploaded: Failed to decode ECR authentication token" )
834894 return errors .New ("failed to decode ECR authentication token" )
835895 }
836896
897+ By ("ensureTestImageUploaded: Logging into ECR Public" )
837898 cmd = exec .Command ("docker" , "login" , "--username" , strList [0 ], "--password" , strList [1 ], "public.ecr.aws" ) //nolint:gosec
838899 err = cmd .Run ()
839900 if err != nil {
901+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to login to ECR Public: %v" , err ))
840902 return err
841903 }
842904
905+ By ("ensureTestImageUploaded: Pushing image to ECR Public" )
843906 cmd = exec .Command ("docker" , "push" , ecrImageName )
844907 err = cmd .Run ()
845908 if err != nil {
909+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to push image: %v" , err ))
846910 return err
847911 }
912+
913+ By ("ensureTestImageUploaded: Image pushed successfully" )
848914 e2eCtx .E2EConfig .Variables ["CAPI_IMAGES_REGISTRY" ] = repoName
849915 e2eCtx .E2EConfig .Variables ["E2E_IMAGE_TAG" ] = "e2e"
916+
917+ By ("ensureTestImageUploaded: Function completed successfully" )
850918 return nil
851919}
852920
0 commit comments