mirror of https://github.com/kubernetes/kops.git
Merge pull request #10757 from justinsb/nodeup_set_owner_group
nodeup file: Set owner & group when we write the file.
This commit is contained in:
commit
51dbaccb31
|
|
@ -18,6 +18,7 @@ go_library(
|
|||
"executor.go",
|
||||
"files.go",
|
||||
"files_owner.go",
|
||||
"files_owner_windows.go",
|
||||
"has_address.go",
|
||||
"http.go",
|
||||
"lifecycle.go",
|
||||
|
|
|
|||
|
|
@ -29,7 +29,8 @@ import (
|
|||
"k8s.io/kops/util/pkg/hashing"
|
||||
)
|
||||
|
||||
func WriteFile(destPath string, contents Resource, fileMode os.FileMode, dirMode os.FileMode) error {
|
||||
// WriteFile writes a file to the specified path, setting the mode, owner & group.
|
||||
func WriteFile(destPath string, contents Resource, fileMode os.FileMode, dirMode os.FileMode, owner string, group string) error {
|
||||
err := os.MkdirAll(path.Dir(destPath), dirMode)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error creating directories for destination file %q: %v", destPath, err)
|
||||
|
|
@ -45,6 +46,11 @@ func WriteFile(destPath string, contents Resource, fileMode os.FileMode, dirMode
|
|||
return err
|
||||
}
|
||||
|
||||
_, err = EnsureFileOwner(destPath, owner, group)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@ import (
|
|||
"k8s.io/klog/v2"
|
||||
)
|
||||
|
||||
// EnsureFileOwner will set the owner & group for a file.
|
||||
// Empty values for owner/group will leave the owner/group unchanged.
|
||||
func EnsureFileOwner(destPath string, owner string, groupName string) (bool, error) {
|
||||
changed := false
|
||||
stat, err := os.Lstat(destPath)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
// +build windows
|
||||
|
||||
/*
|
||||
Copyright 2021 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package fi
|
||||
|
||||
// EnsureFileOwner dummy version for Windows
|
||||
func EnsureFileOwner(destPath string, owner string, groupName string) (bool, error) {
|
||||
return false, nil
|
||||
}
|
||||
|
|
@ -56,7 +56,7 @@ func TestWriteFile(t *testing.T) {
|
|||
},
|
||||
}
|
||||
for _, test := range tests {
|
||||
err := WriteFile(test.path, NewBytesResource(test.data), test.fileMode, test.dirMode)
|
||||
err := WriteFile(test.path, NewBytesResource(test.data), test.fileMode, test.dirMode, "", "")
|
||||
if err != nil {
|
||||
t.Errorf("Error writing file {%s}, error: {%v}", test.path, err)
|
||||
continue
|
||||
|
|
|
|||
|
|
@ -234,7 +234,7 @@ func (_ *File) RenderLocal(t *local.LocalTarget, a, e, changes *File) error {
|
|||
}
|
||||
} else if e.Type == FileType_File {
|
||||
if changes.Contents != nil {
|
||||
err = fi.WriteFile(e.Path, e.Contents, fileMode, dirMode)
|
||||
err = fi.WriteFile(e.Path, e.Contents, fileMode, dirMode, fi.StringValue(e.Owner), fi.StringValue(e.Group))
|
||||
if err != nil {
|
||||
return fmt.Errorf("error copying file %q: %v", e.Path, err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ func (_ *Service) RenderLocal(t *local.LocalTarget, a, e, changes *Service) erro
|
|||
|
||||
if changes.Definition != nil {
|
||||
servicePath := path.Join(systemdSystemPath, serviceName)
|
||||
err := fi.WriteFile(servicePath, fi.NewStringResource(*e.Definition), 0644, 0755)
|
||||
err := fi.WriteFile(servicePath, fi.NewStringResource(*e.Definition), 0644, 0755, "", "")
|
||||
if err != nil {
|
||||
return fmt.Errorf("error writing systemd service file: %v", err)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue