Skip to content

Commit db82ebd

Browse files
authored
Add unmanaged option to file proto (#964)
* add unmanaged option to file
1 parent 9b1bc5b commit db82ebd

File tree

6 files changed

+213
-179
lines changed

6 files changed

+213
-179
lines changed

api/grpc/mpi/v1/files.pb.go

Lines changed: 188 additions & 178 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/grpc/mpi/v1/files.pb.validate.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/grpc/mpi/v1/files.proto

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ message File {
9292
}
9393
// Optional action
9494
optional FileAction action = 2;
95+
// Unmanaged files will not be modified
96+
bool unmanaged = 3;
9597
}
9698

9799
// Represents the get file request
@@ -290,4 +292,4 @@ message AttributeTypeAndValue {
290292

291293
// The value associated with the attribute.
292294
string value = 2 [(buf.validate.field).string.min_len = 1];
293-
}
295+
}

docs/proto/protos.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,7 @@ Represents meta data about a file
298298
| ----- | ---- | ----- | ----------- |
299299
| file_meta | [FileMeta](#mpi-v1-FileMeta) | | Meta information about the file, the name (including path) and hash |
300300
| action | [File.FileAction](#mpi-v1-File-FileAction) | optional | Optional action |
301+
| unmanaged | [bool](#bool) | | Unmanaged files will not be modified |
301302

302303

303304

internal/file/file_manager_service.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,11 @@ func (fms *FileManagerService) DetermineFileActions(currentFiles, modifiedFiles
473473
currentFile, ok := currentFiles[file.GetFileMeta().GetName()]
474474
// default to unchanged action
475475
file.Action = &unchangedAction
476+
477+
// if file is unmanaged, action is set to unchanged so file is skipped when performing actions
478+
if file.GetUnmanaged() {
479+
continue
480+
}
476481
// if file doesn't exist in the current files, file has been added
477482
// set file action
478483
if !ok {

internal/file/file_manager_service_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,12 @@ func TestFileManagerService_DetermineFileActions(t *testing.T) {
462462

463463
addTestFileName := tempDir + "/nginx_add.conf"
464464

465+
unmanagedFile := helpers.CreateFileWithErrorCheck(t, tempDir, "nginx_unmanaged.conf")
466+
defer helpers.RemoveFileWithErrorCheck(t, unmanagedFile.Name())
467+
unmanagedFileContent := []byte("test unmanaged file")
468+
unmanagedErr := os.WriteFile(unmanagedFile.Name(), unmanagedFileContent, 0o600)
469+
require.NoError(t, unmanagedErr)
470+
465471
tests := []struct {
466472
expectedError error
467473
modifiedFiles map[string]*mpi.File
@@ -479,6 +485,10 @@ func TestFileManagerService_DetermineFileActions(t *testing.T) {
479485
updateTestFile.Name(): {
480486
FileMeta: protos.FileMeta(updateTestFile.Name(), files.GenerateHash(updatedFileContent)),
481487
},
488+
unmanagedFile.Name(): {
489+
FileMeta: protos.FileMeta(unmanagedFile.Name(), files.GenerateHash(unmanagedFileContent)),
490+
Unmanaged: true,
491+
},
482492
},
483493
currentFiles: map[string]*mpi.File{
484494
deleteTestFile.Name(): {
@@ -487,6 +497,10 @@ func TestFileManagerService_DetermineFileActions(t *testing.T) {
487497
updateTestFile.Name(): {
488498
FileMeta: protos.FileMeta(updateTestFile.Name(), files.GenerateHash(fileContent)),
489499
},
500+
unmanagedFile.Name(): {
501+
FileMeta: protos.FileMeta(unmanagedFile.Name(), files.GenerateHash(fileContent)),
502+
Unmanaged: true,
503+
},
490504
},
491505
expectedCache: map[string]*mpi.File{
492506
deleteTestFile.Name(): {

0 commit comments

Comments
 (0)