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>]`.
|
||||
|
||||
> **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.
|
||||
|
||||
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
|
||||
const DirectivePrefix = "# +"
|
||||
|
||||
// MaxFeatureFileSize defines the maximum size of a feature file size
|
||||
const MaxFeatureFileSize = 65536
|
||||
|
||||
// Config
|
||||
var (
|
||||
featureFilesDir = "/etc/kubernetes/node-feature-discovery/features.d/"
|
||||
|
@ -321,6 +324,23 @@ func getFeaturesFromFiles() (map[string]string, error) {
|
|||
|
||||
for _, file := range files {
|
||||
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)
|
||||
if err != nil {
|
||||
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