@@ -774,11 +774,53 @@ func deleteCloudFormationStack(prov client.ConfigProvider, t *cfn_bootstrap.Temp
774
774
}
775
775
776
776
func 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" )
777
792
sessionForRepo := NewAWSSessionRepoWithKey (e2eCtx .Environment .BootstrapAccessKey )
778
793
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" )
779
807
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
+
780
821
repoName := ""
781
822
if err := wait .WaitForWithRetryable (wait .NewBackoff (), func () (bool , error ) {
823
+ By ("ensureTestImageUploaded: Attempting to create ECR Public repository" )
782
824
output , err := ecrSvc .CreateRepository (& ecrpublic.CreateRepositoryInput {
783
825
RepositoryName : aws .String ("capa/update" ),
784
826
CatalogData : & ecrpublic.RepositoryCatalogDataInput {
@@ -788,10 +830,13 @@ func ensureTestImageUploaded(e2eCtx *E2EContext) error {
788
830
789
831
if err != nil {
790
832
if ! awserrors .IsRepositoryExists (err ) {
833
+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to create repository: %v" , err ))
791
834
return false , err
792
835
}
836
+ By ("ensureTestImageUploaded: Repository already exists, describing it" )
793
837
out , err := ecrSvc .DescribeRepositories (& ecrpublic.DescribeRepositoriesInput {RepositoryNames : []* string {aws .String ("capa/update" )}})
794
838
if err != nil || len (out .Repositories ) == 0 {
839
+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to describe existing repository: %v" , err ))
795
840
return false , err
796
841
}
797
842
repoName = aws .StringValue (out .Repositories [0 ].RepositoryUri )
@@ -801,28 +846,42 @@ func ensureTestImageUploaded(e2eCtx *E2EContext) error {
801
846
802
847
return true , nil
803
848
}, awserrors .UnrecognizedClientException ); err != nil {
849
+ By (fmt .Sprintf ("ensureTestImageUploaded: Repository creation failed: %v" , err ))
804
850
return err
805
851
}
806
852
853
+ By (fmt .Sprintf ("ensureTestImageUploaded: Repository ready - %s" , repoName ))
854
+
855
+ By ("ensureTestImageUploaded: Inspecting Docker image" )
807
856
cmd := exec .Command ("docker" , "inspect" , "--format='{{index .Id}}'" , "gcr.io/k8s-staging-cluster-api/capa-manager:e2e" )
808
857
var stdOut bytes.Buffer
809
858
cmd .Stdout = & stdOut
810
- err : = cmd .Run ()
859
+ err = cmd .Run ()
811
860
if err != nil {
861
+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to inspect Docker image: %v" , err ))
812
862
return err
813
863
}
814
864
815
865
imageSha := strings .ReplaceAll (strings .TrimSuffix (stdOut .String (), "\n " ), "'" , "" )
866
+ By (fmt .Sprintf ("ensureTestImageUploaded: Docker image SHA: %s" , imageSha ))
816
867
817
868
ecrImageName := repoName + ":e2e"
869
+ By (fmt .Sprintf ("ensureTestImageUploaded: Tagging image as %s" , ecrImageName ))
818
870
cmd = exec .Command ("docker" , "tag" , imageSha , ecrImageName ) //nolint:gosec
819
871
err = cmd .Run ()
820
872
if err != nil {
873
+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to tag Docker image: %v" , err ))
821
874
return err
822
875
}
823
876
877
+ By ("ensureTestImageUploaded: Getting ECR authorization token" )
824
878
outToken , err := ecrSvc .GetAuthorizationToken (& ecrpublic.GetAuthorizationTokenInput {})
825
879
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
+ }
826
885
return err
827
886
}
828
887
@@ -831,22 +890,31 @@ func ensureTestImageUploaded(e2eCtx *E2EContext) error {
831
890
832
891
strList := strings .Split (string (decodedUsernamePassword ), ":" )
833
892
if len (strList ) != 2 {
893
+ By ("ensureTestImageUploaded: Failed to decode ECR authentication token" )
834
894
return errors .New ("failed to decode ECR authentication token" )
835
895
}
836
896
897
+ By ("ensureTestImageUploaded: Logging into ECR Public" )
837
898
cmd = exec .Command ("docker" , "login" , "--username" , strList [0 ], "--password" , strList [1 ], "public.ecr.aws" ) //nolint:gosec
838
899
err = cmd .Run ()
839
900
if err != nil {
901
+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to login to ECR Public: %v" , err ))
840
902
return err
841
903
}
842
904
905
+ By ("ensureTestImageUploaded: Pushing image to ECR Public" )
843
906
cmd = exec .Command ("docker" , "push" , ecrImageName )
844
907
err = cmd .Run ()
845
908
if err != nil {
909
+ By (fmt .Sprintf ("ensureTestImageUploaded: Failed to push image: %v" , err ))
846
910
return err
847
911
}
912
+
913
+ By ("ensureTestImageUploaded: Image pushed successfully" )
848
914
e2eCtx .E2EConfig .Variables ["CAPI_IMAGES_REGISTRY" ] = repoName
849
915
e2eCtx .E2EConfig .Variables ["E2E_IMAGE_TAG" ] = "e2e"
916
+
917
+ By ("ensureTestImageUploaded: Function completed successfully" )
850
918
return nil
851
919
}
852
920
0 commit comments