| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package kubemodel
- import (
- "time"
- "github.com/opencost/opencost/core/pkg/log"
- "github.com/opencost/opencost/core/pkg/model/kubemodel"
- "github.com/opencost/opencost/core/pkg/source"
- )
- func (km *KubeModel) computeDaemonSets(kms *kubemodel.KubeModelSet, start, end time.Time) error {
- grp := source.NewQueryGroup()
- metrics := km.ds.Metrics()
- daemonSetInfoResultFuture := source.WithGroup(grp, metrics.QueryDaemonSetInfo(start, end))
- daemonSetUptimeResultFuture := source.WithGroup(grp, metrics.QueryDaemonSetUptime(start, end))
- daemonSetLabelsResultFuture := source.WithGroup(grp, metrics.QueryDaemonSetLabels(start, end))
- daemonSetAnnotationsResultFuture := source.WithGroup(grp, metrics.QueryDaemonSetAnnotations(start, end))
- daemonSetArgumentsResultFuture := source.WithGroup(grp, metrics.QueryDaemonSetArguments(start, end))
- daemonSetMap := make(map[string]*kubemodel.DaemonSet)
- daemonSetInfoResult, _ := daemonSetInfoResultFuture.Await()
- for _, res := range daemonSetInfoResult {
- daemonSetMap[res.UID] = &kubemodel.DaemonSet{
- UID: res.UID,
- Name: res.DaemonSet,
- NamespaceUID: res.NamespaceUID,
- }
- }
- daemonSetUptimeResult, _ := daemonSetUptimeResultFuture.Await()
- for _, res := range daemonSetUptimeResult {
- daemonSet, ok := daemonSetMap[res.UID]
- if !ok {
- log.Warnf("daemonset with UID '%s' has not been initialized to add uptime", res.UID)
- continue
- }
- s, e := res.GetStartEnd(start, end, km.ds.Resolution())
- daemonSet.Start = s
- daemonSet.End = e
- }
- daemonSetLabelsResult, _ := daemonSetLabelsResultFuture.Await()
- for _, res := range daemonSetLabelsResult {
- daemonSet, ok := daemonSetMap[res.UID]
- if !ok {
- log.Warnf("daemonset with UID '%s' has not been initialized to add labels", res.UID)
- continue
- }
- daemonSet.Labels = res.Labels
- }
- daemonSetAnnotationsResult, _ := daemonSetAnnotationsResultFuture.Await()
- for _, res := range daemonSetAnnotationsResult {
- daemonSet, ok := daemonSetMap[res.UID]
- if !ok {
- log.Warnf("daemonset with UID '%s' has not been initialized to add annotations", res.UID)
- continue
- }
- daemonSet.Annotations = res.Annotations
- }
- daemonSetArgumentsResult, _ := daemonSetArgumentsResultFuture.Await()
- for _, res := range daemonSetArgumentsResult {
- daemonSet, ok := daemonSetMap[res.UID]
- if !ok {
- log.Warnf("daemonset with UID '%s' has not been initialized to add arguments", res.UID)
- continue
- }
- if daemonSet.Arguments == nil {
- daemonSet.Arguments = make(map[string]string)
- }
- daemonSet.Arguments[res.Arg] = res.Value
- }
- for _, daemonSet := range daemonSetMap {
- err := kms.RegisterDaemonSet(daemonSet)
- if err != nil {
- log.Warnf("Failed to register daemonset: %s", err.Error())
- }
- }
- return nil
- }
|