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  }