k8s.io/kubernetes@v1.31.0-alpha.0.0.20240520171757-56147500dadc/test/e2e/feature/feature.go (about)

     1  /*
     2  Copyright 2023 The Kubernetes Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  // Package feature contains pre-defined features used by test/e2e and/or
    18  // test/e2e_node.
    19  package feature
    20  
    21  import (
    22  	"k8s.io/kubernetes/test/e2e/framework"
    23  )
    24  
    25  var (
    26  	// Please keep the list in alphabetical order.
    27  
    28  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    29  	APIServerIdentity = framework.WithFeature(framework.ValidFeatures.Add("APIServerIdentity"))
    30  
    31  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    32  	AppArmor = framework.WithFeature(framework.ValidFeatures.Add("AppArmor"))
    33  
    34  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    35  	BootstrapTokens = framework.WithFeature(framework.ValidFeatures.Add("BootstrapTokens"))
    36  
    37  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    38  	BoundServiceAccountTokenVolume = framework.WithFeature(framework.ValidFeatures.Add("BoundServiceAccountTokenVolume"))
    39  
    40  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    41  	CloudProvider = framework.WithFeature(framework.ValidFeatures.Add("CloudProvider"))
    42  
    43  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    44  	ClusterAutoscalerScalability1 = framework.WithFeature(framework.ValidFeatures.Add("ClusterAutoscalerScalability1"))
    45  
    46  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    47  	ClusterAutoscalerScalability2 = framework.WithFeature(framework.ValidFeatures.Add("ClusterAutoscalerScalability2"))
    48  
    49  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    50  	ClusterAutoscalerScalability3 = framework.WithFeature(framework.ValidFeatures.Add("ClusterAutoscalerScalability3"))
    51  
    52  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    53  	ClusterAutoscalerScalability4 = framework.WithFeature(framework.ValidFeatures.Add("ClusterAutoscalerScalability4"))
    54  
    55  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    56  	ClusterAutoscalerScalability5 = framework.WithFeature(framework.ValidFeatures.Add("ClusterAutoscalerScalability5"))
    57  
    58  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    59  	ClusterAutoscalerScalability6 = framework.WithFeature(framework.ValidFeatures.Add("ClusterAutoscalerScalability6"))
    60  
    61  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    62  	ClusterDowngrade = framework.WithFeature(framework.ValidFeatures.Add("ClusterDowngrade"))
    63  
    64  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    65  	ClusterScaleUpBypassScheduler = framework.WithFeature(framework.ValidFeatures.Add("ClusterScaleUpBypassScheduler"))
    66  
    67  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    68  	ClusterSizeAutoscalingGpu = framework.WithFeature(framework.ValidFeatures.Add("ClusterSizeAutoscalingGpu"))
    69  
    70  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    71  	ClusterSizeAutoscalingScaleDown = framework.WithFeature(framework.ValidFeatures.Add("ClusterSizeAutoscalingScaleDown"))
    72  
    73  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    74  	ClusterSizeAutoscalingScaleUp = framework.WithFeature(framework.ValidFeatures.Add("ClusterSizeAutoscalingScaleUp"))
    75  
    76  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    77  	ClusterTrustBundle = framework.WithFeature(framework.ValidFeatures.Add("ClusterTrustBundle"))
    78  
    79  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    80  	ClusterTrustBundleProjection = framework.WithFeature(framework.ValidFeatures.Add("ClusterTrustBundleProjection"))
    81  
    82  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    83  	ClusterUpgrade = framework.WithFeature(framework.ValidFeatures.Add("ClusterUpgrade"))
    84  
    85  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    86  	ComprehensiveNamespaceDraining = framework.WithFeature(framework.ValidFeatures.Add("ComprehensiveNamespaceDraining"))
    87  
    88  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    89  	CPUManager = framework.WithFeature(framework.ValidFeatures.Add("CPUManager"))
    90  
    91  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    92  	CustomMetricsAutoscaling = framework.WithFeature(framework.ValidFeatures.Add("CustomMetricsAutoscaling"))
    93  
    94  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    95  	DeviceManager = framework.WithFeature(framework.ValidFeatures.Add("DeviceManager"))
    96  
    97  	// TODO: document the feature (owning SIG, when to use this feature for a test)
    98  	DevicePluginProbe = framework.WithFeature(framework.ValidFeatures.Add("DevicePluginProbe"))
    99  
   100  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   101  	Downgrade = framework.WithFeature(framework.ValidFeatures.Add("Downgrade"))
   102  
   103  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   104  	DynamicResourceAllocation = framework.WithFeature(framework.ValidFeatures.Add("DynamicResourceAllocation"))
   105  
   106  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   107  	EphemeralStorage = framework.WithFeature(framework.ValidFeatures.Add("EphemeralStorage"))
   108  
   109  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   110  	Example = framework.WithFeature(framework.ValidFeatures.Add("Example"))
   111  
   112  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   113  	ExperimentalResourceUsageTracking = framework.WithFeature(framework.ValidFeatures.Add("ExperimentalResourceUsageTracking"))
   114  
   115  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   116  	Flexvolumes = framework.WithFeature(framework.ValidFeatures.Add("Flexvolumes"))
   117  
   118  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   119  	GKENodePool = framework.WithFeature(framework.ValidFeatures.Add("GKENodePool"))
   120  
   121  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   122  	GPUClusterDowngrade = framework.WithFeature(framework.ValidFeatures.Add("GPUClusterDowngrade"))
   123  
   124  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   125  	GPUClusterUpgrade = framework.WithFeature(framework.ValidFeatures.Add("GPUClusterUpgrade"))
   126  
   127  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   128  	GPUDevicePlugin = framework.WithFeature(framework.ValidFeatures.Add("GPUDevicePlugin"))
   129  
   130  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   131  	GPUMasterUpgrade = framework.WithFeature(framework.ValidFeatures.Add("GPUMasterUpgrade"))
   132  
   133  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   134  	GPUUpgrade = framework.WithFeature(framework.ValidFeatures.Add("GPUUpgrade"))
   135  
   136  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   137  	HAMaster = framework.WithFeature(framework.ValidFeatures.Add("HAMaster"))
   138  
   139  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   140  	HPA = framework.WithFeature(framework.ValidFeatures.Add("HPA"))
   141  
   142  	// owning-sig: sig-storage
   143  	// kep: https://kep.k8s.io/2680
   144  	// test-infra jobs:
   145  	// - pull-kubernetes-e2e-storage-kind-alpha-features (need manual trigger)
   146  	// - ci-kubernetes-e2e-storage-kind-alpha-features
   147  	//
   148  	// When this label is added to a test, it means that the cluster must be created
   149  	// with the feature-gate "HonorPVReclaimPolicy=true".
   150  	//
   151  	// Once the feature are stable, this label should be removed and these tests will
   152  	// be run by default on any cluster. The test-infra job also should be updated to
   153  	// not focus on this feature anymore.
   154  	HonorPVReclaimPolicy = framework.WithFeature(framework.ValidFeatures.Add("HonorPVReclaimPolicy"))
   155  
   156  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   157  	HugePages = framework.WithFeature(framework.ValidFeatures.Add("HugePages"))
   158  
   159  	// Owner: sig-network
   160  	// Marks tests that require a conforming implementation of
   161  	// Ingress.networking.k8s.io to be present.
   162  	Ingress = framework.WithFeature(framework.ValidFeatures.Add("Ingress"))
   163  
   164  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   165  	InPlacePodVerticalScaling = framework.WithFeature(framework.ValidFeatures.Add("InPlacePodVerticalScaling"))
   166  
   167  	// Owner: sig-network
   168  	// Marks tests that require a cluster with dual-stack pod and service networks.
   169  	IPv6DualStack = framework.WithFeature(framework.ValidFeatures.Add("IPv6DualStack"))
   170  
   171  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   172  	Kind = framework.WithFeature(framework.ValidFeatures.Add("Kind"))
   173  
   174  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   175  	KubeletCredentialProviders = framework.WithFeature(framework.ValidFeatures.Add("KubeletCredentialProviders"))
   176  
   177  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   178  	KubeletSecurity = framework.WithFeature(framework.ValidFeatures.Add("KubeletSecurity"))
   179  
   180  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   181  	KubeProxyDaemonSetDowngrade = framework.WithFeature(framework.ValidFeatures.Add("KubeProxyDaemonSetDowngrade"))
   182  
   183  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   184  	KubeProxyDaemonSetUpgrade = framework.WithFeature(framework.ValidFeatures.Add("KubeProxyDaemonSetUpgrade"))
   185  
   186  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   187  	KubeProxyDaemonSetMigration = framework.WithFeature(framework.ValidFeatures.Add("KubeProxyDaemonSetMigration"))
   188  
   189  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   190  	LabelSelector = framework.WithFeature(framework.ValidFeatures.Add("LabelSelector"))
   191  
   192  	// Owner: sig-network
   193  	// Marks tests that require a cloud provider that implements LoadBalancer Services
   194  	LoadBalancer = framework.WithFeature(framework.ValidFeatures.Add("LoadBalancer"))
   195  
   196  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   197  	LocalStorageCapacityIsolation = framework.WithFeature(framework.ValidFeatures.Add("LocalStorageCapacityIsolation"))
   198  
   199  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   200  	LocalStorageCapacityIsolationQuota = framework.WithFeature(framework.ValidFeatures.Add("LocalStorageCapacityIsolationQuota"))
   201  
   202  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   203  	MasterUpgrade = framework.WithFeature(framework.ValidFeatures.Add("MasterUpgrade"))
   204  
   205  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   206  	MemoryManager = framework.WithFeature(framework.ValidFeatures.Add("MemoryManager"))
   207  
   208  	// Owner: sig-network
   209  	// Marks tests that require working external DNS.
   210  	NetworkingDNS = framework.WithFeature(framework.ValidFeatures.Add("Networking-DNS"))
   211  
   212  	// Owner: sig-network
   213  	// Marks tests that require connectivity to the Internet via IPv4
   214  	NetworkingIPv4 = framework.WithFeature(framework.ValidFeatures.Add("Networking-IPv4"))
   215  
   216  	// Owner: sig-network
   217  	// Marks tests that require connectivity to the Internet via IPv6
   218  	NetworkingIPv6 = framework.WithFeature(framework.ValidFeatures.Add("Networking-IPv6"))
   219  
   220  	// Owner: sig-network
   221  	// Marks a single test that creates potentially-disruptive amounts of network
   222  	// traffic between nodes.
   223  	NetworkingPerformance = framework.WithFeature(framework.ValidFeatures.Add("Networking-Performance"))
   224  
   225  	// Owner: sig-network
   226  	// Marks tests that require a conforming implementation of
   227  	// NetworkPolicy.networking.k8s.io to be present.
   228  	NetworkPolicy = framework.WithFeature(framework.ValidFeatures.Add("NetworkPolicy"))
   229  
   230  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   231  	NodeAuthenticator = framework.WithFeature(framework.ValidFeatures.Add("NodeAuthenticator"))
   232  
   233  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   234  	NodeAuthorizer = framework.WithFeature(framework.ValidFeatures.Add("NodeAuthorizer"))
   235  
   236  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   237  	NodeLogQuery = framework.WithFeature(framework.ValidFeatures.Add("NodeLogQuery"))
   238  
   239  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   240  	NodeOutOfServiceVolumeDetach = framework.WithFeature(framework.ValidFeatures.Add("NodeOutOfServiceVolumeDetach"))
   241  
   242  	// Owner: sig-network
   243  	// Marks a single test that tests pod-to-pod connectivity between every pair of nodes.
   244  	NoSNAT = framework.WithFeature(framework.ValidFeatures.Add("NoSNAT"))
   245  
   246  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   247  	PersistentVolumeLastPhaseTransitionTime = framework.WithFeature(framework.ValidFeatures.Add("PersistentVolumeLastPhaseTransitionTime"))
   248  
   249  	// Owner: sig-network
   250  	// Marks a single test that tests cluster DNS performance with many services.
   251  	PerformanceDNS = framework.WithFeature(framework.ValidFeatures.Add("PerformanceDNS"))
   252  
   253  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   254  	PodGarbageCollector = framework.WithFeature(framework.ValidFeatures.Add("PodGarbageCollector"))
   255  
   256  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   257  	PodLifecycleSleepAction = framework.WithFeature(framework.ValidFeatures.Add("PodLifecycleSleepAction"))
   258  
   259  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   260  	PodPriority = framework.WithFeature(framework.ValidFeatures.Add("PodPriority"))
   261  
   262  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   263  	PodReadyToStartContainersCondition = framework.WithFeature(framework.ValidFeatures.Add("PodReadyToStartContainersCondition"))
   264  
   265  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   266  	PodResources = framework.WithFeature(framework.ValidFeatures.Add("PodResources"))
   267  
   268  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   269  	Reboot = framework.WithFeature(framework.ValidFeatures.Add("Reboot"))
   270  
   271  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   272  	ReclaimPolicy = framework.WithFeature(framework.ValidFeatures.Add("ReclaimPolicy"))
   273  
   274  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   275  	RecoverVolumeExpansionFailure = framework.WithFeature(framework.ValidFeatures.Add("RecoverVolumeExpansionFailure"))
   276  
   277  	// RelaxedEnvironmentVariableValidation used when we verify whether the pod can consume all printable ASCII characters as environment variable names,
   278  	// and whether the pod can consume configmap/secret that key starts with a number.
   279  	RelaxedEnvironmentVariableValidation = framework.WithFeature(framework.ValidFeatures.Add("RelaxedEnvironmentVariableValidation"))
   280  
   281  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   282  	Recreate = framework.WithFeature(framework.ValidFeatures.Add("Recreate"))
   283  
   284  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   285  	RegularResourceUsageTracking = framework.WithFeature(framework.ValidFeatures.Add("RegularResourceUsageTracking"))
   286  
   287  	// Owner: sig-network
   288  	// Marks tests that require a pod networking implementation that supports SCTP
   289  	// traffic between pods.
   290  	SCTPConnectivity = framework.WithFeature(framework.ValidFeatures.Add("SCTPConnectivity"))
   291  
   292  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   293  	SeccompDefault = framework.WithFeature(framework.ValidFeatures.Add("SeccompDefault"))
   294  
   295  	// Owner: sig-storage
   296  	// This feature marks tests that need all schedulable Linux nodes in the cluster to have SELinux enabled.
   297  	SELinux = framework.WithFeature(framework.ValidFeatures.Add("SELinux"))
   298  
   299  	// Owner: sig-storage
   300  	// This feature marks tests that need SELinuxMountReadWriteOncePod feature gate enabled and SELinuxMount **disabled**.
   301  	// This is a temporary feature to allow testing of metrics when SELinuxMount is disabled.
   302  	// TODO: remove when SELinuxMount feature gate is enabled by default.
   303  	SELinuxMountReadWriteOncePodOnly = framework.WithFeature(framework.ValidFeatures.Add("SELinuxMountReadWriteOncePodOnly"))
   304  
   305  	// Owner: sig-network
   306  	// Marks tests of KEP-1880 that require the `MultiCIDRServiceAllocator` feature gate
   307  	// and the networking.k8s.io/v1alpha1 API.
   308  	ServiceCIDRs = framework.WithFeature(framework.ValidFeatures.Add("ServiceCIDRs"))
   309  
   310  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   311  	SidecarContainers = framework.WithFeature(framework.ValidFeatures.Add("SidecarContainers"))
   312  
   313  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   314  	StackdriverAcceleratorMonitoring = framework.WithFeature(framework.ValidFeatures.Add("StackdriverAcceleratorMonitoring"))
   315  
   316  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   317  	StackdriverCustomMetrics = framework.WithFeature(framework.ValidFeatures.Add("StackdriverCustomMetrics"))
   318  
   319  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   320  	StackdriverExternalMetrics = framework.WithFeature(framework.ValidFeatures.Add("StackdriverExternalMetrics"))
   321  
   322  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   323  	StackdriverMetadataAgent = framework.WithFeature(framework.ValidFeatures.Add("StackdriverMetadataAgent"))
   324  
   325  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   326  	StackdriverMonitoring = framework.WithFeature(framework.ValidFeatures.Add("StackdriverMonitoring"))
   327  
   328  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   329  	StandaloneMode = framework.WithFeature(framework.ValidFeatures.Add("StandaloneMode"))
   330  
   331  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   332  	StatefulSet = framework.WithFeature(framework.ValidFeatures.Add("StatefulSet"))
   333  
   334  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   335  	StatefulSetStartOrdinal = framework.WithFeature(framework.ValidFeatures.Add("StatefulSetStartOrdinal"))
   336  
   337  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   338  	StatefulUpgrade = framework.WithFeature(framework.ValidFeatures.Add("StatefulUpgrade"))
   339  
   340  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   341  	StorageProvider = framework.WithFeature(framework.ValidFeatures.Add("StorageProvider"))
   342  
   343  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   344  	StorageVersionAPI = framework.WithFeature(framework.ValidFeatures.Add("StorageVersionAPI"))
   345  
   346  	// Owner: sig-network
   347  	// Marks tests that require a cluster with Topology Hints enabled.
   348  	TopologyHints = framework.WithFeature(framework.ValidFeatures.Add("Topology Hints"))
   349  
   350  	// Owner: sig-network
   351  	// Marks tests that require a cluster with Traffic Distribution enabled.
   352  	TrafficDistribution = framework.WithFeature(framework.ValidFeatures.Add("Traffic Distribution"))
   353  
   354  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   355  	TopologyManager = framework.WithFeature(framework.ValidFeatures.Add("TopologyManager"))
   356  
   357  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   358  	Upgrade = framework.WithFeature(framework.ValidFeatures.Add("Upgrade"))
   359  
   360  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   361  	UserNamespacesSupport = framework.WithFeature(framework.ValidFeatures.Add("UserNamespacesSupport"))
   362  
   363  	// Owned by SIG Node
   364  	// Can be used when the UserNamespacesPodSecurityStandards kubelet feature
   365  	// gate is enabled to relax the application of Pod Security Standards in a
   366  	// controlled way.
   367  	UserNamespacesPodSecurityStandards = framework.WithFeature(framework.ValidFeatures.Add("UserNamespacesPodSecurityStandards"))
   368  
   369  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   370  	ValidatingAdmissionPolicy = framework.WithFeature(framework.ValidFeatures.Add("ValidatingAdmissionPolicy"))
   371  
   372  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   373  	Volumes = framework.WithFeature(framework.ValidFeatures.Add("Volumes"))
   374  
   375  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   376  	VolumeSnapshotDataSource = framework.WithFeature(framework.ValidFeatures.Add("VolumeSnapshotDataSource"))
   377  
   378  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   379  	VolumeSourceXFS = framework.WithFeature(framework.ValidFeatures.Add("VolumeSourceXFS"))
   380  
   381  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   382  	Vsphere = framework.WithFeature(framework.ValidFeatures.Add("vsphere"))
   383  
   384  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   385  	WatchList = framework.WithFeature(framework.ValidFeatures.Add("WatchList"))
   386  
   387  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   388  	Windows = framework.WithFeature(framework.ValidFeatures.Add("Windows"))
   389  
   390  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   391  	WindowsHostProcessContainers = framework.WithFeature(framework.ValidFeatures.Add("WindowsHostProcessContainers"))
   392  
   393  	// TODO: document the feature (owning SIG, when to use this feature for a test)
   394  	WindowsHyperVContainers = framework.WithFeature(framework.ValidFeatures.Add("WindowsHyperVContainers"))
   395  
   396  	// Please keep the list in alphabetical order.
   397  )
   398  
   399  func init() {
   400  	// This prevents adding additional ad-hoc features in tests.
   401  	framework.ValidFeatures.Freeze()
   402  }