Skip to content

Commit e05e3ac

Browse files
committed
feat: add 'disabled' ClusterProviderStrategy
Signed-off-by: Calum Murray <[email protected]>
1 parent e8ba1fa commit e05e3ac

File tree

2 files changed

+31
-20
lines changed

2 files changed

+31
-20
lines changed

pkg/config/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
const (
1010
ClusterProviderKubeConfig = "kubeconfig"
1111
ClusterProviderInCluster = "in-cluster"
12+
ClusterProviderDisabled = "disabled"
1213
)
1314

1415
// StaticConfig is the configuration for the server.

pkg/kubernetes/provider.go

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -32,25 +32,30 @@ type kubeConfigClusterProvider struct {
3232

3333
var _ ManagerProvider = &kubeConfigClusterProvider{}
3434

35-
type inClusterProvider struct {
36-
manager *Manager
35+
type singleClusterProvider struct {
36+
strategy string
37+
manager *Manager
3738
}
3839

39-
var _ ManagerProvider = &inClusterProvider{}
40+
var _ ManagerProvider = &singleClusterProvider{}
4041

4142
func NewManagerProvider(cfg *config.StaticConfig) (ManagerProvider, error) {
4243
m, err := NewManager(cfg)
4344
if err != nil {
4445
return nil, err
4546
}
4647

47-
switch resolveStrategy(cfg, m) {
48+
strategy := resolveStrategy(cfg, m)
49+
switch strategy {
4850
case config.ClusterProviderKubeConfig:
4951
return newKubeConfigClusterProvider(m)
50-
case config.ClusterProviderInCluster:
51-
return newInClusterProvider(m)
52+
case config.ClusterProviderInCluster, config.ClusterProviderDisabled:
53+
return newSingleClusterProvider(m, strategy)
5254
default:
53-
return nil, fmt.Errorf("invalid ClusterProviderStrategy '%s', must be 'kubeconfig' or 'in-cluster'", cfg.ClusterProviderStrategy)
55+
return nil, fmt.Errorf(
56+
"invalid ClusterProviderStrategy '%s', must be 'kubeconfig', 'in-cluster', or 'disabled'",
57+
strategy,
58+
)
5459
}
5560
}
5661

@@ -83,9 +88,14 @@ func newKubeConfigClusterProvider(m *Manager) (*kubeConfigClusterProvider, error
8388
}, nil
8489
}
8590

86-
func newInClusterProvider(m *Manager) (*inClusterProvider, error) {
87-
return &inClusterProvider{
88-
manager: m,
91+
func newSingleClusterProvider(m *Manager, strategy string) (*singleClusterProvider, error) {
92+
if strategy == config.ClusterProviderInCluster && !m.IsInCluster() {
93+
return nil, fmt.Errorf("server must be deployed in cluster for the in-cluster ClusterProviderStrategy")
94+
}
95+
96+
return &singleClusterProvider{
97+
manager: m,
98+
strategy: strategy,
8999
}, nil
90100
}
91101

@@ -141,32 +151,32 @@ func (k *kubeConfigClusterProvider) Close() {
141151
m.Close()
142152
}
143153

144-
func (i *inClusterProvider) GetTargets(ctx context.Context) ([]string, error) {
154+
func (s *singleClusterProvider) GetTargets(ctx context.Context) ([]string, error) {
145155
return []string{""}, nil
146156
}
147157

148-
func (i *inClusterProvider) GetManagerFor(ctx context.Context, target string) (*Manager, error) {
158+
func (s *singleClusterProvider) GetManagerFor(ctx context.Context, target string) (*Manager, error) {
149159
if target != "" {
150-
return nil, fmt.Errorf("unable to get manager for other context/cluster with in-cluster strategy")
160+
return nil, fmt.Errorf("unable to get manager for other context/cluster with %s strategy", s.strategy)
151161
}
152162

153-
return i.manager, nil
163+
return s.manager, nil
154164
}
155165

156-
func (i *inClusterProvider) GetDefaultTarget() string {
166+
func (s *singleClusterProvider) GetDefaultTarget() string {
157167
return ""
158168
}
159169

160-
func (i *inClusterProvider) GetTargetParameterName() string {
170+
func (s *singleClusterProvider) GetTargetParameterName() string {
161171
return ""
162172
}
163173

164-
func (i *inClusterProvider) WatchTargets(watch func() error) {
165-
i.manager.WatchKubeConfig(watch)
174+
func (s *singleClusterProvider) WatchTargets(watch func() error) {
175+
s.manager.WatchKubeConfig(watch)
166176
}
167177

168-
func (i *inClusterProvider) Close() {
169-
i.manager.Close()
178+
func (s *singleClusterProvider) Close() {
179+
s.manager.Close()
170180
}
171181

172182
func (m *Manager) newForContext(context string) (*Manager, error) {

0 commit comments

Comments
 (0)