Ctrl K
ComunidadGuías…

internal/resources/deliveries.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package resources

import (
	"context"
	"fmt"
	"time"

	"github.com/sophotechlabs/spinoza/internal/api"
	"github.com/sophotechlabs/spinoza/internal/argocd"
	"github.com/sophotechlabs/spinoza/internal/flux"
	"github.com/sophotechlabs/spinoza/internal/gitops"
	"github.com/sophotechlabs/spinoza/internal/topology"
)

func (m *Manager) FluxAction(ctx context.Context, ref api.ObjectRef, action flux.Action) (api.FluxActionResult, error) {
	return flux.Do(ctx, m.dyn, m.descriptors(), ref, action, time.Now())
}

func (m *Manager) ArgoAction(ctx context.Context, ref api.ObjectRef, req argocd.Request) (api.ArgoActionResult, error) {
	if m.dyn == nil {
		return api.ArgoActionResult{}, fmt.Errorf("%w: no kubernetes client is wired up", api.ErrInternal)
	}
	return argocd.Do(ctx, m.dyn, ref, req)
}

func (m *Manager) TrafficSupport(ctx context.Context) api.TrafficSupport {
	if m.traffic == nil {
		return api.TrafficSupport{Reason: "prometheus is not wired up"}
	}
	value, ok := shared(ctx, &m.meshes, m.now, m.limits.TrafficTTL, func(ctx context.Context) (api.TrafficSupport, bool) {
		support := m.traffic.Support(ctx, m.now())
		return support, true
	})
	if !ok {
		return api.TrafficSupport{Reason: ctx.Err().Error()}
	}
	return value
}

func (m *Manager) TrafficGraph(ctx context.Context) api.TrafficGraph {
	if m.traffic == nil {
		return api.TrafficGraph{Error: "prometheus is not wired up"}
	}
	return m.traffic.Graph(ctx, m.now())
}

func (m *Manager) Graph(ctx context.Context) api.Graph {
	return gitops.Build(ctx, m, m.descriptors())
}

func (m *Manager) Topology(ctx context.Context, req topology.Request) api.Graph {
	return topology.Build(ctx, m, m.descriptors(), req)
}

func (m *Manager) GitopsApp(ctx context.Context, ref api.ObjectRef) (api.GitopsApp, error) {
	if m.dyn == nil {
		return api.GitopsApp{}, fmt.Errorf("%w: no kubernetes client is wired up", api.ErrInternal)
	}
	return gitops.Detail(ctx, m.dyn, m.descriptors(), ref)
}

func (m *Manager) GitopsAppGraph(ctx context.Context, ref api.ObjectRef) (api.Graph, error) {
	if m.dyn == nil {
		return api.Graph{}, fmt.Errorf("%w: no kubernetes client is wired up", api.ErrInternal)
	}
	app, err := gitops.Shape(ctx, m.dyn, m.descriptors(), ref)
	if err != nil {
		return api.Graph{}, err
	}
	return gitops.AppGraph(app), nil
}

func (m *Manager) Flux(ctx context.Context) api.FluxDashboard {
	return flux.Build(ctx, m, m.descriptors(), m.charts)
}

func (m *Manager) FluxOverview(ctx context.Context) api.FluxOverview {
	return flux.Overview(ctx, m.cs, m, m.descriptors(), flux.Cluster{
		Kubernetes: m.serverVersion(),
		Nodes:      m.nodeCount(ctx),
		Usage:      m.Metrics(ctx).Pods,
	})
}

func (m *Manager) Argo(ctx context.Context) api.ArgoDashboard {
	return argocd.Build(ctx, m, m.descriptors())
}