From 26120d7838a76cc878ad4e12bf3dd44ce9872e81 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Thu, 29 Nov 2018 18:14:05 -0800 Subject: [PATCH] Ignore permission errors on config-dir (#6894) --- cmd/certs.go | 6 +++++- cmd/certs_test.go | 3 ++- cmd/config-dir.go | 10 +++++++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/cmd/certs.go b/cmd/certs.go index 54b821824..956e0a67d 100644 --- a/cmd/certs.go +++ b/cmd/certs.go @@ -71,9 +71,13 @@ func getRootCAs(certsCAsDir string) (*x509.CertPool, error) { // Get all CA file names. var caFiles []string fis, err := readDir(certsCAsDir) - if err != nil { + if err != nil && err != errFileNotFound { return nil, err } + // Return success if CA's directory is missing. + if err == errFileNotFound { + return nil, nil + } for _, fi := range fis { // Skip all directories. if hasSuffix(fi, slashSeparator) { diff --git a/cmd/certs_test.go b/cmd/certs_test.go index 9c9f2912d..bd78667a5 100644 --- a/cmd/certs_test.go +++ b/cmd/certs_test.go @@ -223,7 +223,8 @@ func TestGetRootCAs(t *testing.T) { certCAsDir string expectedErr error }{ - {"nonexistent-dir", errFileNotFound}, + // ignores non-existent directories. + {"nonexistent-dir", nil}, // Ignores directories. {dir1, nil}, // Ignore empty directory. diff --git a/cmd/config-dir.go b/cmd/config-dir.go index 4611068e6..3c1d2b3a0 100644 --- a/cmd/config-dir.go +++ b/cmd/config-dir.go @@ -74,7 +74,15 @@ func (config *ConfigDir) GetCADir() string { // Create - creates configuration directory tree. func (config *ConfigDir) Create() error { - return os.MkdirAll(config.GetCADir(), 0700) + err := os.MkdirAll(config.GetCADir(), 0700) + // It is possible in kubernetes like deployments this directory + // is already mounted and is not writable, ignore any write errors. + if err != nil { + if os.IsPermission(err) { + err = nil + } + } + return err } // GetMinioConfigFile - returns absolute path of config.json file.