// newClusterResourceOverride returns an admission controller for containers that // configurably overrides container resource request/limits func newClusterResourceOverride(client clientset.Interface, config io.Reader) (admission.Interface, error) { parsed, err := ReadConfig(config) if err != nil { glog.V(5).Infof("%s admission controller loaded with error: (%T) %[2]v", api.PluginName, err) return nil, err } if errs := validation.Validate(parsed); len(errs) > 0 { return nil, errs.ToAggregate() } glog.V(5).Infof("%s admission controller loaded with config: %v", api.PluginName, parsed) var internal *internalConfig if parsed != nil { internal = &internalConfig{ limitCPUToMemoryRatio: inf.NewDec(parsed.LimitCPUToMemoryPercent, 2), cpuRequestToLimitRatio: inf.NewDec(parsed.CPURequestToLimitPercent, 2), memoryRequestToLimitRatio: inf.NewDec(parsed.MemoryRequestToLimitPercent, 2), } } limitRanger, err := limitranger.NewLimitRanger(client, wrapLimit) if err != nil { return nil, err } return &clusterResourceOverridePlugin{ Handler: admission.NewHandler(admission.Create), config: internal, LimitRanger: limitRanger, }, nil }
// NewImageLimitRangerPlugin provides a new imageLimitRangerPlugin. func NewImageLimitRangerPlugin(client clientset.Interface, config io.Reader) (kadmission.Interface, error) { plugin := &imageLimitRangerPlugin{ Handler: kadmission.NewHandler(kadmission.Create), } limitRanger, err := limitranger.NewLimitRanger(client, plugin) if err != nil { return nil, err } plugin.limitRanger = limitRanger return plugin, nil }
// newClusterResourceOverride returns an admission controller for containers that // configurably overrides container resource request/limits func newClusterResourceOverride(client clientset.Interface, config *api.ClusterResourceOverrideConfig) (admission.Interface, error) { glog.V(2).Infof("%s admission controller loaded with config: %v", api.PluginName, config) var internal *internalConfig if config != nil { internal = &internalConfig{ limitCPUToMemoryRatio: inf.NewDec(config.LimitCPUToMemoryPercent, 2), cpuRequestToLimitRatio: inf.NewDec(config.CPURequestToLimitPercent, 2), memoryRequestToLimitRatio: inf.NewDec(config.MemoryRequestToLimitPercent, 2), } } limitRanger, err := limitranger.NewLimitRanger(client, &limitRangerActions{}) if err != nil { return nil, err } return &clusterResourceOverridePlugin{ Handler: admission.NewHandler(admission.Create), config: internal, LimitRanger: limitRanger, }, nil }