github.com/kuoss/venti@v0.2.20/pkg/service/service.go (about) 1 package service 2 3 import ( 4 "fmt" 5 "net/http" 6 7 "github.com/kuoss/common/logger" 8 "github.com/kuoss/venti/pkg/model" 9 "github.com/kuoss/venti/pkg/service/alerting" 10 "github.com/kuoss/venti/pkg/service/alertrule" 11 "github.com/kuoss/venti/pkg/service/dashboard" 12 "github.com/kuoss/venti/pkg/service/datasource" 13 "github.com/kuoss/venti/pkg/service/discovery" 14 "github.com/kuoss/venti/pkg/service/discovery/kubernetes" 15 "github.com/kuoss/venti/pkg/service/remote" 16 "github.com/kuoss/venti/pkg/service/status" 17 "github.com/kuoss/venti/pkg/service/user" 18 ) 19 20 type Services struct { 21 *alertrule.AlertRuleService 22 *dashboard.DashboardService 23 *datasource.DatasourceService 24 *remote.RemoteService 25 *status.StatusService 26 *user.UserService 27 *alerting.AlertingService 28 } 29 30 func NewServices(cfg *model.Config) (*Services, error) { 31 // alertrule 32 alertRuleService, err := alertrule.New("") 33 if err != nil { 34 return nil, fmt.Errorf("new alertRuleService err: %w", err) 35 } 36 37 // dashboard 38 logger.Debugf("new dashboard Service...") 39 dashboardService, err := dashboard.New("etc/dashboards") 40 if err != nil { 41 return nil, fmt.Errorf("new dashboardService err: %w", err) 42 } 43 44 // datasource 45 var discoverer discovery.Discoverer 46 if cfg.DatasourceConfig.Discovery.Enabled { 47 discoverer, err = kubernetes.NewK8sService() 48 if err != nil { 49 return nil, fmt.Errorf("new k8sService err: %w", err) 50 } 51 } 52 datasourceService, err := datasource.New(&cfg.DatasourceConfig, discoverer) 53 if err != nil { 54 return nil, fmt.Errorf("new datasourceService err: %w", err) 55 } 56 57 // remote 58 remoteService := remote.New(&http.Client{}, cfg.DatasourceConfig.QueryTimeout) 59 60 // status 61 statusService, err := status.New(cfg) 62 if err != nil { 63 return nil, fmt.Errorf("new statusService err: %w", err) 64 } 65 66 // user 67 userService, err := user.New("./data/venti.sqlite3", cfg.UserConfig) 68 if err != nil { 69 return nil, fmt.Errorf("NewUserService err: %w", err) 70 } 71 72 // alerting 73 alertingService := alerting.New(cfg, alertRuleService.GetAlertRuleFiles(), datasourceService, remoteService) 74 75 return &Services{ 76 alertRuleService, 77 dashboardService, 78 datasourceService, 79 remoteService, 80 statusService, 81 userService, 82 alertingService, 83 }, nil 84 }