-
Notifications
You must be signed in to change notification settings - Fork 210
/
observe_cloudprovider.go
55 lines (46 loc) · 2.18 KB
/
observe_cloudprovider.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
package cloudprovider
import (
corelisterv1 "k8s.io/client-go/listers/core/v1"
configlistersv1 "github.com/openshift/client-go/config/listers/config/v1"
"github.com/openshift/library-go/pkg/operator/configobserver"
"github.com/openshift/library-go/pkg/operator/events"
"github.com/openshift/library-go/pkg/operator/resourcesynccontroller"
)
const (
cloudProviderConfFilePath = "/etc/kubernetes/static-pod-resources/configmaps/cloud-config/%s"
configNamespace = "openshift-config"
machineSpecifiedConfigNamespace = "openshift-config-managed"
machineSpecifiedConfig = "kube-cloud-config"
)
// InfrastructureLister lists infrastrucre information and allows resources to be synced
type InfrastructureLister interface {
InfrastructureLister() configlistersv1.InfrastructureLister
ResourceSyncer() resourcesynccontroller.ResourceSyncer
ConfigMapLister() corelisterv1.ConfigMapLister
}
// NewCloudProviderObserver returns a new cloudprovider observer for syncing cloud provider specific
// information to controller-manager and api-server.
func NewCloudProviderObserver(targetNamespaceName string, skipCloudProviderExternal bool) configobserver.ObserveConfigFunc {
cloudObserver := &cloudProviderObserver{
targetNamespaceName: targetNamespaceName,
skipCloudProviderExternal: skipCloudProviderExternal,
}
return cloudObserver.ObserveCloudProviderNames
}
type cloudProviderObserver struct {
targetNamespaceName string
skipCloudProviderExternal bool
}
// ObserveCloudProviderNames observes the cloud provider from the global cluster infrastructure resource.
func (c *cloudProviderObserver) ObserveCloudProviderNames(genericListers configobserver.Listers, recorder events.Recorder, existingConfig map[string]interface{}) (ret map[string]interface{}, _ []error) {
listers := genericListers.(InfrastructureLister)
var errs []error
// Use a blank resource location to delete the old, unused cloud-config configmap, if it exists.
_ = listers.ResourceSyncer().SyncConfigMap(
resourcesynccontroller.ResourceLocation{
Namespace: c.targetNamespaceName,
Name: "cloud-config",
},
resourcesynccontroller.ResourceLocation{})
return map[string]interface{}{}, errs
}