mirror of
https://github.com/kubernetes-sigs/node-feature-discovery.git
synced 2025-03-14 20:56:42 +00:00
Merge pull request #1335 from AhmedGrati/feat-add-feature-file-size-limit
feat: add feature file size limit
This commit is contained in:
commit
51c79fea9e
3 changed files with 220 additions and 0 deletions
|
@ -315,6 +315,9 @@ The label value defaults to `true`, if not specified.
|
||||||
|
|
||||||
Label namespace may be specified with `<namespace>/<name>[=<value>]`.
|
Label namespace may be specified with `<namespace>/<name>[=<value>]`.
|
||||||
|
|
||||||
|
> **NOTE:** The feature file size limit it 64kB. The feature file will be
|
||||||
|
> ignored if the size limit is exceeded.
|
||||||
|
|
||||||
Comment lines (starting with `#`) are ignored.
|
Comment lines (starting with `#`) are ignored.
|
||||||
|
|
||||||
Adding following line anywhere to feature file defines date when
|
Adding following line anywhere to feature file defines date when
|
||||||
|
|
|
@ -45,6 +45,9 @@ const ExpiryTimeKey = "expiry-time"
|
||||||
// DirectivePrefix defines the prefix of directives that should be parsed
|
// DirectivePrefix defines the prefix of directives that should be parsed
|
||||||
const DirectivePrefix = "# +"
|
const DirectivePrefix = "# +"
|
||||||
|
|
||||||
|
// MaxFeatureFileSize defines the maximum size of a feature file size
|
||||||
|
const MaxFeatureFileSize = 65536
|
||||||
|
|
||||||
// Config
|
// Config
|
||||||
var (
|
var (
|
||||||
featureFilesDir = "/etc/kubernetes/node-feature-discovery/features.d/"
|
featureFilesDir = "/etc/kubernetes/node-feature-discovery/features.d/"
|
||||||
|
@ -321,6 +324,23 @@ func getFeaturesFromFiles() (map[string]string, error) {
|
||||||
|
|
||||||
for _, file := range files {
|
for _, file := range files {
|
||||||
fileName := file.Name()
|
fileName := file.Name()
|
||||||
|
|
||||||
|
fileInfo, err := file.Info()
|
||||||
|
if err != nil {
|
||||||
|
klog.ErrorS(err, "failed to get file info", "fileName", fileName)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
fileSize := fileInfo.Size()
|
||||||
|
if fileSize > MaxFeatureFileSize {
|
||||||
|
klog.ErrorS(
|
||||||
|
fmt.Errorf("file size limit exceeded: %d bytes > %d bytes", fileSize, MaxFeatureFileSize),
|
||||||
|
"skipping too big feature file",
|
||||||
|
"fileName", fileName, "fileSize", fileSize,
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
lines, err := getFileContent(fileName)
|
lines, err := getFileContent(fileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.ErrorS(err, "failed to read file", "fileName", fileName)
|
klog.ErrorS(err, "failed to read file", "fileName", fileName)
|
||||||
|
|
197
source/local/testdata/features.d/big_file
vendored
Normal file
197
source/local/testdata/features.d/big_file
vendored
Normal file
File diff suppressed because one or more lines are too long
Loading…
Add table
Reference in a new issue