30380339 |
package v1
import ( |
1ae5b25e |
"k8s.io/kubernetes/pkg/api" |
83c702b4 |
"k8s.io/kubernetes/pkg/conversion" |
a3581b14 |
"k8s.io/kubernetes/pkg/runtime" |
3ceb818d |
"k8s.io/kubernetes/pkg/util/sets" |
6a7364d3 |
|
99827954 |
"github.com/openshift/origin/pkg/api/extension" |
a3581b14 |
internal "github.com/openshift/origin/pkg/cmd/server/api" |
1ae53e70 |
"github.com/openshift/origin/pkg/cmd/server/bootstrappolicy" |
30380339 |
)
|
7e724a3c |
func addDefaultingFuncs(scheme *runtime.Scheme) error {
return scheme.AddDefaultingFuncs( |
26c990fe |
func(obj *MasterConfig) {
if len(obj.APILevels) == 0 { |
3ceb818d |
obj.APILevels = internal.DefaultOpenShiftAPILevels |
26c990fe |
} |
1f379f5d |
if len(obj.Controllers) == 0 {
obj.Controllers = ControllersAll
} |
e00edaae |
if obj.ServingInfo.RequestTimeoutSeconds == 0 {
obj.ServingInfo.RequestTimeoutSeconds = 60 * 60
} |
bb8a2276 |
if obj.ServingInfo.MaxRequestsInFlight == 0 {
obj.ServingInfo.MaxRequestsInFlight = 500
} |
1ae53e70 |
if len(obj.PolicyConfig.OpenShiftInfrastructureNamespace) == 0 {
obj.PolicyConfig.OpenShiftInfrastructureNamespace = bootstrappolicy.DefaultOpenShiftInfraNamespace
} |
321d1032 |
if len(obj.RoutingConfig.Subdomain) == 0 { |
c2564dc5 |
obj.RoutingConfig.Subdomain = "router.default.svc.cluster.local" |
321d1032 |
} |
92ea8000 |
if len(obj.JenkinsPipelineConfig.TemplateNamespace) == 0 {
obj.JenkinsPipelineConfig.TemplateNamespace = "openshift" |
a75a12db |
}
if len(obj.JenkinsPipelineConfig.TemplateName) == 0 { |
67b51bfe |
obj.JenkinsPipelineConfig.TemplateName = "jenkins-ephemeral" |
a75a12db |
}
if len(obj.JenkinsPipelineConfig.ServiceName) == 0 {
obj.JenkinsPipelineConfig.ServiceName = "jenkins"
} |
67b51bfe |
if obj.JenkinsPipelineConfig.AutoProvisionEnabled == nil { |
433176e4 |
v := true |
67b51bfe |
obj.JenkinsPipelineConfig.AutoProvisionEnabled = &v |
a75a12db |
} |
b03b6539 |
|
1f31ddc8 |
if obj.MasterClients.OpenShiftLoopbackClientConnectionOverrides == nil { |
b03b6539 |
obj.MasterClients.OpenShiftLoopbackClientConnectionOverrides = &ClientConnectionOverrides{}
}
// historical values
if obj.MasterClients.OpenShiftLoopbackClientConnectionOverrides.QPS <= 0 {
obj.MasterClients.OpenShiftLoopbackClientConnectionOverrides.QPS = 150.0
}
if obj.MasterClients.OpenShiftLoopbackClientConnectionOverrides.Burst <= 0 {
obj.MasterClients.OpenShiftLoopbackClientConnectionOverrides.Burst = 300 |
1f31ddc8 |
}
setDefault_ClientConnectionOverrides(obj.MasterClients.OpenShiftLoopbackClientConnectionOverrides) |
b03b6539 |
|
1f31ddc8 |
if obj.MasterClients.ExternalKubernetesClientConnectionOverrides == nil { |
b03b6539 |
obj.MasterClients.ExternalKubernetesClientConnectionOverrides = &ClientConnectionOverrides{}
}
// historical values
if obj.MasterClients.ExternalKubernetesClientConnectionOverrides.QPS <= 0 {
obj.MasterClients.ExternalKubernetesClientConnectionOverrides.QPS = 100.0
}
if obj.MasterClients.ExternalKubernetesClientConnectionOverrides.Burst <= 0 {
obj.MasterClients.ExternalKubernetesClientConnectionOverrides.Burst = 200 |
1f31ddc8 |
}
setDefault_ClientConnectionOverrides(obj.MasterClients.ExternalKubernetesClientConnectionOverrides)
|
543dd90e |
// Populate the new NetworkConfig.ServiceNetworkCIDR field from the KubernetesMasterConfig.ServicesSubnet field if needed
if len(obj.NetworkConfig.ServiceNetworkCIDR) == 0 {
if obj.KubernetesMasterConfig != nil && len(obj.KubernetesMasterConfig.ServicesSubnet) > 0 {
// if a subnet is set in the kubernetes master config, use that
obj.NetworkConfig.ServiceNetworkCIDR = obj.KubernetesMasterConfig.ServicesSubnet
} else {
// default ServiceClusterIPRange used by kubernetes if nothing is specified
obj.NetworkConfig.ServiceNetworkCIDR = "10.0.0.0/24"
}
} |
33fb12b2 |
|
ee401ccd |
// TODO Detect cloud provider when not using built-in kubernetes
kubeConfig := obj.KubernetesMasterConfig
noCloudProvider := kubeConfig != nil && (len(kubeConfig.ControllerArguments["cloud-provider"]) == 0 || kubeConfig.ControllerArguments["cloud-provider"][0] == "")
if noCloudProvider && len(obj.NetworkConfig.IngressIPNetworkCIDR) == 0 { |
f980b4c5 |
cidr := internal.DefaultIngressIPNetworkCIDR |
ee401ccd |
if !(internal.CIDRsOverlap(cidr, obj.NetworkConfig.ClusterNetworkCIDR) || internal.CIDRsOverlap(cidr, obj.NetworkConfig.ServiceNetworkCIDR)) {
obj.NetworkConfig.IngressIPNetworkCIDR = cidr
}
}
|
33fb12b2 |
// Historically, the clientCA was incorrectly used as the master's server cert CA bundle
// If missing from the config, migrate the ClientCA into that field
if obj.OAuthConfig != nil && obj.OAuthConfig.MasterCA == nil {
s := obj.ServingInfo.ClientCA
// The final value of OAuthConfig.MasterCA should never be nil
obj.OAuthConfig.MasterCA = &s
} |
26c990fe |
}, |
52723316 |
func(obj *KubernetesMasterConfig) {
if obj.MasterCount == 0 {
obj.MasterCount = 1
} |
26c990fe |
if len(obj.APILevels) == 0 { |
3ceb818d |
obj.APILevels = internal.DefaultKubernetesAPILevels |
26c990fe |
} |
e00edaae |
if len(obj.ServicesNodePortRange) == 0 {
obj.ServicesNodePortRange = "30000-32767"
} |
83e7080d |
if len(obj.PodEvictionTimeout) == 0 {
obj.PodEvictionTimeout = "5m"
} |
52723316 |
}, |
4663c089 |
func(obj *NodeConfig) { |
1f31ddc8 |
if obj.MasterClientConnectionOverrides == nil {
obj.MasterClientConnectionOverrides = &ClientConnectionOverrides{
// historical values
QPS: 10.0,
Burst: 20,
}
}
setDefault_ClientConnectionOverrides(obj.MasterClientConnectionOverrides)
|
4663c089 |
// Defaults/migrations for NetworkConfig
if len(obj.NetworkConfig.NetworkPluginName) == 0 {
obj.NetworkConfig.NetworkPluginName = obj.DeprecatedNetworkPluginName
}
if obj.NetworkConfig.MTU == 0 {
obj.NetworkConfig.MTU = 1450
} |
e1182ac3 |
if len(obj.IPTablesSyncPeriod) == 0 { |
6d3e873e |
obj.IPTablesSyncPeriod = "30s" |
e1182ac3 |
} |
fd6725df |
// Auth cache defaults
if len(obj.AuthConfig.AuthenticationCacheTTL) == 0 {
obj.AuthConfig.AuthenticationCacheTTL = "5m"
}
if obj.AuthConfig.AuthenticationCacheSize == 0 {
obj.AuthConfig.AuthenticationCacheSize = 1000
}
if len(obj.AuthConfig.AuthorizationCacheTTL) == 0 {
obj.AuthConfig.AuthorizationCacheTTL = "5m"
}
if obj.AuthConfig.AuthorizationCacheSize == 0 {
obj.AuthConfig.AuthorizationCacheSize = 1000
} |
779345d1 |
// EnableUnidling by default
if obj.EnableUnidling == nil {
v := true
obj.EnableUnidling = &v
} |
4663c089 |
}, |
6a7364d3 |
func(obj *EtcdStorageConfig) {
if len(obj.KubernetesStorageVersion) == 0 { |
e00edaae |
obj.KubernetesStorageVersion = "v1" |
6a7364d3 |
} |
4580178f |
if len(obj.KubernetesStoragePrefix) == 0 {
obj.KubernetesStoragePrefix = "kubernetes.io"
} |
6a7364d3 |
if len(obj.OpenShiftStorageVersion) == 0 { |
3ceb818d |
obj.OpenShiftStorageVersion = internal.DefaultOpenShiftStorageVersionLevel |
6a7364d3 |
} |
4580178f |
if len(obj.OpenShiftStoragePrefix) == 0 {
obj.OpenShiftStoragePrefix = "openshift.io"
} |
6a7364d3 |
}, |
4cfc95c3 |
func(obj *DockerConfig) {
if len(obj.ExecHandlerName) == 0 {
obj.ExecHandlerName = DockerExecHandlerNative
}
}, |
429c4b0b |
func(obj *ServingInfo) {
if len(obj.BindNetwork) == 0 {
obj.BindNetwork = "tcp4"
}
}, |
730f1f52 |
func(obj *ImagePolicyConfig) {
if obj.MaxImagesBulkImportedPerRepository == 0 {
obj.MaxImagesBulkImportedPerRepository = 5
} |
0e9494df |
if obj.MaxScheduledImageImportsPerMinute == 0 {
obj.MaxScheduledImageImportsPerMinute = 60
}
if obj.ScheduledImageImportMinimumIntervalSeconds == 0 {
obj.ScheduledImageImportMinimumIntervalSeconds = 15 * 60
} |
730f1f52 |
}, |
429c4b0b |
func(obj *DNSConfig) {
if len(obj.BindNetwork) == 0 {
obj.BindNetwork = "tcp4"
}
}, |
ec5a5ac6 |
func(obj *SecurityAllocator) {
if len(obj.UIDAllocatorRange) == 0 {
obj.UIDAllocatorRange = "1000000000-1999999999/10000"
}
if len(obj.MCSAllocatorRange) == 0 {
obj.MCSAllocatorRange = "s0:/2"
}
if obj.MCSLabelsPerProject == 0 {
obj.MCSLabelsPerProject = 5
}
}, |
75710d51 |
func(obj *IdentityProvider) {
if len(obj.MappingMethod) == 0 {
// By default, only let one identity provider authenticate a particular user
// If multiple identity providers collide, the second one in will fail to auth
// The admin can set this to "add" if they want to allow new identities to join existing users
obj.MappingMethod = "claim"
}
}, |
026ba1f0 |
func(obj *GrantConfig) {
if len(obj.ServiceAccountMethod) == 0 {
obj.ServiceAccountMethod = "prompt"
}
}, |
6a7364d3 |
) |
45786bc5 |
}
|
7e724a3c |
func addConversionFuncs(scheme *runtime.Scheme) error {
return scheme.AddConversionFuncs( |
99827954 |
convert_runtime_Object_To_runtime_RawExtension,
convert_runtime_RawExtension_To_runtime_Object,
|
3ceb818d |
func(in *NodeConfig, out *internal.NodeConfig, s conversion.Scope) error { |
4663c089 |
return s.DefaultConvert(in, out, conversion.IgnoreMissingFields)
}, |
3ceb818d |
func(in *internal.NodeConfig, out *NodeConfig, s conversion.Scope) error { |
4663c089 |
return s.DefaultConvert(in, out, conversion.IgnoreMissingFields)
}, |
3ceb818d |
func(in *KubernetesMasterConfig, out *internal.KubernetesMasterConfig, s conversion.Scope) error {
if err := s.DefaultConvert(in, out, conversion.IgnoreMissingFields); err != nil {
return err
}
if out.DisabledAPIGroupVersions == nil {
out.DisabledAPIGroupVersions = map[string][]string{}
}
// the APILevels (whitelist) needs to be converted into an internal blacklist
if len(in.APILevels) == 0 {
out.DisabledAPIGroupVersions[internal.APIGroupKube] = []string{"*"}
} else {
availableLevels := internal.KubeAPIGroupsToAllowedVersions[internal.APIGroupKube]
whitelistedLevels := sets.NewString(in.APILevels...)
blacklistedLevels := []string{}
for _, curr := range availableLevels {
if !whitelistedLevels.Has(curr) {
blacklistedLevels = append(blacklistedLevels, curr)
}
}
if len(blacklistedLevels) > 0 {
out.DisabledAPIGroupVersions[internal.APIGroupKube] = blacklistedLevels
}
}
return nil
},
func(in *internal.KubernetesMasterConfig, out *KubernetesMasterConfig, s conversion.Scope) error {
// internal doesn't have all fields: APILevels
return s.DefaultConvert(in, out, conversion.IgnoreMissingFields)
},
func(in *ServingInfo, out *internal.ServingInfo, s conversion.Scope) error { |
81b520f2 |
if err := s.DefaultConvert(in, out, conversion.IgnoreMissingFields); err != nil {
return err
} |
30380339 |
out.ServerCert.CertFile = in.CertFile
out.ServerCert.KeyFile = in.KeyFile
return nil
}, |
3ceb818d |
func(in *internal.ServingInfo, out *ServingInfo, s conversion.Scope) error { |
81b520f2 |
if err := s.DefaultConvert(in, out, conversion.IgnoreMissingFields); err != nil {
return err
} |
30380339 |
out.CertFile = in.ServerCert.CertFile
out.KeyFile = in.ServerCert.KeyFile
return nil
}, |
3ceb818d |
func(in *RemoteConnectionInfo, out *internal.RemoteConnectionInfo, s conversion.Scope) error { |
0fd35257 |
out.URL = in.URL
out.CA = in.CA
out.ClientCert.CertFile = in.CertFile
out.ClientCert.KeyFile = in.KeyFile
return nil
}, |
3ceb818d |
func(in *internal.RemoteConnectionInfo, out *RemoteConnectionInfo, s conversion.Scope) error { |
0fd35257 |
out.URL = in.URL
out.CA = in.CA
out.CertFile = in.ClientCert.CertFile
out.KeyFile = in.ClientCert.KeyFile
return nil
}, |
3ceb818d |
func(in *EtcdConnectionInfo, out *internal.EtcdConnectionInfo, s conversion.Scope) error { |
53c7aa34 |
out.URLs = in.URLs |
30380339 |
out.CA = in.CA
out.ClientCert.CertFile = in.CertFile
out.ClientCert.KeyFile = in.KeyFile
return nil
}, |
3ceb818d |
func(in *internal.EtcdConnectionInfo, out *EtcdConnectionInfo, s conversion.Scope) error { |
53c7aa34 |
out.URLs = in.URLs
out.CA = in.CA
out.CertFile = in.ClientCert.CertFile
out.KeyFile = in.ClientCert.KeyFile
return nil
}, |
3ceb818d |
func(in *KubeletConnectionInfo, out *internal.KubeletConnectionInfo, s conversion.Scope) error { |
53c7aa34 |
out.Port = in.Port
out.CA = in.CA
out.ClientCert.CertFile = in.CertFile
out.ClientCert.KeyFile = in.KeyFile
return nil
}, |
3ceb818d |
func(in *internal.KubeletConnectionInfo, out *KubeletConnectionInfo, s conversion.Scope) error { |
53c7aa34 |
out.Port = in.Port |
30380339 |
out.CA = in.CA
out.CertFile = in.ClientCert.CertFile
out.KeyFile = in.ClientCert.KeyFile
return nil
}, |
e0567144 |
func(in *MasterVolumeConfig, out *internal.MasterVolumeConfig, s conversion.Scope) error {
out.DynamicProvisioningEnabled = (in.DynamicProvisioningEnabled == nil) || (*in.DynamicProvisioningEnabled)
return nil
},
func(in *internal.MasterVolumeConfig, out *MasterVolumeConfig, s conversion.Scope) error {
enabled := in.DynamicProvisioningEnabled
out.DynamicProvisioningEnabled = &enabled
return nil
}, |
99827954 |
|
1ae5b25e |
api.Convert_resource_Quantity_To_resource_Quantity, |
779345d1 |
api.Convert_bool_To_Pointer_bool,
api.Convert_Pointer_bool_To_bool, |
30380339 |
)
} |
f0a00e2c |
|
99827954 |
// convert_runtime_Object_To_runtime_RawExtension attempts to convert runtime.Objects to the appropriate target.
func convert_runtime_Object_To_runtime_RawExtension(in *runtime.Object, out *runtime.RawExtension, s conversion.Scope) error {
return extension.Convert_runtime_Object_To_runtime_RawExtension(internal.Scheme, in, out, s)
} |
f0a00e2c |
|
99827954 |
// convert_runtime_RawExtension_To_runtime_Object attempts to convert an incoming object into the
// appropriate output type.
func convert_runtime_RawExtension_To_runtime_Object(in *runtime.RawExtension, out *runtime.Object, s conversion.Scope) error {
return extension.Convert_runtime_RawExtension_To_runtime_Object(internal.Scheme, in, out, s)
} |
f0a00e2c |
|
1f31ddc8 |
// setDefault_ClientConnectionOverrides defaults a client connection to the pre-1.3 settings of
// being JSON only. Callers must explicitly opt-in to Protobuf support in 1.3+.
func setDefault_ClientConnectionOverrides(overrides *ClientConnectionOverrides) {
if len(overrides.AcceptContentTypes) == 0 {
overrides.AcceptContentTypes = "application/json"
}
if len(overrides.ContentType) == 0 {
overrides.ContentType = "application/json"
}
}
|
99827954 |
var _ runtime.NestedObjectDecoder = &MasterConfig{}
// DecodeNestedObjects handles encoding RawExtensions on the MasterConfig, ensuring the
// objects are decoded with the provided decoder.
func (c *MasterConfig) DecodeNestedObjects(d runtime.Decoder) error {
// decoding failures result in a runtime.Unknown object being created in Object and passed
// to conversion
for k, v := range c.AdmissionConfig.PluginConfig {
extension.DecodeNestedRawExtensionOrUnknown(d, &v.Configuration)
c.AdmissionConfig.PluginConfig[k] = v |
2b9b20b2 |
} |
99827954 |
if c.KubernetesMasterConfig != nil {
for k, v := range c.KubernetesMasterConfig.AdmissionConfig.PluginConfig {
extension.DecodeNestedRawExtensionOrUnknown(d, &v.Configuration)
c.KubernetesMasterConfig.AdmissionConfig.PluginConfig[k] = v
} |
f0a00e2c |
} |
99827954 |
if c.OAuthConfig != nil {
for i := range c.OAuthConfig.IdentityProviders {
extension.DecodeNestedRawExtensionOrUnknown(d, &c.OAuthConfig.IdentityProviders[i].Provider)
} |
f0a00e2c |
}
return nil
}
|
99827954 |
var _ runtime.NestedObjectEncoder = &MasterConfig{} |
f0a00e2c |
|
99827954 |
// EncodeNestedObjects handles encoding RawExtensions on the MasterConfig, ensuring the
// objects are encoded with the provided encoder.
func (c *MasterConfig) EncodeNestedObjects(e runtime.Encoder) error {
for k, v := range c.AdmissionConfig.PluginConfig {
if err := extension.EncodeNestedRawExtension(e, &v.Configuration); err != nil {
return err
}
c.AdmissionConfig.PluginConfig[k] = v |
f0a00e2c |
} |
99827954 |
if c.KubernetesMasterConfig != nil {
for k, v := range c.KubernetesMasterConfig.AdmissionConfig.PluginConfig {
if err := extension.EncodeNestedRawExtension(e, &v.Configuration); err != nil {
return err
}
c.KubernetesMasterConfig.AdmissionConfig.PluginConfig[k] = v
}
}
if c.OAuthConfig != nil {
for i := range c.OAuthConfig.IdentityProviders {
if err := extension.EncodeNestedRawExtension(e, &c.OAuthConfig.IdentityProviders[i].Provider); err != nil {
return err
}
} |
f0a00e2c |
}
return nil
} |