This repository has been archived by the owner on Oct 9, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 62
/
cluster_config_provider.go
57 lines (46 loc) · 1.87 KB
/
cluster_config_provider.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package runtime
import (
"context"
"github.com/flyteorg/flyteadmin/pkg/runtime/interfaces"
"github.com/flyteorg/flytestdlib/logger"
"github.com/flyteorg/flytestdlib/config"
)
const clustersKey = "clusters"
var clusterConfig = config.MustRegisterSection(clustersKey, &interfaces.Clusters{})
// Implementation of an interfaces.ClusterConfiguration
type ClusterConfigurationProvider struct{}
func (p *ClusterConfigurationProvider) GetLabelClusterMap() map[string][]interfaces.ClusterEntity {
if clusterConfig != nil {
clusters := clusterConfig.GetConfig().(*interfaces.Clusters)
return clusters.LabelClusterMap
}
logger.Warningf(context.Background(), "Failed to find clusters in config. Returning an empty slice")
return make(map[string][]interfaces.ClusterEntity)
}
func (p *ClusterConfigurationProvider) GetClusterConfigs() []interfaces.ClusterConfig {
if clusterConfig != nil {
clusters := clusterConfig.GetConfig().(*interfaces.Clusters)
return clusters.ClusterConfigs
}
logger.Warningf(context.Background(), "Failed to find clusters in config. Returning an empty slice")
return make([]interfaces.ClusterConfig, 0)
}
func (p *ClusterConfigurationProvider) GetDefaultExecutionLabel() string {
if clusterConfig != nil {
clusters := clusterConfig.GetConfig().(*interfaces.Clusters)
return clusters.DefaultExecutionLabel
}
logger.Debug(context.Background(), "Failed to find default execution label in config. Will use random cluster if no execution label matches.")
return ""
}
func NewClusterConfigurationProvider() interfaces.ClusterConfiguration {
clusterConfigProvider := ClusterConfigurationProvider{}
clusterNameMap := make(map[string]bool)
for _, config := range clusterConfigProvider.GetClusterConfigs() {
if clusterNameMap[config.Name] {
panic("Duplicate cluster names in runtime config")
}
clusterNameMap[config.Name] = true
}
return &clusterConfigProvider
}