| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package kubemodel
- import (
- "fmt"
- "time"
- "github.com/opencost/opencost/core/pkg/model/shared"
- )
- // @bingen:generate:Cluster
- type Cluster struct {
- UID string `json:"uid"` // @bingen:field[version=1]
- Provider shared.Provider `json:"provider"` // @bingen:field[version=1]
- Account string `json:"account"` // @bingen:field[version=1]
- Name string `json:"name"` // @bingen:field[version=1]
- Region string `json:"region"` // @bingen:field[version=2]
- Start time.Time `json:"start"` // @bingen:field[version=1]
- End time.Time `json:"end"` // @bingen:field[version=1]
- }
- func (c *Cluster) ValidateCluster(window Window) error {
- if c.UID == "" {
- err := fmt.Errorf("UID is missing for Cluster with name '%s'", c.Name)
- return err
- }
- if err := checkWindow(window, c.Start, c.End); err != nil {
- return err
- }
- return nil
- }
- func (kms *KubeModelSet) RegisterCluster(cluster *Cluster) error {
- if err := cluster.ValidateCluster(kms.Window); err != nil {
- err = fmt.Errorf("RegisterCluster: invalid cluster: %w", err)
- kms.Error(err)
- return err
- }
- if kms.Cluster == nil {
- kms.Cluster = cluster
- } else if cluster.UID != kms.Cluster.UID {
- kms.Warnf("RegisterCluster(%s): attempting to change cluster UID from %s to %s", cluster.UID, kms.Cluster.UID, cluster.UID)
- } else {
- kms.Debugf("RegisterCluster(%s): cluster already registered", cluster.UID)
- }
- return nil
- }
|