Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions assets/csidriveroperators/manila/07_deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ kind: Deployment
metadata:
name: manila-csi-driver-operator
namespace: openshift-cluster-csi-drivers
annotations:
config.openshift.io/inject-proxy: manila-csi-driver-operator
spec:
replicas: 1
selector:
Expand Down
2 changes: 2 additions & 0 deletions assets/csidriveroperators/ovirt/07_deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ kind: Deployment
metadata:
name: ovirt-csi-driver-operator
namespace: openshift-cluster-csi-drivers
annotations:
config.openshift.io/inject-proxy: ovirt-csi-driver-operator
spec:
replicas: 1
selector:
Expand Down
1 change: 1 addition & 0 deletions assets/vsphere_problem_detector/04_clusterrole.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ rules:
- config.openshift.io
resources:
- infrastructures
- proxies
verbs:
- get
- list
Expand Down
2 changes: 2 additions & 0 deletions assets/vsphere_problem_detector/06_deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ kind: Deployment
metadata:
name: vsphere-problem-detector-operator
namespace: openshift-cluster-storage-operator
annotations:
config.openshift.io/inject-proxy: vsphere-problem-detector-operator
spec:
replicas: 1
selector:
Expand Down
24 changes: 12 additions & 12 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
module github.com/openshift/cluster-storage-operator

go 1.14
go 1.15

require (
github.com/go-bindata/go-bindata v3.1.2+incompatible
github.com/google/go-cmp v0.5.2
github.com/google/gofuzz v1.2.0 // indirect
github.com/openshift/api v0.0.0-20201130121019-19e3831bc513
github.com/openshift/api v0.0.0-20201214114959-164a2fb63b5f
github.com/openshift/build-machinery-go v0.0.0-20200917070002-f171684f77ab
github.com/openshift/client-go v0.0.0-20200827190008-3062137373b5
github.com/openshift/library-go v0.0.0-20200909144351-f29d76719396
github.com/openshift/client-go v0.0.0-20201214125552-e615e336eb49
github.com/openshift/library-go v0.0.0-20210113192829-cfbb3f4c80c2
github.com/prometheus-operator/prometheus-operator v0.44.1
github.com/prometheus/client_golang v1.8.0
github.com/spf13/cobra v1.0.0
github.com/spf13/cobra v1.1.1
github.com/spf13/pflag v1.0.5
k8s.io/api v0.19.2
k8s.io/apiextensions-apiserver v0.19.2
k8s.io/apimachinery v0.19.2
k8s.io/api v0.20.0
k8s.io/apiextensions-apiserver v0.20.0
k8s.io/apimachinery v0.20.0
k8s.io/client-go v12.0.0+incompatible
k8s.io/code-generator v0.19.2
k8s.io/component-base v0.19.2
k8s.io/klog/v2 v2.3.0
k8s.io/code-generator v0.20.0
k8s.io/component-base v0.20.0
k8s.io/klog/v2 v2.4.0
)

replace (
google.golang.org/grpc => google.golang.org/grpc v1.27.0
k8s.io/client-go => k8s.io/client-go v0.19.2
k8s.io/client-go => k8s.io/client-go v0.20.0
)
120 changes: 92 additions & 28 deletions go.sum

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions pkg/generated/bindata.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package configobservercontroller

import (
"k8s.io/client-go/tools/cache"

"github.com/openshift/library-go/pkg/controller/factory"
"github.com/openshift/library-go/pkg/operator/configobserver"
"github.com/openshift/library-go/pkg/operator/configobserver/proxy"
"github.com/openshift/library-go/pkg/operator/events"

"github.com/openshift/cluster-storage-operator/pkg/csoclients"
"github.com/openshift/cluster-storage-operator/pkg/operator/configobservation"
"github.com/openshift/cluster-storage-operator/pkg/operator/configobservation/util"
)

// ConfigObserverController watches information that's relevant to CSO and adds
// it to CR.Spec.ObservedConfig.
type ConfigObserverController struct {
factory.Controller
}

// NewConfigObserverController returns a new ConfigObserverController.
func NewConfigObserverController(
clients *csoclients.Clients,
eventRecorder events.Recorder,
) *ConfigObserverController {
informers := []factory.Informer{
clients.OperatorClient.Informer(),
clients.ConfigInformers.Config().V1().Proxies().Informer(),
}

c := &ConfigObserverController{
Controller: configobserver.NewConfigObserver(
clients.OperatorClient,
eventRecorder.WithComponentSuffix("config-observer-controller-"),
configobservation.Listers{
ProxyLister_: clients.ConfigInformers.Config().V1().Proxies().Lister(),
PreRunCachesSynced: append([]cache.InformerSynced{},
clients.OperatorClient.Informer().HasSynced,
clients.ConfigInformers.Config().V1().Proxies().Informer().HasSynced,
),
},
informers,
proxy.NewProxyObserveFunc(util.ProxyConfigPath()),
),
}

return c
}
27 changes: 27 additions & 0 deletions pkg/operator/configobservation/interface.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package configobservation

import (
configlistersv1 "github.com/openshift/client-go/config/listers/config/v1"
"github.com/openshift/library-go/pkg/operator/resourcesynccontroller"
"k8s.io/client-go/tools/cache"
)

// Listers implement the configobserver.Listers interface.
type Listers struct {
ProxyLister_ configlistersv1.ProxyLister

ResourceSync resourcesynccontroller.ResourceSyncer
PreRunCachesSynced []cache.InformerSynced
}

func (l Listers) ProxyLister() configlistersv1.ProxyLister {
return l.ProxyLister_
}

func (l Listers) ResourceSyncer() resourcesynccontroller.ResourceSyncer {
return l.ResourceSync
}

func (l Listers) PreRunHasSynced() []cache.InformerSynced {
return l.PreRunCachesSynced
}
32 changes: 32 additions & 0 deletions pkg/operator/configobservation/util/util.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package util

import (
"strings"

appsv1 "k8s.io/api/apps/v1"

operatorapi "github.com/openshift/api/operator/v1"
"github.com/openshift/library-go/pkg/operator/v1helpers"
)

// InjectObservedProxyInDeploymentContainers takes an observed proxy config and returns a patched Deployment with proxy env vars set.
func InjectObservedProxyInDeploymentContainers(deployment *appsv1.Deployment, opSpec *operatorapi.OperatorSpec) (*appsv1.Deployment, error) {
deploymentCopy := deployment.DeepCopy()
containerNamesString := deploymentCopy.Annotations["config.openshift.io/inject-proxy"]
err := v1helpers.InjectObservedProxyIntoContainers(
&deploymentCopy.Spec.Template.Spec,
strings.Split(containerNamesString, ","),
opSpec.ObservedConfig.Raw,
ProxyConfigPath()...,
)
if err != nil {
return nil, err
}
return deploymentCopy, nil
}

// ProxyConfigPath returns the path for the observed proxy config. This is a
// function to avoid exposing a slice that could potentially be appended.
func ProxyConfigPath() []string {
return []string{"targetconfig", "proxy"}
}
21 changes: 15 additions & 6 deletions pkg/operator/csidriveroperator/deploymentcontroller.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,23 @@ package csidriveroperator

import (
"context"
"fmt"
"strings"
"time"

"k8s.io/client-go/kubernetes"
"k8s.io/klog/v2"

operatorapi "github.com/openshift/api/operator/v1"
"github.com/openshift/cluster-storage-operator/pkg/csoclients"
"github.com/openshift/cluster-storage-operator/pkg/operator/csidriveroperator/csioperatorclient"
csoutils "github.com/openshift/cluster-storage-operator/pkg/utils"
"github.com/openshift/library-go/pkg/controller/factory"
"github.com/openshift/library-go/pkg/operator/events"
"github.com/openshift/library-go/pkg/operator/status"
"github.com/openshift/library-go/pkg/operator/v1helpers"
"k8s.io/client-go/kubernetes"
"k8s.io/klog/v2"

"github.com/openshift/cluster-storage-operator/pkg/csoclients"
"github.com/openshift/cluster-storage-operator/pkg/operator/configobservation/util"
"github.com/openshift/cluster-storage-operator/pkg/operator/csidriveroperator/csioperatorclient"
csoutils "github.com/openshift/cluster-storage-operator/pkg/utils"
)

// This CSIDriverStarterController installs and syncs CSI driver operator Deployment.
Expand Down Expand Up @@ -104,8 +108,13 @@ func (c *CSIDriverOperatorDeploymentController) Sync(ctx context.Context, syncCt
}

required := csoutils.GetRequiredDeployment(c.csiOperatorConfig.DeploymentAsset, opSpec, replacers...)
requiredCopy, err := util.InjectObservedProxyInDeploymentContainers(required, opSpec)
if err != nil {
return fmt.Errorf("failed to inject proxy data into deployment: %w", err)
}

_, err = csoutils.CreateDeployment(csoutils.DeploymentOptions{
Required: required,
Required: requiredCopy,
ControllerName: c.Name(),
OpStatus: opStatus,
EventRecorder: c.eventRecorder,
Expand Down
5 changes: 5 additions & 0 deletions pkg/operator/starter.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
configv1 "github.com/openshift/api/config/v1"
operatorv1 "github.com/openshift/api/operator/v1"
"github.com/openshift/cluster-storage-operator/pkg/csoclients"
"github.com/openshift/cluster-storage-operator/pkg/operator/configobservation/configobservercontroller"
"github.com/openshift/cluster-storage-operator/pkg/operator/csidriveroperator"
"github.com/openshift/cluster-storage-operator/pkg/operator/csidriveroperator/csioperatorclient"
"github.com/openshift/cluster-storage-operator/pkg/operator/defaultstorageclass"
Expand Down Expand Up @@ -98,6 +99,9 @@ func RunOperator(ctx context.Context, controllerConfig *controllercmd.Controller
// This controller syncs the operator log level with the value set in the CR.Spec.OperatorLogLevel
logLevelController := loglevel.NewClusterOperatorLoggingController(clients.OperatorClient, controllerConfig.EventRecorder)

// This controller observes a config (proxy for now) and writes it to CR.Spec.ObservedConfig for later use by the operator
configObserverController := configobservercontroller.NewConfigObserverController(clients, controllerConfig.EventRecorder)

klog.Info("Starting the Informers.")

csoclients.StartInformers(clients, ctx.Done())
Expand All @@ -109,6 +113,7 @@ func RunOperator(ctx context.Context, controllerConfig *controllercmd.Controller
logLevelController,
clusterOperatorStatus,
managementStateController,
configObserverController,
storageClassController,
snapshotCRDController,
csiDriverController,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ package vsphereproblemdetector

import (
"context"
"fmt"
"os"
"strings"
"time"

operatorapi "github.com/openshift/api/operator/v1"
"github.com/openshift/cluster-storage-operator/pkg/csoclients"
"github.com/openshift/cluster-storage-operator/pkg/operator/configobservation/util"
csoutils "github.com/openshift/cluster-storage-operator/pkg/utils"
"github.com/openshift/library-go/pkg/controller/factory"
"github.com/openshift/library-go/pkg/operator/events"
Expand Down Expand Up @@ -75,8 +77,14 @@ func (c *VSphereProblemDetectorDeploymentController) sync(ctx context.Context, s

replacer := strings.NewReplacer(pairs...)
required := csoutils.GetRequiredDeployment("vsphere_problem_detector/06_deployment.yaml", opSpec, replacer)

requiredCopy, err := util.InjectObservedProxyInDeploymentContainers(required, opSpec)
if err != nil {
return fmt.Errorf("failed to inject proxy data into deployment: %w", err)
}

_, err = csoutils.CreateDeployment(csoutils.DeploymentOptions{
Required: required,
Required: requiredCopy,
ControllerName: deploymentControllerName,
OpStatus: opStatus,
EventRecorder: c.eventRecorder,
Expand Down
21 changes: 21 additions & 0 deletions vendor/github.com/blang/semver/.travis.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading