44package status
55
66import (
7+ "context"
78 "strings"
89
910 "github.com/go-logr/logr"
@@ -30,6 +31,7 @@ type OperatorCustomState struct {
3031 Nodes []string
3132 MondooAuditConfig MondooAuditConfig
3233 OperatorVersion string
34+ OperatorImageDigest string
3335 CnspecVersion string
3436 CnspecImageDigest string
3537 K8sResourcesScanning bool
@@ -44,7 +46,7 @@ type MondooAuditConfig struct {
4446}
4547
4648func ReportStatusRequestFromAuditConfig (
47- integrationMrn string , m v1alpha2.MondooAuditConfig , nodes []v1.Node , k8sVersion * k8sversion.Info , containerImageResolver mondoo.ContainerImageResolver , log logr.Logger ,
49+ ctx context. Context , integrationMrn string , m v1alpha2.MondooAuditConfig , nodes []v1.Node , k8sVersion * k8sversion.Info , containerImageResolver mondoo.ContainerImageResolver , log logr.Logger ,
4850) mondooclient.ReportStatusRequest {
4951 nodeNames := make ([]string , len (nodes ))
5052 for i := range nodes {
@@ -164,10 +166,10 @@ func ReportStatusRequestFromAuditConfig(
164166 }
165167 }
166168
167- // Resolve cnspec image to get version and digest
168- var cnspecVersion , cnspecImageDigest string
169+ // Resolve cnspec and operator images to get version and digest
170+ var cnspecVersion , cnspecImageDigest , operatorImageDigest string
169171 if containerImageResolver != nil {
170- resolvedImage , err := containerImageResolver .CnspecImage (m .Spec .Scanner .Image .Name , m .Spec .Scanner .Image .Tag , "" , false )
172+ resolvedImage , err := containerImageResolver .CnspecImage (m .Spec .Scanner .Image .Name , m .Spec .Scanner .Image .Tag , m . Spec . Scanner . Image . Digest , false )
171173 if err != nil {
172174 log .Error (err , "Failed to resolve cnspec image for status reporting" )
173175 } else {
@@ -177,10 +179,20 @@ func ReportStatusRequestFromAuditConfig(
177179 }
178180 }
179181 // Get the tag separately (without resolution) for the version field
180- tagImage , _ := containerImageResolver .CnspecImage (m .Spec .Scanner .Image .Name , m .Spec .Scanner .Image .Tag , "" , true )
182+ tagImage , _ := containerImageResolver .CnspecImage (m .Spec .Scanner .Image .Name , m .Spec .Scanner .Image .Tag , m . Spec . Scanner . Image . Digest , true )
181183 if idx := strings .LastIndex (tagImage , ":" ); idx != - 1 {
182184 cnspecVersion = tagImage [idx + 1 :]
183185 }
186+
187+ // Resolve operator image digest
188+ resolvedOperator , err := containerImageResolver .MondooOperatorImage (ctx , "" , "" , "" , false )
189+ if err != nil {
190+ log .Error (err , "Failed to resolve operator image for status reporting" )
191+ } else {
192+ if idx := strings .Index (resolvedOperator , "@" ); idx != - 1 {
193+ operatorImageDigest = resolvedOperator [idx + 1 :]
194+ }
195+ }
184196 }
185197
186198 return mondooclient.ReportStatusRequest {
@@ -191,6 +203,7 @@ func ReportStatusRequestFromAuditConfig(
191203 KubernetesVersion : k8sVersion .GitVersion ,
192204 MondooAuditConfig : MondooAuditConfig {Name : m .Name , Namespace : m .Namespace },
193205 OperatorVersion : version .Version ,
206+ OperatorImageDigest : operatorImageDigest ,
194207 CnspecVersion : cnspecVersion ,
195208 CnspecImageDigest : cnspecImageDigest ,
196209 K8sResourcesScanning : m .Spec .KubernetesResources .Enable ,
0 commit comments