@@ -32,25 +32,30 @@ type kubeConfigClusterProvider struct {
3232
3333var _ 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
4142func 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
172182func (m * Manager ) newForContext (context string ) (* Manager , error ) {
0 commit comments