github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/boom/application/applications/monitoring/grafana.go (about)

     1  package monitoring
     2  
     3  import (
     4  	"reflect"
     5  
     6  	toolsetslatest "github.com/caos/orbos/internal/operator/boom/api/latest"
     7  	"github.com/caos/orbos/internal/operator/boom/api/latest/monitoring"
     8  
     9  	"github.com/caos/orbos/internal/operator/boom/application/applications/monitoring/info"
    10  	"github.com/caos/orbos/internal/operator/boom/name"
    11  	"github.com/caos/orbos/mntr"
    12  )
    13  
    14  type Grafana struct {
    15  	monitor mntr.Monitor
    16  	spec    *monitoring.Monitoring
    17  }
    18  
    19  func New(monitor mntr.Monitor) *Grafana {
    20  	return &Grafana{
    21  		monitor: monitor,
    22  	}
    23  }
    24  func (g *Grafana) GetName() name.Application {
    25  	return info.GetName()
    26  }
    27  
    28  func (g *Grafana) Deploy(toolsetCRDSpec *toolsetslatest.ToolsetSpec) bool {
    29  	// workaround as grafana always deploys new pods even when the spec of the deployment is not changed
    30  	// due to the fact that kubernetes has an internal mapping from extensions/v1beta1 to apps/v1 in old k8s versions
    31  	if g.Changed(toolsetCRDSpec) {
    32  		return toolsetCRDSpec.Monitoring != nil && toolsetCRDSpec.Monitoring.Deploy
    33  	}
    34  	return false
    35  }
    36  
    37  func (g *Grafana) Changed(toolsetCRDSpec *toolsetslatest.ToolsetSpec) bool {
    38  	if g.spec == nil {
    39  		return true
    40  	}
    41  	return !reflect.DeepEqual(toolsetCRDSpec.Monitoring, g.spec)
    42  }
    43  
    44  func (g *Grafana) SetAppliedSpec(toolsetCRDSpec *toolsetslatest.ToolsetSpec) {
    45  	g.spec = toolsetCRDSpec.Monitoring
    46  }
    47  
    48  func (g *Grafana) GetNamespace() string {
    49  	return info.GetNamespace()
    50  }