Skip to content
Closed
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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bootstrap/bootstrap-pod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ spec:
- "start"
- "--release-image={{.ReleaseImage}}"
- "--enable-auto-update=false"
- "--enable-default-cluster-version=false"
- "--wait-for-cluster-version"
- "--listen="
- "--v=5"
- "--kubeconfig=/etc/kubernetes/kubeconfig"
Expand Down
2 changes: 1 addition & 1 deletion cmd/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
cmd.PersistentFlags().StringVar(&opts.Kubeconfig, "kubeconfig", opts.Kubeconfig, "Kubeconfig file to access a remote cluster (testing only)")
cmd.PersistentFlags().StringVar(&opts.NodeName, "node-name", opts.NodeName, "kubernetes node name CVO is scheduled on.")
cmd.PersistentFlags().BoolVar(&opts.EnableAutoUpdate, "enable-auto-update", opts.EnableAutoUpdate, "Enables the autoupdate controller.")
cmd.PersistentFlags().BoolVar(&opts.EnableDefaultClusterVersion, "enable-default-cluster-version", opts.EnableDefaultClusterVersion, "Allows the operator to create a ClusterVersion object if one does not already exist.")
cmd.PersistentFlags().BoolVar(&opts.WaitForClusterVersion, "wait-for-cluster-version", opts.WaitForClusterVersion, "Blocks manifest reconciliation until the ClusterVersion resource exists.")
cmd.PersistentFlags().StringVar(&opts.ReleaseImage, "release-image", opts.ReleaseImage, "The Openshift release image url.")
cmd.PersistentFlags().StringVar(&opts.ServingCertFile, "serving-cert-file", opts.ServingCertFile, "The X.509 certificate file for serving metrics over HTTPS. You must set both --serving-cert-file and --serving-key-file unless you set --listen empty.")
cmd.PersistentFlags().StringVar(&opts.ServingKeyFile, "serving-key-file", opts.ServingKeyFile, "The X.509 key file for serving metrics over HTTPS. You must set both --serving-cert-file and --serving-key-file unless you set --listen empty.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ spec:
- "start"
- "--release-image={{.ReleaseImage}}"
- "--enable-auto-update=false"
- "--enable-default-cluster-version=true"
- "--listen=0.0.0.0:9099"
- "--serving-cert-file=/etc/tls/serving-cert/tls.crt"
- "--serving-key-file=/etc/tls/serving-cert/tls.key"
Expand Down
20 changes: 8 additions & 12 deletions pkg/cvo/cvo.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,9 @@ type Operator struct {
// releaseCreated, if set, is the timestamp of the current update.
releaseCreated time.Time

// enableDefaultClusterVersion allows the operator to create a
// ClusterVersion object if one does not already exist.
enableDefaultClusterVersion bool
// waitForClusterVersion blocks manifest reconciliation until
// the ClusterVersion resource exists.
waitForClusterVersion bool

client clientset.Interface
kubeClient kubernetes.Interface
Expand Down Expand Up @@ -155,7 +155,7 @@ func New(
nodename string,
namespace, name string,
releaseImage string,
enableDefaultClusterVersion bool,
waitForClusterVersion bool,
overridePayloadDir string,
minimumInterval time.Duration,
cvInformer configinformersv1.ClusterVersionInformer,
Expand All @@ -180,7 +180,7 @@ func New(
Image: releaseImage,
},

enableDefaultClusterVersion: enableDefaultClusterVersion,
waitForClusterVersion: waitForClusterVersion,

statusInterval: 15 * time.Second,
minimumUpdateCheckInterval: minimumInterval,
Expand Down Expand Up @@ -511,7 +511,7 @@ func (optr *Operator) sync(ctx context.Context, key string) error {

// ensure the cluster version exists, that the object is valid, and that
// all initial conditions are set.
original, changed, err := optr.getOrCreateClusterVersion(ctx, optr.enableDefaultClusterVersion)
original, changed, err := optr.getOrCreateClusterVersion(ctx, optr.waitForClusterVersion)
if err != nil {
return err
}
Expand Down Expand Up @@ -645,7 +645,7 @@ func (optr *Operator) rememberLastUpdate(config *configv1.ClusterVersion) {
optr.lastResourceVersion = i
}

func (optr *Operator) getOrCreateClusterVersion(ctx context.Context, enableDefault bool) (*configv1.ClusterVersion, bool, error) {
func (optr *Operator) getOrCreateClusterVersion(ctx context.Context, waitForGet bool) (*configv1.ClusterVersion, bool, error) {
obj, err := optr.cvLister.Get(optr.name)
if err == nil {
// if we are waiting to see a newer cached version, just exit
Expand All @@ -655,14 +655,10 @@ func (optr *Operator) getOrCreateClusterVersion(ctx context.Context, enableDefau
return obj, false, nil
}

if !apierrors.IsNotFound(err) {
if !apierrors.IsNotFound(err) || waitForGet {
return nil, false, err
}

if !enableDefault {
return nil, false, nil
}

id, _ := uuid.NewRandom()

// XXX: generate ClusterVersion from options calculated above.
Expand Down
17 changes: 8 additions & 9 deletions pkg/cvo/cvo_scenarios_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,14 @@ func setupCVOTest(payloadDir string) (*Operator, map[string]runtime.Object, *fak
})

o := &Operator{
namespace: "test",
name: "version",
enableDefaultClusterVersion: true,
queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "cvo-loop-test"),
client: client,
cvLister: &clientCVLister{client: client},
exclude: "exclude-test",
eventRecorder: record.NewFakeRecorder(100),
clusterProfile: payload.DefaultClusterProfile,
namespace: "test",
name: "version",
queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "cvo-loop-test"),
client: client,
cvLister: &clientCVLister{client: client},
exclude: "exclude-test",
eventRecorder: record.NewFakeRecorder(100),
clusterProfile: payload.DefaultClusterProfile,
}

dynamicScheme := runtime.NewScheme()
Expand Down
12 changes: 4 additions & 8 deletions pkg/cvo/cvo_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,10 +195,9 @@ func TestOperator_sync(t *testing.T) {
Version: "4.0.1",
Image: "image/image:v4.0.1",
},
enableDefaultClusterVersion: true,
namespace: "test",
name: "default",
client: fake.NewSimpleClientset(),
namespace: "test",
name: "default",
client: fake.NewSimpleClientset(),
},
wantActions: func(t *testing.T, optr *Operator) {
f := optr.client.(*fake.Clientset)
Expand Down Expand Up @@ -4379,14 +4378,12 @@ func TestOperator_getOrCreateClusterVersion(t *testing.T) {
cvName string
expectedResult *configv1.ClusterVersion
cvs []configv1.ClusterVersion
enableDefault bool
changed bool
}{
{
name: "no existing cluster version",
cvName: "version",
expectedResult: &configv1.ClusterVersion{ObjectMeta: metav1.ObjectMeta{Name: "version", UID: types.UID("version")}},
enableDefault: true,
changed: true,
},
{
Expand All @@ -4396,7 +4393,6 @@ func TestOperator_getOrCreateClusterVersion(t *testing.T) {
{ObjectMeta: metav1.ObjectMeta{Name: "version", UID: types.UID("version")}},
},
expectedResult: &configv1.ClusterVersion{ObjectMeta: metav1.ObjectMeta{Name: "version", UID: types.UID("version")}},
enableDefault: true,
},
}
for _, tt := range tests {
Expand All @@ -4407,7 +4403,7 @@ func TestOperator_getOrCreateClusterVersion(t *testing.T) {
cvLister: &clientCVLister{client: client},
client: client,
}
cv, changed, err := optr.getOrCreateClusterVersion(context.Background(), tt.enableDefault)
cv, changed, err := optr.getOrCreateClusterVersion(context.Background(), false)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
Expand Down
6 changes: 3 additions & 3 deletions pkg/start/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ type Options struct {
NodeName string
ListenAddr string

EnableAutoUpdate bool
EnableDefaultClusterVersion bool
EnableAutoUpdate bool
WaitForClusterVersion bool

// Exclude is used to determine whether to exclude
// certain manifests based on an annotation:
Expand Down Expand Up @@ -430,7 +430,7 @@ func (o *Options) NewControllerContext(cb *ClientBuilder) *Context {
o.NodeName,
o.Namespace, o.Name,
o.ReleaseImage,
o.EnableDefaultClusterVersion,
o.WaitForClusterVersion,
o.PayloadOverride,
resyncPeriod(o.ResyncInterval)(),
cvInformer.Config().V1().ClusterVersions(),
Expand Down
2 changes: 0 additions & 2 deletions pkg/start/start_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,6 @@ func TestIntegrationCVO_initializeAndUpgrade(t *testing.T) {
options.Namespace = ns
options.Name = ns
options.ListenAddr = ""
options.EnableDefaultClusterVersion = true
options.NodeName = "test-node"
options.ReleaseImage = payloadImage1
options.PayloadOverride = filepath.Join(dir, "ignored")
Expand Down Expand Up @@ -441,7 +440,6 @@ func TestIntegrationCVO_initializeAndHandleError(t *testing.T) {
options.Namespace = ns
options.Name = ns
options.ListenAddr = ""
options.EnableDefaultClusterVersion = true
options.NodeName = "test-node"
options.ReleaseImage = payloadImage1
options.PayloadOverride = filepath.Join(dir, "ignored")
Expand Down