@@ -2,14 +2,15 @@ package main
22
33import (
44 "context"
5+ "github.com/goharbor/harbor-scanner-clair/pkg/clair"
56 "github.com/goharbor/harbor-scanner-clair/pkg/etc"
67 "github.com/goharbor/harbor-scanner-clair/pkg/http/api"
78 "github.com/goharbor/harbor-scanner-clair/pkg/http/api/v1"
8- "github.com/goharbor/harbor-scanner-clair/pkg/model "
9+ "github.com/goharbor/harbor-scanner-clair/pkg/persistence/redis "
910 "github.com/goharbor/harbor-scanner-clair/pkg/registry"
10- "github.com/goharbor/harbor-scanner-clair/pkg/scanner/clair"
11+ "github.com/goharbor/harbor-scanner-clair/pkg/scanner"
12+ "github.com/goharbor/harbor-scanner-clair/pkg/work"
1113 log "github.com/sirupsen/logrus"
12- "net/http"
1314 "os"
1415 "os/signal"
1516 "syscall"
@@ -28,55 +29,46 @@ func main() {
2829 log .SetReportCaller (false )
2930 log .SetFormatter (& log.JSONFormatter {})
3031
32+ config , err := etc .GetConfig ()
33+ if err != nil {
34+ log .Fatalf ("Error: %v" , err )
35+ }
36+
37+ store := redis .NewStore (config .Store )
38+
39+ workPool := work .New ()
40+
3141 log .WithFields (log.Fields {
3242 "version" : version ,
3343 "commit" : commit ,
3444 "built_at" : date ,
3545 }).Info ("Starting harbor-scanner-clair" )
3646
37- clairConfig , err := etc .GetClairConfig ()
38- if err != nil {
39- log .Fatalf ("Error: %v" , err )
40- }
47+ registryClientFactory := registry .NewClientFactory (config .TLS )
48+ clairClient := clair .NewClient (config .TLS , config .Clair )
49+ adapter := scanner .NewAdapter (registryClientFactory , clairClient , scanner .NewTransformer ())
4150
42- tlsConfig , err := etc .GetTLSConfig ()
43- if err != nil {
44- log .Fatalf ("Error: %v" , err )
45- }
46-
47- registryClientFactory := registry .NewClientFactory (tlsConfig )
48- clairClient := clair .NewClient (tlsConfig , clairConfig )
49- scanner := clair .NewScanner (registryClientFactory , clairClient , model .NewTransformer ())
50-
51- apiConfig , err := etc .GetAPIConfig ()
52- if err != nil {
53- log .Fatalf ("Error: %v" , err )
54- }
51+ enqueuer := scanner .NewEnqueuer (workPool , adapter , store )
5552
56- apiHandler := v1 .NewAPIHandler (scanner )
53+ apiHandler := v1 .NewAPIHandler (enqueuer , store )
5754
58- server := api .NewServer (apiConfig , apiHandler )
55+ apiServer := api .NewServer (config . API , apiHandler )
5956
6057 shutdownComplete := make (chan struct {})
6158 go func () {
6259 sigint := make (chan os.Signal , 1 )
63- signal .Notify (sigint , os . Interrupt , syscall .SIGTERM )
60+ signal .Notify (sigint , syscall . SIGINT , syscall .SIGTERM )
6461 captured := <- sigint
6562 log .WithField ("signal" , captured .String ()).Debug ("Trapped os signal" )
6663
67- log .Debug ("API server shutdown started" )
68- if err := server .Shutdown (context .Background ()); err != nil {
69- log .WithError (err ).Error ("Error while shutting down server" )
70- }
71- log .Debug ("API server shutdown completed" )
64+ apiServer .Shutdown (context .Background ())
65+ workPool .Shutdown ()
66+
7267 close (shutdownComplete )
7368 }()
7469
75- go func () {
76- if err = server .ListenAndServe (); err != http .ErrServerClosed {
77- log .Fatalf ("Error: %v" , err )
78- }
79- log .Debug ("ListenAndServe returned" )
80- }()
70+ workPool .Start ()
71+ apiServer .ListenAndServe ()
72+
8173 <- shutdownComplete
8274}
0 commit comments