postgres-operator/pkg/controller/status.go

57 lines
1.2 KiB
Go

package controller
import (
"github.com/zalando-incubator/postgres-operator/pkg/cluster"
"github.com/zalando-incubator/postgres-operator/pkg/spec"
"github.com/zalando-incubator/postgres-operator/pkg/util/config"
)
type controllerStatus struct {
ControllerConfig Config
OperatorConfig config.Config
LastSyncTime int64
Clusters int
}
type clusterStatus struct {
Team string
Cluster string
Config cluster.Config
Status spec.PostgresStatus
Resources cluster.KubeResources
Spec spec.PostgresSpec
Error error
}
func (c *Controller) ClusterStatus(team, cluster string) interface{} {
clusterName := spec.NamespacedName{
Namespace: c.opConfig.Namespace,
Name: team + "-" + cluster,
}
cl, ok := c.clusters[clusterName]
if !ok {
return struct{}{}
}
return clusterStatus{
Config: cl.Config,
Cluster: cl.Spec.ClusterName,
Team: cl.Spec.TeamID,
Status: cl.Status,
Resources: cl.KubeResources,
Spec: cl.Spec,
Error: cl.Error,
}
}
func (c *Controller) Status() interface{} {
return controllerStatus{
ControllerConfig: c.config,
OperatorConfig: *c.opConfig,
LastSyncTime: c.lastClusterSyncTime,
Clusters: len(c.clusters),
}
}