Skip to content

Commit e03c8a6

Browse files
Merge pull request #19070 from deads2k/server-08-features-on
Automatic merge from submit-queue. remove disabledfeatures from master config 1. `FeatureBuilder` was agreed to remove by @smarterclayton and @eparis . 2. `FeatureS2I` was not used 3. `FeatureWebConsole` doesn't make sense the webconsole isn't include here. Just don't install it. Also, it didn't control the exposure of the console 4. `openshift.io/resource` used by image builder. Don't know when this was added, but it never passed validation here: `ValidateDisabledFeatures` @openshift/api-review @openshift/sig-master /assign @mfojtik /assign @soltysh
2 parents 248eabb + f14a3a5 commit e03c8a6

21 files changed

+38
-482
lines changed

Diff for: hack/test-cmd.sh

-4
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,6 @@ os::cmd::expect_success_and_not_text "KUBECONFIG='${MASTER_CONFIG_DIR}/admin.kub
7777
os::cmd::expect_success_and_not_text "KUBECONFIG='' oc version" "Missing or incomplete configuration info"
7878
os::test::junit::declare_suite_end
7979

80-
os::test::junit::declare_suite_start "cmd/config"
81-
os::cmd::expect_success_and_text "cat ${MASTER_CONFIG_DIR}/master-config.yaml" 'disabledFeatures: null'
82-
os::test::junit::declare_suite_end
83-
8480
os::start::master
8581

8682
# profile the cli commands

Diff for: pkg/cmd/openshift-apiserver/server.go

-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package openshift_apiserver
22

33
import (
4-
"strings"
5-
64
"github.com/golang/glog"
75

86
kerrors "k8s.io/apimachinery/pkg/api/errors"
@@ -55,9 +53,6 @@ func RunOpenShiftAPIServer(masterConfig *configapi.MasterConfig) error {
5553

5654
glog.Infof("Starting master on %s (%s)", masterConfig.ServingInfo.BindAddress, version.Get().String())
5755
glog.Infof("Public master address is %s", masterConfig.MasterPublicURL)
58-
if len(masterConfig.DisabledFeatures) > 0 {
59-
glog.V(4).Infof("Disabled features: %s", strings.Join(masterConfig.DisabledFeatures, ", "))
60-
}
6156
imageTemplate := variable.NewDefaultImageTemplate()
6257
imageTemplate.Format = masterConfig.ImageConfig.Format
6358
imageTemplate.Latest = masterConfig.ImageConfig.Latest

Diff for: pkg/cmd/openshift-controller-manager/controller/config.go

+1-10
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ type OpenshiftControllerConfig struct {
5858
DeployerControllerConfig DeployerControllerConfig
5959
DeploymentConfigControllerConfig DeploymentConfigControllerConfig
6060

61-
ImageTriggerControllerConfig ImageTriggerControllerConfig
6261
ImageSignatureImportControllerConfig ImageSignatureImportControllerConfig
6362
ImageImportControllerConfig ImageImportControllerConfig
6463

@@ -90,7 +89,7 @@ func (c *OpenshiftControllerConfig) GetControllerInitializers() (map[string]Init
9089
ret["openshift.io/deployer"] = c.DeployerControllerConfig.RunController
9190
ret["openshift.io/deploymentconfig"] = c.DeploymentConfigControllerConfig.RunController
9291

93-
ret["openshift.io/image-trigger"] = c.ImageTriggerControllerConfig.RunController
92+
ret["openshift.io/image-trigger"] = RunImageTriggerController
9493
ret["openshift.io/image-import"] = c.ImageImportControllerConfig.RunController
9594
ret["openshift.io/image-signature-import"] = c.ImageSignatureImportControllerConfig.RunController
9695

@@ -146,14 +145,6 @@ func BuildOpenshiftControllerConfig(options configapi.MasterConfig) (*OpenshiftC
146145
Codec: annotationCodec,
147146
}
148147

149-
ret.ImageTriggerControllerConfig = ImageTriggerControllerConfig{
150-
HasBuilderEnabled: options.DisabledFeatures.Has(configapi.FeatureBuilder),
151-
// TODO: make these consts in configapi
152-
HasDeploymentsEnabled: options.DisabledFeatures.Has("triggers.image.openshift.io/deployments"),
153-
HasDaemonSetsEnabled: options.DisabledFeatures.Has("triggers.image.openshift.io/daemonsets"),
154-
HasStatefulSetsEnabled: options.DisabledFeatures.Has("triggers.image.openshift.io/statefulsets"),
155-
HasCronJobsEnabled: options.DisabledFeatures.Has("triggers.image.openshift.io/cronjobs"),
156-
}
157148
ret.ImageImportControllerConfig = ImageImportControllerConfig{
158149
MaxScheduledImageImportsPerMinute: options.ImagePolicyConfig.MaxScheduledImageImportsPerMinute,
159150
ResyncPeriod: 10 * time.Minute,

Diff for: pkg/cmd/openshift-controller-manager/controller/image.go

+36-55
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,7 @@ import (
2727
triggerdeploymentconfigs "github.com/openshift/origin/pkg/image/trigger/deploymentconfigs"
2828
)
2929

30-
type ImageTriggerControllerConfig struct {
31-
HasBuilderEnabled bool
32-
HasDeploymentsEnabled bool
33-
HasDaemonSetsEnabled bool
34-
HasStatefulSetsEnabled bool
35-
HasCronJobsEnabled bool
36-
}
37-
38-
func (c *ImageTriggerControllerConfig) RunController(ctx ControllerContext) (bool, error) {
39-
//streamInformer := ctx.ImageInformers.Image().InternalVersion().ImageStreams().Informer()
30+
func RunImageTriggerController(ctx ControllerContext) (bool, error) {
4031
informer := ctx.ImageInformers.Image().InternalVersion().ImageStreams()
4132

4233
buildClient, err := ctx.ClientBuilder.OpenshiftInternalBuildClient(bootstrappolicy.InfraImageTriggerControllerServiceAccountName)
@@ -63,51 +54,41 @@ func (c *ImageTriggerControllerConfig) RunController(ctx ControllerContext) (boo
6354
Reactor: &triggerdeploymentconfigs.DeploymentConfigReactor{Client: appsClient.Apps()},
6455
},
6556
}
66-
if !c.HasBuilderEnabled {
67-
sources = append(sources, imagetriggercontroller.TriggerSource{
68-
Resource: schema.GroupResource{Group: "build.openshift.io", Resource: "buildconfigs"},
69-
Informer: ctx.BuildInformers.Build().InternalVersion().BuildConfigs().Informer(),
70-
Store: ctx.BuildInformers.Build().InternalVersion().BuildConfigs().Informer().GetIndexer(),
71-
TriggerFn: triggerbuildconfigs.NewBuildConfigTriggerIndexer,
72-
Reactor: triggerbuildconfigs.NewBuildConfigReactor(bcInstantiator, kclient.Core().RESTClient()),
73-
})
74-
}
75-
if !c.HasDeploymentsEnabled {
76-
sources = append(sources, imagetriggercontroller.TriggerSource{
77-
Resource: schema.GroupResource{Group: "extensions", Resource: "deployments"},
78-
Informer: ctx.ExternalKubeInformers.Extensions().V1beta1().Deployments().Informer(),
79-
Store: ctx.ExternalKubeInformers.Extensions().V1beta1().Deployments().Informer().GetIndexer(),
80-
TriggerFn: triggerannotations.NewAnnotationTriggerIndexer,
81-
Reactor: &triggerannotations.AnnotationReactor{Updater: updater},
82-
})
83-
}
84-
if !c.HasDaemonSetsEnabled {
85-
sources = append(sources, imagetriggercontroller.TriggerSource{
86-
Resource: schema.GroupResource{Group: "extensions", Resource: "daemonsets"},
87-
Informer: ctx.ExternalKubeInformers.Extensions().V1beta1().DaemonSets().Informer(),
88-
Store: ctx.ExternalKubeInformers.Extensions().V1beta1().DaemonSets().Informer().GetIndexer(),
89-
TriggerFn: triggerannotations.NewAnnotationTriggerIndexer,
90-
Reactor: &triggerannotations.AnnotationReactor{Updater: updater},
91-
})
92-
}
93-
if !c.HasStatefulSetsEnabled {
94-
sources = append(sources, imagetriggercontroller.TriggerSource{
95-
Resource: schema.GroupResource{Group: "apps", Resource: "statefulsets"},
96-
Informer: ctx.ExternalKubeInformers.Apps().V1beta1().StatefulSets().Informer(),
97-
Store: ctx.ExternalKubeInformers.Apps().V1beta1().StatefulSets().Informer().GetIndexer(),
98-
TriggerFn: triggerannotations.NewAnnotationTriggerIndexer,
99-
Reactor: &triggerannotations.AnnotationReactor{Updater: updater},
100-
})
101-
}
102-
if !c.HasCronJobsEnabled {
103-
sources = append(sources, imagetriggercontroller.TriggerSource{
104-
Resource: schema.GroupResource{Group: "batch", Resource: "cronjobs"},
105-
Informer: ctx.ExternalKubeInformers.Batch().V2alpha1().CronJobs().Informer(),
106-
Store: ctx.ExternalKubeInformers.Batch().V2alpha1().CronJobs().Informer().GetIndexer(),
107-
TriggerFn: triggerannotations.NewAnnotationTriggerIndexer,
108-
Reactor: &triggerannotations.AnnotationReactor{Updater: updater},
109-
})
110-
}
57+
sources = append(sources, imagetriggercontroller.TriggerSource{
58+
Resource: schema.GroupResource{Group: "build.openshift.io", Resource: "buildconfigs"},
59+
Informer: ctx.BuildInformers.Build().InternalVersion().BuildConfigs().Informer(),
60+
Store: ctx.BuildInformers.Build().InternalVersion().BuildConfigs().Informer().GetIndexer(),
61+
TriggerFn: triggerbuildconfigs.NewBuildConfigTriggerIndexer,
62+
Reactor: triggerbuildconfigs.NewBuildConfigReactor(bcInstantiator, kclient.Core().RESTClient()),
63+
})
64+
sources = append(sources, imagetriggercontroller.TriggerSource{
65+
Resource: schema.GroupResource{Group: "extensions", Resource: "deployments"},
66+
Informer: ctx.ExternalKubeInformers.Extensions().V1beta1().Deployments().Informer(),
67+
Store: ctx.ExternalKubeInformers.Extensions().V1beta1().Deployments().Informer().GetIndexer(),
68+
TriggerFn: triggerannotations.NewAnnotationTriggerIndexer,
69+
Reactor: &triggerannotations.AnnotationReactor{Updater: updater},
70+
})
71+
sources = append(sources, imagetriggercontroller.TriggerSource{
72+
Resource: schema.GroupResource{Group: "extensions", Resource: "daemonsets"},
73+
Informer: ctx.ExternalKubeInformers.Extensions().V1beta1().DaemonSets().Informer(),
74+
Store: ctx.ExternalKubeInformers.Extensions().V1beta1().DaemonSets().Informer().GetIndexer(),
75+
TriggerFn: triggerannotations.NewAnnotationTriggerIndexer,
76+
Reactor: &triggerannotations.AnnotationReactor{Updater: updater},
77+
})
78+
sources = append(sources, imagetriggercontroller.TriggerSource{
79+
Resource: schema.GroupResource{Group: "apps", Resource: "statefulsets"},
80+
Informer: ctx.ExternalKubeInformers.Apps().V1beta1().StatefulSets().Informer(),
81+
Store: ctx.ExternalKubeInformers.Apps().V1beta1().StatefulSets().Informer().GetIndexer(),
82+
TriggerFn: triggerannotations.NewAnnotationTriggerIndexer,
83+
Reactor: &triggerannotations.AnnotationReactor{Updater: updater},
84+
})
85+
sources = append(sources, imagetriggercontroller.TriggerSource{
86+
Resource: schema.GroupResource{Group: "batch", Resource: "cronjobs"},
87+
Informer: ctx.ExternalKubeInformers.Batch().V2alpha1().CronJobs().Informer(),
88+
Store: ctx.ExternalKubeInformers.Batch().V2alpha1().CronJobs().Informer().GetIndexer(),
89+
TriggerFn: triggerannotations.NewAnnotationTriggerIndexer,
90+
Reactor: &triggerannotations.AnnotationReactor{Updater: updater},
91+
})
11192

11293
go imagetriggercontroller.NewTriggerController(
11394
broadcaster,

Diff for: pkg/cmd/openshift-controller-manager/controller_manager.go

-21
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@ import (
44
"fmt"
55
"net/http"
66
"os"
7-
"strings"
87
"time"
98

109
"github.com/golang/glog"
1110

1211
"k8s.io/api/core/v1"
1312
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1413
kutilerrors "k8s.io/apimachinery/pkg/util/errors"
15-
"k8s.io/apimachinery/pkg/util/sets"
1614
"k8s.io/apimachinery/pkg/util/wait"
1715
clientgoclientset "k8s.io/client-go/kubernetes"
1816
kclientsetexternal "k8s.io/client-go/kubernetes"
@@ -63,9 +61,6 @@ func runOpenShiftControllerManager(masterConfig *configapi.MasterConfig, runServ
6361
// you can't double run healthz, so only do this next bit if we aren't starting the API
6462
if runServer {
6563
glog.Infof("Starting controllers on %s (%s)", masterConfig.ServingInfo.BindAddress, version.Get().String())
66-
if len(masterConfig.DisabledFeatures) > 0 {
67-
glog.V(4).Infof("Disabled features: %s", strings.Join(masterConfig.DisabledFeatures, ", "))
68-
}
6964

7065
if err := origincontrollers.RunControllerServer(masterConfig.ServingInfo, clientGoKubeExternal); err != nil {
7166
return err
@@ -280,14 +275,7 @@ func startControllers(options configapi.MasterConfig, allocationController origi
280275
return err
281276
}
282277

283-
excludedControllers := getExcludedControllers(options)
284-
285278
for controllerName, initFn := range openshiftControllerInitializers {
286-
// TODO remove this. Only call one to start to prove the principle
287-
if excludedControllers.Has(controllerName) {
288-
glog.Warningf("%q is skipped", controllerName)
289-
continue
290-
}
291279
if !controllerContext.IsControllerEnabled(controllerName) {
292280
glog.Warningf("%q is disabled", controllerName)
293281
continue
@@ -310,12 +298,3 @@ func startControllers(options configapi.MasterConfig, allocationController origi
310298

311299
return nil
312300
}
313-
314-
func getExcludedControllers(options configapi.MasterConfig) sets.String {
315-
excludedControllers := sets.NewString()
316-
if !configapi.IsBuildEnabled(&options) {
317-
excludedControllers.Insert("openshift.io/build")
318-
excludedControllers.Insert("openshift.io/build-config-change")
319-
}
320-
return excludedControllers
321-
}

Diff for: pkg/cmd/openshift-kube-apiserver/server.go

-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package openshift_kube_apiserver
22

33
import (
44
"fmt"
5-
"strings"
65

76
"github.com/golang/glog"
87

@@ -67,9 +66,6 @@ func RunOpenShiftKubeAPIServerServer(masterConfig *configapi.MasterConfig) error
6766

6867
glog.Infof("Starting master on %s (%s)", masterConfig.ServingInfo.BindAddress, version.Get().String())
6968
glog.Infof("Public master address is %s", masterConfig.MasterPublicURL)
70-
if len(masterConfig.DisabledFeatures) > 0 {
71-
glog.V(4).Infof("Disabled features: %s", strings.Join(masterConfig.DisabledFeatures, ", "))
72-
}
7369
imageTemplate := variable.NewDefaultImageTemplate()
7470
imageTemplate.Format = masterConfig.ImageConfig.Format
7571
imageTemplate.Latest = masterConfig.ImageConfig.Latest

Diff for: pkg/cmd/server/apis/config/helpers.go

-74
Original file line numberDiff line numberDiff line change
@@ -23,80 +23,6 @@ import (
2323
cmdutil "github.com/openshift/origin/pkg/cmd/util"
2424
)
2525

26-
var (
27-
// Maps lower-cased feature flag names and aliases to their canonical names.
28-
knownOpenShiftFeatureSet map[string]string
29-
)
30-
31-
func init() {
32-
knownOpenShiftFeatureSet = make(map[string]string, len(KnownOpenShiftFeatures))
33-
for _, feature := range KnownOpenShiftFeatures {
34-
knownOpenShiftFeatureSet[strings.ToLower(feature)] = feature
35-
}
36-
for alias, feature := range FeatureAliases {
37-
knownOpenShiftFeatureSet[strings.ToLower(alias)] = feature
38-
}
39-
}
40-
41-
// NormalizeOpenShiftFeature returns canonical name for given OpenShift feature
42-
// flag or an alias if known. Otherwise lower-cased name is returned.
43-
func NormalizeOpenShiftFeature(name string) (string, bool) {
44-
name = strings.ToLower(name)
45-
if feature, ok := knownOpenShiftFeatureSet[name]; ok {
46-
return feature, true
47-
}
48-
return name, false
49-
}
50-
51-
// Add extends feature list with given valid items. They are appended
52-
// unless already present.
53-
func (fl *FeatureList) Add(items ...string) error {
54-
unknown := []string{}
55-
toAppend := make([]string, 0, len(items))
56-
for _, item := range items {
57-
feature, known := NormalizeOpenShiftFeature(item)
58-
if !known {
59-
unknown = append(unknown, item)
60-
continue
61-
}
62-
if fl.Has(feature) {
63-
continue
64-
}
65-
toAppend = append(toAppend, feature)
66-
}
67-
if len(unknown) > 0 {
68-
return fmt.Errorf("unknown features: %s", strings.Join(unknown, ", "))
69-
}
70-
*fl = append(*fl, toAppend...)
71-
return nil
72-
}
73-
74-
// Delete removes given items from feature list while keeping its original
75-
// order.
76-
func (fl *FeatureList) Delete(items ...string) {
77-
toDelete := FeatureList(items)
78-
newList := []string{}
79-
for _, item := range *fl {
80-
if !toDelete.Has(item) {
81-
newList = append(newList, item)
82-
}
83-
}
84-
*fl = newList
85-
}
86-
87-
// Has returns true if given feature exists in feature list. The check is
88-
// case-insensitive.
89-
func (fl FeatureList) Has(feature string) bool {
90-
normalized, _ := NormalizeOpenShiftFeature(feature)
91-
for _, item := range fl {
92-
itemNormalized, _ := NormalizeOpenShiftFeature(item)
93-
if normalized == itemNormalized {
94-
return true
95-
}
96-
}
97-
return false
98-
}
99-
10026
// ParseNamespaceAndName returns back the namespace and name (empty if something goes wrong), for a given string.
10127
// This is useful when pointing to a particular resource inside of our config.
10228
func ParseNamespaceAndName(in string) (string, string, error) {

Diff for: pkg/cmd/server/apis/config/types.go

-18
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@ import (
99

1010
// A new entry shall be added to FeatureAliases for every change to following values.
1111
const (
12-
FeatureBuilder = `Builder`
13-
FeatureS2I = `S2IBuilder`
14-
FeatureWebConsole = `WebConsole`
15-
1612
AllVersions = "*"
1713
)
1814

@@ -135,15 +131,6 @@ var (
135131
KnownKubeAPIGroups = sets.StringKeySet(KubeAPIGroupsToAllowedVersions)
136132
KnownOriginAPIGroups = sets.StringKeySet(OriginAPIGroupsToAllowedVersions)
137133

138-
// FeatureAliases maps deprecated names of feature flag to their canonical
139-
// names. Aliases must be lower-cased for O(1) lookup.
140-
FeatureAliases = map[string]string{
141-
"s2i builder": FeatureS2I,
142-
"web console": FeatureWebConsole,
143-
}
144-
KnownOpenShiftFeatures = []string{FeatureBuilder, FeatureS2I, FeatureWebConsole}
145-
AtomicDisabledFeatures = []string{FeatureBuilder, FeatureS2I, FeatureWebConsole}
146-
147134
// List public registries that we are allowing to import images from by default.
148135
// By default all registries have set to be "secure", iow. the port for them is
149136
// defaulted to "443".
@@ -330,8 +317,6 @@ const (
330317
ControllersAll = "*"
331318
)
332319

333-
type FeatureList []string
334-
335320
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
336321

337322
type MasterConfig struct {
@@ -379,9 +364,6 @@ type MasterConfig struct {
379364

380365
ControllerConfig ControllerConfig
381366

382-
// Allow to disable OpenShift components
383-
DisabledFeatures FeatureList
384-
385367
// EtcdStorageConfig contains information about how API resources are
386368
// stored in Etcd. These values are only relevant when etcd is the
387369
// backing store for the cluster.

0 commit comments

Comments
 (0)