github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/boom/application/application.go (about) 1 package application 2 3 import ( 4 "github.com/caos/orbos/internal/operator/boom/api/latest" 5 "github.com/caos/orbos/internal/operator/boom/application/applications/apigateway" 6 apigatewayinfo "github.com/caos/orbos/internal/operator/boom/application/applications/apigateway/info" 7 "github.com/caos/orbos/internal/operator/boom/application/applications/kubemetricsexporter" 8 kubemetricsexporterinfo "github.com/caos/orbos/internal/operator/boom/application/applications/kubemetricsexporter/info" 9 "github.com/caos/orbos/internal/operator/boom/application/applications/logcollection" 10 logcollectioninfo "github.com/caos/orbos/internal/operator/boom/application/applications/logcollection/info" 11 "github.com/caos/orbos/internal/operator/boom/application/applications/logspersisting" 12 logspersistinginfo "github.com/caos/orbos/internal/operator/boom/application/applications/logspersisting/info" 13 "github.com/caos/orbos/internal/operator/boom/application/applications/metriccollection" 14 metriccollectioninfo "github.com/caos/orbos/internal/operator/boom/application/applications/metriccollection/info" 15 "github.com/caos/orbos/internal/operator/boom/application/applications/metricspersisting" 16 metricspersistinginfo "github.com/caos/orbos/internal/operator/boom/application/applications/metricspersisting/info" 17 "github.com/caos/orbos/internal/operator/boom/application/applications/metricsserver" 18 metricsserverinfo "github.com/caos/orbos/internal/operator/boom/application/applications/metricsserver/info" 19 "github.com/caos/orbos/internal/operator/boom/application/applications/monitoring" 20 monitoringinfo "github.com/caos/orbos/internal/operator/boom/application/applications/monitoring/info" 21 "github.com/caos/orbos/internal/operator/boom/application/applications/nodemetricsexporter" 22 nodemetricsexporterinfo "github.com/caos/orbos/internal/operator/boom/application/applications/nodemetricsexporter/info" 23 "github.com/caos/orbos/internal/operator/boom/application/applications/reconciling" 24 reconcilinginfo "github.com/caos/orbos/internal/operator/boom/application/applications/reconciling/info" 25 "github.com/caos/orbos/internal/operator/boom/application/applications/systemdmetricsexporter" 26 systemdmetricsexporterinfo "github.com/caos/orbos/internal/operator/boom/application/applications/systemdmetricsexporter/info" 27 "github.com/caos/orbos/internal/operator/boom/name" 28 "github.com/caos/orbos/internal/operator/boom/templator/helm/chart" 29 "github.com/caos/orbos/mntr" 30 ) 31 32 type Application interface { 33 Deploy(*latest.ToolsetSpec) bool 34 GetName() name.Application 35 } 36 37 type HelmApplication interface { 38 Application 39 GetNamespace() string 40 GetChartInfo() *chart.Chart 41 GetImageTags() map[string]string 42 SpecToHelmValues(mntr.Monitor, *latest.ToolsetSpec) interface{} 43 } 44 45 type YAMLApplication interface { 46 Application 47 GetYaml(mntr.Monitor, *latest.ToolsetSpec) interface{} 48 } 49 50 func New(monitor mntr.Monitor, appName name.Application, orb string) Application { 51 switch appName { 52 case apigatewayinfo.GetName(): 53 return apigateway.New(monitor) 54 case reconcilinginfo.GetName(): 55 return reconciling.New(monitor) 56 case monitoringinfo.GetName(): 57 return monitoring.New(monitor) 58 case kubemetricsexporterinfo.GetName(): 59 return kubemetricsexporter.New(monitor) 60 case metriccollectioninfo.GetName(): 61 return metriccollection.New(monitor) 62 case logcollectioninfo.GetName(): 63 return logcollection.New(monitor, orb) 64 case nodemetricsexporterinfo.GetName(): 65 return nodemetricsexporter.New(monitor) 66 case systemdmetricsexporterinfo.GetName(): 67 return systemdmetricsexporter.New() 68 case metricspersistinginfo.GetName(): 69 return metricspersisting.New(monitor, orb) 70 case logspersistinginfo.GetName(): 71 return logspersisting.New(monitor) 72 case metricsserverinfo.GetName(): 73 return metricsserver.New(monitor) 74 } 75 76 return nil 77 } 78 79 func GetOrderNumber(appName name.Application) int { 80 switch appName { 81 case metricspersistinginfo.GetName(): 82 return metricspersistinginfo.GetOrderNumber() 83 case logspersistinginfo.GetName(): 84 return logspersistinginfo.GetOrderNumber() 85 } 86 87 return 1 88 }