@@ -56,7 +56,7 @@ func TestAuthzConfig(t *testing.T) {
56
56
57
57
dir := t .TempDir ()
58
58
configFileName := filepath .Join (dir , "config.yaml" )
59
- if err := os . WriteFile (configFileName , []byte (`
59
+ if err := atomicWriteFile (configFileName , []byte (`
60
60
apiVersion: apiserver.config.k8s.io/v1alpha1
61
61
kind: AuthorizationConfiguration
62
62
authorizers:
@@ -362,7 +362,7 @@ users:
362
362
}
363
363
364
364
configFileName := filepath .Join (dir , "config.yaml" )
365
- if err := os . WriteFile (configFileName , []byte (`
365
+ if err := atomicWriteFile (configFileName , []byte (`
366
366
apiVersion: apiserver.config.k8s.io/v1alpha1
367
367
kind: AuthorizationConfiguration
368
368
authorizers:
@@ -583,7 +583,7 @@ authorizers:
583
583
}
584
584
585
585
// write bogus file
586
- if err := os . WriteFile (configFileName , []byte (`apiVersion: apiserver.config.k8s.io` ), os .FileMode (0644 )); err != nil {
586
+ if err := atomicWriteFile (configFileName , []byte (`apiVersion: apiserver.config.k8s.io` ), os .FileMode (0644 )); err != nil {
587
587
t .Fatal (err )
588
588
}
589
589
@@ -635,7 +635,7 @@ authorizers:
635
635
}
636
636
637
637
// write good config with different webhook
638
- if err := os . WriteFile (configFileName , []byte (`
638
+ if err := atomicWriteFile (configFileName , []byte (`
639
639
apiVersion: apiserver.config.k8s.io/v1beta1
640
640
kind: AuthorizationConfiguration
641
641
authorizers:
@@ -890,3 +890,11 @@ func getMetrics(t *testing.T, client *clientset.Clientset) (*metrics, error) {
890
890
}
891
891
return & m , nil
892
892
}
893
+
894
+ func atomicWriteFile (name string , data []byte , perm os.FileMode ) error {
895
+ tmp := name + ".tmp"
896
+ if err := os .WriteFile (tmp , data , perm ); err != nil {
897
+ return err
898
+ }
899
+ return os .Rename (tmp , name )
900
+ }
0 commit comments