@@ -53,11 +53,8 @@ func Track(ctx context.Context, ociStore oci.Store, router routing.Router, opts
5353 if ok {
5454 keys = append (keys , tagName )
5555 metrics .AdvertisedImageTags .WithLabelValues (img .Registry ).Inc ()
56- metrics .AdvertisedKeys .WithLabelValues (img .Registry ).Inc ()
5756 }
58- metrics .AdvertisedImages .WithLabelValues (img .Registry ).Inc ()
5957 metrics .AdvertisedImageDigests .WithLabelValues (img .Registry ).Inc ()
60- metrics .AdvertisedKeys .WithLabelValues (img .Registry ).Inc ()
6158 }
6259 contents , err := ociStore .ListContent (ctx )
6360 if err != nil {
@@ -69,7 +66,7 @@ func Track(ctx context.Context, ociStore oci.Store, router routing.Router, opts
6966 continue
7067 }
7168 for _ , ref := range refs {
72- metrics .AdvertisedKeys .WithLabelValues (ref .Registry ).Inc ()
69+ metrics .AdvertisedContentDigests .WithLabelValues (ref .Registry ).Inc ()
7370 }
7471 keys = append (keys , refs [0 ].Digest .String ())
7572 }
@@ -79,8 +76,7 @@ func Track(ctx context.Context, ociStore oci.Store, router routing.Router, opts
7976 }
8077
8178 // Watch for OCI events.
82- log := logr .FromContextOrDiscard (ctx )
83- log .Info ("waiting for store events" )
79+ logr .FromContextOrDiscard (ctx ).Info ("waiting for store events" )
8480 for {
8581 select {
8682 case <- ctx .Done ():
@@ -89,25 +85,38 @@ func Track(ctx context.Context, ociStore oci.Store, router routing.Router, opts
8985 if ! ok {
9086 return errors .New ("event channel closed" )
9187 }
92- log .Info ("OCI event" , "ref" , event .Reference .String (), "type" , event .Type )
93- err := handleEvent (ctx , router , event )
88+ err := handleEvent (ctx , router , event , cfg .Filters )
9489 if err != nil {
95- log .Error (err , "could not handle event" )
90+ logr . FromContextOrDiscard ( ctx ) .Error (err , "could not handle event" )
9691 continue
9792 }
9893 }
9994 }
10095}
10196
102- func handleEvent (ctx context.Context , router routing.Router , event oci.OCIEvent ) error {
97+ func handleEvent (ctx context.Context , router routing.Router , event oci.OCIEvent , filters []oci.Filter ) error {
98+ if oci .MatchesFilter (event .Reference , filters ) {
99+ return nil
100+ }
101+ logr .FromContextOrDiscard (ctx ).Info ("OCI event" , "ref" , event .Reference .String (), "type" , event .Type )
103102 switch event .Type {
104103 case oci .CreateEvent :
104+ if event .Reference .Tag != "" {
105+ metrics .AdvertisedImageTags .WithLabelValues (event .Reference .Registry ).Inc ()
106+ } else {
107+ metrics .AdvertisedContentDigests .WithLabelValues (event .Reference .Registry ).Inc ()
108+ }
105109 err := router .Advertise (ctx , []string {event .Reference .Identifier ()})
106110 if err != nil {
107111 return err
108112 }
109113 return nil
110114 case oci .DeleteEvent :
115+ if event .Reference .Tag != "" {
116+ metrics .AdvertisedImageTags .WithLabelValues (event .Reference .Registry ).Dec ()
117+ } else {
118+ metrics .AdvertisedContentDigests .WithLabelValues (event .Reference .Registry ).Dec ()
119+ }
111120 err := router .Withdraw (ctx , []string {event .Reference .Identifier ()})
112121 if err != nil {
113122 return err
0 commit comments