diff --git a/cmd/pmem-csi-driver/main.go b/cmd/pmem-csi-driver/main.go
index 9bd204c3ae..f2e8a46781 100644
--- a/cmd/pmem-csi-driver/main.go
+++ b/cmd/pmem-csi-driver/main.go
@@ -8,19 +8,11 @@ SPDX-License-Identifier: Apache-2.0
package main
import (
- "flag"
"os"
- "k8s.io/klog/v2"
-
"github.com/intel/pmem-csi/pkg/pmem-csi-driver"
)
-func init() {
- klog.InitFlags(nil)
-}
-
func main() {
- flag.Parse()
os.Exit(pmemcsidriver.Main())
}
diff --git a/cmd/pmem-csi-operator/main.go b/cmd/pmem-csi-operator/main.go
index 94f1fa2b8f..763d94b8ba 100644
--- a/cmd/pmem-csi-operator/main.go
+++ b/cmd/pmem-csi-operator/main.go
@@ -7,13 +7,11 @@ SPDX-License-Identifier: Apache-2.0
package main
import (
- "flag"
"os"
pmemoperator "github.com/intel/pmem-csi/pkg/pmem-csi-operator"
)
func main() {
- flag.Parse()
os.Exit(pmemoperator.Main())
}
diff --git a/deploy/bindata_generated.go b/deploy/bindata_generated.go
index da04867a46..b8b2651e6a 100644
--- a/deploy/bindata_generated.go
+++ b/deploy/bindata_generated.go
@@ -85,7 +85,7 @@ func (fi bindataFileInfo) Sys() interface{} {
return nil
}
-var _deployKubernetes117DirectPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\xdd\x6f\xe3\xb8\x11\x7f\xf7\x5f\xc1\x6e\xef\xe1\x0e\xa8\xac\x78\xdb\x03\x5a\x01\x7e\xc8\x26\xbe\xd4\xe8\xc6\x31\x92\xec\xbd\x06\x0c\x35\x96\x59\x53\x24\x4b\x8e\xbc\xf1\x15\xfd\xdf\x0b\x52\x92\xad\x2f\xcb\x1f\xcd\x07\x8a\xf3\x3e\xac\x23\x72\x38\xbf\xf9\xe0\xcc\x6f\x6c\xff\x91\xdc\x80\x04\x43\x11\x62\xf2\x9d\xe3\x92\x7c\x4a\xe9\x0a\xc8\x2a\xb3\xa8\x52\xfe\x1b\x7c\xfa\x13\x89\x15\x91\x0a\x09\xc4\x1c\xff\x30\x18\x50\xcd\x7f\x05\x63\xb9\x92\x11\x59\x8f\x06\x2b\x2e\xe3\x88\xcc\x68\x0a\x56\x53\x06\x83\x14\x90\xc6\x14\x69\x34\x20\x44\xd0\x67\x10\xd6\xbd\x23\x44\xa7\x90\x06\xcc\xf2\x21\x97\x08\x62\xc8\x54\x1a\xc6\xa0\x85\xda\xa4\x20\x31\x22\x31\x37\xc0\x30\xd0\x46\xc5\x19\x43\xae\xe4\x80\x10\x49\x53\x88\xb6\x82\x83\x20\x08\xba\x95\x3f\x80\x59\x73\x06\x97\x8c\xa9\x4c\xe2\xdb\x21\x08\x98\x92\x68\x94\x10\x60\x8a\x35\x6f\x72\x0f\x44\xf3\x4c\xd9\x90\x66\xb8\x54\x86\xff\x46\xdd\xa1\xc3\xd5\x5f\xed\x90\xab\x70\x0b\xfe\x5e\x89\x37\x74\x5a\x00\x2f\x08\x46\x52\xe1\x36\xad\xb9\x43\x05\x26\x60\x8b\x64\x8f\x01\x26\x13\x60\xa3\x41\x40\xa8\xe6\x37\x46\x65\xda\x03\x09\xc8\xa7\x4f\x03\x42\x0c\x58\x95\x19\x06\xc5\x33\x90\xb1\x56\x5c\xa2\x1d\x10\xb2\x06\xf3\x5c\x3c\x4e\x00\xfd\xff\xdf\x29\xb2\xa5\x7f\x27\xb8\xcd\x1f\xc5\x20\x00\xc1\xbf\xcd\x74\x4c\x8b\xb7\xcc\x80\x7b\xdb\xd2\xc9\x94\x32\x31\x97\x55\xb7\xb5\x41\x08\xa0\x16\xde\x0a\x81\x45\x65\x68\x02\x7b\x95\x33\xcb\x8b\x2d\x8c\x6a\xca\x38\xf2\x7d\x50\xb6\x00\x76\x98\x0a\xa5\x0d\x28\x7a\xbb\x5e\x40\x3d\x2a\x14\x5a\xc5\x1d\x8a\x5b\xa2\x54\x6b\xdb\x16\x36\xa0\x05\x67\xd4\x42\x57\x24\xcf\xc8\xe8\x2b\x91\x59\x04\xf3\x11\x89\x6d\x32\x29\xc1\x9c\x94\xc5\xda\x59\x66\x11\x24\xae\x95\xc8\xd2\xf3\x02\x78\x52\xac\x1a\x0a\x99\xa0\x3c\x3d\x5e\x6b\x91\x2b\x27\xe7\x6a\x99\xa8\x82\xda\xbd\x17\xa6\xa1\xee\xb8\x2a\xb0\x86\x56\x09\x38\x31\xdb\xdb\xb6\x48\xaa\xed\x52\xe1\xf0\x90\x51\x45\xc8\x8a\xed\x7d\x56\xbd\x96\x0e\xd7\x02\xda\x06\x1f\x50\x75\xb8\x8c\x48\x15\xbf\x66\x50\x4e\x38\xee\xbc\x8e\xf5\x85\xcb\x98\xcb\xe4\x2d\x7b\xad\xe5\xf5\xab\xad\x04\xf4\x35\x2e\x25\xe0\x1e\x16\x4e\x7b\xe9\x9f\x1e\x63\x06\x84\x54\xba\xef\xf1\x4d\xd3\x66\xcf\xff\x04\x86\xbe\xb6\x74\x72\x8f\x77\xa1\x0c\x95\x02\xfb\x31\x71\x38\xd7\xdb\xd5\xce\x70\x52\x41\x7f\x07\xbf\x37\xd9\xe4\x47\xd2\x48\xab\x81\x39\x65\x5a\x19\xdc\x76\x78\x83\x11\x19\x5d\x5c\x5c\x5c\x78\x14\x48\x4d\x02\x38\xaf\x3d\xb5\x20\x80\xa1\x32\x39\x4e\xaa\xf5\x3e\x9d\x67\x18\xf1\x81\xee\x4a\x01\x0d\x67\xf6\x0c\x5f\x8d\x3a\x7d\x35\x7a\x6b\x5f\x11\x82\x1b\x0d\x11\x99\xa9\x18\x9c\xd6\x96\xf3\x1c\x0f\xdb\x5d\xe7\x07\xa4\x08\x8b\x4c\x3c\xc0\x87\xce\x2e\xa5\x23\x4b\x3a\x18\x91\x51\xcb\x4f\xa9\xeb\x19\x5f\x2b\xb8\x0e\xb8\xee\x2c\xe0\x36\xcf\xa8\x59\x0f\x7e\x84\x54\x0b\x8a\x50\xa0\xaa\x38\xcd\x43\x92\x52\xa1\x2f\x40\x5b\x94\x9d\x40\x2c\x33\xd4\xc5\xc9\x1d\x4d\xb9\x04\x63\x8b\xdd\xa2\x66\xe1\x41\x1b\xcf\xb2\x72\xaf\xe0\x77\x78\x5e\x2a\xb5\x8a\x08\x4f\xa4\x32\xe0\xb7\x96\xb1\xf1\x60\x16\x0b\x2e\x39\x6e\x76\xf0\x5c\xb7\xbf\x6c\x3d\x75\x91\xfc\x57\xc6\x0d\xc4\xd7\x99\xe1\x32\x79\x60\x4b\x88\x33\xc1\x65\x32\xf5\x07\x17\x8f\x27\x2f\xc0\x32\x87\xa9\x2a\x99\x9f\xf9\x50\xc4\xfe\x11\x4c\x6a\xeb\xcb\x41\x9e\x0a\x93\x17\x6d\xc0\xda\xba\xa7\xcb\x1d\x2b\xd8\x44\x5d\x06\x76\xf8\xaf\x7c\x29\x0d\x86\xba\x6c\x23\x33\x85\x53\xd9\x5a\x5f\x53\x91\x41\x4b\x95\x67\x41\x52\x7d\xea\x7a\xbc\xa0\xc2\x42\xb9\xb2\x0b\x74\x79\x84\x9b\x32\xd3\x94\xca\x78\x77\x66\x40\xc2\xcc\x9a\x50\x28\x46\x45\xf8\xcc\x65\xb8\x0d\x7c\x6c\xf8\xba\x02\x3a\x20\xc1\x7a\xfc\xe7\xea\x9f\xa9\x8a\x61\xdc\x61\x5e\x40\x82\x72\x58\x1e\x67\x92\xbf\x44\x61\x18\x32\xcb\xc3\x7a\x36\x0d\xad\x62\xab\xaa\x8c\x81\x84\x5b\x34\x9b\x49\x29\x8b\x4c\x47\x61\x78\x31\xf4\xff\xa2\x5d\x33\x28\xf6\xbb\x98\xf1\x78\xfc\xc3\x8f\xff\xf8\xf6\x65\xf2\x34\xbb\xbb\x9e\x3c\xcd\x2e\x6f\x27\x3f\x55\xf7\x30\xfa\x0b\x17\x30\x0e\x19\x18\xb4\x21\xa3\x43\x66\xb0\xb6\x0e\x06\xab\x3b\x50\xd8\xe6\x96\x15\x6c\x9a\x3b\x56\xb0\xa9\xee\xc8\x1d\xe5\x8a\xcc\xf8\x87\x1f\xe7\xb7\x93\xdb\xa7\xab\x87\xe9\xd3\xf5\xfd\xf4\xd7\xc9\x7d\x1b\x52\x51\xdf\xbf\xfa\xa1\x68\x1c\xed\xea\xb6\x7b\x81\x5c\x57\x43\x93\x17\xb5\xba\x7d\x83\x46\x7e\xfc\x62\x54\x5a\x4f\x91\x05\x07\x11\x17\x7c\xa5\xfa\x6a\x34\xb4\xfa\xa2\x17\x9a\x53\x5c\x46\xfe\xfa\x0d\x9d\x77\x5d\x4d\x6a\xa1\x79\x9c\xdc\xdf\x4e\x67\x97\x8f\xd3\xbb\xd9\xd3\xd7\xbb\x9b\xa7\xf9\xe5\xe3\xdf\x9b\x98\x22\x12\x62\xaa\x43\x04\x93\x16\x9f\x68\x04\x42\x25\xad\xa3\xba\x7c\xd5\x3e\xaa\x7d\xa7\x5a\x07\xdd\xdc\x5d\x4f\xbe\x7c\xbb\x69\xcb\xbe\xfc\x7c\xf1\xb7\xbc\xb0\x5c\xcd\xc6\x3b\x37\xf3\x94\x26\x10\x11\x7f\x60\x33\xe1\x23\x46\x25\x35\x9b\xfa\xde\x79\x26\xc4\x5c\x09\xce\x36\x11\x99\x2e\x66\x0a\xe7\x06\x2c\xc8\x5d\xa2\x54\xda\x4f\xe3\xde\x6c\x3b\x75\x09\x79\x7b\x2d\xe7\x8d\xc6\x5d\x3d\x69\xc7\x02\xf2\x97\x05\x96\x19\x8e\x9b\x2b\x37\x90\xbd\x60\xbd\xee\xd1\xf8\x4e\x8a\xcd\xbd\x52\x3e\x97\xed\xc6\x22\xa4\x11\x41\x93\xed\xa2\x57\x09\xc5\x2d\x58\xeb\x4c\xf2\xb1\xee\x8d\x53\x3e\x0b\xde\x3a\xca\x59\xb3\x20\x75\x4f\x0a\x79\x7f\x2b\x5a\xf0\xcb\xbb\xec\x2f\xd8\x3e\x49\xcb\x5b\x72\x5a\x64\x09\x97\x81\x2b\x0d\x80\x41\xcc\xcd\x1e\x59\x4c\x75\x4b\x16\x53\x5d\x91\x08\x08\x35\x49\x0d\x75\xb3\x7c\xf9\x98\xd3\x38\x76\x25\x7d\x7c\x4c\x81\x0a\x16\x40\x31\x33\x10\x24\x14\xc1\x8e\x1f\x95\x56\x42\x25\x9b\x71\xcd\xd1\x6e\x9f\x75\xb1\xc3\x00\xf7\x6e\x40\x9e\x82\xca\x70\xfc\x73\x5a\x7b\x1c\xc3\x82\x66\x02\x83\x85\x75\x8c\x6a\x0c\x2f\xf8\x97\xda\x7a\x91\x14\x5b\xd0\xbe\x78\x8c\x9a\x59\xed\xa6\x90\x84\x19\x37\x43\x59\x9e\x04\xc5\x38\x1e\x36\x26\x9b\x68\xfd\x79\x78\x31\xfc\x7c\x56\x9a\x77\xcd\x2e\x27\xe5\xfb\xe8\xcd\xf3\xfd\xa8\xd4\x3d\x21\x01\xf7\xe2\x31\x99\xbc\xb4\x33\x25\x1d\x9a\x06\x06\xbf\xf4\xcd\x82\xc9\x67\x96\xed\x49\xd5\x51\xae\x8f\xf6\xb9\x17\x2a\xe1\x38\x42\x95\x72\x04\x04\x16\x0b\x60\xe8\x58\x43\xc1\x72\x76\x3a\x3d\x0b\x71\xb5\xdb\x4f\xae\xc3\x55\xf6\x0c\x46\x02\x82\x1f\xa9\x53\xea\xe6\xd1\x41\xd5\x43\xd5\x53\x53\x8d\x9b\x6b\x6e\x22\x22\x33\x21\x9a\x95\x6d\x8f\x5f\x82\xde\x0b\x6f\x81\x19\xa8\x05\x2f\x7f\xd2\xb0\x7a\x2b\x9c\xaf\xda\x0e\x48\xff\xfe\x4f\x03\x50\x79\xdb\xfb\x87\x8d\x6b\x0a\xa9\x92\x6f\x3b\x6a\x38\x6f\x1f\x18\x32\x4e\x1c\x2b\x8a\x13\xcf\x84\xf7\xa1\xd3\x42\x05\xfa\xfb\xce\x09\xaf\x4e\x76\x63\x70\xd7\xf4\x96\x4a\x9a\x80\x19\xe7\x58\x0f\x91\xe1\x9a\xf5\x3d\x34\xb8\xd5\x5a\x8e\xe2\xb2\xdb\xda\xd0\x60\xc8\x85\xd4\xfc\xee\xfa\x69\x3a\xff\xc9\x13\xe5\xd1\x11\xc4\xba\xa3\xe8\xb4\x49\xf6\xbb\x10\x68\x8b\x14\x3d\x1f\x19\x87\x6b\x6a\x42\xc1\x9f\xc3\x23\x88\xf4\x69\xb4\xdb\x59\x3b\x07\xc3\x40\x22\x4d\x60\x3c\xaa\x9b\xf9\xff\x4e\xca\x2b\x09\xf0\x0e\x50\x90\x62\x66\x87\x5a\xc5\x15\x6d\xaf\xce\xe9\x5f\x71\xce\xf8\x5d\x8f\x07\xda\xf0\x35\x17\x90\x40\xdc\xa0\x27\x35\x82\x72\xf1\xf6\x93\x42\x79\xb5\x1d\x27\x11\x80\x61\x4e\x29\x6c\x58\xe7\x28\x75\x52\x96\xcb\x1b\xa5\x69\xe2\x95\x46\xe4\x0b\xcf\x4b\x31\x57\x92\x8a\xb6\x5f\xdc\x7e\x5f\xe4\x7a\x86\x87\x16\x90\xfc\xeb\xe4\x73\x75\x3a\xf1\x1e\x6d\xdd\x03\x92\xa7\x68\x3d\xc3\x51\x0c\xeb\x96\x4c\x0c\xeb\x1e\x3d\x76\xd3\xd6\x62\x37\xbd\xc8\x3a\xf8\xef\xc1\xc9\xab\x74\x5e\xcf\x0d\x3e\xc3\x85\xee\x30\xdf\x05\x4e\x9b\xe0\x8a\x08\x96\x1d\x2e\xcf\x4b\x5d\x6b\x24\xcd\x6c\xdb\xd3\x2a\x3a\xbb\x72\xe7\x84\x58\xdf\xd5\xd9\x1b\xfe\xe7\x1a\x78\x78\x92\xf3\xf9\x93\x97\x92\xad\xf5\x26\x5a\x8f\x86\x9f\x87\x17\x67\xd5\xa6\xe6\x59\x1f\x3e\x89\x1d\xcc\xc4\x6a\xd0\x5b\xd2\xb5\x8c\xd8\x9d\x51\xfd\x9c\x77\x07\xa6\x70\x6c\x1e\x92\x7d\xe3\xd1\x52\xd9\x5c\x73\xb5\xb6\xf6\x57\xb6\xde\x3b\x92\x7f\x69\x72\xed\x6f\x85\x32\x9b\x3b\x73\x55\xfe\x66\xa0\xd7\x0b\xe7\x00\x79\x2a\x19\x60\x78\xb2\xfe\x3d\x7e\x3c\xcb\x1d\x7d\x85\xfe\x38\x34\x9d\xe5\xfd\x34\x2c\xf5\x5a\x7f\x9c\xda\x46\x85\x0f\xf6\xd6\xf0\x23\xe7\x5d\x2f\xd8\x9c\x75\x8f\x30\xe2\x15\xf2\x69\x4f\xa5\xed\x51\x5e\xef\x44\xc7\x69\xa9\x77\xaa\xde\xe3\xeb\x6d\xeb\xc8\x4b\x51\xb4\xb5\xe6\xec\x5f\xff\xe5\x49\xb8\x1e\x3d\x03\xd2\xed\xcf\x08\x1e\xa6\xd7\x39\xf5\x7a\xb3\x8f\x02\x2a\x71\x29\x47\x53\x8a\x48\xd9\xf2\xbe\xf8\x6a\x2a\x22\xfe\x0b\x1a\xff\xfd\x6d\x3c\x95\x0b\x75\x27\x7d\x61\xdc\x96\xcc\xbc\xea\x7c\xe5\x0b\x60\x1b\x26\xe0\x56\xc5\xe5\x6f\x5c\xe6\xdb\xdf\x51\xf9\x3f\x27\x7a\x09\x29\x18\x2a\x06\xff\x0d\x00\x00\xff\xff\xc5\x8a\x47\x12\xd2\x2a\x00\x00")
+var _deployKubernetes117DirectPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\xdd\x6f\xe3\xb8\x11\x7f\xf7\x5f\xc1\x6e\xef\xe1\x0e\xa8\xac\x78\xdb\x03\x5a\x01\x7e\xc8\x26\xbe\xd4\xe8\xc6\x31\x92\xec\xbd\x06\x0c\x35\x96\x59\x53\x24\x4b\x8e\xbc\xf1\x15\xfd\xdf\x0b\x52\x92\xad\x2f\xcb\x1f\x97\x0f\x14\xf5\x3e\xac\x43\x71\x38\xbf\xf9\xe0\xcc\x6f\x6c\xff\x91\xdc\x80\x04\x43\x11\x62\xf2\x9d\xe3\x92\x7c\x4a\xe9\x0a\xc8\x2a\xb3\xa8\x52\xfe\x1b\x7c\xfa\x13\x89\x15\x91\x0a\x09\xc4\x1c\xff\x30\x18\x50\xcd\x7f\x05\x63\xb9\x92\x11\x59\x8f\x06\x2b\x2e\xe3\x88\x3c\x80\x59\x73\x06\x97\x8c\xa9\x4c\xe2\x20\x05\xa4\x31\x45\x1a\x0d\x08\x11\xf4\x19\x84\x75\xef\x08\xd1\x29\xa4\x01\xb3\x7c\xc8\x25\x82\x18\x32\x95\x86\x31\x68\xa1\x36\x29\x48\x8c\x48\xcc\x0d\x30\x0c\xb4\x51\x71\xc6\x90\x2b\x39\x20\x44\xd2\x14\xa2\xad\x60\xc0\x94\x44\xa3\x84\x00\x53\x3c\xb3\x9a\xb2\xca\x86\x41\x10\x04\x35\x88\xe6\x99\xb2\x21\xcd\x70\xa9\x0c\xff\x8d\xba\x43\x87\xab\xbf\xda\x21\x57\xe1\x16\xfc\xbd\x12\xf0\x86\x90\xe1\x05\xc1\x48\x2a\xdc\xa6\x35\x77\xa8\xc0\x04\x6c\x91\xec\x31\xc0\x64\x02\x6c\x34\x08\x08\xd5\xfc\xc6\xa8\x4c\x7b\x20\x01\xf9\xf4\x69\x40\x88\x01\xab\x32\xc3\xa0\x58\x03\x19\x6b\xc5\x25\xda\x01\x21\x6b\x30\xcf\xc5\x72\x02\xe8\xff\xff\x4e\x91\x2d\xfd\x3b\xc1\x6d\xbe\x14\x83\x00\x04\xff\x36\xd3\x31\x2d\xde\x32\x03\xee\x6d\x4b\x27\x53\xca\xc4\x5c\x56\xdd\xd6\x06\x21\x80\x5a\x78\x2b\x04\x16\x95\xa1\x09\xec\x55\xce\x2c\x2f\xb6\x30\xaa\x29\xe3\xc8\xf7\x41\xd9\x02\xd8\x61\x2a\x94\x36\xa0\xe8\xed\xf3\x02\xea\x51\xa1\xd0\x2a\xee\x50\xdc\x12\xa5\x5a\xdb\xb6\xb0\x01\x2d\x38\xa3\x16\xba\x22\x79\x46\x46\x5f\x89\xcc\x22\x98\x8f\x48\x6c\x93\x49\x09\xe6\xa4\x2c\xd6\xce\x32\x8b\x20\x71\xad\x44\x96\x9e\x17\xc0\x93\x62\xd5\x50\xc8\x04\xe5\xe9\xf1\x5a\x8b\x5c\x39\x39\x57\xcb\x44\x15\xd4\xee\xbd\x30\x0d\x75\xc7\x55\x81\x35\xb4\x4a\xc0\x89\xd9\xde\xb6\x45\x52\x6d\x97\x0a\x87\x87\x8c\x2a\x42\x56\x6c\xef\xb3\xea\xb5\x74\xb8\x16\xd0\x36\xf8\x80\xaa\xc3\x65\x44\xaa\xf8\x35\x83\x72\xc2\x71\xe7\x75\xac\x2f\x5c\xc6\x5c\x26\x6f\xd9\x6b\x2d\xaf\x5f\x6d\x25\xa0\xaf\x71\x29\x01\xf7\xb0\x70\xda\x4b\xff\xf4\x18\x33\x20\xa4\xd2\x7d\x8f\x6f\x9a\x36\x7b\xfe\x27\x30\xf4\xb5\xa5\x93\x7b\xbc\x0b\x65\xa8\x14\xd8\x8f\x89\xc3\xb9\xde\xae\x76\x86\x93\x0a\xfa\x3b\xf8\xbd\xc9\x26\x3f\x92\x46\x5a\x0d\xcc\x29\xd3\xca\xe0\xb6\xc3\x1b\x8c\xc8\xe8\xe2\xe2\xe2\xc2\xa3\x40\x6a\x12\xc0\x79\x6d\xd5\x82\x00\x86\xca\xe4\x38\xa9\xd6\xfb\x74\x9e\x61\xc4\x07\xba\x2b\x05\x34\x9c\xd9\x33\x7c\x35\xea\xf4\xd5\xe8\xad\x7d\x45\x08\x6e\x34\x44\x64\xa6\x62\x70\x5a\x5b\xce\x73\x3c\x6c\x77\x9d\x1f\x90\x22\x2c\x32\xf1\x00\x1f\x3a\xbb\x94\x8e\x2c\xe9\x60\x44\x46\x2d\x3f\xa5\xae\x67\x7c\xad\xe0\x3a\xe0\xba\xb3\x80\xdb\x3c\xa3\x66\x3d\xf8\x11\x52\x2d\x28\x42\x81\xaa\xe2\x34\x0f\x49\x4a\x85\xbe\x00\x6d\x51\x76\x02\xb1\xcc\x50\x17\x27\x77\x34\xe5\x12\x8c\x2d\x76\x8b\x9a\x85\x07\x6d\x3c\xcb\xca\xbd\x82\xdf\xe1\x79\xa9\xd4\x2a\x22\x3c\x91\xca\x80\xdf\x5a\xc6\xc6\x83\x59\x2c\xb8\xe4\xb8\xd9\xc1\x73\xdd\xfe\xb2\xb5\xea\x22\xf9\xaf\x8c\x1b\x88\xaf\x33\xc3\x65\xf2\xc0\x96\x10\x67\x82\xcb\x64\xea\x0f\x2e\x96\x27\x2f\xc0\x32\x87\xa9\x2a\x99\x9f\xf9\x50\xc4\xfe\x11\x4c\x6a\xeb\x8f\x83\x3c\x15\x26\x2f\xda\x80\xb5\x75\x4f\x97\x3b\x56\xb0\x89\xba\x0c\xec\xf0\x5f\xf9\x52\x1a\x0c\x75\xd9\x46\x66\x0a\xa7\xb2\xf5\x7c\x4d\x45\x06\x2d\x55\x9e\x05\x49\xf5\xa9\x6b\x79\x41\x85\x85\xf2\xc9\x2e\xd0\xe5\x11\x6e\xca\x4c\x53\x2a\xe3\xdd\x99\x01\x09\x33\x6b\x42\xa1\x18\x15\xe1\x33\x97\xe1\x36\xf0\xb1\xe1\xeb\x0a\xe8\x80\x04\xeb\xf1\x9f\xab\x7f\x0a\x95\x24\x5c\x26\xc1\x42\x99\x94\xe2\x18\xe1\x05\xab\x8f\x53\x15\xc3\xb8\xc3\xfa\x80\x04\xe5\x2c\x3d\xce\x24\x7f\x89\xc2\x30\x64\x96\x87\xf5\x64\x1b\x5a\xc5\x56\x55\x19\x03\x09\xb7\x68\x36\x93\x52\x16\x99\x8e\xc2\xf0\x62\xe8\xff\x45\xbb\x5e\x51\xec\x77\x21\xe5\xf1\xf8\x87\x1f\xff\xf1\xed\xcb\xe4\x69\x76\x77\x3d\x79\x9a\x5d\xde\x4e\x7e\xaa\xee\x61\xf4\x17\x2e\x60\x1c\x32\x30\x68\x43\x46\x87\xcc\xd4\x4c\x70\xeb\xd5\x1d\x28\x6c\x73\xcb\x0a\x36\xcd\x1d\x2b\xd8\x54\x77\xe4\x7e\x74\x35\x68\xfc\xc3\x8f\xf3\xdb\xc9\xed\xd3\xd5\xc3\xf4\xe9\xfa\x7e\xfa\xeb\xe4\xbe\x0d\xa9\x28\xff\x5f\xfd\xcc\x34\x8e\x76\x65\xdd\xbd\x40\xae\xab\x91\xcb\x6b\x5e\xdd\xbe\x41\x23\x7d\x7e\x31\x2a\xad\x67\xd0\x82\x83\x88\x0b\x3a\x53\x7d\x35\xfa\x5d\xfd\xa1\x17\x9a\x53\x5c\x46\xfe\x76\x0e\x9d\x77\x5d\xc9\x6a\xa1\x79\x9c\xdc\xdf\x4e\x67\x97\x8f\xd3\xbb\xd9\xd3\xd7\xbb\x9b\xa7\xf9\xe5\xe3\xdf\x9b\x98\x22\x12\x62\xaa\x43\x04\x93\x16\x1f\x78\xb8\x5c\x6a\x1d\xd5\xe5\xab\xf6\x51\xed\x2b\xd7\x3a\xe8\xe6\xee\x7a\xf2\xe5\xdb\x4d\x5b\xf6\xe5\xe7\x8b\xbf\xe5\x75\xe7\x6a\x36\xde\xb9\x99\xa7\x34\x81\x88\xf8\x03\x9b\xf7\x21\x62\x54\x52\xb3\xa9\xef\x9d\x67\x42\xcc\x95\xe0\x6c\x13\x91\xe9\x62\xa6\x70\x6e\xc0\x82\xdc\x25\x4a\xa5\x3b\x35\xae\xd5\xb6\x91\x97\x90\xb7\xb7\x76\xde\xe8\xeb\xd5\x93\x76\x24\x21\x7f\x59\x60\x99\xe1\xb8\xb9\x72\xf3\xda\x0b\xd6\xcb\x22\x8d\xef\xa4\xd8\xdc\x2b\xe5\x73\xd9\x6e\x2c\x42\x1a\x11\x34\xd9\x2e\x7a\x95\x50\xdc\x82\xb5\xce\x24\x1f\xeb\xde\x38\xe5\xa3\xe2\xad\x63\xa4\x35\x0b\x52\xb7\x52\xc8\xfb\x5b\xd1\x82\x5f\xde\x65\x7f\xc1\xf6\x49\x5a\xde\x92\xd3\x22\x4b\xb8\x0c\x5c\x69\x00\x0c\x62\x6e\xf6\xc8\x62\xaa\x5b\xb2\x98\xea\x8a\x44\x40\xa8\x49\x6a\xa8\x9b\xd5\xcd\xc7\x9c\xc6\xb1\xab\xf8\xe3\x63\x0a\x54\xb0\x00\x8a\x99\x81\x20\xa1\x08\x76\xfc\xa8\xb4\x12\x2a\xd9\x8c\x6b\x8e\x76\xfb\xac\x8b\x1d\x06\xb8\x77\x03\xf2\x14\x54\x86\xe3\x9f\xd3\xda\x72\x0c\x0b\x9a\x09\x0c\x16\xd6\x11\xae\x31\xbc\xe0\x5f\x6a\xcf\x8b\xa4\xd8\x82\xf6\xc5\x63\xd4\xcc\x6a\x37\xa4\x24\xcc\xb8\x11\xcb\xf2\x24\x28\xa6\xf5\xb0\x31\xf8\x44\xeb\xcf\xc3\x8b\xe1\xe7\xb3\xd2\xbc\x6b\xb4\x39\x29\xdf\x47\x6f\x9e\xef\x47\xa5\xee\x09\x09\xb8\x17\x8f\xc9\xe4\xa5\x9d\x29\xe9\xd0\x34\x30\xf8\x47\xdf\x2c\x98\x7c\xa4\xd9\x9e\x54\x9d\xf4\xfa\x58\xa1\x7b\xa1\x12\x8e\x42\x54\x19\x49\x40\x60\xb1\x00\x86\x8e\x54\x14\x24\x68\xa7\xd3\x93\x14\x57\xbb\xfd\x60\x3b\x5c\x65\xcf\x60\x24\x20\xf8\x89\x3b\xa5\x6e\x5c\x1d\x54\x3d\x54\x3d\x35\xd5\xb8\xb9\xe6\x26\x22\x32\x13\xa2\x59\xd9\xf6\xf8\x25\xe8\xbd\xf0\x16\x98\x81\x5a\xf0\xf2\x95\x86\xd5\x5b\xe1\xfc\xa9\xed\x80\xf4\xef\xff\x34\x00\x95\xb7\xbd\x7f\x16\xb9\xa6\x90\x2a\xf9\xb6\x93\x88\xf3\xf6\x81\x19\xe4\xc4\xa9\xa3\x38\xf1\x4c\x78\x1f\x3a\x4c\x54\xa0\xbf\xef\x18\xf1\xea\x5c\x38\x06\x77\x4d\x6f\xa9\xa4\x09\x98\x71\x8e\xf5\x77\x72\xe5\x9a\x73\x7a\x58\x72\xab\xf3\x1c\x45\x75\xb7\xa5\xa3\x41\xa0\x0b\xa9\xf9\xdd\xf5\xd3\x74\xfe\x93\xe7\xd1\xa3\x23\x78\x77\x47\x4d\x6a\x73\xf0\x77\xe1\xd7\x16\x29\x7a\xba\x32\x0e\xd7\xd4\x84\x82\x3f\x87\x47\xf0\xec\xd3\x58\xb9\xb3\x76\x0e\x86\x81\x44\x9a\xc0\x78\x54\x37\xf3\x7f\x9d\xb3\x57\x12\xe0\x1d\xa0\x20\xc5\xcc\x0e\xb5\x8a\x2b\xda\x5e\x9d\xf2\xbf\xe2\x18\xf2\x7f\x3d\x3d\x68\xc3\xd7\x5c\x40\x02\x71\x83\xbd\xd4\xf8\xcb\xc5\xdb\x0f\x12\xe5\xd5\x76\x94\x45\x00\x86\x39\xe3\xb0\x61\x9d\xc2\xd4\x39\x5b\x2e\x6f\x94\xa6\x89\x57\x1a\x91\x2f\x3c\xaf\xd4\x5c\x49\x2a\xda\x7e\x71\xfb\x7d\x91\xeb\x99\x2d\x5a\x40\xf2\x2f\xa3\xcf\xd5\xe9\xc4\x7b\xb4\x75\xcf\x4f\x9e\xc1\xf5\xcc\x4e\x31\xac\x5b\x32\x31\xac\x7b\xf4\xd8\x4d\x5b\x8b\xdd\xf4\x22\xeb\xa0\xc7\x07\x07\xb3\xd2\x79\x3d\x37\xf8\x0c\x17\xba\xc3\x7c\x17\x38\x6d\xc0\x2b\x22\x58\x76\xb8\x3c\x2f\x75\xad\x91\x34\xb3\x6d\x4f\xab\xe8\xec\xca\x9d\x03\x64\x7d\x57\x67\x6f\xf8\xdd\x35\xf0\xf0\xa0\xe7\xf3\x27\x2f\x25\x5b\xeb\x4d\xb4\x1e\x0d\x3f\x0f\x2f\xce\xaa\x4d\xcd\xb3\x3e\x7c\x50\x3b\x98\x89\xd5\xa0\xb7\xa4\x6b\x19\xb1\x3b\xa3\xfa\x29\xf1\x0e\x4c\xe1\xd8\x3c\x24\xfb\xa6\xa7\xa5\xb2\xb9\xe6\x6a\x6d\xed\xaf\x6c\xbd\x77\x24\xff\xca\xe5\xda\xdf\x0a\x65\x36\x77\xe6\xaa\xfc\xc5\x41\xaf\x17\xce\x01\xf2\x54\x32\xc0\xf0\x64\xfd\x7b\xfc\x78\x96\x3b\xfa\x0a\xfd\x71\x68\x3a\xcb\xfb\x69\x58\xea\xb5\xfe\x38\xb5\x8d\x0a\x1f\xec\xad\xe1\x47\x8e\xc3\x5e\xb0\x39\x0a\x1f\x61\xc4\x2b\xe4\xd3\x9e\x4a\xdb\xa3\xbc\xde\x89\x8e\xd3\x52\xef\x54\xbd\xc7\xd7\xdb\xd6\x91\x97\xa2\x68\x6b\xcd\x8f\x06\xea\xbf\x5b\x09\xd7\xa3\x67\x40\xba\xfd\x11\xc2\xc3\xf4\x3a\xa7\x5e\x6f\xf6\x49\x41\x25\x2e\xe5\xe4\x4a\x11\x29\x5b\xde\x17\x5f\x6c\x45\xc4\x7f\xbd\xe3\xbf\xfd\x8d\xa7\x72\xa1\xee\xa4\x2f\x8c\xdb\x92\x99\x57\x9d\xaf\x7c\x01\x6c\xc3\x04\xdc\xaa\xb8\xfc\x85\xcc\x7c\xfb\x2b\x2c\xff\xe7\x44\x2f\x21\x05\x43\xc5\xe0\xbf\x01\x00\x00\xff\xff\x99\xe3\x8f\xb5\x93\x2a\x00\x00")
func deployKubernetes117DirectPmemCsiYamlBytes() ([]byte, error) {
return bindataRead(
@@ -100,12 +100,12 @@ func deployKubernetes117DirectPmemCsiYaml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "deploy/kubernetes-1.17/direct/pmem-csi.yaml", size: 10962, mode: os.FileMode(436), modTime: time.Unix(1608146530, 0)}
+ info := bindataFileInfo{name: "deploy/kubernetes-1.17/direct/pmem-csi.yaml", size: 10899, mode: os.FileMode(420), modTime: time.Unix(1608283266, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
-var _deployKubernetes117LvmPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\xdd\x6f\xe3\xb8\x11\x7f\xf7\x5f\xc1\x6e\xef\xe1\x0e\xa8\xac\x78\xdb\x03\x5a\x01\x7e\xc8\x26\xbe\xd4\xe8\xc6\x31\x92\xec\xbd\x06\x0c\x35\x96\x59\x53\x24\x4b\x8e\xbc\xf1\x15\xfd\xdf\x0b\x52\x92\xad\x2f\xcb\x1f\xcd\x07\x8a\xf3\x3e\xac\x23\x72\x38\xbf\xf9\xe0\xcc\xfc\x6c\xff\x91\xdc\x80\x04\x43\x11\x62\xf2\x9d\xe3\x92\x7c\x4a\xe9\x0a\xc8\x2a\xb3\xa8\x52\xfe\x1b\x7c\xfa\x13\x89\x15\x91\x0a\x09\xc4\x1c\xff\x30\x18\x50\xcd\x7f\x05\x63\xb9\x92\x11\x59\x8f\x06\x2b\x2e\xe3\x88\xcc\x68\x0a\x56\x53\x06\x83\x14\x90\xc6\x14\x69\x34\x20\x44\xd0\x67\x10\xd6\xbd\x23\x44\xa7\x90\x06\xcc\xf2\x21\x97\x08\x62\xc8\x54\x1a\xc6\xa0\x85\xda\xa4\x20\x31\x22\x62\x9d\x06\xda\xa8\x38\x63\xc8\x95\x1c\x10\x22\x69\x0a\xd1\x56\x6a\x10\x04\x41\xb7\xe6\x07\x30\x6b\xce\xe0\x92\x31\x95\x49\x7c\x23\xf5\x01\x53\x12\x8d\x12\x02\x4c\xb1\xe6\x8d\xed\xc1\x67\x9e\x29\x1b\xd2\x0c\x97\xca\xf0\xdf\xa8\x3b\x74\xb8\xfa\xab\x1d\x72\x15\x6e\x91\xdf\x2b\xf1\x56\xee\x0a\xe0\x05\xc1\x48\x2a\xdc\xa6\x35\x77\x90\xc0\x04\x6c\x91\xec\x41\x6f\x32\x01\x36\x1a\x04\x84\x6a\x7e\x63\x54\xa6\x3d\x8a\x80\x7c\xfa\x34\x20\xc4\x80\x55\x99\x61\x50\x3c\x03\x19\x6b\xc5\x25\xda\x01\x21\x6b\x30\xcf\xc5\xe3\x04\xd0\xff\xff\x9d\x22\x5b\xfa\x77\x82\xdb\xfc\x51\x0c\x02\x10\xfc\xdb\x4c\xc7\xb4\x78\xcb\x0c\xb8\xb7\x2d\x9d\x4c\x29\x13\x73\x59\xf5\x59\x1b\x84\x00\x6a\xe1\xad\x10\x58\x54\x86\x26\xb0\x57\x39\xb3\xbc\xd8\xc2\xa8\xa6\x8c\x23\xdf\x07\x65\x0b\x60\x87\xa9\x50\xda\x80\xa2\xb7\xeb\x05\xd4\xa3\x42\xa1\x55\xdc\xa1\xb8\x25\x4a\xb5\xb6\x6d\x61\x03\x5a\x70\x46\x2d\x74\x45\xf2\x8c\x74\xbe\x12\x99\x45\x30\xef\x9e\xd5\x26\x93\x12\xcc\x49\x29\xac\x9d\x59\x16\x41\xe2\x5a\x89\x2c\x3d\x2f\x7a\x27\x05\xaa\xa1\x90\x09\xca\xd3\xe3\xb5\x16\x89\x72\x72\xa2\x96\x59\x2a\xa8\xdd\x7b\x5b\x1a\xea\x8e\x2b\x01\x6b\x68\xdd\xff\x13\x53\xbd\x6d\x8b\xa4\xda\x2e\x15\x0e\x0f\x19\x55\x84\xac\xd8\xde\x67\xd5\x6b\xe9\x70\xc5\xbf\x6d\xf0\x01\x55\x87\x6b\x88\x54\xf1\x6b\x06\xe5\x84\xe3\xce\xeb\x55\x5f\xb8\x8c\xb9\x4c\xde\xac\xc5\x5a\x5e\xbf\xd7\x4a\x40\x5f\xcb\x52\x02\xee\x61\xe1\x54\x97\xce\xe9\xb1\x64\x40\x48\xa5\xe9\x1e\xdf\x2e\x6d\xf6\xfc\x4f\x60\xe8\x0b\x4b\xe7\xbc\xf1\x2e\x93\x42\xa5\xb4\x7e\x40\x10\xce\x75\x75\xb5\x21\x9c\x54\xca\xdf\xc1\xe9\xcd\xf1\xf1\xc3\xe6\x46\xab\x81\x39\x4d\x5a\x19\xdc\x76\x75\x83\x11\x19\x5d\x5c\x5c\x5c\x78\x08\x48\x4d\x02\x38\xaf\x3d\xb5\x20\x80\xa1\x32\x39\x48\xaa\xf5\x3e\x9d\xa7\x5a\xf0\x51\x8e\x4a\x01\x0d\x67\xf6\x0c\x2f\x8d\x3a\xbd\x34\x7a\x53\x2f\x11\x82\x1b\x0d\x11\x99\xa9\x18\x9c\xca\x96\xdb\xdc\xc8\xb5\xbb\xbf\x0f\x48\x11\x16\x99\x78\x80\x8f\x23\x28\xa5\x0b\xcb\xb1\x2f\x22\xa3\x96\x87\x52\xd7\x1e\xbe\x56\x40\x1d\x70\xda\xe9\xa8\x6d\x9e\x45\xb3\x1e\xf0\x08\xa9\x16\x14\xa1\x80\x54\x71\x97\xc7\x23\xa5\x42\x5f\x6e\xb6\x10\x3b\x51\x58\x66\xa8\x8b\x90\x3b\x9a\x72\x09\xc6\x16\xbb\x45\xcd\xbc\x83\x06\x9e\x6e\xe2\x5e\xa9\xef\xf0\xbc\x54\x6a\x15\x11\x9e\x48\x65\xc0\x6f\x2d\xa3\xe2\x91\x2c\x16\x5c\x72\xdc\xec\xb0\xb9\x96\x7e\xd9\x7a\xea\x62\xf8\xaf\x8c\x1b\x88\xaf\x33\xc3\x65\xf2\xc0\x96\x10\x67\x82\xcb\x64\xea\x0f\x2e\x1e\x4f\x5e\x80\x65\x0e\x53\x55\x32\x3f\xf3\xa1\x88\xfa\x23\x98\xd4\xd6\x97\x83\x3c\x09\x26\x2f\xda\x80\xb5\x75\x37\x97\x3b\x56\xb0\x89\xba\x0c\xec\x70\x5e\xf9\x52\x1a\x0c\x75\x79\x46\x66\x0a\xa7\xb2\xb5\xbe\xa6\x22\x83\x96\x2a\x3f\xea\x48\xf5\xa9\xeb\xf1\x82\x0a\x0b\xe5\xca\x2e\xca\xe5\x11\x8e\x47\xa6\x29\x95\xf1\xee\xcc\x80\x84\x99\x35\xa1\x50\x8c\x8a\xf0\x99\xcb\x70\x1b\xf5\xd8\xf0\x75\x05\x74\x40\x82\xf5\xf8\xcf\xd5\x3f\x53\x15\xc3\xb8\xc3\xbc\x80\x04\x25\x1d\x1e\x67\x92\xbf\x44\x61\x18\x32\xcb\xc3\x7a\x2a\x0d\xad\x62\xab\xaa\x8c\x81\x84\x5b\x34\x9b\x49\x29\x8b\x4c\x47\x61\x78\x31\xf4\xff\xa2\x5d\xe9\x2f\xf6\xbb\x98\xf1\x78\xfc\xc3\x8f\xff\xf8\xf6\x65\xf2\x34\xbb\xbb\x9e\x3c\xcd\x2e\x6f\x27\x3f\x55\xf7\x30\xfa\x0b\x17\x30\x0e\x19\x18\xb4\x21\xa3\x43\x66\xb0\xb6\x0e\x06\xab\x3b\x50\xd8\xe6\x96\x15\x6c\x9a\x3b\x56\xb0\xa9\xee\xc8\x1d\xe5\xca\xcb\xf8\x87\x1f\xe7\xb7\x93\xdb\xa7\xab\x87\xe9\xd3\xf5\xfd\xf4\xd7\xc9\x7d\x1b\x52\x51\xd3\xbf\x7a\xe6\x33\x8e\x76\xb5\xda\xbd\x40\xae\xab\xa1\xc9\xcb\x59\xdd\xbe\x41\x23\x3f\x7e\x31\x2a\xad\xa7\xc8\x82\x83\x88\x8b\xd1\xa4\xfa\x6a\x74\xb0\xfa\xa2\x17\x9a\x53\x5c\x46\xfe\xfa\x0d\x9d\x77\x5d\x41\x6a\xa1\x79\x9c\xdc\xdf\x4e\x67\x97\x8f\xd3\xbb\xd9\xd3\xd7\xbb\x9b\xa7\xf9\xe5\xe3\xdf\x9b\x98\x22\x12\x62\xaa\x43\x04\x93\x16\x9f\x59\x04\x42\x25\xad\xa3\xba\x7c\xd5\x3e\xaa\x7d\xa7\x5a\x07\xdd\xdc\x5d\x4f\xbe\x7c\xbb\x69\xcb\xbe\xfc\x7c\xf1\xb7\xbc\xb0\x5c\xcd\xc6\x3b\x37\xf3\x94\x26\x10\x11\x7f\x60\x33\xe1\x23\x46\x25\x35\x9b\xfa\xde\x79\x26\xc4\x5c\x09\xce\x36\x11\x99\x2e\x66\x0a\xe7\x06\x2c\xc8\x5d\xa2\x54\x1a\x4f\xe3\xde\x6c\xbb\x73\x09\x79\x7b\x2d\xe7\x8d\x66\x5d\x3d\x69\xd7\xf9\xf3\x97\x05\x96\x19\x8e\x9b\x2b\xc7\xba\x5e\xb0\x5e\xf7\x68\x7c\x27\xc5\xe6\x5e\x29\x9f\xcb\x76\x63\x11\xd2\x88\xa0\xc9\x76\xd1\xab\x84\xe2\x16\xac\x75\x26\xf9\x58\xf7\xc6\x29\x27\x7c\xb7\x6e\xba\xac\x59\x90\xba\x27\x85\xbc\xbf\x15\x2d\xf8\xe5\x5d\xf6\x17\x6c\x9f\xa4\xe5\x2d\x39\x2d\xb2\x84\xcb\xc0\x95\x06\xc0\x20\xe6\x66\x8f\x2c\xa6\xba\x25\x8b\xa9\xae\x48\x04\x84\x9a\xa4\x86\xba\x59\xbe\x7c\xcc\x69\x1c\xbb\x92\x3e\x3e\xa6\x40\x05\x0b\xa0\x98\x19\x08\x12\x8a\x60\xc7\x8f\x4a\x2b\xa1\x92\xcd\xb8\xe6\x68\xb7\xcf\xba\xd8\x61\x80\x7b\x37\x20\x4f\x41\x65\x38\xfe\x39\xad\x3d\x8e\x61\x41\x33\x81\xc1\xc2\xba\x41\x6a\x0c\x2f\xf8\x97\xda\x7a\x91\x14\x5b\xd0\xbe\x78\x8c\x9a\x59\xed\x08\x47\xc2\x8c\xe3\x4a\x96\x27\x41\xc1\xb9\xc3\x06\x89\x89\xd6\x9f\x87\x17\xc3\xcf\x67\xa5\x79\x17\x4d\x39\x29\xdf\x47\x6f\x9e\xef\x47\xa5\xee\x09\x09\xb8\x17\x8f\xc9\xe4\xa5\x9d\x29\xe9\xd0\x34\x30\xf8\xa5\x6f\x16\x4c\xce\x50\xb6\x27\x55\x59\x5b\xdf\xcc\xe7\x5e\xa8\x84\x9b\x11\xaa\x23\x47\x40\x60\xb1\x00\x86\x6e\x6a\x28\xa6\x9c\x9d\x4e\x3f\x85\xb8\xda\xed\x49\xea\x70\x95\x3d\x83\x91\x80\xe0\xa9\x73\x4a\x1d\xf5\x1c\x54\x3d\x54\x3d\x35\xd5\xb8\xb9\xe6\x26\x22\x32\x13\xa2\x59\xd9\xf6\xf8\x25\xe8\xbd\xf0\x16\x98\x81\x5a\xf0\xf2\x27\x0d\xab\xb7\xc2\xf9\xaa\xed\x80\xf4\xef\xff\x34\x00\x95\xb7\xbd\x9f\x63\x5c\x53\x48\x95\x7c\x43\x86\xe1\x5c\x7d\x80\x5b\x9c\xc8\x26\x8a\x13\xcf\xc1\xf6\xa1\x24\xa1\x82\xfb\x1d\xe9\xc1\xab\xcf\xb8\x31\xb8\xdb\x79\x4b\x25\x4d\xc0\x8c\xc5\x3a\x3d\x34\x00\xd7\xec\xee\x19\x7d\x5b\xed\xe4\xa8\xf9\x75\x5b\x0f\x1a\x53\x71\x21\x35\xbf\xbb\x7e\x9a\xce\x7f\xf2\xc3\xf1\xe8\x88\x61\xba\xa3\xd0\xb4\x07\xeb\x77\x19\x9a\xad\x63\xff\xae\x10\x8f\xc3\x35\x35\xa1\xe0\xcf\xe1\x11\xc3\xf3\x69\xa3\xb6\xb3\x76\x0e\x86\x81\x44\x9a\xc0\x78\x54\x37\xf3\xff\x7d\x10\xaf\x24\xc0\x3b\x40\x41\x8a\x99\x1d\x6a\x15\x57\xb4\xbd\xfa\x1c\xff\x8a\xdc\xe2\x77\x4d\x09\xb4\xe1\x6b\x2e\x20\x81\xb8\x31\x92\xd4\x86\x92\x8b\xb7\x67\x07\xe5\xd5\x76\x73\x88\x00\x0c\xf3\x31\xc2\x86\xf5\xb9\xa4\x3e\x88\xe5\xf2\x46\x69\x9a\x78\xa5\x11\xf9\xc2\x63\x6e\xc0\xf7\x0a\x2a\xda\x7e\x71\xfb\x7d\x91\xeb\x21\x0c\x2d\x20\xf9\x97\xc4\xe7\xea\x74\xe2\x3d\xda\xba\x49\x91\x1f\xcb\x7a\x08\x51\x0c\xeb\x96\x4c\x0c\xeb\x1e\x3d\x76\xd3\xd6\x62\x37\xbd\xc8\x3a\x66\xde\x83\x6c\xab\x74\x5e\xcf\x0d\x3e\xc3\x85\xee\x30\xdf\x05\x4e\x63\x6d\x45\x04\xcb\x0e\x97\xe7\xa5\xae\x35\x92\x66\xb6\xed\x69\x15\x9d\x5d\xb9\x93\x15\xd6\x77\x75\xf6\x86\xff\xb9\x06\x1e\x66\x6f\x3e\x7f\xf2\x52\xb2\xb5\xde\x44\xeb\xd1\xf0\xf3\xf0\xe2\xac\xda\xd4\x3c\xeb\xc3\xd9\xd7\xc1\x4c\xac\x06\xbd\x25\x5d\xcb\x88\xdd\x19\xd5\xcf\x76\x77\x60\x0a\xc7\xe6\x21\xd9\x47\x89\x96\xca\xe6\x9a\xab\xb5\xb5\xbf\xb2\xf5\xde\x91\xfc\xfb\x91\x6b\x7f\x2b\x94\xd9\xdc\x99\xab\xf2\xc7\x00\xbd\x5e\x38\x07\xc8\x53\x39\x01\x86\x27\xeb\xdf\xe3\xc7\xb3\xdc\xd1\x57\xe8\x8f\x43\xd3\x59\xde\x4f\xc3\x52\xaf\xf5\xc7\xa9\x6d\x54\xf8\x60\x6f\x0d\x3f\x92\xe3\x7a\xc1\x26\xbf\x3d\xc2\x88\x57\xc8\xa7\x3d\x95\xb6\x47\x79\xbd\x13\x1d\xa7\xa5\xde\xa9\x7a\x8f\xaf\xb7\xad\x23\x2f\x45\xd1\xd6\x9a\x7c\xbf\xfe\x93\x92\x70\x3d\x7a\x06\xa4\xdb\x9f\x08\x3c\x4c\xaf\xf3\xd1\xeb\x6d\xe8\x7f\x25\x28\x25\x29\xa5\x88\x94\x2d\xef\x8b\xef\xa2\x22\xe2\xbf\x91\xf1\x5f\xd2\xc6\x53\xb9\x50\x77\xd2\x57\xc5\x6d\xbd\xcc\x4b\xce\x57\xbe\x00\xb6\x61\x02\x6e\x55\x5c\xfe\x72\x65\xbe\xfd\x75\x94\xff\x73\xa2\x97\x90\x82\xa1\x62\xf0\xdf\x00\x00\x00\xff\xff\xfa\x42\x3c\xbb\x9c\x2a\x00\x00")
+var _deployKubernetes117LvmPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\x5b\x6f\xe3\xb8\x15\x7e\xf7\xaf\x60\xa7\xfb\xb0\x0b\x54\x56\x3c\xed\x02\xad\x00\x3f\x64\x12\x6f\x6a\x74\x92\x18\x49\x66\x5f\x03\x86\x3a\x96\x59\x53\x24\x4b\x1e\x69\xe2\x2d\xfa\xdf\x0b\x52\x92\xad\x9b\x15\xdb\x9b\x0b\x8a\x7a\x1e\xc6\xa1\x78\x78\x3e\x9e\xeb\x77\x6c\xff\x91\x5c\x81\x04\x43\x11\x62\xf2\x9d\xe3\x8a\x7c\x4a\xe9\x1a\xc8\x3a\xb3\xa8\x52\xfe\x1b\x7c\xfa\x13\x89\x15\x91\x0a\x09\xc4\x1c\xff\x30\x1a\x51\xcd\x7f\x05\x63\xb9\x92\x11\xc9\x27\xa3\x35\x97\x71\x44\xee\xc1\xe4\x9c\xc1\x39\x63\x2a\x93\x38\x4a\x01\x69\x4c\x91\x46\x23\x42\x04\x7d\x02\x61\xdd\x3b\x42\x74\x0a\x69\xc0\x2c\x1f\x73\x89\x20\xc6\x4c\xa5\x61\x0c\x5a\xa8\x4d\x0a\x12\x23\x22\xf2\x34\xd0\x46\xc5\x19\x43\xae\xe4\x88\x10\x49\x53\x88\xb6\x52\x01\x53\x12\x8d\x12\x02\x4c\xf9\xcc\x6a\xca\x6a\x1b\x46\x41\x10\x34\xf0\x99\x27\xca\xc6\x34\xc3\x95\x32\xfc\x37\xea\x0e\x1d\xaf\xff\x6a\xc7\x5c\x85\x5b\xe4\x77\x4a\xc0\x5b\xe1\x85\x67\x04\x23\xa9\x70\x9b\x72\xee\x20\x81\x09\xd8\x32\xd9\x83\xde\x64\x02\x6c\x34\x0a\x08\xd5\xfc\xca\xa8\x4c\x7b\x14\x01\xf9\xf4\x69\x44\x88\x01\xab\x32\xc3\xa0\x5c\x03\x19\x6b\xc5\x25\xda\x11\x21\x39\x98\xa7\x72\x39\x01\xf4\xff\x7f\xa7\xc8\x56\xfe\x9d\xe0\xb6\x58\x8a\x41\x00\x82\x7f\x9b\xe9\x98\x96\x6f\x99\x01\xf7\xb6\xa3\x93\x29\x65\x62\x2e\xeb\x36\xeb\x82\x10\x40\x2d\xbc\x15\x02\x8b\xca\xd0\x04\xf6\x2a\x67\x96\x97\x5b\x18\xd5\x94\x71\xe4\xfb\xa0\x6c\x01\xec\x30\x95\x4a\x5b\x50\xf4\xf6\x79\x09\xf5\x20\x57\x68\x15\xf7\x28\xee\x88\x52\xad\x6d\x57\xd8\x80\x16\x9c\x51\x0b\x7d\x9e\x3c\x21\x9c\x2f\x44\x66\x11\xcc\xbb\x47\xb5\xc9\xa4\x04\x73\x54\x08\x6b\x77\x2d\x8b\x20\x31\x57\x22\x4b\x4f\xf3\xde\x51\x8e\x6a\x29\x64\x82\xf2\xf4\x70\xad\x65\xa0\x1c\x1d\xa8\x55\x94\x0a\x6a\xf7\x66\x4b\x4b\xdd\x61\x25\x20\x87\x4e\xfe\x1f\x19\xea\xdd\xbb\x48\xaa\xed\x4a\xe1\xf8\xa5\x4b\x95\x2e\x2b\xb7\x0f\xdd\xea\xb5\x74\xb8\xe2\xdf\xbd\xf0\x0b\xaa\x5e\xae\x21\x52\xc5\xaf\xe9\x94\x23\x8e\x3b\xad\x57\x7d\xe1\x32\xe6\x32\x79\xb3\x16\x6b\x79\x33\xaf\x95\x80\xa1\x96\xa5\x04\xdc\xc1\xd2\xa9\xae\x8c\x33\x70\x93\x11\x21\xb5\xa6\x7b\x78\xbb\xb4\xd9\xd3\x3f\x81\xa1\x2f\x2c\xbd\x7c\xe3\x5d\x98\x42\xad\xb4\x7e\x80\x13\x4e\x35\x75\xbd\x21\x1c\x55\xca\xdf\xc1\xe8\x6d\xfa\xf8\x61\xbc\xd1\x6a\x60\x4e\x93\x56\x06\xb7\x5d\xdd\x60\x44\x26\x67\x67\x67\x67\x1e\x02\x52\x93\x00\x2e\x1a\xab\x16\x04\x30\x54\xa6\x00\x49\xb5\xde\xa7\xf3\xd8\x1b\x7c\x94\xa1\x52\x40\xc3\x99\x3d\xc1\x4a\x93\x5e\x2b\x4d\xde\xd4\x4a\x84\xe0\x46\x43\x44\x6e\x54\x0c\x4e\x65\xc7\x6c\x8e\x72\xed\xf2\xf7\x1e\x29\xc2\x32\x13\xf7\xf0\x71\x03\x4a\x65\xc2\x8a\xf6\x45\x64\xd2\xb1\x50\xea\xda\xc3\xd7\x1a\xa8\x17\x8c\x76\x3c\x6a\x5b\x44\xd1\xcd\x00\x78\x84\x54\x0b\x8a\x50\x42\xaa\x99\xcb\xe3\x91\x52\xa1\x2f\x37\x5b\x88\xbd\x28\x2c\x33\xd4\x79\xc8\x1d\x4d\xb9\x04\x63\xcb\xdd\xa2\x71\xbd\x17\x2f\x78\xfc\x15\xf7\x4a\x7d\x87\xa7\x95\x52\xeb\x88\xf0\x44\x2a\x03\x7e\x6b\xe5\x15\x8f\x64\xb9\xe4\x92\xe3\x66\x87\xcd\xb5\xf4\xf3\xce\xaa\xf3\xe1\xbf\x32\x6e\x20\xbe\xcc\x0c\x97\xc9\x3d\x5b\x41\x9c\x09\x2e\x93\xb9\x3f\xb8\x5c\x9e\x3d\x03\xcb\x1c\xa6\xba\x64\x71\xe6\x7d\xe9\xf5\x07\x30\xa9\x6d\x3e\x0e\x8a\x20\x98\x3d\x6b\x03\xd6\x36\xcd\x5c\xed\x58\xc3\x26\xea\xbb\x60\x8f\xf1\xaa\x97\xd2\x6e\xd0\x57\xc6\xa5\x0c\xce\x65\xe7\x79\x4e\x45\x06\x1d\x55\x9e\xea\x48\xf5\xa9\x6f\x79\x49\x85\x85\xea\xc9\xce\xcb\xd5\x11\x6e\x8e\x4c\x53\x2a\xe3\xdd\x99\x01\x09\x33\x6b\x42\xa1\x18\x15\xe1\x13\x97\xe1\xd6\xeb\xb1\xe1\x79\x0d\x74\x40\x82\x7c\xfa\xe7\xfa\x9f\x42\x25\x09\x97\x49\xb0\x54\x26\xa5\x38\x45\x78\xc6\xfa\xe3\x54\xc5\x30\xed\xb9\x7d\x40\x82\x6a\x5a\x9e\x66\x92\x3f\x47\x61\x18\x32\xcb\xc3\x66\xa4\x8d\xad\x62\xeb\xba\x8c\x81\x84\x5b\x34\x9b\x59\x25\x8b\x4c\x47\x61\x78\x36\xf6\xff\xa2\x5d\x67\x28\xf7\x3b\x97\xf2\x78\xfa\xc3\x8f\xff\xf8\xf6\x65\xf6\x78\x73\x7b\x39\x7b\xbc\x39\xbf\x9e\xfd\x54\xdf\xc3\xe8\x2f\x5c\xc0\x34\x64\x60\xd0\x86\x8c\x8e\x99\x69\x5c\xc1\xad\xd7\x77\xa0\xb0\xed\x2d\x6b\xd8\xb4\x77\xac\x61\x53\xdf\x51\xd8\xd1\x55\x9f\xe9\x0f\x3f\x2e\xae\x67\xd7\x8f\x17\xf7\xf3\xc7\xcb\xbb\xf9\xaf\xb3\xbb\x2e\xa4\xb2\xe4\x7f\xf5\x83\xd1\x34\xda\x95\x72\xf7\x02\x99\xd7\x3d\x57\x54\xbb\xe6\xfd\x46\xad\xf0\xf9\xc5\xa8\xb4\x19\x41\x4b\x0e\x22\x2e\x99\x4b\xfd\xd5\x6a\x70\xcd\x87\x5e\x68\x41\x71\x15\xf9\xec\x1c\x3b\xeb\xba\x7a\xd5\x41\xf3\x30\xbb\xbb\x9e\xdf\x9c\x3f\xcc\x6f\x6f\x1e\xbf\xde\x5e\x3d\x2e\xce\x1f\xfe\xde\xc6\x14\x91\x10\x53\x1d\x22\x98\xb4\xfc\x48\xc3\xc5\x52\xe7\xa8\x3e\x5b\x75\x8f\xea\xa6\x5c\xe7\xa0\xab\xdb\xcb\xd9\x97\x6f\x57\x5d\xd9\xe7\x9f\xcf\xfe\x56\xd4\x9d\x8b\x9b\xe9\xce\xcc\x3c\xa5\x09\x44\xc4\x1f\xd8\xce\x87\x88\x51\x49\xcd\xa6\xb9\x77\x91\x09\xb1\x50\x82\xb3\x4d\x44\xe6\xcb\x1b\x85\x0b\x03\x16\xe4\x2e\x50\x6a\x7d\xa9\x95\x56\xdb\xe6\x5d\x41\xde\x66\xed\xa2\xd5\xcb\xeb\x27\xed\x88\x41\xf1\xb2\xc0\x32\xc3\x71\x73\xe1\x86\xb2\x67\x6c\x96\x45\x1a\xdf\x4a\xb1\xb9\x53\xca\xc7\xb2\xdd\x58\x84\x34\x22\x68\xb2\x9d\xf7\x6a\xae\xb8\x06\x6b\xdd\x95\xbc\xaf\x07\xfd\x54\xcc\x83\xd7\x8e\x7c\x36\x6e\x90\xba\x95\x52\xde\x67\x45\x07\x7e\x95\xcb\x3e\xc1\xf6\x49\x5a\xde\x91\xd3\x22\x4b\xb8\x0c\x5c\x69\x00\x0c\x62\x6e\xf6\xc8\x62\xaa\x3b\xb2\x98\xea\x9a\x44\x40\xa8\x49\x1a\xa8\xdb\xd5\xcd\xfb\x9c\xc6\xb1\xab\xf8\xd3\x43\x0a\x54\xb0\x04\x8a\x99\x81\x20\xa1\x08\x76\xfa\xa0\xb4\x12\x2a\xd9\x4c\x1b\x86\x76\xfb\xac\xf3\x1d\x06\xb8\x77\x03\xf2\x14\x54\x86\xd3\x9f\xd3\xc6\x72\x0c\x4b\x9a\x09\x0c\x96\xd6\xf1\xac\x29\x3c\xe3\x5f\x1a\xcf\xcb\xa0\xd8\x82\xf6\xc5\x63\xd2\x8e\x6a\x37\x8f\x24\xcc\xb8\x51\xca\xf2\x24\x28\x47\xf2\xb0\x35\xe3\x44\xf9\xe7\xf1\xd9\xf8\xf3\x49\x61\xde\x37\xc5\x1c\x15\xef\x93\x37\x8f\xf7\x83\x42\xf7\x88\x00\xdc\x8b\xc7\x64\xf2\xdc\xde\x28\xe9\xd0\xb4\x30\xf8\x47\xdf\x2c\x98\x62\x80\xd9\x9e\x54\x1f\xea\x86\x28\xa1\x7b\xa1\x12\x8e\x42\xd4\x19\x49\x40\x60\xb9\x04\x86\x8e\x54\x94\x24\x68\xa7\xd3\x93\x14\x57\xbb\xfd\x0c\x3b\x5e\x67\x4f\x60\x24\x20\xf8\xc9\x3a\xa5\x6e\x32\x1d\xd5\x2d\x54\x3f\x35\xd5\xb8\xb9\xe4\x26\x22\x32\x13\xa2\x5d\xd9\xf6\xd8\x25\x18\x4c\x78\x0b\xcc\x40\xc3\x79\xc5\x4a\xeb\xd6\x5b\xe1\xe2\xa9\xed\x81\xf4\xef\xff\xb4\x00\x55\xd9\x3e\x3c\x82\x5c\x52\x48\x95\x7c\xc3\x01\xc4\x99\xfa\x85\xd1\xe3\xc8\x61\xa3\x3c\xf1\x14\x6c\x1f\x3a\x43\xd4\x70\xbf\xe3\xf4\xf0\xea\x14\x38\x06\x97\x9d\xd7\x54\xd2\x04\xcc\x54\xe4\xe9\xef\xe4\xc7\x0d\xb3\x0c\x30\xe3\x4e\xb7\x39\x88\xde\x6e\xcb\x45\x8b\x34\x97\x52\x8b\xdb\xcb\xc7\xf9\xe2\x27\xcf\x9d\x27\x07\x70\xed\x9e\x3a\xd4\xe5\xdd\xef\xc2\xa9\x2d\x52\xf4\x14\x65\x1a\xe6\xd4\x84\x82\x3f\x85\x07\x70\xeb\xe3\x98\xb8\xbb\xed\x02\x0c\x03\x89\x34\x81\xe9\xa4\x79\xcd\xff\x75\x9e\x5e\x0b\x80\x77\x80\x82\x14\x33\x3b\xd6\x2a\xae\x69\x7b\x75\x9a\xff\x8a\xa3\xc7\xff\xf5\xc4\xa0\x0d\xcf\xb9\x80\x04\xe2\x16\x63\x69\x70\x96\xb3\xb7\x1f\x1e\xaa\xd4\x76\x34\x45\x00\x86\x05\xcb\xb0\x61\x93\xb6\x34\x79\x5a\x21\x6f\x94\xa6\x89\x57\x1a\x91\x2f\x3c\xe6\x06\x7c\x2b\xa1\xa2\x6b\x17\xb7\xdf\x17\xb9\x81\x79\xa2\x03\xa4\xf8\x8a\xf9\x54\x9d\x4e\x7c\x40\x5b\xff\xcc\xe4\x59\xdb\xc0\xbc\x14\x43\xde\x91\x89\x21\x1f\xd0\x63\x37\x5d\x2d\x76\x33\x88\xac\x87\x12\xbf\x38\x8c\x55\xc6\x1b\xc8\xe0\x13\x4c\xe8\x0e\xf3\x5d\xe0\xb8\xa1\xae\xf4\x60\xd5\xe1\x8a\xb8\xd4\x8d\x46\xd2\x8e\xb6\x3d\xad\xa2\xb7\x2b\xf7\x0e\x8d\xcd\x5d\xbd\xbd\xe1\x77\xd7\xc0\x97\x87\x3b\x1f\x3f\x45\x29\xd9\xde\xde\x44\xf9\x64\xfc\x79\x7c\x76\x52\x6d\x6a\x9f\xf5\xe1\xc3\xd9\x8b\x91\x58\x77\x7a\x47\xba\x11\x11\xbb\x33\xea\x9f\x0c\xef\xc0\x94\x86\x2d\x5c\xb2\x6f\x62\x5a\x29\x5b\x68\xae\xd7\xd6\xe1\xca\x36\x98\x23\xc5\xb7\x2b\x97\x3e\x2b\x94\xd9\xdc\x9a\x8b\xea\xa7\x04\x83\x56\x38\x05\xc8\x63\xc5\x00\xc3\xa3\xf5\xef\xb1\xe3\x49\xe6\x18\x2a\xf4\x87\xa1\xe9\x2d\xef\xc7\x61\x69\xd6\xfa\xc3\xd4\xb6\x2a\x7c\xb0\xb7\x86\x1f\x38\x02\x7b\xc1\xf6\xf8\x7b\xc0\x25\x5e\x21\x9e\xf6\x54\xda\x01\xe5\xcd\x4e\x74\x98\x96\x66\xa7\x1a\x3c\xbe\xd9\xb6\x0e\x4c\x8a\xb2\xad\xb5\x3f\x0e\x68\xfe\x20\x25\xcc\x27\x4f\x80\x74\xfb\x03\x83\xfb\xf9\x65\x41\xbd\xde\xe6\xd3\x81\x9a\x53\xaa\x99\x95\x22\x52\xb6\xba\x2b\xbf\xc9\x8a\x88\xff\x3e\xc7\x7f\xc5\x1b\xcf\xe5\x52\xdd\x4a\x5f\x15\xb7\xf5\xb2\x28\x39\x5f\xf9\x12\xd8\x86\x09\xb8\x56\x71\xf5\xbb\x97\xc5\xf6\xb7\x55\xfe\xcf\x99\x5e\x41\x0a\x86\x8a\xd1\x7f\x03\x00\x00\xff\xff\x3a\x78\x18\xc6\x60\x2a\x00\x00")
func deployKubernetes117LvmPmemCsiYamlBytes() ([]byte, error) {
return bindataRead(
@@ -120,12 +120,12 @@ func deployKubernetes117LvmPmemCsiYaml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "deploy/kubernetes-1.17/lvm/pmem-csi.yaml", size: 10908, mode: os.FileMode(436), modTime: time.Unix(1608146533, 0)}
+ info := bindataFileInfo{name: "deploy/kubernetes-1.17/lvm/pmem-csi.yaml", size: 10848, mode: os.FileMode(420), modTime: time.Unix(1608283267, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
-var _deployKubernetes118DirectPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\xdd\x6f\xe3\xb8\x11\x7f\xf7\x5f\xc1\x6e\xef\xe1\x0e\xa8\xac\x78\xdb\x03\x5a\x01\x7e\xc8\x26\xbe\xd4\xe8\xc6\x31\x92\xec\xbd\x06\x0c\x35\x96\x59\x53\x24\x4b\x8e\xbc\xf1\x15\xfd\xdf\x0b\x52\x92\xad\x2f\xcb\x1f\xcd\x07\x8a\xf3\x3e\xac\x23\x72\x38\xbf\xf9\xe0\xcc\x6f\x6c\xff\x91\xdc\x80\x04\x43\x11\x62\xf2\x9d\xe3\x92\x7c\x4a\xe9\x0a\xc8\x2a\xb3\xa8\x52\xfe\x1b\x7c\xfa\x13\x89\x15\x91\x0a\x09\xc4\x1c\xff\x30\x18\x50\xcd\x7f\x05\x63\xb9\x92\x11\x59\x8f\x06\x2b\x2e\xe3\x88\xcc\x68\x0a\x56\x53\x06\x83\x14\x90\xc6\x14\x69\x34\x20\x44\xd0\x67\x10\xd6\xbd\x23\x44\xa7\x90\x06\xcc\xf2\x21\x97\x08\x62\xc8\x54\x1a\xc6\xa0\x85\xda\xa4\x20\x31\x22\x31\x37\xc0\x30\xd0\x46\xc5\x19\x43\xae\xe4\x80\x10\x49\x53\x88\xb6\x82\x83\x20\x08\xba\x95\x3f\x80\x59\x73\x06\x97\x8c\xa9\x4c\xe2\xdb\x21\x08\x98\x92\x68\x94\x10\x60\x8a\x35\x6f\x72\x0f\x44\xf3\x4c\xd9\x90\x66\xb8\x54\x86\xff\x46\xdd\xa1\xc3\xd5\x5f\xed\x90\xab\x70\x0b\xfe\x5e\x89\x37\x74\x5a\x00\x2f\x08\x46\x52\xe1\x36\xad\xb9\x43\x05\x26\x60\x8b\x64\x8f\x01\x26\x13\x60\xa3\x41\x40\xa8\xe6\x37\x46\x65\xda\x03\x09\xc8\xa7\x4f\x03\x42\x0c\x58\x95\x19\x06\xc5\x33\x90\xb1\x56\x5c\xa2\x1d\x10\xb2\x06\xf3\x5c\x3c\x4e\x00\xfd\xff\xdf\x29\xb2\xa5\x7f\x27\xb8\xcd\x1f\xc5\x20\x00\xc1\xbf\xcd\x74\x4c\x8b\xb7\xcc\x80\x7b\xdb\xd2\xc9\x94\x32\x31\x97\x55\xb7\xb5\x41\x08\xa0\x16\xde\x0a\x81\x45\x65\x68\x02\x7b\x95\x33\xcb\x8b\x2d\x8c\x6a\xca\x38\xf2\x7d\x50\xb6\x00\x76\x98\x0a\xa5\x0d\x28\x7a\xbb\x5e\x40\x3d\x2a\x14\x5a\xc5\x1d\x8a\x5b\xa2\x54\x6b\xdb\x16\x36\xa0\x05\x67\xd4\x42\x57\x24\xcf\xc8\xe8\x2b\x91\x59\x04\xf3\x11\x89\x6d\x32\x29\xc1\x9c\x94\xc5\xda\x59\x66\x11\x24\xae\x95\xc8\xd2\xf3\x02\x78\x52\xac\x1a\x0a\x99\xa0\x3c\x3d\x5e\x6b\x91\x2b\x27\xe7\x6a\x99\xa8\x82\xda\xbd\x17\xa6\xa1\xee\xb8\x2a\xb0\x86\x56\x09\x38\x31\xdb\xdb\xb6\x48\xaa\xed\x52\xe1\xf0\x90\x51\x45\xc8\x8a\xed\x7d\x56\xbd\x96\x0e\xd7\x02\xda\x06\x1f\x50\x75\xb8\x8c\x48\x15\xbf\x66\x50\x4e\x38\xee\xbc\x8e\xf5\x85\xcb\x98\xcb\xe4\x2d\x7b\xad\xe5\xf5\xab\xad\x04\xf4\x35\x2e\x25\xe0\x1e\x16\x4e\x7b\xe9\x9f\x1e\x63\x06\x84\x54\xba\xef\xf1\x4d\xd3\x66\xcf\xff\x04\x86\xbe\xb6\x74\x72\x8f\x77\xa1\x0c\x95\x02\xfb\x31\x71\x38\xd7\xdb\xd5\xce\x70\x52\x41\x7f\x07\xbf\x37\xd9\xe4\x47\xd2\x48\xab\x81\x39\x65\x5a\x19\xdc\x76\x78\x83\x11\x19\x5d\x5c\x5c\x5c\x78\x14\x48\x4d\x02\x38\xaf\x3d\xb5\x20\x80\xa1\x32\x39\x4e\xaa\xf5\x3e\x9d\x67\x18\xf1\x81\xee\x4a\x01\x0d\x67\xf6\x0c\x5f\x8d\x3a\x7d\x35\x7a\x6b\x5f\x11\x82\x1b\x0d\x11\x99\xa9\x18\x9c\xd6\x96\xf3\x1c\x0f\xdb\x5d\xe7\x07\xa4\x08\x8b\x4c\x3c\xc0\x87\xce\x2e\xa5\x23\x4b\x3a\x18\x91\x51\xcb\x4f\xa9\xeb\x19\x5f\x2b\xb8\x0e\xb8\xee\x2c\xe0\x36\xcf\xa8\x59\x0f\x7e\x84\x54\x0b\x8a\x50\xa0\xaa\x38\xcd\x43\x92\x52\xa1\x2f\x40\x5b\x94\x9d\x40\x2c\x33\xd4\xc5\xc9\x1d\x4d\xb9\x04\x63\x8b\xdd\xa2\x66\xe1\x41\x1b\xcf\xb2\x72\xaf\xe0\x77\x78\x5e\x2a\xb5\x8a\x08\x4f\xa4\x32\xe0\xb7\x96\xb1\xf1\x60\x16\x0b\x2e\x39\x6e\x76\xf0\x5c\xb7\xbf\x6c\x3d\x75\x91\xfc\x57\xc6\x0d\xc4\xd7\x99\xe1\x32\x79\x60\x4b\x88\x33\xc1\x65\x32\xf5\x07\x17\x8f\x27\x2f\xc0\x32\x87\xa9\x2a\x99\x9f\xf9\x50\xc4\xfe\x11\x4c\x6a\xeb\xcb\x41\x9e\x0a\x93\x17\x6d\xc0\xda\xba\xa7\xcb\x1d\x2b\xd8\x44\x5d\x06\x76\xf8\xaf\x7c\x29\x0d\x86\xba\x6c\x23\x33\x85\x53\xd9\x5a\x5f\x53\x91\x41\x4b\x95\x67\x41\x52\x7d\xea\x7a\xbc\xa0\xc2\x42\xb9\xb2\x0b\x74\x79\x84\x9b\x32\xd3\x94\xca\x78\x77\x66\x40\xc2\xcc\x9a\x50\x28\x46\x45\xf8\xcc\x65\xb8\x0d\x7c\x6c\xf8\xba\x02\x3a\x20\xc1\x7a\xfc\xe7\xea\x9f\xa9\x8a\x61\xdc\x61\x5e\x40\x82\x72\x58\x1e\x67\x92\xbf\x44\x61\x18\x32\xcb\xc3\x7a\x36\x0d\xad\x62\xab\xaa\x8c\x81\x84\x5b\x34\x9b\x49\x29\x8b\x4c\x47\x61\x78\x31\xf4\xff\xa2\x5d\x33\x28\xf6\xbb\x98\xf1\x78\xfc\xc3\x8f\xff\xf8\xf6\x65\xf2\x34\xbb\xbb\x9e\x3c\xcd\x2e\x6f\x27\x3f\x55\xf7\x30\xfa\x0b\x17\x30\x0e\x19\x18\xb4\x21\xa3\x43\x66\xb0\xb6\x0e\x06\xab\x3b\x50\xd8\xe6\x96\x15\x6c\x9a\x3b\x56\xb0\xa9\xee\xc8\x1d\xe5\x8a\xcc\xf8\x87\x1f\xe7\xb7\x93\xdb\xa7\xab\x87\xe9\xd3\xf5\xfd\xf4\xd7\xc9\x7d\x1b\x52\x51\xdf\xbf\xfa\xa1\x68\x1c\xed\xea\xb6\x7b\x81\x5c\x57\x43\x93\x17\xb5\xba\x7d\x83\x46\x7e\xfc\x62\x54\x5a\x4f\x91\x05\x07\x11\x17\x7c\xa5\xfa\x6a\x34\xb4\xfa\xa2\x17\x9a\x53\x5c\x46\xfe\xfa\x0d\x9d\x77\x5d\x4d\x6a\xa1\x79\x9c\xdc\xdf\x4e\x67\x97\x8f\xd3\xbb\xd9\xd3\xd7\xbb\x9b\xa7\xf9\xe5\xe3\xdf\x9b\x98\x22\x12\x62\xaa\x43\x04\x93\x16\x9f\x68\x04\x42\x25\xad\xa3\xba\x7c\xd5\x3e\xaa\x7d\xa7\x5a\x07\xdd\xdc\x5d\x4f\xbe\x7c\xbb\x69\xcb\xbe\xfc\x7c\xf1\xb7\xbc\xb0\x5c\xcd\xc6\x3b\x37\xf3\x94\x26\x10\x11\x7f\x60\x33\xe1\x23\x46\x25\x35\x9b\xfa\xde\x79\x26\xc4\x5c\x09\xce\x36\x11\x99\x2e\x66\x0a\xe7\x06\x2c\xc8\x5d\xa2\x54\xda\x4f\xe3\xde\x6c\x3b\x75\x09\x79\x7b\x2d\xe7\x8d\xc6\x5d\x3d\x69\xc7\x02\xf2\x97\x05\x96\x19\x8e\x9b\x2b\x37\x90\xbd\x60\xbd\xee\xd1\xf8\x4e\x8a\xcd\xbd\x52\x3e\x97\xed\xc6\x22\xa4\x11\x41\x93\xed\xa2\x57\x09\xc5\x2d\x58\xeb\x4c\xf2\xb1\xee\x8d\x53\x3e\x0b\xde\x3a\xca\x59\xb3\x20\x75\x4f\x0a\x79\x7f\x2b\x5a\xf0\xcb\xbb\xec\x2f\xd8\x3e\x49\xcb\x5b\x72\x5a\x64\x09\x97\x81\x2b\x0d\x80\x41\xcc\xcd\x1e\x59\x4c\x75\x4b\x16\x53\x5d\x91\x08\x08\x35\x49\x0d\x75\xb3\x7c\xf9\x98\xd3\x38\x76\x25\x7d\x7c\x4c\x81\x0a\x16\x40\x31\x33\x10\x24\x14\xc1\x8e\x1f\x95\x56\x42\x25\x9b\x71\xcd\xd1\x6e\x9f\x75\xb1\xc3\x00\xf7\x6e\x40\x9e\x82\xca\x70\xfc\x73\x5a\x7b\x1c\xc3\x82\x66\x02\x83\x85\x75\x8c\x6a\x0c\x2f\xf8\x97\xda\x7a\x91\x14\x5b\xd0\xbe\x78\x8c\x9a\x59\xed\xa6\x90\x84\x19\x37\x43\x59\x9e\x04\xc5\x38\x1e\x36\x26\x9b\x68\xfd\x79\x78\x31\xfc\x7c\x56\x9a\x77\xcd\x2e\x27\xe5\xfb\xe8\xcd\xf3\xfd\xa8\xd4\x3d\x21\x01\xf7\xe2\x31\x99\xbc\xb4\x33\x25\x1d\x9a\x06\x06\xbf\xf4\xcd\x82\xc9\x67\x96\xed\x49\xd5\x51\xae\x8f\xf6\xb9\x17\x2a\xe1\x38\x42\x95\x72\x04\x04\x16\x0b\x60\xe8\x58\x43\xc1\x72\x76\x3a\x3d\x0b\x71\xb5\xdb\x4f\xae\xc3\x55\xf6\x0c\x46\x02\x82\x1f\xa9\x53\xea\xe6\xd1\x41\xd5\x43\xd5\x53\x53\x8d\x9b\x6b\x6e\x22\x22\x33\x21\x9a\x95\x6d\x8f\x5f\x82\xde\x0b\x6f\x81\x19\xa8\x05\x2f\x7f\xd2\xb0\x7a\x2b\x9c\xaf\xda\x0e\x48\xff\xfe\x4f\x03\x50\x79\xdb\xfb\x87\x8d\x6b\x0a\xa9\x92\x6f\x3b\x6a\x38\x6f\x1f\x18\x32\x4e\x1c\x2b\x8a\x13\xcf\x84\xf7\xa1\xd3\x42\x05\xfa\xfb\xce\x09\xaf\x4e\x76\x63\x70\xd7\xf4\x96\x4a\x9a\x80\x19\xe7\x58\x0f\x91\xe1\x9a\xf5\x3d\x34\xb8\xd5\x5a\x8e\xe2\xb2\xdb\xda\xd0\x60\xc8\x85\xd4\xfc\xee\xfa\x69\x3a\xff\xc9\x13\xe5\xd1\x11\xc4\xba\xa3\xe8\xb4\x49\xf6\xbb\x10\x68\x8b\x14\x3d\x1f\x19\x87\x6b\x6a\x42\xc1\x9f\xc3\x23\x88\xf4\x69\xb4\xdb\x59\x3b\x07\xc3\x40\x22\x4d\x60\x3c\xaa\x9b\xf9\xff\x4e\xca\x2b\x09\xf0\x0e\x50\x90\x62\x66\x87\x5a\xc5\x15\x6d\xaf\xce\xe9\x5f\x71\xce\xf8\x5d\x8f\x07\xda\xf0\x35\x17\x90\x40\xdc\xa0\x27\x35\x82\x72\xf1\xf6\x93\x42\x79\xb5\x1d\x27\x11\x80\x61\x4e\x29\x6c\x58\xe7\x28\x75\x52\x96\xcb\x1b\xa5\x69\xe2\x95\x46\xe4\x0b\xcf\x4b\x31\x57\x92\x8a\xb6\x5f\xdc\x7e\x5f\xe4\x7a\x86\x87\x16\x90\xfc\xeb\xe4\x73\x75\x3a\xf1\x1e\x6d\xdd\x03\x92\xa7\x68\x3d\xc3\x51\x0c\xeb\x96\x4c\x0c\xeb\x1e\x3d\x76\xd3\xd6\x62\x37\xbd\xc8\x3a\xf8\xef\xc1\xc9\xab\x74\x5e\xcf\x0d\x3e\xc3\x85\xee\x30\xdf\x05\x4e\x9b\xe0\x8a\x08\x96\x1d\x2e\xcf\x4b\x5d\x6b\x24\xcd\x6c\xdb\xd3\x2a\x3a\xbb\x72\xe7\x84\x58\xdf\xd5\xd9\x1b\xfe\xe7\x1a\x78\x78\x92\xf3\xf9\x93\x97\x92\xad\xf5\x26\x5a\x8f\x86\x9f\x87\x17\x67\xd5\xa6\xe6\x59\x1f\x3e\x89\x1d\xcc\xc4\x6a\xd0\x5b\xd2\xb5\x8c\xd8\x9d\x51\xfd\x9c\x77\x07\xa6\x70\x6c\x1e\x92\x7d\xe3\xd1\x52\xd9\x5c\x73\xb5\xb6\xf6\x57\xb6\xde\x3b\x92\x7f\x69\x72\xed\x6f\x85\x32\x9b\x3b\x73\x55\xfe\x66\xa0\xd7\x0b\xe7\x00\x79\x2a\x19\x60\x78\xb2\xfe\x3d\x7e\x3c\xcb\x1d\x7d\x85\xfe\x38\x34\x9d\xe5\xfd\x34\x2c\xf5\x5a\x7f\x9c\xda\x46\x85\x0f\xf6\xd6\xf0\x23\xe7\x5d\x2f\xd8\x9c\x75\x8f\x30\xe2\x15\xf2\x69\x4f\xa5\xed\x51\x5e\xef\x44\xc7\x69\xa9\x77\xaa\xde\xe3\xeb\x6d\xeb\xc8\x4b\x51\xb4\xb5\xe6\xec\x5f\xff\xe5\x49\xb8\x1e\x3d\x03\xd2\xed\xcf\x08\x1e\xa6\xd7\x39\xf5\x7a\xb3\x8f\x02\x2a\x71\x29\x47\x53\x8a\x48\xd9\xf2\xbe\xf8\x6a\x2a\x22\xfe\x0b\x1a\xff\xfd\x6d\x3c\x95\x0b\x75\x27\x7d\x61\xdc\x96\xcc\xbc\xea\x7c\xe5\x0b\x60\x1b\x26\xe0\x56\xc5\xe5\x6f\x5c\xe6\xdb\xdf\x51\xf9\x3f\x27\x7a\x09\x29\x18\x2a\x06\xff\x0d\x00\x00\xff\xff\xc5\x8a\x47\x12\xd2\x2a\x00\x00")
+var _deployKubernetes118DirectPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\xdd\x6f\xe3\xb8\x11\x7f\xf7\x5f\xc1\x6e\xef\xe1\x0e\xa8\xac\x78\xdb\x03\x5a\x01\x7e\xc8\x26\xbe\xd4\xe8\xc6\x31\x92\xec\xbd\x06\x0c\x35\x96\x59\x53\x24\x4b\x8e\xbc\xf1\x15\xfd\xdf\x0b\x52\x92\xad\x2f\xcb\x1f\x97\x0f\x14\xf5\x3e\xac\x43\x71\x38\xbf\xf9\xe0\xcc\x6f\x6c\xff\x91\xdc\x80\x04\x43\x11\x62\xf2\x9d\xe3\x92\x7c\x4a\xe9\x0a\xc8\x2a\xb3\xa8\x52\xfe\x1b\x7c\xfa\x13\x89\x15\x91\x0a\x09\xc4\x1c\xff\x30\x18\x50\xcd\x7f\x05\x63\xb9\x92\x11\x59\x8f\x06\x2b\x2e\xe3\x88\x3c\x80\x59\x73\x06\x97\x8c\xa9\x4c\xe2\x20\x05\xa4\x31\x45\x1a\x0d\x08\x11\xf4\x19\x84\x75\xef\x08\xd1\x29\xa4\x01\xb3\x7c\xc8\x25\x82\x18\x32\x95\x86\x31\x68\xa1\x36\x29\x48\x8c\x48\xcc\x0d\x30\x0c\xb4\x51\x71\xc6\x90\x2b\x39\x20\x44\xd2\x14\xa2\xad\x60\xc0\x94\x44\xa3\x84\x00\x53\x3c\xb3\x9a\xb2\xca\x86\x41\x10\x04\x35\x88\xe6\x99\xb2\x21\xcd\x70\xa9\x0c\xff\x8d\xba\x43\x87\xab\xbf\xda\x21\x57\xe1\x16\xfc\xbd\x12\xf0\x86\x90\xe1\x05\xc1\x48\x2a\xdc\xa6\x35\x77\xa8\xc0\x04\x6c\x91\xec\x31\xc0\x64\x02\x6c\x34\x08\x08\xd5\xfc\xc6\xa8\x4c\x7b\x20\x01\xf9\xf4\x69\x40\x88\x01\xab\x32\xc3\xa0\x58\x03\x19\x6b\xc5\x25\xda\x01\x21\x6b\x30\xcf\xc5\x72\x02\xe8\xff\xff\x4e\x91\x2d\xfd\x3b\xc1\x6d\xbe\x14\x83\x00\x04\xff\x36\xd3\x31\x2d\xde\x32\x03\xee\x6d\x4b\x27\x53\xca\xc4\x5c\x56\xdd\xd6\x06\x21\x80\x5a\x78\x2b\x04\x16\x95\xa1\x09\xec\x55\xce\x2c\x2f\xb6\x30\xaa\x29\xe3\xc8\xf7\x41\xd9\x02\xd8\x61\x2a\x94\x36\xa0\xe8\xed\xf3\x02\xea\x51\xa1\xd0\x2a\xee\x50\xdc\x12\xa5\x5a\xdb\xb6\xb0\x01\x2d\x38\xa3\x16\xba\x22\x79\x46\x46\x5f\x89\xcc\x22\x98\x8f\x48\x6c\x93\x49\x09\xe6\xa4\x2c\xd6\xce\x32\x8b\x20\x71\xad\x44\x96\x9e\x17\xc0\x93\x62\xd5\x50\xc8\x04\xe5\xe9\xf1\x5a\x8b\x5c\x39\x39\x57\xcb\x44\x15\xd4\xee\xbd\x30\x0d\x75\xc7\x55\x81\x35\xb4\x4a\xc0\x89\xd9\xde\xb6\x45\x52\x6d\x97\x0a\x87\x87\x8c\x2a\x42\x56\x6c\xef\xb3\xea\xb5\x74\xb8\x16\xd0\x36\xf8\x80\xaa\xc3\x65\x44\xaa\xf8\x35\x83\x72\xc2\x71\xe7\x75\xac\x2f\x5c\xc6\x5c\x26\x6f\xd9\x6b\x2d\xaf\x5f\x6d\x25\xa0\xaf\x71\x29\x01\xf7\xb0\x70\xda\x4b\xff\xf4\x18\x33\x20\xa4\xd2\x7d\x8f\x6f\x9a\x36\x7b\xfe\x27\x30\xf4\xb5\xa5\x93\x7b\xbc\x0b\x65\xa8\x14\xd8\x8f\x89\xc3\xb9\xde\xae\x76\x86\x93\x0a\xfa\x3b\xf8\xbd\xc9\x26\x3f\x92\x46\x5a\x0d\xcc\x29\xd3\xca\xe0\xb6\xc3\x1b\x8c\xc8\xe8\xe2\xe2\xe2\xc2\xa3\x40\x6a\x12\xc0\x79\x6d\xd5\x82\x00\x86\xca\xe4\x38\xa9\xd6\xfb\x74\x9e\x61\xc4\x07\xba\x2b\x05\x34\x9c\xd9\x33\x7c\x35\xea\xf4\xd5\xe8\xad\x7d\x45\x08\x6e\x34\x44\x64\xa6\x62\x70\x5a\x5b\xce\x73\x3c\x6c\x77\x9d\x1f\x90\x22\x2c\x32\xf1\x00\x1f\x3a\xbb\x94\x8e\x2c\xe9\x60\x44\x46\x2d\x3f\xa5\xae\x67\x7c\xad\xe0\x3a\xe0\xba\xb3\x80\xdb\x3c\xa3\x66\x3d\xf8\x11\x52\x2d\x28\x42\x81\xaa\xe2\x34\x0f\x49\x4a\x85\xbe\x00\x6d\x51\x76\x02\xb1\xcc\x50\x17\x27\x77\x34\xe5\x12\x8c\x2d\x76\x8b\x9a\x85\x07\x6d\x3c\xcb\xca\xbd\x82\xdf\xe1\x79\xa9\xd4\x2a\x22\x3c\x91\xca\x80\xdf\x5a\xc6\xc6\x83\x59\x2c\xb8\xe4\xb8\xd9\xc1\x73\xdd\xfe\xb2\xb5\xea\x22\xf9\xaf\x8c\x1b\x88\xaf\x33\xc3\x65\xf2\xc0\x96\x10\x67\x82\xcb\x64\xea\x0f\x2e\x96\x27\x2f\xc0\x32\x87\xa9\x2a\x99\x9f\xf9\x50\xc4\xfe\x11\x4c\x6a\xeb\x8f\x83\x3c\x15\x26\x2f\xda\x80\xb5\x75\x4f\x97\x3b\x56\xb0\x89\xba\x0c\xec\xf0\x5f\xf9\x52\x1a\x0c\x75\xd9\x46\x66\x0a\xa7\xb2\xf5\x7c\x4d\x45\x06\x2d\x55\x9e\x05\x49\xf5\xa9\x6b\x79\x41\x85\x85\xf2\xc9\x2e\xd0\xe5\x11\x6e\xca\x4c\x53\x2a\xe3\xdd\x99\x01\x09\x33\x6b\x42\xa1\x18\x15\xe1\x33\x97\xe1\x36\xf0\xb1\xe1\xeb\x0a\xe8\x80\x04\xeb\xf1\x9f\xab\x7f\x0a\x95\x24\x5c\x26\xc1\x42\x99\x94\xe2\x18\xe1\x05\xab\x8f\x53\x15\xc3\xb8\xc3\xfa\x80\x04\xe5\x2c\x3d\xce\x24\x7f\x89\xc2\x30\x64\x96\x87\xf5\x64\x1b\x5a\xc5\x56\x55\x19\x03\x09\xb7\x68\x36\x93\x52\x16\x99\x8e\xc2\xf0\x62\xe8\xff\x45\xbb\x5e\x51\xec\x77\x21\xe5\xf1\xf8\x87\x1f\xff\xf1\xed\xcb\xe4\x69\x76\x77\x3d\x79\x9a\x5d\xde\x4e\x7e\xaa\xee\x61\xf4\x17\x2e\x60\x1c\x32\x30\x68\x43\x46\x87\xcc\xd4\x4c\x70\xeb\xd5\x1d\x28\x6c\x73\xcb\x0a\x36\xcd\x1d\x2b\xd8\x54\x77\xe4\x7e\x74\x35\x68\xfc\xc3\x8f\xf3\xdb\xc9\xed\xd3\xd5\xc3\xf4\xe9\xfa\x7e\xfa\xeb\xe4\xbe\x0d\xa9\x28\xff\x5f\xfd\xcc\x34\x8e\x76\x65\xdd\xbd\x40\xae\xab\x91\xcb\x6b\x5e\xdd\xbe\x41\x23\x7d\x7e\x31\x2a\xad\x67\xd0\x82\x83\x88\x0b\x3a\x53\x7d\x35\xfa\x5d\xfd\xa1\x17\x9a\x53\x5c\x46\xfe\x76\x0e\x9d\x77\x5d\xc9\x6a\xa1\x79\x9c\xdc\xdf\x4e\x67\x97\x8f\xd3\xbb\xd9\xd3\xd7\xbb\x9b\xa7\xf9\xe5\xe3\xdf\x9b\x98\x22\x12\x62\xaa\x43\x04\x93\x16\x1f\x78\xb8\x5c\x6a\x1d\xd5\xe5\xab\xf6\x51\xed\x2b\xd7\x3a\xe8\xe6\xee\x7a\xf2\xe5\xdb\x4d\x5b\xf6\xe5\xe7\x8b\xbf\xe5\x75\xe7\x6a\x36\xde\xb9\x99\xa7\x34\x81\x88\xf8\x03\x9b\xf7\x21\x62\x54\x52\xb3\xa9\xef\x9d\x67\x42\xcc\x95\xe0\x6c\x13\x91\xe9\x62\xa6\x70\x6e\xc0\x82\xdc\x25\x4a\xa5\x3b\x35\xae\xd5\xb6\x91\x97\x90\xb7\xb7\x76\xde\xe8\xeb\xd5\x93\x76\x24\x21\x7f\x59\x60\x99\xe1\xb8\xb9\x72\xf3\xda\x0b\xd6\xcb\x22\x8d\xef\xa4\xd8\xdc\x2b\xe5\x73\xd9\x6e\x2c\x42\x1a\x11\x34\xd9\x2e\x7a\x95\x50\xdc\x82\xb5\xce\x24\x1f\xeb\xde\x38\xe5\xa3\xe2\xad\x63\xa4\x35\x0b\x52\xb7\x52\xc8\xfb\x5b\xd1\x82\x5f\xde\x65\x7f\xc1\xf6\x49\x5a\xde\x92\xd3\x22\x4b\xb8\x0c\x5c\x69\x00\x0c\x62\x6e\xf6\xc8\x62\xaa\x5b\xb2\x98\xea\x8a\x44\x40\xa8\x49\x6a\xa8\x9b\xd5\xcd\xc7\x9c\xc6\xb1\xab\xf8\xe3\x63\x0a\x54\xb0\x00\x8a\x99\x81\x20\xa1\x08\x76\xfc\xa8\xb4\x12\x2a\xd9\x8c\x6b\x8e\x76\xfb\xac\x8b\x1d\x06\xb8\x77\x03\xf2\x14\x54\x86\xe3\x9f\xd3\xda\x72\x0c\x0b\x9a\x09\x0c\x16\xd6\x11\xae\x31\xbc\xe0\x5f\x6a\xcf\x8b\xa4\xd8\x82\xf6\xc5\x63\xd4\xcc\x6a\x37\xa4\x24\xcc\xb8\x11\xcb\xf2\x24\x28\xa6\xf5\xb0\x31\xf8\x44\xeb\xcf\xc3\x8b\xe1\xe7\xb3\xd2\xbc\x6b\xb4\x39\x29\xdf\x47\x6f\x9e\xef\x47\xa5\xee\x09\x09\xb8\x17\x8f\xc9\xe4\xa5\x9d\x29\xe9\xd0\x34\x30\xf8\x47\xdf\x2c\x98\x7c\xa4\xd9\x9e\x54\x9d\xf4\xfa\x58\xa1\x7b\xa1\x12\x8e\x42\x54\x19\x49\x40\x60\xb1\x00\x86\x8e\x54\x14\x24\x68\xa7\xd3\x93\x14\x57\xbb\xfd\x60\x3b\x5c\x65\xcf\x60\x24\x20\xf8\x89\x3b\xa5\x6e\x5c\x1d\x54\x3d\x54\x3d\x35\xd5\xb8\xb9\xe6\x26\x22\x32\x13\xa2\x59\xd9\xf6\xf8\x25\xe8\xbd\xf0\x16\x98\x81\x5a\xf0\xf2\x95\x86\xd5\x5b\xe1\xfc\xa9\xed\x80\xf4\xef\xff\x34\x00\x95\xb7\xbd\x7f\x16\xb9\xa6\x90\x2a\xf9\xb6\x93\x88\xf3\xf6\x81\x19\xe4\xc4\xa9\xa3\x38\xf1\x4c\x78\x1f\x3a\x4c\x54\xa0\xbf\xef\x18\xf1\xea\x5c\x38\x06\x77\x4d\x6f\xa9\xa4\x09\x98\x71\x8e\xf5\x77\x72\xe5\x9a\x73\x7a\x58\x72\xab\xf3\x1c\x45\x75\xb7\xa5\xa3\x41\xa0\x0b\xa9\xf9\xdd\xf5\xd3\x74\xfe\x93\xe7\xd1\xa3\x23\x78\x77\x47\x4d\x6a\x73\xf0\x77\xe1\xd7\x16\x29\x7a\xba\x32\x0e\xd7\xd4\x84\x82\x3f\x87\x47\xf0\xec\xd3\x58\xb9\xb3\x76\x0e\x86\x81\x44\x9a\xc0\x78\x54\x37\xf3\x7f\x9d\xb3\x57\x12\xe0\x1d\xa0\x20\xc5\xcc\x0e\xb5\x8a\x2b\xda\x5e\x9d\xf2\xbf\xe2\x18\xf2\x7f\x3d\x3d\x68\xc3\xd7\x5c\x40\x02\x71\x83\xbd\xd4\xf8\xcb\xc5\xdb\x0f\x12\xe5\xd5\x76\x94\x45\x00\x86\x39\xe3\xb0\x61\x9d\xc2\xd4\x39\x5b\x2e\x6f\x94\xa6\x89\x57\x1a\x91\x2f\x3c\xaf\xd4\x5c\x49\x2a\xda\x7e\x71\xfb\x7d\x91\xeb\x99\x2d\x5a\x40\xf2\x2f\xa3\xcf\xd5\xe9\xc4\x7b\xb4\x75\xcf\x4f\x9e\xc1\xf5\xcc\x4e\x31\xac\x5b\x32\x31\xac\x7b\xf4\xd8\x4d\x5b\x8b\xdd\xf4\x22\xeb\xa0\xc7\x07\x07\xb3\xd2\x79\x3d\x37\xf8\x0c\x17\xba\xc3\x7c\x17\x38\x6d\xc0\x2b\x22\x58\x76\xb8\x3c\x2f\x75\xad\x91\x34\xb3\x6d\x4f\xab\xe8\xec\xca\x9d\x03\x64\x7d\x57\x67\x6f\xf8\xdd\x35\xf0\xf0\xa0\xe7\xf3\x27\x2f\x25\x5b\xeb\x4d\xb4\x1e\x0d\x3f\x0f\x2f\xce\xaa\x4d\xcd\xb3\x3e\x7c\x50\x3b\x98\x89\xd5\xa0\xb7\xa4\x6b\x19\xb1\x3b\xa3\xfa\x29\xf1\x0e\x4c\xe1\xd8\x3c\x24\xfb\xa6\xa7\xa5\xb2\xb9\xe6\x6a\x6d\xed\xaf\x6c\xbd\x77\x24\xff\xca\xe5\xda\xdf\x0a\x65\x36\x77\xe6\xaa\xfc\xc5\x41\xaf\x17\xce\x01\xf2\x54\x32\xc0\xf0\x64\xfd\x7b\xfc\x78\x96\x3b\xfa\x0a\xfd\x71\x68\x3a\xcb\xfb\x69\x58\xea\xb5\xfe\x38\xb5\x8d\x0a\x1f\xec\xad\xe1\x47\x8e\xc3\x5e\xb0\x39\x0a\x1f\x61\xc4\x2b\xe4\xd3\x9e\x4a\xdb\xa3\xbc\xde\x89\x8e\xd3\x52\xef\x54\xbd\xc7\xd7\xdb\xd6\x91\x97\xa2\x68\x6b\xcd\x8f\x06\xea\xbf\x5b\x09\xd7\xa3\x67\x40\xba\xfd\x11\xc2\xc3\xf4\x3a\xa7\x5e\x6f\xf6\x49\x41\x25\x2e\xe5\xe4\x4a\x11\x29\x5b\xde\x17\x5f\x6c\x45\xc4\x7f\xbd\xe3\xbf\xfd\x8d\xa7\x72\xa1\xee\xa4\x2f\x8c\xdb\x92\x99\x57\x9d\xaf\x7c\x01\x6c\xc3\x04\xdc\xaa\xb8\xfc\x85\xcc\x7c\xfb\x2b\x2c\xff\xe7\x44\x2f\x21\x05\x43\xc5\xe0\xbf\x01\x00\x00\xff\xff\x99\xe3\x8f\xb5\x93\x2a\x00\x00")
func deployKubernetes118DirectPmemCsiYamlBytes() ([]byte, error) {
return bindataRead(
@@ -140,12 +140,12 @@ func deployKubernetes118DirectPmemCsiYaml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "deploy/kubernetes-1.18/direct/pmem-csi.yaml", size: 10962, mode: os.FileMode(436), modTime: time.Unix(1608146541, 0)}
+ info := bindataFileInfo{name: "deploy/kubernetes-1.18/direct/pmem-csi.yaml", size: 10899, mode: os.FileMode(420), modTime: time.Unix(1608283271, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
-var _deployKubernetes118LvmPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\xdd\x6f\xe3\xb8\x11\x7f\xf7\x5f\xc1\x6e\xef\xe1\x0e\xa8\xac\x78\xdb\x03\x5a\x01\x7e\xc8\x26\xbe\xd4\xe8\xc6\x31\x92\xec\xbd\x06\x0c\x35\x96\x59\x53\x24\x4b\x8e\xbc\xf1\x15\xfd\xdf\x0b\x52\x92\xad\x2f\xcb\x1f\xcd\x07\x8a\xf3\x3e\xac\x23\x72\x38\xbf\xf9\xe0\xcc\xfc\x6c\xff\x91\xdc\x80\x04\x43\x11\x62\xf2\x9d\xe3\x92\x7c\x4a\xe9\x0a\xc8\x2a\xb3\xa8\x52\xfe\x1b\x7c\xfa\x13\x89\x15\x91\x0a\x09\xc4\x1c\xff\x30\x18\x50\xcd\x7f\x05\x63\xb9\x92\x11\x59\x8f\x06\x2b\x2e\xe3\x88\xcc\x68\x0a\x56\x53\x06\x83\x14\x90\xc6\x14\x69\x34\x20\x44\xd0\x67\x10\xd6\xbd\x23\x44\xa7\x90\x06\xcc\xf2\x21\x97\x08\x62\xc8\x54\x1a\xc6\xa0\x85\xda\xa4\x20\x31\x22\x62\x9d\x06\xda\xa8\x38\x63\xc8\x95\x1c\x10\x22\x69\x0a\xd1\x56\x6a\x10\x04\x41\xb7\xe6\x07\x30\x6b\xce\xe0\x92\x31\x95\x49\x7c\x23\xf5\x01\x53\x12\x8d\x12\x02\x4c\xb1\xe6\x8d\xed\xc1\x67\x9e\x29\x1b\xd2\x0c\x97\xca\xf0\xdf\xa8\x3b\x74\xb8\xfa\xab\x1d\x72\x15\x6e\x91\xdf\x2b\xf1\x56\xee\x0a\xe0\x05\xc1\x48\x2a\xdc\xa6\x35\x77\x90\xc0\x04\x6c\x91\xec\x41\x6f\x32\x01\x36\x1a\x04\x84\x6a\x7e\x63\x54\xa6\x3d\x8a\x80\x7c\xfa\x34\x20\xc4\x80\x55\x99\x61\x50\x3c\x03\x19\x6b\xc5\x25\xda\x01\x21\x6b\x30\xcf\xc5\xe3\x04\xd0\xff\xff\x9d\x22\x5b\xfa\x77\x82\xdb\xfc\x51\x0c\x02\x10\xfc\xdb\x4c\xc7\xb4\x78\xcb\x0c\xb8\xb7\x2d\x9d\x4c\x29\x13\x73\x59\xf5\x59\x1b\x84\x00\x6a\xe1\xad\x10\x58\x54\x86\x26\xb0\x57\x39\xb3\xbc\xd8\xc2\xa8\xa6\x8c\x23\xdf\x07\x65\x0b\x60\x87\xa9\x50\xda\x80\xa2\xb7\xeb\x05\xd4\xa3\x42\xa1\x55\xdc\xa1\xb8\x25\x4a\xb5\xb6\x6d\x61\x03\x5a\x70\x46\x2d\x74\x45\xf2\x8c\x74\xbe\x12\x99\x45\x30\xef\x9e\xd5\x26\x93\x12\xcc\x49\x29\xac\x9d\x59\x16\x41\xe2\x5a\x89\x2c\x3d\x2f\x7a\x27\x05\xaa\xa1\x90\x09\xca\xd3\xe3\xb5\x16\x89\x72\x72\xa2\x96\x59\x2a\xa8\xdd\x7b\x5b\x1a\xea\x8e\x2b\x01\x6b\x68\xdd\xff\x13\x53\xbd\x6d\x8b\xa4\xda\x2e\x15\x0e\x0f\x19\x55\x84\xac\xd8\xde\x67\xd5\x6b\xe9\x70\xc5\xbf\x6d\xf0\x01\x55\x87\x6b\x88\x54\xf1\x6b\x06\xe5\x84\xe3\xce\xeb\x55\x5f\xb8\x8c\xb9\x4c\xde\xac\xc5\x5a\x5e\xbf\xd7\x4a\x40\x5f\xcb\x52\x02\xee\x61\xe1\x54\x97\xce\xe9\xb1\x64\x40\x48\xa5\xe9\x1e\xdf\x2e\x6d\xf6\xfc\x4f\x60\xe8\x0b\x4b\xe7\xbc\xf1\x2e\x93\x42\xa5\xb4\x7e\x40\x10\xce\x75\x75\xb5\x21\x9c\x54\xca\xdf\xc1\xe9\xcd\xf1\xf1\xc3\xe6\x46\xab\x81\x39\x4d\x5a\x19\xdc\x76\x75\x83\x11\x19\x5d\x5c\x5c\x5c\x78\x08\x48\x4d\x02\x38\xaf\x3d\xb5\x20\x80\xa1\x32\x39\x48\xaa\xf5\x3e\x9d\xa7\x5a\xf0\x51\x8e\x4a\x01\x0d\x67\xf6\x0c\x2f\x8d\x3a\xbd\x34\x7a\x53\x2f\x11\x82\x1b\x0d\x11\x99\xa9\x18\x9c\xca\x96\xdb\xdc\xc8\xb5\xbb\xbf\x0f\x48\x11\x16\x99\x78\x80\x8f\x23\x28\xa5\x0b\xcb\xb1\x2f\x22\xa3\x96\x87\x52\xd7\x1e\xbe\x56\x40\x1d\x70\xda\xe9\xa8\x6d\x9e\x45\xb3\x1e\xf0\x08\xa9\x16\x14\xa1\x80\x54\x71\x97\xc7\x23\xa5\x42\x5f\x6e\xb6\x10\x3b\x51\x58\x66\xa8\x8b\x90\x3b\x9a\x72\x09\xc6\x16\xbb\x45\xcd\xbc\x83\x06\x9e\x6e\xe2\x5e\xa9\xef\xf0\xbc\x54\x6a\x15\x11\x9e\x48\x65\xc0\x6f\x2d\xa3\xe2\x91\x2c\x16\x5c\x72\xdc\xec\xb0\xb9\x96\x7e\xd9\x7a\xea\x62\xf8\xaf\x8c\x1b\x88\xaf\x33\xc3\x65\xf2\xc0\x96\x10\x67\x82\xcb\x64\xea\x0f\x2e\x1e\x4f\x5e\x80\x65\x0e\x53\x55\x32\x3f\xf3\xa1\x88\xfa\x23\x98\xd4\xd6\x97\x83\x3c\x09\x26\x2f\xda\x80\xb5\x75\x37\x97\x3b\x56\xb0\x89\xba\x0c\xec\x70\x5e\xf9\x52\x1a\x0c\x75\x79\x46\x66\x0a\xa7\xb2\xb5\xbe\xa6\x22\x83\x96\x2a\x3f\xea\x48\xf5\xa9\xeb\xf1\x82\x0a\x0b\xe5\xca\x2e\xca\xe5\x11\x8e\x47\xa6\x29\x95\xf1\xee\xcc\x80\x84\x99\x35\xa1\x50\x8c\x8a\xf0\x99\xcb\x70\x1b\xf5\xd8\xf0\x75\x05\x74\x40\x82\xf5\xf8\xcf\xd5\x3f\x53\x15\xc3\xb8\xc3\xbc\x80\x04\x25\x1d\x1e\x67\x92\xbf\x44\x61\x18\x32\xcb\xc3\x7a\x2a\x0d\xad\x62\xab\xaa\x8c\x81\x84\x5b\x34\x9b\x49\x29\x8b\x4c\x47\x61\x78\x31\xf4\xff\xa2\x5d\xe9\x2f\xf6\xbb\x98\xf1\x78\xfc\xc3\x8f\xff\xf8\xf6\x65\xf2\x34\xbb\xbb\x9e\x3c\xcd\x2e\x6f\x27\x3f\x55\xf7\x30\xfa\x0b\x17\x30\x0e\x19\x18\xb4\x21\xa3\x43\x66\xb0\xb6\x0e\x06\xab\x3b\x50\xd8\xe6\x96\x15\x6c\x9a\x3b\x56\xb0\xa9\xee\xc8\x1d\xe5\xca\xcb\xf8\x87\x1f\xe7\xb7\x93\xdb\xa7\xab\x87\xe9\xd3\xf5\xfd\xf4\xd7\xc9\x7d\x1b\x52\x51\xd3\xbf\x7a\xe6\x33\x8e\x76\xb5\xda\xbd\x40\xae\xab\xa1\xc9\xcb\x59\xdd\xbe\x41\x23\x3f\x7e\x31\x2a\xad\xa7\xc8\x82\x83\x88\x8b\xd1\xa4\xfa\x6a\x74\xb0\xfa\xa2\x17\x9a\x53\x5c\x46\xfe\xfa\x0d\x9d\x77\x5d\x41\x6a\xa1\x79\x9c\xdc\xdf\x4e\x67\x97\x8f\xd3\xbb\xd9\xd3\xd7\xbb\x9b\xa7\xf9\xe5\xe3\xdf\x9b\x98\x22\x12\x62\xaa\x43\x04\x93\x16\x9f\x59\x04\x42\x25\xad\xa3\xba\x7c\xd5\x3e\xaa\x7d\xa7\x5a\x07\xdd\xdc\x5d\x4f\xbe\x7c\xbb\x69\xcb\xbe\xfc\x7c\xf1\xb7\xbc\xb0\x5c\xcd\xc6\x3b\x37\xf3\x94\x26\x10\x11\x7f\x60\x33\xe1\x23\x46\x25\x35\x9b\xfa\xde\x79\x26\xc4\x5c\x09\xce\x36\x11\x99\x2e\x66\x0a\xe7\x06\x2c\xc8\x5d\xa2\x54\x1a\x4f\xe3\xde\x6c\xbb\x73\x09\x79\x7b\x2d\xe7\x8d\x66\x5d\x3d\x69\xd7\xf9\xf3\x97\x05\x96\x19\x8e\x9b\x2b\xc7\xba\x5e\xb0\x5e\xf7\x68\x7c\x27\xc5\xe6\x5e\x29\x9f\xcb\x76\x63\x11\xd2\x88\xa0\xc9\x76\xd1\xab\x84\xe2\x16\xac\x75\x26\xf9\x58\xf7\xc6\x29\x27\x7c\xb7\x6e\xba\xac\x59\x90\xba\x27\x85\xbc\xbf\x15\x2d\xf8\xe5\x5d\xf6\x17\x6c\x9f\xa4\xe5\x2d\x39\x2d\xb2\x84\xcb\xc0\x95\x06\xc0\x20\xe6\x66\x8f\x2c\xa6\xba\x25\x8b\xa9\xae\x48\x04\x84\x9a\xa4\x86\xba\x59\xbe\x7c\xcc\x69\x1c\xbb\x92\x3e\x3e\xa6\x40\x05\x0b\xa0\x98\x19\x08\x12\x8a\x60\xc7\x8f\x4a\x2b\xa1\x92\xcd\xb8\xe6\x68\xb7\xcf\xba\xd8\x61\x80\x7b\x37\x20\x4f\x41\x65\x38\xfe\x39\xad\x3d\x8e\x61\x41\x33\x81\xc1\xc2\xba\x41\x6a\x0c\x2f\xf8\x97\xda\x7a\x91\x14\x5b\xd0\xbe\x78\x8c\x9a\x59\xed\x08\x47\xc2\x8c\xe3\x4a\x96\x27\x41\xc1\xb9\xc3\x06\x89\x89\xd6\x9f\x87\x17\xc3\xcf\x67\xa5\x79\x17\x4d\x39\x29\xdf\x47\x6f\x9e\xef\x47\xa5\xee\x09\x09\xb8\x17\x8f\xc9\xe4\xa5\x9d\x29\xe9\xd0\x34\x30\xf8\xa5\x6f\x16\x4c\xce\x50\xb6\x27\x55\x59\x5b\xdf\xcc\xe7\x5e\xa8\x84\x9b\x11\xaa\x23\x47\x40\x60\xb1\x00\x86\x6e\x6a\x28\xa6\x9c\x9d\x4e\x3f\x85\xb8\xda\xed\x49\xea\x70\x95\x3d\x83\x91\x80\xe0\xa9\x73\x4a\x1d\xf5\x1c\x54\x3d\x54\x3d\x35\xd5\xb8\xb9\xe6\x26\x22\x32\x13\xa2\x59\xd9\xf6\xf8\x25\xe8\xbd\xf0\x16\x98\x81\x5a\xf0\xf2\x27\x0d\xab\xb7\xc2\xf9\xaa\xed\x80\xf4\xef\xff\x34\x00\x95\xb7\xbd\x9f\x63\x5c\x53\x48\x95\x7c\x43\x86\xe1\x5c\x7d\x80\x5b\x9c\xc8\x26\x8a\x13\xcf\xc1\xf6\xa1\x24\xa1\x82\xfb\x1d\xe9\xc1\xab\xcf\xb8\x31\xb8\xdb\x79\x4b\x25\x4d\xc0\x8c\xc5\x3a\x3d\x34\x00\xd7\xec\xee\x19\x7d\x5b\xed\xe4\xa8\xf9\x75\x5b\x0f\x1a\x53\x71\x21\x35\xbf\xbb\x7e\x9a\xce\x7f\xf2\xc3\xf1\xe8\x88\x61\xba\xa3\xd0\xb4\x07\xeb\x77\x19\x9a\xad\x63\xff\xae\x10\x8f\xc3\x35\x35\xa1\xe0\xcf\xe1\x11\xc3\xf3\x69\xa3\xb6\xb3\x76\x0e\x86\x81\x44\x9a\xc0\x78\x54\x37\xf3\xff\x7d\x10\xaf\x24\xc0\x3b\x40\x41\x8a\x99\x1d\x6a\x15\x57\xb4\xbd\xfa\x1c\xff\x8a\xdc\xe2\x77\x4d\x09\xb4\xe1\x6b\x2e\x20\x81\xb8\x31\x92\xd4\x86\x92\x8b\xb7\x67\x07\xe5\xd5\x76\x73\x88\x00\x0c\xf3\x31\xc2\x86\xf5\xb9\xa4\x3e\x88\xe5\xf2\x46\x69\x9a\x78\xa5\x11\xf9\xc2\x63\x6e\xc0\xf7\x0a\x2a\xda\x7e\x71\xfb\x7d\x91\xeb\x21\x0c\x2d\x20\xf9\x97\xc4\xe7\xea\x74\xe2\x3d\xda\xba\x49\x91\x1f\xcb\x7a\x08\x51\x0c\xeb\x96\x4c\x0c\xeb\x1e\x3d\x76\xd3\xd6\x62\x37\xbd\xc8\x3a\x66\xde\x83\x6c\xab\x74\x5e\xcf\x0d\x3e\xc3\x85\xee\x30\xdf\x05\x4e\x63\x6d\x45\x04\xcb\x0e\x97\xe7\xa5\xae\x35\x92\x66\xb6\xed\x69\x15\x9d\x5d\xb9\x93\x15\xd6\x77\x75\xf6\x86\xff\xb9\x06\x1e\x66\x6f\x3e\x7f\xf2\x52\xb2\xb5\xde\x44\xeb\xd1\xf0\xf3\xf0\xe2\xac\xda\xd4\x3c\xeb\xc3\xd9\xd7\xc1\x4c\xac\x06\xbd\x25\x5d\xcb\x88\xdd\x19\xd5\xcf\x76\x77\x60\x0a\xc7\xe6\x21\xd9\x47\x89\x96\xca\xe6\x9a\xab\xb5\xb5\xbf\xb2\xf5\xde\x91\xfc\xfb\x91\x6b\x7f\x2b\x94\xd9\xdc\x99\xab\xf2\xc7\x00\xbd\x5e\x38\x07\xc8\x53\x39\x01\x86\x27\xeb\xdf\xe3\xc7\xb3\xdc\xd1\x57\xe8\x8f\x43\xd3\x59\xde\x4f\xc3\x52\xaf\xf5\xc7\xa9\x6d\x54\xf8\x60\x6f\x0d\x3f\x92\xe3\x7a\xc1\x26\xbf\x3d\xc2\x88\x57\xc8\xa7\x3d\x95\xb6\x47\x79\xbd\x13\x1d\xa7\xa5\xde\xa9\x7a\x8f\xaf\xb7\xad\x23\x2f\x45\xd1\xd6\x9a\x7c\xbf\xfe\x93\x92\x70\x3d\x7a\x06\xa4\xdb\x9f\x08\x3c\x4c\xaf\xf3\xd1\xeb\x6d\xe8\x7f\x25\x28\x25\x29\xa5\x88\x94\x2d\xef\x8b\xef\xa2\x22\xe2\xbf\x91\xf1\x5f\xd2\xc6\x53\xb9\x50\x77\xd2\x57\xc5\x6d\xbd\xcc\x4b\xce\x57\xbe\x00\xb6\x61\x02\x6e\x55\x5c\xfe\x72\x65\xbe\xfd\x75\x94\xff\x73\xa2\x97\x90\x82\xa1\x62\xf0\xdf\x00\x00\x00\xff\xff\xfa\x42\x3c\xbb\x9c\x2a\x00\x00")
+var _deployKubernetes118LvmPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\x5b\x6f\xe3\xb8\x15\x7e\xf7\xaf\x60\xa7\xfb\xb0\x0b\x54\x56\x3c\xed\x02\xad\x00\x3f\x64\x12\x6f\x6a\x74\x92\x18\x49\x66\x5f\x03\x86\x3a\x96\x59\x53\x24\x4b\x1e\x69\xe2\x2d\xfa\xdf\x0b\x52\x92\xad\x9b\x15\xdb\x9b\x0b\x8a\x7a\x1e\xc6\xa1\x78\x78\x3e\x9e\xeb\x77\x6c\xff\x91\x5c\x81\x04\x43\x11\x62\xf2\x9d\xe3\x8a\x7c\x4a\xe9\x1a\xc8\x3a\xb3\xa8\x52\xfe\x1b\x7c\xfa\x13\x89\x15\x91\x0a\x09\xc4\x1c\xff\x30\x1a\x51\xcd\x7f\x05\x63\xb9\x92\x11\xc9\x27\xa3\x35\x97\x71\x44\xee\xc1\xe4\x9c\xc1\x39\x63\x2a\x93\x38\x4a\x01\x69\x4c\x91\x46\x23\x42\x04\x7d\x02\x61\xdd\x3b\x42\x74\x0a\x69\xc0\x2c\x1f\x73\x89\x20\xc6\x4c\xa5\x61\x0c\x5a\xa8\x4d\x0a\x12\x23\x22\xf2\x34\xd0\x46\xc5\x19\x43\xae\xe4\x88\x10\x49\x53\x88\xb6\x52\x01\x53\x12\x8d\x12\x02\x4c\xf9\xcc\x6a\xca\x6a\x1b\x46\x41\x10\x34\xf0\x99\x27\xca\xc6\x34\xc3\x95\x32\xfc\x37\xea\x0e\x1d\xaf\xff\x6a\xc7\x5c\x85\x5b\xe4\x77\x4a\xc0\x5b\xe1\x85\x67\x04\x23\xa9\x70\x9b\x72\xee\x20\x81\x09\xd8\x32\xd9\x83\xde\x64\x02\x6c\x34\x0a\x08\xd5\xfc\xca\xa8\x4c\x7b\x14\x01\xf9\xf4\x69\x44\x88\x01\xab\x32\xc3\xa0\x5c\x03\x19\x6b\xc5\x25\xda\x11\x21\x39\x98\xa7\x72\x39\x01\xf4\xff\x7f\xa7\xc8\x56\xfe\x9d\xe0\xb6\x58\x8a\x41\x00\x82\x7f\x9b\xe9\x98\x96\x6f\x99\x01\xf7\xb6\xa3\x93\x29\x65\x62\x2e\xeb\x36\xeb\x82\x10\x40\x2d\xbc\x15\x02\x8b\xca\xd0\x04\xf6\x2a\x67\x96\x97\x5b\x18\xd5\x94\x71\xe4\xfb\xa0\x6c\x01\xec\x30\x95\x4a\x5b\x50\xf4\xf6\x79\x09\xf5\x20\x57\x68\x15\xf7\x28\xee\x88\x52\xad\x6d\x57\xd8\x80\x16\x9c\x51\x0b\x7d\x9e\x3c\x21\x9c\x2f\x44\x66\x11\xcc\xbb\x47\xb5\xc9\xa4\x04\x73\x54\x08\x6b\x77\x2d\x8b\x20\x31\x57\x22\x4b\x4f\xf3\xde\x51\x8e\x6a\x29\x64\x82\xf2\xf4\x70\xad\x65\xa0\x1c\x1d\xa8\x55\x94\x0a\x6a\xf7\x66\x4b\x4b\xdd\x61\x25\x20\x87\x4e\xfe\x1f\x19\xea\xdd\xbb\x48\xaa\xed\x4a\xe1\xf8\xa5\x4b\x95\x2e\x2b\xb7\x0f\xdd\xea\xb5\x74\xb8\xe2\xdf\xbd\xf0\x0b\xaa\x5e\xae\x21\x52\xc5\xaf\xe9\x94\x23\x8e\x3b\xad\x57\x7d\xe1\x32\xe6\x32\x79\xb3\x16\x6b\x79\x33\xaf\x95\x80\xa1\x96\xa5\x04\xdc\xc1\xd2\xa9\xae\x8c\x33\x70\x93\x11\x21\xb5\xa6\x7b\x78\xbb\xb4\xd9\xd3\x3f\x81\xa1\x2f\x2c\xbd\x7c\xe3\x5d\x98\x42\xad\xb4\x7e\x80\x13\x4e\x35\x75\xbd\x21\x1c\x55\xca\xdf\xc1\xe8\x6d\xfa\xf8\x61\xbc\xd1\x6a\x60\x4e\x93\x56\x06\xb7\x5d\xdd\x60\x44\x26\x67\x67\x67\x67\x1e\x02\x52\x93\x00\x2e\x1a\xab\x16\x04\x30\x54\xa6\x00\x49\xb5\xde\xa7\xf3\xd8\x1b\x7c\x94\xa1\x52\x40\xc3\x99\x3d\xc1\x4a\x93\x5e\x2b\x4d\xde\xd4\x4a\x84\xe0\x46\x43\x44\x6e\x54\x0c\x4e\x65\xc7\x6c\x8e\x72\xed\xf2\xf7\x1e\x29\xc2\x32\x13\xf7\xf0\x71\x03\x4a\x65\xc2\x8a\xf6\x45\x64\xd2\xb1\x50\xea\xda\xc3\xd7\x1a\xa8\x17\x8c\x76\x3c\x6a\x5b\x44\xd1\xcd\x00\x78\x84\x54\x0b\x8a\x50\x42\xaa\x99\xcb\xe3\x91\x52\xa1\x2f\x37\x5b\x88\xbd\x28\x2c\x33\xd4\x79\xc8\x1d\x4d\xb9\x04\x63\xcb\xdd\xa2\x71\xbd\x17\x2f\x78\xfc\x15\xf7\x4a\x7d\x87\xa7\x95\x52\xeb\x88\xf0\x44\x2a\x03\x7e\x6b\xe5\x15\x8f\x64\xb9\xe4\x92\xe3\x66\x87\xcd\xb5\xf4\xf3\xce\xaa\xf3\xe1\xbf\x32\x6e\x20\xbe\xcc\x0c\x97\xc9\x3d\x5b\x41\x9c\x09\x2e\x93\xb9\x3f\xb8\x5c\x9e\x3d\x03\xcb\x1c\xa6\xba\x64\x71\xe6\x7d\xe9\xf5\x07\x30\xa9\x6d\x3e\x0e\x8a\x20\x98\x3d\x6b\x03\xd6\x36\xcd\x5c\xed\x58\xc3\x26\xea\xbb\x60\x8f\xf1\xaa\x97\xd2\x6e\xd0\x57\xc6\xa5\x0c\xce\x65\xe7\x79\x4e\x45\x06\x1d\x55\x9e\xea\x48\xf5\xa9\x6f\x79\x49\x85\x85\xea\xc9\xce\xcb\xd5\x11\x6e\x8e\x4c\x53\x2a\xe3\xdd\x99\x01\x09\x33\x6b\x42\xa1\x18\x15\xe1\x13\x97\xe1\xd6\xeb\xb1\xe1\x79\x0d\x74\x40\x82\x7c\xfa\xe7\xfa\x9f\x42\x25\x09\x97\x49\xb0\x54\x26\xa5\x38\x45\x78\xc6\xfa\xe3\x54\xc5\x30\xed\xb9\x7d\x40\x82\x6a\x5a\x9e\x66\x92\x3f\x47\x61\x18\x32\xcb\xc3\x66\xa4\x8d\xad\x62\xeb\xba\x8c\x81\x84\x5b\x34\x9b\x59\x25\x8b\x4c\x47\x61\x78\x36\xf6\xff\xa2\x5d\x67\x28\xf7\x3b\x97\xf2\x78\xfa\xc3\x8f\xff\xf8\xf6\x65\xf6\x78\x73\x7b\x39\x7b\xbc\x39\xbf\x9e\xfd\x54\xdf\xc3\xe8\x2f\x5c\xc0\x34\x64\x60\xd0\x86\x8c\x8e\x99\x69\x5c\xc1\xad\xd7\x77\xa0\xb0\xed\x2d\x6b\xd8\xb4\x77\xac\x61\x53\xdf\x51\xd8\xd1\x55\x9f\xe9\x0f\x3f\x2e\xae\x67\xd7\x8f\x17\xf7\xf3\xc7\xcb\xbb\xf9\xaf\xb3\xbb\x2e\xa4\xb2\xe4\x7f\xf5\x83\xd1\x34\xda\x95\x72\xf7\x02\x99\xd7\x3d\x57\x54\xbb\xe6\xfd\x46\xad\xf0\xf9\xc5\xa8\xb4\x19\x41\x4b\x0e\x22\x2e\x99\x4b\xfd\xd5\x6a\x70\xcd\x87\x5e\x68\x41\x71\x15\xf9\xec\x1c\x3b\xeb\xba\x7a\xd5\x41\xf3\x30\xbb\xbb\x9e\xdf\x9c\x3f\xcc\x6f\x6f\x1e\xbf\xde\x5e\x3d\x2e\xce\x1f\xfe\xde\xc6\x14\x91\x10\x53\x1d\x22\x98\xb4\xfc\x48\xc3\xc5\x52\xe7\xa8\x3e\x5b\x75\x8f\xea\xa6\x5c\xe7\xa0\xab\xdb\xcb\xd9\x97\x6f\x57\x5d\xd9\xe7\x9f\xcf\xfe\x56\xd4\x9d\x8b\x9b\xe9\xce\xcc\x3c\xa5\x09\x44\xc4\x1f\xd8\xce\x87\x88\x51\x49\xcd\xa6\xb9\x77\x91\x09\xb1\x50\x82\xb3\x4d\x44\xe6\xcb\x1b\x85\x0b\x03\x16\xe4\x2e\x50\x6a\x7d\xa9\x95\x56\xdb\xe6\x5d\x41\xde\x66\xed\xa2\xd5\xcb\xeb\x27\xed\x88\x41\xf1\xb2\xc0\x32\xc3\x71\x73\xe1\x86\xb2\x67\x6c\x96\x45\x1a\xdf\x4a\xb1\xb9\x53\xca\xc7\xb2\xdd\x58\x84\x34\x22\x68\xb2\x9d\xf7\x6a\xae\xb8\x06\x6b\xdd\x95\xbc\xaf\x07\xfd\x54\xcc\x83\xd7\x8e\x7c\x36\x6e\x90\xba\x95\x52\xde\x67\x45\x07\x7e\x95\xcb\x3e\xc1\xf6\x49\x5a\xde\x91\xd3\x22\x4b\xb8\x0c\x5c\x69\x00\x0c\x62\x6e\xf6\xc8\x62\xaa\x3b\xb2\x98\xea\x9a\x44\x40\xa8\x49\x1a\xa8\xdb\xd5\xcd\xfb\x9c\xc6\xb1\xab\xf8\xd3\x43\x0a\x54\xb0\x04\x8a\x99\x81\x20\xa1\x08\x76\xfa\xa0\xb4\x12\x2a\xd9\x4c\x1b\x86\x76\xfb\xac\xf3\x1d\x06\xb8\x77\x03\xf2\x14\x54\x86\xd3\x9f\xd3\xc6\x72\x0c\x4b\x9a\x09\x0c\x96\xd6\xf1\xac\x29\x3c\xe3\x5f\x1a\xcf\xcb\xa0\xd8\x82\xf6\xc5\x63\xd2\x8e\x6a\x37\x8f\x24\xcc\xb8\x51\xca\xf2\x24\x28\x47\xf2\xb0\x35\xe3\x44\xf9\xe7\xf1\xd9\xf8\xf3\x49\x61\xde\x37\xc5\x1c\x15\xef\x93\x37\x8f\xf7\x83\x42\xf7\x88\x00\xdc\x8b\xc7\x64\xf2\xdc\xde\x28\xe9\xd0\xb4\x30\xf8\x47\xdf\x2c\x98\x62\x80\xd9\x9e\x54\x1f\xea\x86\x28\xa1\x7b\xa1\x12\x8e\x42\xd4\x19\x49\x40\x60\xb9\x04\x86\x8e\x54\x94\x24\x68\xa7\xd3\x93\x14\x57\xbb\xfd\x0c\x3b\x5e\x67\x4f\x60\x24\x20\xf8\xc9\x3a\xa5\x6e\x32\x1d\xd5\x2d\x54\x3f\x35\xd5\xb8\xb9\xe4\x26\x22\x32\x13\xa2\x5d\xd9\xf6\xd8\x25\x18\x4c\x78\x0b\xcc\x40\xc3\x79\xc5\x4a\xeb\xd6\x5b\xe1\xe2\xa9\xed\x81\xf4\xef\xff\xb4\x00\x55\xd9\x3e\x3c\x82\x5c\x52\x48\x95\x7c\xc3\x01\xc4\x99\xfa\x85\xd1\xe3\xc8\x61\xa3\x3c\xf1\x14\x6c\x1f\x3a\x43\xd4\x70\xbf\xe3\xf4\xf0\xea\x14\x38\x06\x97\x9d\xd7\x54\xd2\x04\xcc\x54\xe4\xe9\xef\xe4\xc7\x0d\xb3\x0c\x30\xe3\x4e\xb7\x39\x88\xde\x6e\xcb\x45\x8b\x34\x97\x52\x8b\xdb\xcb\xc7\xf9\xe2\x27\xcf\x9d\x27\x07\x70\xed\x9e\x3a\xd4\xe5\xdd\xef\xc2\xa9\x2d\x52\xf4\x14\x65\x1a\xe6\xd4\x84\x82\x3f\x85\x07\x70\xeb\xe3\x98\xb8\xbb\xed\x02\x0c\x03\x89\x34\x81\xe9\xa4\x79\xcd\xff\x75\x9e\x5e\x0b\x80\x77\x80\x82\x14\x33\x3b\xd6\x2a\xae\x69\x7b\x75\x9a\xff\x8a\xa3\xc7\xff\xf5\xc4\xa0\x0d\xcf\xb9\x80\x04\xe2\x16\x63\x69\x70\x96\xb3\xb7\x1f\x1e\xaa\xd4\x76\x34\x45\x00\x86\x05\xcb\xb0\x61\x93\xb6\x34\x79\x5a\x21\x6f\x94\xa6\x89\x57\x1a\x91\x2f\x3c\xe6\x06\x7c\x2b\xa1\xa2\x6b\x17\xb7\xdf\x17\xb9\x81\x79\xa2\x03\xa4\xf8\x8a\xf9\x54\x9d\x4e\x7c\x40\x5b\xff\xcc\xe4\x59\xdb\xc0\xbc\x14\x43\xde\x91\x89\x21\x1f\xd0\x63\x37\x5d\x2d\x76\x33\x88\xac\x87\x12\xbf\x38\x8c\x55\xc6\x1b\xc8\xe0\x13\x4c\xe8\x0e\xf3\x5d\xe0\xb8\xa1\xae\xf4\x60\xd5\xe1\x8a\xb8\xd4\x8d\x46\xd2\x8e\xb6\x3d\xad\xa2\xb7\x2b\xf7\x0e\x8d\xcd\x5d\xbd\xbd\xe1\x77\xd7\xc0\x97\x87\x3b\x1f\x3f\x45\x29\xd9\xde\xde\x44\xf9\x64\xfc\x79\x7c\x76\x52\x6d\x6a\x9f\xf5\xe1\xc3\xd9\x8b\x91\x58\x77\x7a\x47\xba\x11\x11\xbb\x33\xea\x9f\x0c\xef\xc0\x94\x86\x2d\x5c\xb2\x6f\x62\x5a\x29\x5b\x68\xae\xd7\xd6\xe1\xca\x36\x98\x23\xc5\xb7\x2b\x97\x3e\x2b\x94\xd9\xdc\x9a\x8b\xea\xa7\x04\x83\x56\x38\x05\xc8\x63\xc5\x00\xc3\xa3\xf5\xef\xb1\xe3\x49\xe6\x18\x2a\xf4\x87\xa1\xe9\x2d\xef\xc7\x61\x69\xd6\xfa\xc3\xd4\xb6\x2a\x7c\xb0\xb7\x86\x1f\x38\x02\x7b\xc1\xf6\xf8\x7b\xc0\x25\x5e\x21\x9e\xf6\x54\xda\x01\xe5\xcd\x4e\x74\x98\x96\x66\xa7\x1a\x3c\xbe\xd9\xb6\x0e\x4c\x8a\xb2\xad\xb5\x3f\x0e\x68\xfe\x20\x25\xcc\x27\x4f\x80\x74\xfb\x03\x83\xfb\xf9\x65\x41\xbd\xde\xe6\xd3\x81\x9a\x53\xaa\x99\x95\x22\x52\xb6\xba\x2b\xbf\xc9\x8a\x88\xff\x3e\xc7\x7f\xc5\x1b\xcf\xe5\x52\xdd\x4a\x5f\x15\xb7\xf5\xb2\x28\x39\x5f\xf9\x12\xd8\x86\x09\xb8\x56\x71\xf5\xbb\x97\xc5\xf6\xb7\x55\xfe\xcf\x99\x5e\x41\x0a\x86\x8a\xd1\x7f\x03\x00\x00\xff\xff\x3a\x78\x18\xc6\x60\x2a\x00\x00")
func deployKubernetes118LvmPmemCsiYamlBytes() ([]byte, error) {
return bindataRead(
@@ -160,12 +160,12 @@ func deployKubernetes118LvmPmemCsiYaml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "deploy/kubernetes-1.18/lvm/pmem-csi.yaml", size: 10908, mode: os.FileMode(436), modTime: time.Unix(1608146543, 0)}
+ info := bindataFileInfo{name: "deploy/kubernetes-1.18/lvm/pmem-csi.yaml", size: 10848, mode: os.FileMode(420), modTime: time.Unix(1608283273, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
-var _deployKubernetes119AlphaDirectPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\x5b\x6f\xe3\xb8\x15\x7e\xf7\xaf\x60\xa7\xfb\xb0\x0b\x54\x56\x3c\xed\x02\xad\x00\x3f\x64\x12\x6f\x6a\x74\xe2\x18\x49\x66\x5f\x03\x86\x3a\x96\x59\x53\xa4\x4a\x1e\x79\xa2\x2d\xfa\xdf\x0b\x52\x17\xeb\x66\xf9\xb2\xb9\xa0\xa8\xe7\x61\x1c\x89\xe4\xf9\x78\xce\xe1\x77\xce\x27\xeb\x8f\xe4\x06\x24\x68\x8a\x10\x92\xef\x1c\xd7\xe4\x53\x4c\x37\x40\x36\xa9\x41\x15\xf3\xdf\xe0\xd3\x9f\x48\xa8\x88\x54\x48\x20\xe4\xf8\x87\xd1\x88\x26\xfc\x57\xd0\x86\x2b\x19\x90\xed\x64\xb4\xe1\x32\x0c\xc8\x82\xc6\x60\x12\xca\x60\x14\x03\xd2\x90\x22\x0d\x46\x84\x08\xfa\x0c\xc2\xd8\x6f\x84\x24\x31\xc4\x1e\x33\x7c\xcc\x25\x82\x18\x33\x15\xfb\x21\x24\x42\x65\x31\x48\x0c\x48\xc8\x35\x30\xf4\x12\xad\xc2\x94\x21\x57\x72\x44\x88\xa4\x31\x04\xd5\xc4\x91\xe7\x79\xfd\xc6\x1f\x40\x6f\x39\x83\x4b\xc6\x54\x2a\xf1\xed\x10\x78\x4c\x49\xd4\x4a\x08\xd0\xc5\x3d\xb7\xe5\x01\x88\xfa\x99\xb2\x31\x4d\x71\xad\x34\xff\x8d\xda\x45\xc7\x9b\xbf\x9a\x31\x57\x7e\x05\xfe\x5e\x89\x37\x74\x9a\x07\x2f\x08\x5a\x52\x61\x07\x6d\xb9\x45\x05\xda\x63\xab\x68\xcf\x06\x74\x2a\xc0\x04\x23\x8f\xd0\x84\xdf\x68\x95\x26\x0e\x88\x47\x3e\x7d\x1a\x11\xa2\xc1\xa8\x54\x33\x28\xae\x81\x0c\x13\xc5\x25\x9a\x11\x21\x5b\xd0\xcf\xc5\xe5\x08\xd0\xfd\xff\x9d\x22\x5b\xbb\x6f\x82\x9b\xfc\x52\x08\x02\x10\xdc\xd7\x34\x09\x69\xf1\x95\x69\xb0\x5f\x3b\x36\x99\x52\x3a\xe4\xb2\xee\xb6\x2e\x08\x01\xd4\xc0\x5b\x21\x30\xa8\x34\x8d\x60\xaf\x71\x66\x78\x31\x84\xd1\x84\x32\x8e\x7c\x1f\x94\x0a\xc0\x0e\x53\x61\xb4\x05\x25\xa9\xee\x17\x50\x8f\x0a\x45\xa2\xc2\x1e\xc3\x9d\xa9\x34\x49\x4c\x77\xb2\x86\x44\x70\x46\x0d\xf4\x45\xf2\x8c\x8c\xbe\x12\xa9\x41\xd0\x1f\x91\xd8\x3a\x95\x12\xf4\x49\x59\x9c\xd8\x9d\x19\x04\x89\x5b\x25\xd2\xf8\xbc\x00\x9e\x14\xab\x96\x41\x26\x28\x8f\x8f\xb7\x5a\xe4\xca\xc9\xb9\x5a\x26\xaa\xa0\x66\xef\x81\x69\x99\x3b\x8e\x05\xb6\xd0\xa1\x80\x13\xb3\xbd\xbb\x17\x49\x13\xb3\x56\x38\x3e\xb4\xa9\x22\x64\xc5\xf0\xa1\x5d\xbd\x96\x0d\x5b\x02\xba\x1b\x3e\x60\xea\x30\x8d\x48\x15\xbe\x66\x50\x4e\x58\xee\xbc\x8a\xf5\x85\xcb\x90\xcb\xe8\x2d\x6b\xad\xe1\xcd\xa3\xad\x04\x0c\x15\x2e\x25\xe0\x1e\x56\xd6\x7a\xe9\x9f\x81\xcd\x8c\x08\xa9\x55\xdf\xe3\x8b\xa6\x49\x9f\xff\x09\x0c\x1d\xb7\xf4\xf6\x1e\xef\xd2\x32\xd4\x08\xf6\x63\xe2\x70\xae\xb7\xeb\x95\xe1\x24\x42\x7f\x07\xbf\xb7\xbb\xc9\x8f\x6c\x23\x4d\x02\xcc\x1a\x4b\x94\xc6\xaa\xc2\x6b\x0c\xc8\xe4\xe2\xe2\xe2\xc2\xa1\x40\xaa\x23\xc0\x65\xe3\xaa\x01\x01\x0c\x95\xce\x71\xd2\x24\xd9\x67\xf3\x8c\x4d\x7c\xa0\xbb\x62\x40\xcd\x99\x39\xc3\x57\x93\x5e\x5f\x4d\xde\xda\x57\x84\x60\x96\x40\x40\x16\x2a\x04\x6b\xb5\xe3\x3c\xdb\x87\xed\x8e\xf3\x03\x52\x84\x55\x2a\x1e\xe0\x43\xb5\x4b\xe9\xc8\xb2\x1d\x0c\xc8\xa4\xe3\xa7\xd8\xd6\x8c\xaf\x35\x5c\x07\x5c\x77\x16\x70\x93\x67\xd4\x62\x00\x3f\x42\x9c\x08\x8a\x50\xa0\xaa\x39\xcd\x41\x92\x52\xa1\x23\xa0\x0a\x65\x2f\x10\xc3\x34\xb5\x71\xb2\x4b\x53\x2e\x41\x9b\x62\xb4\x68\xec\xf0\xe0\x1e\xcf\xda\xe5\xde\x89\xdf\xe1\x79\xad\xd4\x26\x20\x3c\x92\x4a\x83\x1b\x5a\xc6\xc6\x81\x59\xad\xb8\xe4\x98\xed\xe0\xd9\x6a\x7f\xd9\xb9\x6a\x23\xf9\xaf\x94\x6b\x08\xaf\x53\xcd\x65\xf4\xc0\xd6\x10\xa6\x82\xcb\x68\xee\x16\x2e\x2e\xcf\x5e\x80\xa5\x16\x53\x7d\x66\xbe\xe6\x43\x11\xfb\x47\xd0\xb1\x69\xde\xf6\xf2\x54\x98\xbd\x24\x1a\x8c\x69\x7a\xba\x1c\xb1\x81\x2c\xe8\xdb\x60\x8f\xff\xca\x8f\x4a\x40\x53\x9b\x6d\x64\xa1\x70\x2e\x3b\xf7\xb7\x54\xa4\xd0\x31\xe5\xba\x20\xa9\x3e\xf5\x5d\x5e\x51\x61\xa0\xbc\xb3\x0b\x74\xb9\x84\x55\x99\x71\x4c\x65\xb8\x5b\xd3\x23\x7e\x6a\xb4\x2f\x14\xa3\xc2\x7f\xe6\xd2\xaf\x02\x1f\x6a\xbe\xad\x81\xf6\x88\xb7\x9d\xfe\xb9\xfe\x67\xac\x42\x98\xf6\x6c\xcf\x23\x5e\x29\x96\xa7\xa9\xe4\x2f\x81\xef\xfb\xcc\x70\xbf\x99\x4d\x63\xa3\xd8\xa6\x3e\x47\x43\xc4\x0d\xea\x6c\x56\xce\x45\x96\x04\xbe\x7f\x31\x76\xff\x82\x5d\x31\x28\xc6\xdb\x98\xf1\x70\xfa\xc3\x8f\xff\xf8\xf6\x65\xf6\xb4\xb8\xbb\x9e\x3d\x2d\x2e\x6f\x67\x3f\xd5\xc7\x30\xfa\x0b\x17\x30\xf5\x19\x68\x34\x3e\xa3\x63\xa6\xb1\x71\x1f\x34\xd6\x47\xa0\x30\xed\x21\x1b\xc8\xda\x23\x36\x90\xd5\x47\xe4\x8e\xb2\x24\x33\xfd\xe1\xc7\xe5\xed\xec\xf6\xe9\xea\x61\xfe\x74\x7d\x3f\xff\x75\x76\xdf\x85\x54\xf0\xfb\x57\x27\x8a\xa6\xc1\x8e\xb7\xed\x07\xe4\xb6\x1e\x9a\x9c\xd4\x9a\xfb\x1b\xb5\xf2\xe3\x17\xad\xe2\x66\x8a\xac\x38\x88\xb0\xe8\x57\xea\x9f\x56\x41\x6b\xde\x74\x93\x96\x14\xd7\x81\x3b\x7e\x63\xeb\x5d\xcb\x49\x1d\x34\x8f\xb3\xfb\xdb\xf9\xe2\xf2\x71\x7e\xb7\x78\xfa\x7a\x77\xf3\xb4\xbc\x7c\xfc\x7b\x1b\x53\x40\x7c\x8c\x13\x1f\x41\xc7\xc5\x13\x0d\x4f\xa8\xa8\xb3\x54\x9f\xaf\xba\x4b\x75\xcf\x54\x67\xa1\x9b\xbb\xeb\xd9\x97\x6f\x37\xdd\xb9\x2f\x3f\x5f\xfc\x2d\x27\x96\xab\xc5\x74\xe7\x66\x1e\xd3\x08\x02\xe2\x16\x6c\x27\x7c\xc0\xa8\xa4\x3a\x6b\x8e\x5d\xa6\x42\x2c\x95\xe0\x2c\x0b\xc8\x7c\xb5\x50\xb8\xd4\x60\x40\xee\x12\xa5\x56\x7e\x5a\xe7\xa6\xaa\xd4\x25\xe4\xea\x58\x2e\x5b\x85\xbb\xbe\xd2\xae\x0b\xc8\x3f\x06\x58\xaa\x39\x66\x57\x56\x90\xbd\x60\x93\xf7\x68\x78\x27\x45\x76\xaf\x94\xcb\x65\x93\x19\x84\x38\x20\xa8\xd3\x5d\xf4\x6a\xa1\xb8\x05\x63\xec\x96\x5c\xac\x07\xe3\x94\x6b\xc1\x5b\xdb\x72\x36\x76\x10\xdb\x2b\xc5\x7c\x77\x2a\x3a\xf0\xcb\xb3\xec\x0e\xd8\xbe\x99\x86\x77\xe6\x25\x22\x8d\xb8\xf4\x2c\x35\x00\x7a\x21\xd7\x7b\xe6\x62\x9c\x74\xe6\x62\x9c\xd4\x66\x78\x84\xea\xa8\x81\xda\xf3\x8a\xc7\x56\x59\x8d\x85\xbc\x5d\xe1\x2a\xf8\x0c\x24\x6a\x2a\x06\x68\xcf\xe5\x0a\x0d\x43\x5b\x0a\xa6\xc7\x10\x9b\xb7\x02\x8a\xa9\x06\x2f\xa2\x08\x66\xfa\xa8\x12\x25\x54\x94\x4d\x1b\x01\xb2\xe3\x8c\x8d\x39\x7a\xb8\x77\x00\xf2\x18\x54\x8a\xd3\x9f\xe3\xc6\xe5\x10\x56\x34\x15\xe8\xad\x8c\xed\xc4\xa6\xf0\x82\x7f\x69\xdc\x2f\x92\xa9\x02\xed\x48\x67\x32\x4c\x3a\xcb\xbb\x6b\x77\x1e\x1f\x96\x97\x57\xbf\x83\x73\x6a\xb4\x52\xf6\x2d\xe3\xaa\x1d\xdb\x6b\xf4\xf5\xed\xb5\x8f\xbe\x95\x6a\x11\xd3\x56\x68\x1a\x1e\x79\xc5\x33\x0b\xbf\x25\xff\x82\xed\xe7\xf1\xc5\xf8\xf3\x59\x5c\xd0\x27\xf0\x4e\x22\x85\xc9\x9b\x93\xc2\x51\xe7\xfb\x84\x53\xba\x17\x8f\x4e\xe5\xa5\x59\x28\x69\xd1\xb4\x30\xb8\x5b\xdf\x0c\xe8\x5c\xd8\x55\x2b\xd5\xf5\xee\x50\x6f\x6c\x3f\xa8\x84\x6d\xa4\xea\x7d\x99\x47\x60\xb5\x02\x86\xb6\xb5\x2a\x5a\xc1\x9d\x4d\xd7\xaa\xd9\x02\xe7\xe4\xfd\x78\x93\x3e\x83\x96\x80\xe0\x9e\x3b\xc4\xd4\x8a\xf6\x51\xdd\x43\xf5\x55\xe3\x04\xb3\x6b\xae\x03\x22\x53\x21\xda\xf4\xbf\xc7\x2f\xde\x20\x2b\x1a\x60\x1a\x1a\xc1\xcb\xaf\xb4\x76\x5d\x4d\xce\xef\x9a\x1e\x48\xff\xfe\x4f\x0b\x50\x49\x89\xc3\x8a\xec\x9a\x42\xac\xe4\xdb\xea\x31\xeb\xed\x03\x4a\xec\x44\xed\x55\xac\x78\x26\xbc\x0f\x95\x54\x35\xe8\xef\x2b\xa6\x5e\x5d\x11\x84\x60\x8f\xe9\x2d\x95\x34\x02\x3d\xcd\xb1\x1e\x52\x0c\x8d\xdd\x0f\x68\x85\x4e\x1d\x3d\xaa\xe1\xaf\xb8\xa1\x25\x23\x8a\x59\xb6\xc2\xcc\x97\x3f\x39\x35\x31\x39\x42\x7d\xf4\x90\x4e\x57\x89\xbc\x8b\xca\x30\x48\xd1\x35\x6d\x53\x7f\x4b\xb5\x2f\xf8\xb3\x7f\x84\xda\x38\x4d\x9b\xd8\xdd\x2e\x41\xdb\x1e\x88\x46\x30\x9d\x34\xb7\xf9\xbf\xae\x5c\x6a\x09\xf0\x0e\x50\x90\x62\x6a\xc6\x89\x0a\x6b\xd6\x5e\x5d\xf8\xbc\xa2\x18\xfb\xbf\xd6\x50\x89\xe6\x5b\x2e\x20\x82\xb0\xd5\x9e\x34\x1a\x94\x8b\xb7\x97\x53\xe5\xd1\xb6\x3d\x89\x00\xf4\xf3\x96\xc2\xf8\xcd\x1e\xa5\xd9\x94\xe5\xf3\xb5\x4a\x68\xe4\x8c\x06\xe4\x0b\xcf\xa9\x98\x2b\x59\x93\x32\x95\x5f\xec\x78\x47\x72\x03\x0a\xab\x03\x24\xff\xcd\xfd\x5c\x9b\x76\xfa\x80\xb5\x7e\x15\xe9\x5a\xb4\x01\x05\x19\xc2\xb6\x33\x27\x84\xed\x80\x1d\x93\x75\xad\x98\x6c\x10\x59\x4f\xff\x7b\x50\x9e\x96\xce\x1b\x38\xc1\x67\xb8\xd0\x2e\xe6\xaa\xc0\xb0\xcc\x6d\xcb\xd5\x22\x82\x65\x85\xcb\xf3\x32\x69\x14\x92\x76\xb6\xed\x29\x15\xbd\x55\xb9\x57\x0e\x37\x47\xf5\x0b\xcc\xdf\xcb\x81\x87\x95\x9c\xcb\x9f\x9c\x4a\xaa\xdd\xeb\x60\x3b\x19\x7f\x1e\x5f\x9c\xc5\x4d\xed\xb5\x3e\x5c\x89\x1d\xcc\xc4\x7a\xd0\x3b\xb3\x1b\x19\xb1\x5b\xa3\xfe\x30\x7c\x07\xa6\x70\x6c\x1e\x92\x7d\xf2\x68\xad\x4c\x6e\xb9\xce\xad\xc3\xcc\x36\x78\x46\xf2\x5f\x96\xae\xdd\xa9\x50\x3a\xbb\xd3\x57\xe5\x8b\x15\x83\x5e\x38\x07\xc8\x53\xd9\x01\xfa\x27\xdb\xdf\xe3\xc7\xb3\xdc\x31\x44\xf4\xc7\xa1\xe9\xa5\xf7\xd3\xb0\x34\xb9\xfe\x38\xb3\x2d\x86\xf7\xf6\x72\xf8\x91\x7a\xd7\x4d\x6c\x6b\xdd\x23\x36\xf1\x0a\xf9\xb4\x87\x69\x07\x8c\x37\x2b\xd1\x71\x56\x9a\x95\x6a\x70\xf9\x66\xd9\x3a\xf2\x50\x14\x65\xad\xad\xfd\x9b\xaf\xe7\xf8\xdb\xc9\x33\x20\xad\xde\xb5\x78\x98\x5f\xe7\xad\xd7\x9b\x3d\x0a\xa8\xc5\xa5\x94\xa6\x14\x91\xb2\xf5\x7d\xf1\xfb\x5d\x40\xdc\xaf\x58\xee\x47\xee\x70\x2e\x57\xea\x4e\x3a\x62\xac\x28\xb3\xd8\xc1\x55\xf1\x34\xb7\xba\x9e\xb3\xd1\x57\xbe\x02\x96\x31\x01\xb7\x2a\x2c\x5f\x10\x5a\x56\x2f\xa1\xb9\x3f\x67\xc9\x1a\x62\xd0\x54\x8c\xfe\x1b\x00\x00\xff\xff\x96\x10\x51\xd7\x0f\x2c\x00\x00")
+var _deployKubernetes119AlphaDirectPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\x5b\x6f\xe3\xba\x11\x7e\xf7\xaf\x60\xd3\xf3\x70\x0e\x50\x59\xf1\xb6\x07\x68\x05\xf8\x21\x9b\xf8\xa4\x46\x37\x8e\x91\x64\xcf\x6b\xc0\x50\x63\x99\x35\x45\xaa\xe4\xc8\x1b\x6d\xd1\xff\x5e\x90\xba\x58\x37\x2b\xb6\x37\x17\x14\xf5\x3e\xac\x23\x91\x9c\x8f\x33\xc3\x6f\xe6\x93\xf5\x47\x72\x0d\x12\x34\x45\x08\xc9\x37\x8e\x6b\x72\x16\xd3\x0d\x90\x4d\x6a\x50\xc5\xfc\x3b\x9c\xfd\x89\x84\x8a\x48\x85\x04\x42\x8e\x7f\x18\x8d\x68\xc2\x7f\x07\x6d\xb8\x92\x01\xd9\x4e\x46\x1b\x2e\xc3\x80\xdc\x83\xde\x72\x06\x17\x8c\xa9\x54\xe2\x28\x06\xa4\x21\x45\x1a\x8c\x08\x11\xf4\x09\x84\xb1\xdf\x08\x49\x62\x88\x3d\x66\xf8\x98\x4b\x04\x31\x66\x2a\xf6\x43\x48\x84\xca\x62\x90\x18\x90\x90\x6b\x60\xe8\x25\x5a\x85\x29\x43\xae\xe4\x88\x10\x49\x63\x08\xaa\x89\x1e\x53\x12\xb5\x12\x02\x74\x71\xcf\x24\x94\xd5\x06\x8c\x3c\xcf\x6b\x40\xd4\x4f\x94\x8d\x69\x8a\x6b\xa5\xf9\x77\x6a\x17\x1d\x6f\xfe\x6a\xc6\x5c\xf9\x15\xf8\x3b\x25\xe0\x0d\x21\xc3\x33\x82\x96\x54\xd8\x41\x5b\x6e\x51\x81\xf6\xd8\x2a\xda\xb3\x01\x9d\x0a\x30\xc1\xc8\x23\x34\xe1\xd7\x5a\xa5\x89\x03\xe2\x91\xb3\xb3\x11\x21\x1a\x8c\x4a\x35\x83\xe2\x1a\xc8\x30\x51\x5c\xa2\x19\x11\xb2\x05\xfd\x54\x5c\x8e\x00\xdd\xff\xdf\x28\xb2\xb5\xfb\x26\xb8\xc9\x2f\x85\x20\x00\xc1\x7d\x4d\x93\x90\x16\x5f\x99\x06\xfb\xb5\x63\x93\x29\xa5\x43\x2e\xeb\x6e\xeb\x82\x10\x40\x0d\xbc\x15\x02\x83\x4a\xd3\x08\xf6\x1a\x67\x86\x17\x43\x18\x4d\x28\xe3\xc8\xf7\x41\xa9\x00\xec\x30\x15\x46\x5b\x50\x92\xea\x7e\x01\xf5\xa0\x50\x24\x2a\xec\x31\xdc\x99\x4a\x93\xc4\x74\x27\x6b\x48\x04\x67\xd4\x40\x5f\x24\x4f\xc8\xe8\x4b\x91\x1a\x04\xfd\x11\x89\xad\x53\x29\x41\x1f\x95\xc5\x89\xdd\x99\x41\x90\xb8\x55\x22\x8d\x4f\x0b\xe0\x51\xb1\x6a\x19\x64\x82\xf2\xf8\x70\xab\x45\xae\x1c\x9d\xab\x65\xa2\x0a\x6a\xf6\x1e\x98\x96\xb9\xc3\x58\x60\x0b\x1d\x0a\x38\x32\xdb\xbb\x7b\x91\x34\x31\x6b\x85\xe3\x97\x36\x55\x84\xac\x18\x3e\xb4\xab\xd7\xb2\x61\x4b\x40\x77\xc3\x2f\x98\x7a\x99\x46\xa4\x0a\x5f\x33\x28\x47\x2c\x77\x5a\xc5\xfa\xcc\x65\xc8\x65\xf4\x96\xb5\xd6\xf0\xe6\xd1\x56\x02\x86\x0a\x97\x12\x70\x07\x2b\x6b\xbd\xf4\xcf\xc0\x66\x46\x84\xd4\xaa\xef\xe1\x45\xd3\xa4\x4f\xff\x04\x86\x8e\x5b\x7a\x7b\x8f\x77\x69\x19\x6a\x04\xfb\x31\x71\x38\xd5\xdb\xf5\xca\x70\x14\xa1\xbf\x83\xdf\xdb\xdd\xe4\x47\xb6\x91\x26\x01\x66\x8d\x25\x4a\x63\x55\xe1\x35\x06\x64\x72\x7e\x7e\x7e\xee\x50\x20\xd5\x11\xe0\xb2\x71\xd5\x80\x00\x86\x4a\xe7\x38\x69\x92\xec\xb3\x79\xc2\x26\x3e\xd0\x5d\x31\xa0\xe6\xcc\x9c\xe0\xab\x49\xaf\xaf\x26\x6f\xed\x2b\x42\x30\x4b\x20\x20\x0b\x15\x82\xb5\xda\x71\x9e\xed\xc3\x76\xc7\xf9\x1e\x29\xc2\x2a\x15\xf7\xf0\xa1\xda\xa5\x74\x64\xd9\x0e\x06\x64\xd2\xf1\x53\x6c\x6b\xc6\x97\x1a\xae\x17\x5c\x77\x12\x70\x93\x67\xd4\x62\x00\x3f\x42\x9c\x08\x8a\x50\xa0\xaa\x39\xcd\x41\x92\x52\xa1\x23\xa0\x0a\x65\x2f\x10\xc3\x34\xb5\x71\xb2\x4b\x53\x2e\x41\x9b\x62\xb4\x68\xec\xf0\xc5\x3d\x9e\xb4\xcb\xbd\x13\xbf\xc1\xd3\x5a\xa9\x4d\x40\x78\x24\x95\x06\x37\xb4\x8c\x8d\x03\xb3\x5a\x71\xc9\x31\xdb\xc1\xb3\xd5\xfe\xa2\x73\xd5\x46\xf2\x5f\x29\xd7\x10\x5e\xa5\x9a\xcb\xe8\x9e\xad\x21\x4c\x05\x97\xd1\xdc\x2d\x5c\x5c\x9e\x3d\x03\x4b\x2d\xa6\xfa\xcc\x7c\xcd\xfb\x22\xf6\x0f\xa0\x63\xd3\xbc\xed\xe5\xa9\x30\x7b\x4e\x34\x18\xd3\xf4\x74\x39\x62\x03\x59\xd0\xb7\xc1\x1e\xff\x95\x1f\x95\x80\xa6\x36\xdb\xc8\x42\xe1\x5c\x76\xee\x6f\xa9\x48\xa1\x63\xca\x75\x41\x52\x9d\xf5\x5d\x5e\x51\x61\xa0\xbc\xb3\x0b\x74\xb9\x84\x55\x99\x71\x4c\x65\xb8\x5b\xd3\x23\x7e\x6a\xb4\x2f\x14\xa3\xc2\x7f\xe2\xd2\xaf\x02\x1f\x6a\xbe\xad\x81\xf6\x88\xb7\x9d\xfe\xb9\xfe\xa7\x50\x51\xc4\x65\xe4\xad\x94\x8e\x29\x4e\x11\x9e\xb1\x7e\x3b\x56\x21\x4c\x7b\x76\xef\x11\xaf\xd4\xd2\xd3\x54\xf2\xe7\xc0\xf7\x7d\x66\xb8\xdf\x4c\xb6\xb1\x51\x6c\x53\x9f\xa3\x21\xe2\x06\x75\x36\x2b\xe7\x22\x4b\x02\xdf\x3f\x1f\xbb\x7f\xc1\xae\x56\x14\xe3\x6d\x48\x79\x38\xfd\xe9\xe7\x7f\x7c\xfd\x3c\x7b\x5c\xdc\x5e\xcd\x1e\x17\x17\x37\xb3\x5f\xea\x63\x18\xfd\x8d\x0b\x98\xfa\x0c\x34\x1a\x9f\xd1\x31\xd3\x8d\x2d\xd8\xeb\xf5\x11\x28\x4c\x7b\xc8\x06\xb2\xf6\x88\x0d\x64\xf5\x11\xb9\x1f\x2d\x07\x4d\x7f\xfa\x79\x79\x33\xbb\x79\xbc\xbc\x9f\x3f\x5e\xdd\xcd\x7f\x9f\xdd\x75\x21\x15\xf4\xff\xc5\x69\xa6\x69\xb0\xa3\x75\xfb\x01\xb9\xad\x47\x2e\xe7\xbc\xe6\xfe\x46\xad\xf4\xf9\x4d\xab\xb8\x99\x41\x2b\x0e\x22\x2c\xda\x99\xfa\xa7\x55\xef\x9a\x37\xdd\xa4\x25\xc5\x75\xe0\x4e\xe7\xd8\x7a\xd7\x52\x56\x07\xcd\xc3\xec\xee\x66\xbe\xb8\x78\x98\xdf\x2e\x1e\xbf\xdc\x5e\x3f\x2e\x2f\x1e\xfe\xde\xc6\x14\x10\x1f\xe3\xc4\x47\xd0\x71\xf1\xc0\xc3\xe6\x52\x67\xa9\x3e\x5f\x75\x97\xea\x1e\xb9\xce\x42\xd7\xb7\x57\xb3\xcf\x5f\xaf\xbb\x73\x9f\x7f\x3d\xff\x5b\xce\x3b\x97\x8b\xe9\xce\xcd\x3c\xa6\x11\x04\xc4\x2d\xd8\x3e\x0f\x01\xa3\x92\xea\xac\x39\x76\x99\x0a\xb1\x54\x82\xb3\x2c\x20\xf3\xd5\x42\xe1\x52\x83\x01\xb9\x4b\x94\x5a\x75\x6a\x1d\xab\xaa\x90\x97\x90\xab\x53\xbb\x6c\xd5\xf5\xfa\x4a\xbb\x26\x21\xff\x18\x60\xa9\xe6\x98\x5d\x5a\xbd\xf6\x8c\x4d\x5a\xa4\xe1\xad\x14\xd9\x9d\x52\x2e\x97\x4d\x66\x10\xe2\x80\xa0\x4e\x77\xd1\xab\x85\xe2\x06\x8c\xb1\x5b\x72\xb1\x1e\x8c\x53\x2e\x15\x6f\x6c\x47\xda\xd8\x41\x6c\xaf\x14\xf3\xdd\xa9\xe8\xc0\x2f\xcf\xb2\x3b\x60\xfb\x66\x1a\xde\x99\x97\x88\x34\xe2\xd2\xb3\xd4\x00\xe8\x85\x5c\xef\x99\x8b\x71\xd2\x99\x8b\x71\x52\x9b\xe1\x11\xaa\xa3\x06\x6a\xcf\x2b\x9e\x6a\x65\x35\x16\xf2\x76\x75\xad\xe0\x33\x90\xa8\xa9\x18\x60\x45\x97\x2b\x34\x0c\x6d\xa5\x98\x1e\x42\x6c\xde\x0a\x28\xa6\x1a\xbc\x88\x22\x98\xe9\x83\x4a\x94\x50\x51\x36\x6d\x04\xc8\x8e\x33\x36\xe6\xe8\xe1\xde\x01\xc8\x63\x50\x29\x4e\x7f\x8d\x1b\x97\x43\x58\xd1\x54\xa0\xb7\x32\xb6\x51\x9b\xc2\x33\xfe\xa5\x71\xbf\x48\xa6\x0a\xb4\x23\x9d\xc9\x30\xe9\x2c\x6f\xaf\xdc\x79\xbc\x5f\x5e\x5c\xfe\x00\xe7\xd4\x68\xa5\x6c\x6b\xc6\x55\xb7\xb6\xd7\xe8\xeb\xdb\x6b\x1f\x7d\xab\xe4\x22\xa6\xad\x0e\x35\x3c\xf2\x8a\x47\x1a\x7e\x4b\x1d\x06\xdb\x4f\xe3\xf3\xf1\xa7\x93\xb8\xa0\x4f\xff\x1d\x45\x0a\x93\x37\x27\x85\x83\xce\xf7\x11\xa7\x74\x2f\x1e\x9d\xca\x0b\xb3\x50\xd2\xa2\x69\x61\x70\xb7\xbe\x1a\xd0\xb9\xee\xab\x56\xaa\xcb\xe1\xa1\xd6\xd9\x7e\x50\x09\xdb\x67\xd5\xdb\x36\x8f\xc0\x6a\x05\x0c\x6d\xe7\x55\x74\x8a\x3b\x9b\xae\x93\xb3\x05\xce\xa9\xff\xf1\x26\x7d\x02\x2d\x01\xc1\x3d\x96\x88\xa9\xd5\xf4\xa3\xba\x87\xea\xab\xc6\x09\x66\x57\x5c\x07\x44\xa6\x42\xb4\xe9\x7f\x8f\x5f\xbc\x41\x56\x34\xc0\x34\x34\x82\x97\x5f\x69\xed\xba\x9a\x9c\xdf\x35\x3d\x90\xfe\xfd\x9f\x16\xa0\x92\x12\x87\x05\xdb\x15\x85\x58\xc9\xb7\x95\x6b\xd6\xdb\x2f\x08\xb5\x23\xa5\x59\xb1\xe2\x89\xf0\x3e\x54\x71\xd5\xa0\xbf\xaf\xd6\x7a\x75\xc1\x10\x82\x3d\xa6\x37\x54\xd2\x08\xf4\x34\xc7\xfa\x83\x82\xa2\xe1\x9c\x01\x29\xd1\x29\xb3\x07\xe9\x81\x8a\x3a\x5a\x2a\xa3\x98\x65\x0b\xd0\x7c\xf9\x8b\x13\x1b\x93\x03\xc4\x49\x0f\x27\x75\x85\xca\xbb\x88\x10\x83\x14\x5d\x4f\x37\xf5\xb7\x54\xfb\x82\x3f\xf9\x07\x88\x91\xe3\xa4\x8b\xdd\xed\x12\xb4\x6d\x91\x68\x04\xd3\x49\x73\x9b\xff\xeb\xc2\xa6\x96\x00\xef\x00\x05\x29\xa6\x66\x9c\xa8\xb0\x66\xed\xd5\x75\xd1\x2b\x6a\xb5\xff\x6b\x89\x95\x68\xbe\xe5\x02\x22\x08\x5b\xdd\x4b\xa3\x7f\x39\x7f\x7b\xb5\x55\x1e\x6d\xdb\xb2\x08\x40\x3f\xef\x38\x8c\xdf\x6c\x61\x9a\x3d\x5b\x3e\x5f\xab\x84\x46\xce\x68\x40\x3e\xf3\x9c\xa9\xb9\x92\x35\xa5\x53\xf9\xc5\x8e\x77\x24\x37\x20\xc0\x3a\x40\xf2\x5f\xec\x4f\xb5\x69\xa7\x0f\x58\xeb\x17\x99\xae\x83\x1b\x10\x98\x21\x6c\x3b\x73\x42\xd8\x0e\xd8\x31\x59\xd7\x8a\xc9\x06\x91\xf5\xb4\xc7\x2f\xaa\xd7\xd2\x79\x03\x27\xf8\x04\x17\xda\xc5\x5c\x15\x18\x56\xc1\x6d\x35\x5b\x44\xb0\xac\x70\x79\x5e\x26\x8d\x42\xd2\xce\xb6\x3d\xa5\xa2\xb7\x2a\xf7\xaa\xe5\xe6\xa8\x7e\xfd\xf9\xa3\x1c\xf8\xb2\xd0\x73\xf9\x93\x53\x49\xb5\x7b\x1d\x6c\x27\xe3\x4f\xe3\xf3\x93\xb8\xa9\xbd\xd6\x87\x0b\xb5\x17\x33\xb1\x1e\xf4\xce\xec\x46\x46\xec\xd6\xa8\x3f\x4a\xdf\x81\x29\x1c\x9b\x87\x64\x9f\x7a\x5a\x2b\x93\x5b\xae\x73\xeb\x30\xb3\x0d\x9e\x91\xfc\x77\xa9\x2b\x77\x2a\x94\xce\x6e\xf5\x65\xf9\x5a\xc6\xa0\x17\x4e\x01\xf2\x58\x76\x80\xfe\xd1\xf6\xf7\xf8\xf1\x24\x77\x0c\x11\xfd\x61\x68\x7a\xe9\xfd\x38\x2c\x4d\xae\x3f\xcc\x6c\x8b\xe1\xbd\xbd\x1c\x7e\xa0\x1c\x76\x13\xdb\x52\xf8\x80\x4d\xbc\x42\x3e\xed\x61\xda\x01\xe3\xcd\x4a\x74\x98\x95\x66\xa5\x1a\x5c\xbe\x59\xb6\x0e\x3c\x14\x45\x59\x6b\x3f\x1a\x68\xbe\xdc\xe3\x6f\x27\x4f\x80\xb4\x7a\x53\xe3\x7e\x7e\x95\xb7\x5e\x6f\xf6\xa4\xa0\x16\x97\x52\xb9\x52\x44\xca\xd6\x77\xc5\xaf\x7f\x01\x71\xbf\x81\xb9\x9f\xc8\xc3\xb9\x5c\xa9\x5b\xe9\x88\xb1\xa2\xcc\x62\x07\x97\xc5\xc3\xde\xea\x7a\xce\x46\x5f\xf8\x0a\x58\xc6\x04\xdc\xa8\xb0\x7c\xbd\x68\x59\xbd\xc2\xe6\xfe\x9c\x25\x6b\x88\x41\x53\x31\xfa\x6f\x00\x00\x00\xff\xff\xdb\x89\xc9\x86\xd0\x2b\x00\x00")
func deployKubernetes119AlphaDirectPmemCsiYamlBytes() ([]byte, error) {
return bindataRead(
@@ -180,12 +180,12 @@ func deployKubernetes119AlphaDirectPmemCsiYaml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "deploy/kubernetes-1.19-alpha/direct/pmem-csi.yaml", size: 11279, mode: os.FileMode(436), modTime: time.Unix(1608146561, 0)}
+ info := bindataFileInfo{name: "deploy/kubernetes-1.19-alpha/direct/pmem-csi.yaml", size: 11216, mode: os.FileMode(420), modTime: time.Unix(1608283282, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
-var _deployKubernetes119AlphaLvmPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\x5b\x6f\xe3\xb8\x15\x7e\xf7\xaf\x60\xa7\xfb\xb0\x0b\x54\x56\x3c\xed\x02\xad\x00\x3f\x64\x12\x6f\x6a\x74\xe2\x18\x49\x66\x5f\x03\x86\x3a\x96\x59\x53\xa4\x4a\x1e\x79\xa2\x2d\xfa\xdf\x0b\x52\x17\xeb\x66\xf9\xb2\xb9\xa0\xa8\xe7\x61\x1c\x8a\xe4\xf9\x78\xce\xe1\x77\xce\x67\xfb\x8f\xe4\x06\x24\x68\x8a\x10\x92\xef\x1c\xd7\xe4\x53\x4c\x37\x40\x36\xa9\x41\x15\xf3\xdf\xe0\xd3\x9f\x48\xa8\x88\x54\x48\x20\xe4\xf8\x87\xd1\x88\x26\xfc\x57\xd0\x86\x2b\x19\x90\xed\x64\xb4\xe1\x32\x0c\xc8\x82\xc6\x60\x12\xca\x60\x14\x03\xd2\x90\x22\x0d\x46\x84\x08\xfa\x0c\xc2\xd8\x77\x84\x24\x31\xc4\x1e\x33\x7c\xcc\x25\x82\x18\x33\x15\xfb\x21\x24\x42\x65\x31\x48\x0c\x88\xd8\xc6\x5e\xa2\x55\x98\x32\xe4\x4a\x8e\x08\x91\x34\x86\xa0\x5a\x35\xf2\x3c\xaf\xdf\xf2\x03\xe8\x2d\x67\x70\xc9\x98\x4a\x25\xbe\x91\x79\x8f\x29\x89\x5a\x09\x01\xba\x78\xe6\x0e\x3b\x80\x4f\x3f\x53\x36\xa6\x29\xae\x95\xe6\xbf\x51\xbb\xe9\x78\xf3\x57\x33\xe6\xca\xaf\x90\xdf\x2b\xf1\x56\xee\xf2\xe0\x05\x41\x4b\x2a\xec\xa4\x2d\xb7\x90\x40\x7b\x6c\x15\xed\x41\xaf\x53\x01\x26\x18\x79\x84\x26\xfc\x46\xab\x34\x71\x28\x3c\xf2\xe9\xd3\x88\x10\x0d\x46\xa5\x9a\x41\x31\x06\x32\x4c\x14\x97\x68\x46\x84\x6c\x41\x3f\x17\xc3\x11\xa0\xfb\xff\x3b\x45\xb6\x76\xef\x04\x37\xf9\x50\x08\x02\x10\xdc\xdb\x34\x09\x69\xf1\x96\x69\xb0\x6f\x3b\x36\x99\x52\x3a\xe4\xb2\xee\xb3\x2e\x08\x01\xd4\xc0\x5b\x21\x30\xa8\x34\x8d\x60\xaf\x71\x66\x78\x31\x85\xd1\x84\x32\x8e\x7c\x1f\x94\x0a\xc0\x0e\x53\x61\xb4\x05\x25\xa9\x9e\x17\x50\x8f\x0a\x45\xa2\xc2\x1e\xc3\x9d\xa5\x34\x49\x4c\x77\xb1\x86\x44\x70\x46\x0d\xf4\x45\xf2\x8c\x74\xbe\x12\xa9\x41\xd0\xef\x9e\xd5\x3a\x95\x12\xf4\x49\x29\x9c\xd8\x63\x19\x04\x89\x5b\x25\xd2\xf8\xbc\xe8\x9d\x14\xa8\x96\x41\x26\x28\x8f\x8f\xb7\x5a\x24\xca\xc9\x89\x5a\x66\xa9\xa0\x66\xef\x6d\x69\x99\x3b\x8e\x02\xb6\xd0\xb9\xff\x27\xa6\x7a\xf7\x2c\x92\x26\x66\xad\x70\x7c\xe8\x50\x45\xc8\x8a\xe9\x43\xa7\x7a\x2d\x1b\x96\xfc\xbb\x07\x3e\x60\xea\x30\x87\x48\x15\xbe\x66\x50\x4e\xd8\xee\xbc\x5a\xf5\x85\xcb\x90\xcb\xe8\xcd\x4a\xac\xe1\xcd\x7b\xad\x04\x0c\x95\x2c\x25\xe0\x1e\x56\xd6\x74\xe9\x9c\x81\x93\x8c\x08\xa9\x15\xdd\xe3\xcb\xa5\x49\x9f\xff\x09\x0c\x1d\xb1\xf4\xf6\x1b\xef\xd2\x29\xd4\xa8\xf5\x03\x82\x70\xae\xab\xeb\x05\xe1\x24\x2a\x7f\x07\xa7\xb7\xdb\xc7\x0f\xeb\x1b\x4d\x02\xcc\x5a\x4a\x94\xc6\xaa\xaa\x6b\x0c\xc8\xe4\xe2\xe2\xe2\xc2\x41\x40\xaa\x23\xc0\x65\x63\xd4\x80\x00\x86\x4a\xe7\x20\x69\x92\xec\xb3\x79\xea\x09\x3e\xca\x51\x31\xa0\xe6\xcc\x9c\xe1\xa5\x49\xaf\x97\x26\x6f\xea\x25\x42\x30\x4b\x20\x20\x0b\x15\x82\x35\xd9\x71\x9b\x6d\xb9\x76\xf7\xf7\x01\x29\xc2\x2a\x15\x0f\xf0\x71\x02\xa5\x74\x61\xd9\xf6\x05\x64\xd2\xf1\x50\x6c\xcb\xc3\xd7\x1a\xa8\x03\x4e\x3b\x1d\xb5\xc9\xb3\x68\x31\x00\x1e\x21\x4e\x04\x45\x28\x20\xd5\xdc\xe5\xf0\x48\xa9\xd0\xd1\x4d\x05\xb1\x17\x85\x61\x9a\xda\x08\xd9\xad\x29\x97\xa0\x4d\x31\x5b\x34\x8e\x77\xf0\x80\xa7\x1f\x71\xef\xaa\xef\xf0\xbc\x56\x6a\x13\x10\x1e\x49\xa5\xc1\x4d\x2d\xa3\xe2\x90\xac\x56\x5c\x72\xcc\x76\xd8\x6c\x49\xbf\xec\x8c\xda\x18\xfe\x2b\xe5\x1a\xc2\xeb\x54\x73\x19\x3d\xb0\x35\x84\xa9\xe0\x32\x9a\xbb\x8d\x8b\xe1\xd9\x0b\xb0\xd4\x62\xaa\xaf\xcc\xf7\x7c\x28\xa2\xfe\x08\x3a\x36\xcd\xc7\x5e\x9e\x04\xb3\x97\x44\x83\x31\x4d\x37\x97\x33\x36\x90\x05\x7d\x07\xec\x71\x5e\xf9\x52\x09\x68\x6a\xf3\x8c\x2c\x14\xce\x65\xe7\xf9\x96\x8a\x14\x3a\xa6\x5c\xab\x23\xd5\xa7\xbe\xe1\x15\x15\x06\xca\x27\xbb\x28\x97\x5b\x58\x1d\x19\xc7\x54\x86\xbb\x3d\x3d\xe2\xa7\x46\xfb\x42\x31\x2a\xfc\x67\x2e\xfd\x2a\xea\xa1\xe6\xdb\x1a\x68\x8f\x78\xdb\xe9\x9f\xeb\x7f\xc6\x2a\x84\x69\xcf\xf1\x3c\xe2\x95\x72\x78\x9a\x4a\xfe\x12\xf8\xbe\xcf\x0c\xf7\x9b\xa9\x34\x36\x8a\x6d\xea\x6b\x34\x44\xdc\xa0\xce\x66\xe5\x5a\x64\x49\xe0\xfb\x17\x63\xf7\x2f\xd8\x51\x7f\x31\xdf\xc6\x8c\x87\xd3\x1f\x7e\xfc\xc7\xb7\x2f\xb3\xa7\xc5\xdd\xf5\xec\x69\x71\x79\x3b\xfb\xa9\x3e\x87\xd1\x5f\xb8\x80\xa9\xcf\x40\xa3\xf1\x19\x1d\x33\x8d\x8d\xe7\xa0\xb1\x3e\x03\x85\x69\x4f\xd9\x40\xd6\x9e\xb1\x81\xac\x3e\x23\x77\x94\xa5\x97\xe9\x0f\x3f\x2e\x6f\x67\xb7\x4f\x57\x0f\xf3\xa7\xeb\xfb\xf9\xaf\xb3\xfb\x2e\xa4\x82\xd3\xbf\x3a\xe5\x33\x0d\x76\x5c\x6d\x5f\x20\xb7\xf5\xd0\xe4\x74\xd6\x3c\xdf\xa8\x95\x1f\xbf\x68\x15\x37\x53\x64\xc5\x41\x84\x45\x6b\x52\x7f\xb5\x2a\x58\xf3\xa1\x5b\xb4\xa4\xb8\x0e\xdc\xf5\x1b\x5b\xef\x5a\x42\xea\xa0\x79\x9c\xdd\xdf\xce\x17\x97\x8f\xf3\xbb\xc5\xd3\xd7\xbb\x9b\xa7\xe5\xe5\xe3\xdf\xdb\x98\x02\xe2\x63\x9c\xf8\x08\x3a\x2e\x3e\xb3\xf0\x84\x8a\x3a\x5b\xf5\xf9\xaa\xbb\x55\xf7\x4e\x75\x36\xba\xb9\xbb\x9e\x7d\xf9\x76\xd3\x5d\xfb\xf2\xf3\xc5\xdf\x72\x62\xb9\x5a\x4c\x77\x6e\xe6\x31\x8d\x20\x20\x6e\xc3\x76\xc2\x07\x8c\x4a\xaa\xb3\xe6\xdc\x65\x2a\xc4\x52\x09\xce\xb2\x80\xcc\x57\x0b\x85\x4b\x0d\x06\xe4\x2e\x51\x6a\x85\xa7\x75\x6f\xaa\xea\x5c\x42\xae\xae\xe5\xb2\x55\xac\xeb\x3b\xed\x2a\x7f\xfe\x32\xc0\x52\xcd\x31\xbb\xb2\xaa\xeb\x05\x9b\xbc\x47\xc3\x3b\x29\xb2\x7b\xa5\x5c\x2e\x9b\xcc\x20\xc4\x01\x41\x9d\xee\xa2\x57\x0b\xc5\x2d\x18\x63\x8f\xe4\x62\x3d\x18\xa7\x5c\xf0\xdd\xda\xee\xb2\x71\x82\xd8\x8e\x14\xeb\xdd\xad\xe8\xc0\x2f\xef\xb2\xbb\x60\xfb\x56\x1a\xde\x59\x97\x88\x34\xe2\xd2\xb3\xd4\x00\xe8\x85\x5c\xef\x59\x8b\x71\xd2\x59\x8b\x71\x52\x5b\xe1\x11\xaa\xa3\x06\x6a\xcf\x2b\x3e\x98\xca\x6a\x2c\xe4\xed\xaa\x56\xc1\x67\x20\x51\x53\x31\x40\x7b\x2e\x57\x68\x18\xda\x52\x30\x3d\x86\xd8\xbc\x15\x50\x4c\x35\x78\x11\x45\x30\xd3\x47\x95\x28\xa1\xa2\x6c\xda\x08\x90\x9d\x67\x6c\xcc\xd1\xc3\xbd\x13\x90\xc7\xa0\x52\x9c\xfe\x1c\x37\x86\x43\x58\xd1\x54\xa0\xb7\x32\xb6\x01\x9b\xc2\x0b\xfe\xa5\xf1\xbc\x48\xa6\x0a\xb4\x23\x9d\xc9\x30\xe9\x2c\xef\xae\xdd\x7d\x7c\x58\x5e\x5e\xfd\x0e\xce\xa9\xd1\x4a\xd9\xb4\x8c\xab\x46\x6c\xaf\xd1\xd7\xb7\xd7\xbe\xfa\x56\x95\x45\x4c\x5b\x41\x69\x78\xe4\x15\x1f\x4c\xf8\x2d\xa5\x17\x6c\x3f\x8f\x2f\xc6\x9f\xcf\xe2\x82\x3e\x2d\x77\x12\x29\x4c\xde\x9c\x14\x8e\xba\xdf\x27\xdc\xd2\xbd\x78\x74\x2a\x2f\xcd\x42\x49\x8b\xa6\x85\xc1\x3d\xfa\x66\x40\xe7\x32\xae\xda\xa9\x2e\x6d\x87\x1a\x63\xfb\x42\x25\x6c\x23\x55\xef\xcb\x3c\x02\xab\x15\x30\xb4\xad\x55\xd1\x0a\xee\x6c\xba\x56\xcd\x16\x38\xa7\xe4\xc7\x9b\xf4\x19\xb4\x04\x04\xf7\xf9\x42\x4c\xad\x3e\x1f\xd5\x3d\x54\xdf\x35\x4e\x30\xbb\xe6\x3a\x20\x32\x15\xa2\x4d\xff\x7b\xfc\xe2\x0d\xb2\xa2\x01\xa6\xa1\x11\xbc\x7c\xa4\x75\xea\x6a\x71\xfe\xd4\xf4\x40\xfa\xf7\x7f\x5a\x80\x4a\x4a\x1c\x16\x62\xd7\x14\x62\x25\xdf\x50\x86\x59\x57\x1f\x10\x60\x27\x4a\xae\x62\xc7\x73\xb0\x7d\xa8\x92\xaa\xe1\x7e\x47\x0d\xf5\xea\x42\x20\x04\x7b\x3b\x6f\xa9\xa4\x11\xe8\xa9\xd8\xc6\x87\x54\x42\xe3\xdc\x03\xfa\xa0\x53\x3b\x8f\x6a\xf2\x2b\x3e\x68\x49\x87\x62\x95\xad\x2a\xf3\xe5\x4f\x4e\x41\x4c\x8e\x50\x1c\x3d\x44\xd3\x55\x1f\xef\xa2\x2c\x0c\x52\x74\x8d\xda\xd4\xdf\x52\xed\x0b\xfe\xec\x1f\xa1\x30\x4e\xd3\x23\xf6\xb4\x4b\xd0\xb6\xef\xa1\x11\x4c\x27\xcd\x63\xfe\xaf\xab\x95\x5a\x02\xbc\x03\x14\xa4\x98\x9a\x71\xa2\xc2\x9a\xb5\x57\x17\x3b\xaf\x28\xc0\xfe\xaf\x75\x53\xa2\xf9\x96\x0b\x88\x20\x6c\xb5\x24\x8d\xa6\xe4\xe2\xed\x25\x54\x79\xb5\x6d\x1f\x22\x00\xfd\xbc\x8d\x30\x7e\xb3\x2f\x69\x36\x62\xf9\x7a\xad\x12\x1a\x39\xa3\x01\xf9\xc2\x43\xae\xc1\xd5\x8a\x9a\x7c\xa9\xfc\x62\xe7\x3b\x92\x1b\x50\x55\x1d\x20\xf9\x37\xe9\xe7\xda\xb4\xcb\x07\xac\xf5\x2b\x47\xd7\x96\x0d\xa8\xc6\x10\xb6\x9d\x35\x21\x6c\x07\xec\x98\xac\x6b\xc5\x64\x83\xc8\x7a\x7a\xde\x83\x92\xb4\x74\xde\xc0\x0d\x3e\xc3\x85\x76\x33\x57\x05\x86\xa5\x6d\x5b\xa2\x16\x11\x2c\x2b\x5c\x9e\x97\x49\xa3\x90\xb4\xb3\x6d\x4f\xa9\xe8\xad\xca\xbd\x12\xb8\x39\xab\x5f\x54\xfe\x5e\x0e\x3c\xac\xde\x5c\xfe\xe4\x54\x52\x9d\x5e\x07\xdb\xc9\xf8\xf3\xf8\xe2\x2c\x6e\x6a\xef\xf5\xe1\xea\xeb\x60\x26\xd6\x83\xde\x59\xdd\xc8\x88\xdd\x1e\xf5\x0f\xc0\x77\x60\x0a\xc7\xe6\x21\xd9\x27\x89\xd6\xca\xe4\x96\xeb\xdc\x3a\xcc\x6c\x83\x77\x24\xff\x12\xe9\xda\xdd\x0a\xa5\xb3\x3b\x7d\x55\xfe\x62\x62\xd0\x0b\xe7\x00\x79\x2a\x3b\x40\xff\x64\xfb\x7b\xfc\x78\x96\x3b\x86\x88\xfe\x38\x34\xbd\xf4\x7e\x1a\x96\x26\xd7\x1f\x67\xb6\xc5\xf0\xde\x5e\x0e\x3f\x52\xe3\xba\x85\x6d\x7d\x7b\xc4\x21\x5e\x21\x9f\xf6\x30\xed\x80\xf1\x66\x25\x3a\xce\x4a\xb3\x52\x0d\x6e\xdf\x2c\x5b\x47\x5e\x8a\xa2\xac\xb5\xf5\x7e\xf3\x77\x37\xfe\x76\xf2\x0c\x48\xab\xdf\x51\x3c\xcc\xaf\xf3\xd6\xeb\x6d\xe4\x7f\x2d\x28\xa5\x28\xa5\x88\x94\xad\xef\x8b\x2f\xec\x02\xe2\xbe\xb6\x72\xdf\x64\x87\x73\xb9\x52\x77\xd2\xb1\x62\xc5\x97\x05\xfc\xab\xe2\xe3\xdb\x6a\x3c\xa7\xa2\xaf\x7c\x05\x2c\x63\x02\x6e\x55\x58\xfe\xec\x67\x59\xfd\xb4\xcc\xfd\x39\x4b\xd6\x10\x83\xa6\x62\xf4\xdf\x00\x00\x00\xff\xff\xf3\x1b\xdd\x42\xd9\x2b\x00\x00")
+var _deployKubernetes119AlphaLvmPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\xdd\x6f\xe3\xb8\x11\x7f\xf7\x5f\xc1\x6e\xef\xe1\x0e\xa8\xac\xf8\xda\x03\x5a\x01\x7e\xc8\x26\xbe\xd4\xe8\x26\x31\x92\xec\xbd\x06\x0c\x35\x96\x59\x53\xa4\x4a\x8e\xb4\xd1\x15\xfd\xdf\x0b\x52\x1f\xd6\x97\x15\xdb\x9b\x0f\x14\xf5\x3e\xac\x23\x91\x9c\x1f\x67\x86\xbf\x99\x9f\xac\x3f\x92\x2b\x90\xa0\x29\x42\x48\xbe\x71\xdc\x90\x4f\x31\xdd\x02\xd9\xa6\x06\x55\xcc\x7f\x87\x4f\x7f\x22\xa1\x22\x52\x21\x81\x90\xe3\x1f\x26\x13\x9a\xf0\xdf\x40\x1b\xae\x64\x40\xb2\xd9\x64\xcb\x65\x18\x90\x7b\xd0\x19\x67\x70\xce\x98\x4a\x25\x4e\x62\x40\x1a\x52\xa4\xc1\x84\x10\x41\x9f\x40\x18\xfb\x8d\x90\x24\x86\xd8\x63\x86\x4f\xb9\x44\x10\x53\xa6\x62\x3f\x84\x44\xa8\x3c\x06\x89\x01\x11\x59\xec\x25\x5a\x85\x29\x43\xae\xe4\x84\x10\x49\x63\x08\xea\x59\x1e\x53\x12\xb5\x12\x02\x74\x79\xcf\x24\x94\x35\x06\x4c\x3c\xcf\x6b\xe1\xd3\x4f\x94\x4d\x69\x8a\x1b\xa5\xf9\xef\xd4\x2e\x3a\xdd\xfe\xd5\x4c\xb9\xf2\x6b\xe4\x77\x4a\xc0\x5b\xe1\x85\x67\x04\x2d\xa9\xb0\x83\x32\x6e\x21\x81\xf6\xd8\x3a\xda\x83\x5e\xa7\x02\x4c\x30\xf1\x08\x4d\xf8\x95\x56\x69\xe2\x50\x78\xe4\xd3\xa7\x09\x21\x1a\x8c\x4a\x35\x83\xf2\x1a\xc8\x30\x51\x5c\xa2\x99\x10\x92\x81\x7e\x2a\x2f\x47\x80\xee\xff\x6f\x14\xd9\xc6\x7d\x13\xdc\x14\x97\x42\x10\x80\xe0\xbe\xa6\x49\x48\xcb\xaf\x4c\x83\xfd\xda\xb3\xc9\x94\xd2\x21\x97\x4d\x9f\xf5\x41\x08\xa0\x06\xde\x0a\x81\x41\xa5\x69\x04\x7b\x8d\x33\xc3\xcb\x21\x8c\x26\x94\x71\xe4\xfb\xa0\xd4\x00\x76\x98\x4a\xa3\x1d\x28\x49\x7d\xbf\x84\x7a\x50\x28\x12\x15\x0e\x18\xee\x4d\xa5\x49\x62\xfa\x93\x35\x24\x82\x33\x6a\x60\x28\x92\x27\xa4\xf3\x85\x48\x0d\x82\x7e\xf7\xac\xd6\xa9\x94\xa0\x8f\x4a\xe1\xc4\x6e\xcb\x20\x48\xcc\x94\x48\xe3\xd3\xa2\x77\x54\xa0\x3a\x06\x99\xa0\x3c\x3e\xdc\x6a\x99\x28\x47\x27\x6a\x95\xa5\x82\x9a\xbd\xa7\xa5\x63\xee\x30\x0a\xc8\xa0\x77\xfe\x8f\x4c\xf5\xfe\x5e\x24\x4d\xcc\x46\xe1\xf4\xa5\x4d\x95\x21\x2b\x87\x8f\xed\xea\xb5\x6c\x58\xf2\xef\x6f\xf8\x05\x53\x2f\x73\x88\x54\xe1\x6b\x06\xe5\x88\xe5\x4e\xab\x55\x9f\xb9\x0c\xb9\x8c\xde\xac\xc4\x1a\xde\x3e\xd7\x4a\xc0\x58\xc9\x52\x02\xee\x60\x6d\x4d\x57\xce\x19\xd9\xc9\x84\x90\x46\xd1\x3d\xbc\x5c\x9a\xf4\xe9\x9f\xc0\xd0\x11\xcb\x60\xbf\xf1\x2e\x9d\x42\x83\x5a\x3f\x20\x08\xa7\xba\xba\x59\x10\x8e\xa2\xf2\x77\x70\x7a\xb7\x7d\xfc\xb0\xbe\xd1\x24\xc0\xac\xa5\x44\x69\xac\xab\xba\xc6\x80\xcc\xce\xce\xce\xce\x1c\x04\xa4\x3a\x02\x5c\xb5\xae\x1a\x10\xc0\x50\xe9\x02\x24\x4d\x92\x7d\x36\x8f\xdd\xc1\x47\x39\x2a\x06\xd4\x9c\x99\x13\xbc\x34\x1b\xf4\xd2\xec\x4d\xbd\x44\x08\xe6\x09\x04\xe4\x46\x85\x60\x4d\xf6\xdc\x66\x5b\xae\xdd\xf9\xbd\x47\x8a\xb0\x4e\xc5\x3d\x7c\x9c\x40\xa9\x5c\x58\xb5\x7d\x01\x99\xf5\x3c\x14\xdb\xf2\xf0\xa5\x01\xea\x05\xa7\x1d\x8f\xda\x14\x59\x74\x33\x02\x1e\x21\x4e\x04\x45\x28\x21\x35\xdc\xe5\xf0\x48\xa9\xd0\xd1\x4d\x0d\x71\x10\x85\x61\x9a\xda\x08\xd9\xa5\x29\x97\xa0\x4d\x39\x5a\xb4\xb6\xf7\xe2\x06\x8f\xdf\xe2\xde\x59\xdf\xe0\x69\xa3\xd4\x36\x20\x3c\x92\x4a\x83\x1b\x5a\x45\xc5\x21\x59\xaf\xb9\xe4\x98\xef\xb0\xd9\x92\x7e\xde\xbb\x6a\x63\xf8\xaf\x94\x6b\x08\x2f\x53\xcd\x65\x74\xcf\x36\x10\xa6\x82\xcb\x68\xe9\x16\x2e\x2f\x2f\x9e\x81\xa5\x16\x53\x73\x66\xb1\xe6\x7d\x19\xf5\x07\xd0\xb1\x69\xdf\xf6\x8a\x24\x58\x3c\x27\x1a\x8c\x69\xbb\xb9\x1a\xb1\x85\x3c\x18\xda\xe0\x80\xf3\xaa\x8f\x4a\xac\xd0\x57\xda\x1e\x19\x5c\xca\xde\xfd\x8c\x8a\x14\x7a\xa6\x5c\xab\x23\xd5\xa7\xa1\xcb\x6b\x2a\x0c\x54\x77\x76\x51\xae\x96\xb0\x3a\x32\x8e\xa9\x0c\x77\x6b\x7a\xc4\x4f\x8d\xf6\x85\x62\x54\xf8\x4f\x5c\xfa\x75\xd4\x43\xcd\xb3\x06\x68\x8f\x78\xd9\xfc\xcf\xcd\x3f\x85\x8a\x22\x2e\x23\x6f\xad\x74\x4c\x71\x8e\xf0\x8c\xcd\xdb\xb1\x0a\x61\x3e\xb0\x7b\x8f\x78\x95\x5a\x9e\xa7\x92\x3f\x07\xbe\xef\x33\xc3\xfd\x76\xa6\x4d\x8d\x62\xdb\xe6\x1c\x0d\x11\x37\xa8\xf3\x45\x35\x17\x59\x12\xf8\xfe\xd9\xd4\xfd\x0b\x76\x95\xa1\x1c\x6f\x43\xca\xc3\xf9\x0f\x3f\xfe\xe3\xeb\xe7\xc5\xe3\xcd\xed\xe5\xe2\xf1\xe6\xfc\x7a\xf1\x53\x73\x0c\xa3\xbf\x72\x01\x73\x9f\x81\x46\xe3\x33\x3a\x65\xba\xb5\x05\x7b\xbd\x39\x02\x85\xe9\x0e\xd9\x42\xde\x1d\xb1\x85\xbc\x39\xa2\xf0\xa3\x65\x9f\xf9\x0f\x3f\xae\xae\x17\xd7\x8f\x17\xf7\xcb\xc7\xcb\xbb\xe5\x6f\x8b\xbb\x3e\xa4\x92\xf2\xbf\x38\x61\x34\x0f\x76\x54\x6e\x3f\x20\xb3\x66\xe4\x0a\xb6\x6b\xef\x6f\xd2\x49\x9f\x5f\xb5\x8a\xdb\x19\xb4\xe6\x20\xc2\xb2\x73\x69\x7e\x3a\x05\xae\x7d\xd3\x4d\x5a\x51\xdc\x04\xee\x74\x4e\xad\x77\x2d\x5f\xf5\xd0\x3c\x2c\xee\xae\x97\x37\xe7\x0f\xcb\xdb\x9b\xc7\x2f\xb7\x57\x8f\xab\xf3\x87\xbf\x77\x31\x05\xc4\xc7\x38\xf1\x11\x74\x5c\x3e\xd2\xb0\xb9\xd4\x5b\x6a\xc8\x57\xfd\xa5\xfa\x47\xae\xb7\xd0\xd5\xed\xe5\xe2\xf3\xd7\xab\xfe\xdc\xe7\x5f\xce\xfe\x56\xf0\xce\xc5\xcd\x7c\xe7\x66\x1e\xd3\x08\x02\xe2\x16\xec\x9e\x87\x80\x51\x49\x75\xde\x1e\xbb\x4a\x85\x58\x29\xc1\x59\x1e\x90\xe5\xfa\x46\xe1\x4a\x83\x01\xb9\x4b\x94\x46\x5d\xea\x1c\xab\xba\x78\x57\x90\xeb\x53\xbb\xea\xd4\xf2\xe6\x4a\xbb\xc6\xa0\xf8\x18\x60\xa9\xe6\x98\x5f\x58\x51\xf6\x8c\x6d\x5a\xa4\xe1\xad\x14\xf9\x9d\x52\x2e\x97\x4d\x6e\x10\xe2\x80\xa0\x4e\x77\xd1\x6b\x84\xe2\x1a\x8c\xb1\x5b\x72\xb1\x1e\x8d\x53\xa1\x07\xaf\x6d\xf3\xd9\xda\x41\x6c\xaf\x94\xf3\xdd\xa9\xe8\xc1\xaf\xce\xb2\x3b\x60\xfb\x66\x1a\xde\x9b\x97\x88\x34\xe2\xd2\xb3\xd4\x00\xe8\x85\x5c\xef\x99\x8b\x71\xd2\x9b\x8b\x71\xd2\x98\xe1\x11\xaa\xa3\x16\x6a\xcf\x2b\x9f\x5b\xe5\x0d\x16\xf2\x76\x45\xad\xe4\x33\x90\xa8\xa9\x18\x61\x45\x97\x2b\x34\x0c\x6d\xa5\x98\x1f\x42\x6c\xde\x1a\x28\xa6\x1a\xbc\x88\x22\x98\xf9\x83\x4a\x94\x50\x51\x3e\x6f\x05\xc8\x8e\x33\x36\xe6\xe8\xe1\xde\x01\xc8\x63\x50\x29\xce\x7f\x89\x5b\x97\x43\x58\xd3\x54\xa0\xb7\x36\xb6\x3f\x9b\xc3\x33\xfe\xa5\x75\xbf\x4c\xa6\x1a\xb4\x23\x9d\xd9\x38\xe9\xac\x6e\x2f\xdd\x79\xbc\x5f\x9d\x5f\x7c\x07\xe7\x34\x68\xa5\xea\x69\xa6\x75\x9f\xb6\xd7\xe8\xeb\xdb\xeb\x1e\x7d\x2b\xda\x22\xa6\xad\xde\x34\x3c\xf2\xca\xe7\x16\x7e\x47\x08\x06\xd9\xcf\xd3\xb3\xe9\xcf\x27\x71\xc1\x90\xd4\x3b\x8a\x14\x66\x6f\x4e\x0a\x07\x9d\xef\x23\x4e\xe9\x5e\x3c\x3a\x95\xe7\xe6\x46\x49\x8b\xa6\x83\xc1\xdd\xfa\x6a\x40\x17\x2a\xaf\x5e\xa9\xa9\x7c\xc7\xfa\x66\xfb\x41\x25\x6c\x9f\xd5\x6c\xdb\x3c\x02\xeb\x35\x30\xb4\x9d\x57\xd9\x29\xee\x6c\xba\x4e\xce\x16\x38\x27\xf4\xa7\xdb\xf4\x09\xb4\x04\x04\xf7\xf8\x21\xa6\x56\xbe\x4f\x9a\x1e\x6a\xae\x1a\x27\x98\x5f\x72\x1d\x10\x99\x0a\xd1\xa5\xff\x3d\x7e\xf1\x46\x59\xd1\x00\xd3\xd0\x0a\x5e\x71\xa5\xb3\xeb\x7a\x72\x71\xd7\x0c\x40\xfa\xf7\x7f\x3a\x80\x2a\x4a\x1c\xd7\x69\x97\x14\x62\x25\xdf\x50\xa5\x59\x57\xbf\xa0\xcf\x8e\x54\x64\xe5\x8a\xa7\x60\xfb\x50\xa1\xd5\xc0\xfd\x8e\x12\xeb\xd5\x75\x42\x08\xf6\x74\x5e\x53\x49\x23\xd0\x73\x91\xc5\xdf\x29\x22\x5a\x6e\x19\x91\x0f\xbd\xd2\x7a\x90\x06\xa8\xe9\xa2\xa3\x2c\xca\x59\xb6\xe8\x2c\x57\x3f\x39\x81\x31\x3b\x40\x90\x0c\xf0\x50\x5f\x9c\xbc\x8b\xf0\x30\x48\xd1\xf5\x71\x73\x3f\xa3\xda\x17\xfc\xc9\x3f\x40\x80\x1c\x27\x57\xec\x6e\x57\xa0\x6d\x5b\x44\x23\x98\xcf\xda\xdb\xfc\x5f\x17\x33\x8d\x04\x78\x07\x28\x48\x31\x35\xd3\x44\x85\x0d\x6b\xaf\xae\x85\x5e\x51\x9f\xfd\x5f\xcb\xaa\x44\xf3\x8c\x0b\x88\x20\xec\x74\x2c\xad\x9e\xe5\xec\xed\x15\x56\x75\xb4\x6d\x9b\x22\x00\xfd\xa2\xcb\x30\x7e\xbb\x6d\x69\xf7\x69\xc5\x7c\xad\x12\x1a\x39\xa3\x01\xf9\xcc\x43\xae\xc1\x95\x92\x86\xba\xa9\xfd\x62\xc7\x3b\x92\x1b\x11\x5d\x3d\x20\xc5\xef\xf0\xa7\xda\xb4\xd3\x47\xac\x0d\x0b\x4b\xd7\xb5\x8d\x88\xca\x10\xb2\xde\x9c\x10\xb2\x11\x3b\x26\xef\x5b\x31\xf9\x28\xb2\x81\x96\xf8\x45\xc5\x5a\x39\x6f\xe4\x04\x9f\xe0\x42\xbb\x98\xab\x02\xe3\xca\xb7\xab\x60\xcb\x08\x56\x15\xae\xc8\xcb\xa4\x55\x48\xba\xd9\xb6\xa7\x54\x0c\x56\xe5\x41\x85\xdc\x1e\x35\xac\x39\xbf\x97\x03\x5f\x16\x77\x2e\x7f\x0a\x2a\xa9\x77\xaf\x83\x6c\x36\xfd\x79\x7a\x76\x12\x37\x75\xd7\xfa\x70\x71\xf6\x62\x26\x36\x83\xde\x9b\xdd\xca\x88\xdd\x1a\xcd\xc7\xe7\x3b\x30\xa5\x63\x8b\x90\xec\x53\x4c\x1b\x65\x0a\xcb\x4d\x6e\x1d\x67\xb6\xd1\x33\x52\xfc\x04\x75\xe9\x4e\x85\xd2\xf9\xad\xbe\xa8\xde\xb7\x18\xf5\xc2\x29\x40\x1e\xab\x0e\xd0\x3f\xda\xfe\x1e\x3f\x9e\xe4\x8e\x31\xa2\x3f\x0c\xcd\x20\xbd\x1f\x87\xa5\xcd\xf5\x87\x99\xed\x30\xbc\xb7\x97\xc3\x0f\x94\xc0\x6e\x62\x57\xfe\x1e\xb0\x89\x57\xc8\xa7\x3d\x4c\x3b\x62\xbc\x5d\x89\x0e\xb3\xd2\xae\x54\xa3\xcb\xb7\xcb\xd6\x81\x87\xa2\x2c\x6b\xdd\xc7\x01\xed\xb7\x76\xfc\x6c\xf6\x04\x48\xeb\xb7\x30\xee\x97\x97\x45\xeb\xf5\x36\x4f\x07\x1a\x41\xa9\x34\x2b\x45\xa4\x6c\x73\x57\xfe\xdc\x17\x10\xf7\xa3\x97\xfb\x1d\x3c\x5c\xca\xb5\xba\x95\x8e\x15\x6b\xbe\x2c\xe1\x5f\x94\x4f\x77\xeb\xeb\x05\x15\x7d\xe1\x6b\x60\x39\x13\x70\xad\xc2\xea\xa5\xa1\x55\xfd\x62\x9a\xfb\x73\x91\x6c\x20\x06\x4d\xc5\xe4\xbf\x01\x00\x00\xff\xff\xa5\xeb\x20\x7d\x9d\x2b\x00\x00")
func deployKubernetes119AlphaLvmPmemCsiYamlBytes() ([]byte, error) {
return bindataRead(
@@ -200,12 +200,12 @@ func deployKubernetes119AlphaLvmPmemCsiYaml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "deploy/kubernetes-1.19-alpha/lvm/pmem-csi.yaml", size: 11225, mode: os.FileMode(436), modTime: time.Unix(1608146563, 0)}
+ info := bindataFileInfo{name: "deploy/kubernetes-1.19-alpha/lvm/pmem-csi.yaml", size: 11165, mode: os.FileMode(420), modTime: time.Unix(1608283284, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
-var _deployKubernetes119DirectPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\xdd\x6f\xe3\xb8\x11\x7f\xf7\x5f\xc1\x6e\xef\xe1\x0e\xa8\xac\x78\xdb\x03\x5a\x01\x7e\xc8\x26\xbe\xd4\xe8\xc6\x31\x92\xec\xbd\x06\x0c\x35\x96\x59\x53\x24\x4b\x8e\xbc\xf1\x15\xfd\xdf\x0b\x52\x92\xad\x2f\xcb\x1f\xcd\x07\x8a\xf3\x3e\xac\x23\x72\x38\xbf\xf9\xe0\xcc\x6f\x6c\xff\x91\xdc\x80\x04\x43\x11\x62\xf2\x9d\xe3\x92\x7c\x4a\xe9\x0a\xc8\x2a\xb3\xa8\x52\xfe\x1b\x7c\xfa\x13\x89\x15\x91\x0a\x09\xc4\x1c\xff\x30\x18\x50\xcd\x7f\x05\x63\xb9\x92\x11\x59\x8f\x06\x2b\x2e\xe3\x88\xcc\x68\x0a\x56\x53\x06\x83\x14\x90\xc6\x14\x69\x34\x20\x44\xd0\x67\x10\xd6\xbd\x23\x44\xa7\x90\x06\xcc\xf2\x21\x97\x08\x62\xc8\x54\x1a\xc6\xa0\x85\xda\xa4\x20\x31\x22\x31\x37\xc0\x30\xd0\x46\xc5\x19\x43\xae\xe4\x80\x10\x49\x53\x88\xb6\x82\x83\x20\x08\xba\x95\x3f\x80\x59\x73\x06\x97\x8c\xa9\x4c\xe2\xdb\x21\x08\x98\x92\x68\x94\x10\x60\x8a\x35\x6f\x72\x0f\x44\xf3\x4c\xd9\x90\x66\xb8\x54\x86\xff\x46\xdd\xa1\xc3\xd5\x5f\xed\x90\xab\x70\x0b\xfe\x5e\x89\x37\x74\x5a\x00\x2f\x08\x46\x52\xe1\x36\xad\xb9\x43\x05\x26\x60\x8b\x64\x8f\x01\x26\x13\x60\xa3\x41\x40\xa8\xe6\x37\x46\x65\xda\x03\x09\xc8\xa7\x4f\x03\x42\x0c\x58\x95\x19\x06\xc5\x33\x90\xb1\x56\x5c\xa2\x1d\x10\xb2\x06\xf3\x5c\x3c\x4e\x00\xfd\xff\xdf\x29\xb2\xa5\x7f\x27\xb8\xcd\x1f\xc5\x20\x00\xc1\xbf\xcd\x74\x4c\x8b\xb7\xcc\x80\x7b\xdb\xd2\xc9\x94\x32\x31\x97\x55\xb7\xb5\x41\x08\xa0\x16\xde\x0a\x81\x45\x65\x68\x02\x7b\x95\x33\xcb\x8b\x2d\x8c\x6a\xca\x38\xf2\x7d\x50\xb6\x00\x76\x98\x0a\xa5\x0d\x28\x7a\xbb\x5e\x40\x3d\x2a\x14\x5a\xc5\x1d\x8a\x5b\xa2\x54\x6b\xdb\x16\x36\xa0\x05\x67\xd4\x42\x57\x24\xcf\xc8\xe8\x2b\x91\x59\x04\xf3\x11\x89\x6d\x32\x29\xc1\x9c\x94\xc5\xda\x59\x66\x11\x24\xae\x95\xc8\xd2\xf3\x02\x78\x52\xac\x1a\x0a\x99\xa0\x3c\x3d\x5e\x6b\x91\x2b\x27\xe7\x6a\x99\xa8\x82\xda\xbd\x17\xa6\xa1\xee\xb8\x2a\xb0\x86\x56\x09\x38\x31\xdb\xdb\xb6\x48\xaa\xed\x52\xe1\xf0\x90\x51\x45\xc8\x8a\xed\x7d\x56\xbd\x96\x0e\xd7\x02\xda\x06\x1f\x50\x75\xb8\x8c\x48\x15\xbf\x66\x50\x4e\x38\xee\xbc\x8e\xf5\x85\xcb\x98\xcb\xe4\x2d\x7b\xad\xe5\xf5\xab\xad\x04\xf4\x35\x2e\x25\xe0\x1e\x16\x4e\x7b\xe9\x9f\x1e\x63\x06\x84\x54\xba\xef\xf1\x4d\xd3\x66\xcf\xff\x04\x86\xbe\xb6\x74\x72\x8f\x77\xa1\x0c\x95\x02\xfb\x31\x71\x38\xd7\xdb\xd5\xce\x70\x52\x41\x7f\x07\xbf\x37\xd9\xe4\x47\xd2\x48\xab\x81\x39\x65\x5a\x19\xdc\x76\x78\x83\x11\x19\x5d\x5c\x5c\x5c\x78\x14\x48\x4d\x02\x38\xaf\x3d\xb5\x20\x80\xa1\x32\x39\x4e\xaa\xf5\x3e\x9d\x67\x18\xf1\x81\xee\x4a\x01\x0d\x67\xf6\x0c\x5f\x8d\x3a\x7d\x35\x7a\x6b\x5f\x11\x82\x1b\x0d\x11\x99\xa9\x18\x9c\xd6\x96\xf3\x1c\x0f\xdb\x5d\xe7\x07\xa4\x08\x8b\x4c\x3c\xc0\x87\xce\x2e\xa5\x23\x4b\x3a\x18\x91\x51\xcb\x4f\xa9\xeb\x19\x5f\x2b\xb8\x0e\xb8\xee\x2c\xe0\x36\xcf\xa8\x59\x0f\x7e\x84\x54\x0b\x8a\x50\xa0\xaa\x38\xcd\x43\x92\x52\xa1\x2f\x40\x5b\x94\x9d\x40\x2c\x33\xd4\xc5\xc9\x1d\x4d\xb9\x04\x63\x8b\xdd\xa2\x66\xe1\x41\x1b\xcf\xb2\x72\xaf\xe0\x77\x78\x5e\x2a\xb5\x8a\x08\x4f\xa4\x32\xe0\xb7\x96\xb1\xf1\x60\x16\x0b\x2e\x39\x6e\x76\xf0\x5c\xb7\xbf\x6c\x3d\x75\x91\xfc\x57\xc6\x0d\xc4\xd7\x99\xe1\x32\x79\x60\x4b\x88\x33\xc1\x65\x32\xf5\x07\x17\x8f\x27\x2f\xc0\x32\x87\xa9\x2a\x99\x9f\xf9\x50\xc4\xfe\x11\x4c\x6a\xeb\xcb\x41\x9e\x0a\x93\x17\x6d\xc0\xda\xba\xa7\xcb\x1d\x2b\xd8\x44\x5d\x06\x76\xf8\xaf\x7c\x29\x0d\x86\xba\x6c\x23\x33\x85\x53\xd9\x5a\x5f\x53\x91\x41\x4b\x95\x67\x41\x52\x7d\xea\x7a\xbc\xa0\xc2\x42\xb9\xb2\x0b\x74\x79\x84\x9b\x32\xd3\x94\xca\x78\x77\x66\x40\xc2\xcc\x9a\x50\x28\x46\x45\xf8\xcc\x65\xb8\x0d\x7c\x6c\xf8\xba\x02\x3a\x20\xc1\x7a\xfc\xe7\xea\x9f\xa9\x8a\x61\xdc\x61\x5e\x40\x82\x72\x58\x1e\x67\x92\xbf\x44\x61\x18\x32\xcb\xc3\x7a\x36\x0d\xad\x62\xab\xaa\x8c\x81\x84\x5b\x34\x9b\x49\x29\x8b\x4c\x47\x61\x78\x31\xf4\xff\xa2\x5d\x33\x28\xf6\xbb\x98\xf1\x78\xfc\xc3\x8f\xff\xf8\xf6\x65\xf2\x34\xbb\xbb\x9e\x3c\xcd\x2e\x6f\x27\x3f\x55\xf7\x30\xfa\x0b\x17\x30\x0e\x19\x18\xb4\x21\xa3\x43\x66\xb0\xb6\x0e\x06\xab\x3b\x50\xd8\xe6\x96\x15\x6c\x9a\x3b\x56\xb0\xa9\xee\xc8\x1d\xe5\x8a\xcc\xf8\x87\x1f\xe7\xb7\x93\xdb\xa7\xab\x87\xe9\xd3\xf5\xfd\xf4\xd7\xc9\x7d\x1b\x52\x51\xdf\xbf\xfa\xa1\x68\x1c\xed\xea\xb6\x7b\x81\x5c\x57\x43\x93\x17\xb5\xba\x7d\x83\x46\x7e\xfc\x62\x54\x5a\x4f\x91\x05\x07\x11\x17\x7c\xa5\xfa\x6a\x34\xb4\xfa\xa2\x17\x9a\x53\x5c\x46\xfe\xfa\x0d\x9d\x77\x5d\x4d\x6a\xa1\x79\x9c\xdc\xdf\x4e\x67\x97\x8f\xd3\xbb\xd9\xd3\xd7\xbb\x9b\xa7\xf9\xe5\xe3\xdf\x9b\x98\x22\x12\x62\xaa\x43\x04\x93\x16\x9f\x68\x04\x42\x25\xad\xa3\xba\x7c\xd5\x3e\xaa\x7d\xa7\x5a\x07\xdd\xdc\x5d\x4f\xbe\x7c\xbb\x69\xcb\xbe\xfc\x7c\xf1\xb7\xbc\xb0\x5c\xcd\xc6\x3b\x37\xf3\x94\x26\x10\x11\x7f\x60\x33\xe1\x23\x46\x25\x35\x9b\xfa\xde\x79\x26\xc4\x5c\x09\xce\x36\x11\x99\x2e\x66\x0a\xe7\x06\x2c\xc8\x5d\xa2\x54\xda\x4f\xe3\xde\x6c\x3b\x75\x09\x79\x7b\x2d\xe7\x8d\xc6\x5d\x3d\x69\xc7\x02\xf2\x97\x05\x96\x19\x8e\x9b\x2b\x37\x90\xbd\x60\xbd\xee\xd1\xf8\x4e\x8a\xcd\xbd\x52\x3e\x97\xed\xc6\x22\xa4\x11\x41\x93\xed\xa2\x57\x09\xc5\x2d\x58\xeb\x4c\xf2\xb1\xee\x8d\x53\x3e\x0b\xde\x3a\xca\x59\xb3\x20\x75\x4f\x0a\x79\x7f\x2b\x5a\xf0\xcb\xbb\xec\x2f\xd8\x3e\x49\xcb\x5b\x72\x5a\x64\x09\x97\x81\x2b\x0d\x80\x41\xcc\xcd\x1e\x59\x4c\x75\x4b\x16\x53\x5d\x91\x08\x08\x35\x49\x0d\x75\xb3\x7c\xf9\x98\xd3\x38\x76\x25\x7d\x7c\x4c\x81\x0a\x16\x40\x31\x33\x10\x24\x14\xc1\x8e\x1f\x95\x56\x42\x25\x9b\x71\xcd\xd1\x6e\x9f\x75\xb1\xc3\x00\xf7\x6e\x40\x9e\x82\xca\x70\xfc\x73\x5a\x7b\x1c\xc3\x82\x66\x02\x83\x85\x75\x8c\x6a\x0c\x2f\xf8\x97\xda\x7a\x91\x14\x5b\xd0\xbe\x78\x8c\x9a\x59\xed\xa6\x90\x84\x19\x37\x43\x59\x9e\x04\xc5\x38\x1e\x36\x26\x9b\x68\xfd\x79\x78\x31\xfc\x7c\x56\x9a\x77\xcd\x2e\x27\xe5\xfb\xe8\xcd\xf3\xfd\xa8\xd4\x3d\x21\x01\xf7\xe2\x31\x99\xbc\xb4\x33\x25\x1d\x9a\x06\x06\xbf\xf4\xcd\x82\xc9\x67\x96\xed\x49\xd5\x51\xae\x8f\xf6\xb9\x17\x2a\xe1\x38\x42\x95\x72\x04\x04\x16\x0b\x60\xe8\x58\x43\xc1\x72\x76\x3a\x3d\x0b\x71\xb5\xdb\x4f\xae\xc3\x55\xf6\x0c\x46\x02\x82\x1f\xa9\x53\xea\xe6\xd1\x41\xd5\x43\xd5\x53\x53\x8d\x9b\x6b\x6e\x22\x22\x33\x21\x9a\x95\x6d\x8f\x5f\x82\xde\x0b\x6f\x81\x19\xa8\x05\x2f\x7f\xd2\xb0\x7a\x2b\x9c\xaf\xda\x0e\x48\xff\xfe\x4f\x03\x50\x79\xdb\xfb\x87\x8d\x6b\x0a\xa9\x92\x6f\x3b\x6a\x38\x6f\x1f\x18\x32\x4e\x1c\x2b\x8a\x13\xcf\x84\xf7\xa1\xd3\x42\x05\xfa\xfb\xce\x09\xaf\x4e\x76\x63\x70\xd7\xf4\x96\x4a\x9a\x80\x19\xe7\x58\x0f\x91\xe1\x9a\xf5\x3d\x34\xb8\xd5\x5a\x8e\xe2\xb2\xdb\xda\xd0\x60\xc8\x85\xd4\xfc\xee\xfa\x69\x3a\xff\xc9\x13\xe5\xd1\x11\xc4\xba\xa3\xe8\xb4\x49\xf6\xbb\x10\x68\x8b\x14\x3d\x1f\x19\x87\x6b\x6a\x42\xc1\x9f\xc3\x23\x88\xf4\x69\xb4\xdb\x59\x3b\x07\xc3\x40\x22\x4d\x60\x3c\xaa\x9b\xf9\xff\x4e\xca\x2b\x09\xf0\x0e\x50\x90\x62\x66\x87\x5a\xc5\x15\x6d\xaf\xce\xe9\x5f\x71\xce\xf8\x5d\x8f\x07\xda\xf0\x35\x17\x90\x40\xdc\xa0\x27\x35\x82\x72\xf1\xf6\x93\x42\x79\xb5\x1d\x27\x11\x80\x61\x4e\x29\x6c\x58\xe7\x28\x75\x52\x96\xcb\x1b\xa5\x69\xe2\x95\x46\xe4\x0b\xcf\x4b\x31\x57\x92\x8a\xb6\x5f\xdc\x7e\x5f\xe4\x7a\x86\x87\x16\x90\xfc\xeb\xe4\x73\x75\x3a\xf1\x1e\x6d\xdd\x03\x92\xa7\x68\x3d\xc3\x51\x0c\xeb\x96\x4c\x0c\xeb\x1e\x3d\x76\xd3\xd6\x62\x37\xbd\xc8\x3a\xf8\xef\xc1\xc9\xab\x74\x5e\xcf\x0d\x3e\xc3\x85\xee\x30\xdf\x05\x4e\x9b\xe0\x8a\x08\x96\x1d\x2e\xcf\x4b\x5d\x6b\x24\xcd\x6c\xdb\xd3\x2a\x3a\xbb\x72\xe7\x84\x58\xdf\xd5\xd9\x1b\xfe\xe7\x1a\x78\x78\x92\xf3\xf9\x93\x97\x92\xad\xf5\x26\x5a\x8f\x86\x9f\x87\x17\x67\xd5\xa6\xe6\x59\x1f\x3e\x89\x1d\xcc\xc4\x6a\xd0\x5b\xd2\xb5\x8c\xd8\x9d\x51\xfd\x9c\x77\x07\xa6\x70\x6c\x1e\x92\x7d\xe3\xd1\x52\xd9\x5c\x73\xb5\xb6\xf6\x57\xb6\xde\x3b\x92\x7f\x69\x72\xed\x6f\x85\x32\x9b\x3b\x73\x55\xfe\x66\xa0\xd7\x0b\xe7\x00\x79\x2a\x19\x60\x78\xb2\xfe\x3d\x7e\x3c\xcb\x1d\x7d\x85\xfe\x38\x34\x9d\xe5\xfd\x34\x2c\xf5\x5a\x7f\x9c\xda\x46\x85\x0f\xf6\xd6\xf0\x23\xe7\x5d\x2f\xd8\x9c\x75\x8f\x30\xe2\x15\xf2\x69\x4f\xa5\xed\x51\x5e\xef\x44\xc7\x69\xa9\x77\xaa\xde\xe3\xeb\x6d\xeb\xc8\x4b\x51\xb4\xb5\xe6\xec\x5f\xff\xe5\x49\xb8\x1e\x3d\x03\xd2\xed\xcf\x08\x1e\xa6\xd7\x39\xf5\x7a\xb3\x8f\x02\x2a\x71\x29\x47\x53\x8a\x48\xd9\xf2\xbe\xf8\x6a\x2a\x22\xfe\x0b\x1a\xff\xfd\x6d\x3c\x95\x0b\x75\x27\x7d\x61\xdc\x96\xcc\xbc\xea\x7c\xe5\x0b\x60\x1b\x26\xe0\x56\xc5\xe5\x6f\x5c\xe6\xdb\xdf\x51\xf9\x3f\x27\x7a\x09\x29\x18\x2a\x06\xff\x0d\x00\x00\xff\xff\xc5\x8a\x47\x12\xd2\x2a\x00\x00")
+var _deployKubernetes119DirectPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\xdd\x6f\xe3\xb8\x11\x7f\xf7\x5f\xc1\x6e\xef\xe1\x0e\xa8\xac\x78\xdb\x03\x5a\x01\x7e\xc8\x26\xbe\xd4\xe8\xc6\x31\x92\xec\xbd\x06\x0c\x35\x96\x59\x53\x24\x4b\x8e\xbc\xf1\x15\xfd\xdf\x0b\x52\x92\xad\x2f\xcb\x1f\x97\x0f\x14\xf5\x3e\xac\x43\x71\x38\xbf\xf9\xe0\xcc\x6f\x6c\xff\x91\xdc\x80\x04\x43\x11\x62\xf2\x9d\xe3\x92\x7c\x4a\xe9\x0a\xc8\x2a\xb3\xa8\x52\xfe\x1b\x7c\xfa\x13\x89\x15\x91\x0a\x09\xc4\x1c\xff\x30\x18\x50\xcd\x7f\x05\x63\xb9\x92\x11\x59\x8f\x06\x2b\x2e\xe3\x88\x3c\x80\x59\x73\x06\x97\x8c\xa9\x4c\xe2\x20\x05\xa4\x31\x45\x1a\x0d\x08\x11\xf4\x19\x84\x75\xef\x08\xd1\x29\xa4\x01\xb3\x7c\xc8\x25\x82\x18\x32\x95\x86\x31\x68\xa1\x36\x29\x48\x8c\x48\xcc\x0d\x30\x0c\xb4\x51\x71\xc6\x90\x2b\x39\x20\x44\xd2\x14\xa2\xad\x60\xc0\x94\x44\xa3\x84\x00\x53\x3c\xb3\x9a\xb2\xca\x86\x41\x10\x04\x35\x88\xe6\x99\xb2\x21\xcd\x70\xa9\x0c\xff\x8d\xba\x43\x87\xab\xbf\xda\x21\x57\xe1\x16\xfc\xbd\x12\xf0\x86\x90\xe1\x05\xc1\x48\x2a\xdc\xa6\x35\x77\xa8\xc0\x04\x6c\x91\xec\x31\xc0\x64\x02\x6c\x34\x08\x08\xd5\xfc\xc6\xa8\x4c\x7b\x20\x01\xf9\xf4\x69\x40\x88\x01\xab\x32\xc3\xa0\x58\x03\x19\x6b\xc5\x25\xda\x01\x21\x6b\x30\xcf\xc5\x72\x02\xe8\xff\xff\x4e\x91\x2d\xfd\x3b\xc1\x6d\xbe\x14\x83\x00\x04\xff\x36\xd3\x31\x2d\xde\x32\x03\xee\x6d\x4b\x27\x53\xca\xc4\x5c\x56\xdd\xd6\x06\x21\x80\x5a\x78\x2b\x04\x16\x95\xa1\x09\xec\x55\xce\x2c\x2f\xb6\x30\xaa\x29\xe3\xc8\xf7\x41\xd9\x02\xd8\x61\x2a\x94\x36\xa0\xe8\xed\xf3\x02\xea\x51\xa1\xd0\x2a\xee\x50\xdc\x12\xa5\x5a\xdb\xb6\xb0\x01\x2d\x38\xa3\x16\xba\x22\x79\x46\x46\x5f\x89\xcc\x22\x98\x8f\x48\x6c\x93\x49\x09\xe6\xa4\x2c\xd6\xce\x32\x8b\x20\x71\xad\x44\x96\x9e\x17\xc0\x93\x62\xd5\x50\xc8\x04\xe5\xe9\xf1\x5a\x8b\x5c\x39\x39\x57\xcb\x44\x15\xd4\xee\xbd\x30\x0d\x75\xc7\x55\x81\x35\xb4\x4a\xc0\x89\xd9\xde\xb6\x45\x52\x6d\x97\x0a\x87\x87\x8c\x2a\x42\x56\x6c\xef\xb3\xea\xb5\x74\xb8\x16\xd0\x36\xf8\x80\xaa\xc3\x65\x44\xaa\xf8\x35\x83\x72\xc2\x71\xe7\x75\xac\x2f\x5c\xc6\x5c\x26\x6f\xd9\x6b\x2d\xaf\x5f\x6d\x25\xa0\xaf\x71\x29\x01\xf7\xb0\x70\xda\x4b\xff\xf4\x18\x33\x20\xa4\xd2\x7d\x8f\x6f\x9a\x36\x7b\xfe\x27\x30\xf4\xb5\xa5\x93\x7b\xbc\x0b\x65\xa8\x14\xd8\x8f\x89\xc3\xb9\xde\xae\x76\x86\x93\x0a\xfa\x3b\xf8\xbd\xc9\x26\x3f\x92\x46\x5a\x0d\xcc\x29\xd3\xca\xe0\xb6\xc3\x1b\x8c\xc8\xe8\xe2\xe2\xe2\xc2\xa3\x40\x6a\x12\xc0\x79\x6d\xd5\x82\x00\x86\xca\xe4\x38\xa9\xd6\xfb\x74\x9e\x61\xc4\x07\xba\x2b\x05\x34\x9c\xd9\x33\x7c\x35\xea\xf4\xd5\xe8\xad\x7d\x45\x08\x6e\x34\x44\x64\xa6\x62\x70\x5a\x5b\xce\x73\x3c\x6c\x77\x9d\x1f\x90\x22\x2c\x32\xf1\x00\x1f\x3a\xbb\x94\x8e\x2c\xe9\x60\x44\x46\x2d\x3f\xa5\xae\x67\x7c\xad\xe0\x3a\xe0\xba\xb3\x80\xdb\x3c\xa3\x66\x3d\xf8\x11\x52\x2d\x28\x42\x81\xaa\xe2\x34\x0f\x49\x4a\x85\xbe\x00\x6d\x51\x76\x02\xb1\xcc\x50\x17\x27\x77\x34\xe5\x12\x8c\x2d\x76\x8b\x9a\x85\x07\x6d\x3c\xcb\xca\xbd\x82\xdf\xe1\x79\xa9\xd4\x2a\x22\x3c\x91\xca\x80\xdf\x5a\xc6\xc6\x83\x59\x2c\xb8\xe4\xb8\xd9\xc1\x73\xdd\xfe\xb2\xb5\xea\x22\xf9\xaf\x8c\x1b\x88\xaf\x33\xc3\x65\xf2\xc0\x96\x10\x67\x82\xcb\x64\xea\x0f\x2e\x96\x27\x2f\xc0\x32\x87\xa9\x2a\x99\x9f\xf9\x50\xc4\xfe\x11\x4c\x6a\xeb\x8f\x83\x3c\x15\x26\x2f\xda\x80\xb5\x75\x4f\x97\x3b\x56\xb0\x89\xba\x0c\xec\xf0\x5f\xf9\x52\x1a\x0c\x75\xd9\x46\x66\x0a\xa7\xb2\xf5\x7c\x4d\x45\x06\x2d\x55\x9e\x05\x49\xf5\xa9\x6b\x79\x41\x85\x85\xf2\xc9\x2e\xd0\xe5\x11\x6e\xca\x4c\x53\x2a\xe3\xdd\x99\x01\x09\x33\x6b\x42\xa1\x18\x15\xe1\x33\x97\xe1\x36\xf0\xb1\xe1\xeb\x0a\xe8\x80\x04\xeb\xf1\x9f\xab\x7f\x0a\x95\x24\x5c\x26\xc1\x42\x99\x94\xe2\x18\xe1\x05\xab\x8f\x53\x15\xc3\xb8\xc3\xfa\x80\x04\xe5\x2c\x3d\xce\x24\x7f\x89\xc2\x30\x64\x96\x87\xf5\x64\x1b\x5a\xc5\x56\x55\x19\x03\x09\xb7\x68\x36\x93\x52\x16\x99\x8e\xc2\xf0\x62\xe8\xff\x45\xbb\x5e\x51\xec\x77\x21\xe5\xf1\xf8\x87\x1f\xff\xf1\xed\xcb\xe4\x69\x76\x77\x3d\x79\x9a\x5d\xde\x4e\x7e\xaa\xee\x61\xf4\x17\x2e\x60\x1c\x32\x30\x68\x43\x46\x87\xcc\xd4\x4c\x70\xeb\xd5\x1d\x28\x6c\x73\xcb\x0a\x36\xcd\x1d\x2b\xd8\x54\x77\xe4\x7e\x74\x35\x68\xfc\xc3\x8f\xf3\xdb\xc9\xed\xd3\xd5\xc3\xf4\xe9\xfa\x7e\xfa\xeb\xe4\xbe\x0d\xa9\x28\xff\x5f\xfd\xcc\x34\x8e\x76\x65\xdd\xbd\x40\xae\xab\x91\xcb\x6b\x5e\xdd\xbe\x41\x23\x7d\x7e\x31\x2a\xad\x67\xd0\x82\x83\x88\x0b\x3a\x53\x7d\x35\xfa\x5d\xfd\xa1\x17\x9a\x53\x5c\x46\xfe\x76\x0e\x9d\x77\x5d\xc9\x6a\xa1\x79\x9c\xdc\xdf\x4e\x67\x97\x8f\xd3\xbb\xd9\xd3\xd7\xbb\x9b\xa7\xf9\xe5\xe3\xdf\x9b\x98\x22\x12\x62\xaa\x43\x04\x93\x16\x1f\x78\xb8\x5c\x6a\x1d\xd5\xe5\xab\xf6\x51\xed\x2b\xd7\x3a\xe8\xe6\xee\x7a\xf2\xe5\xdb\x4d\x5b\xf6\xe5\xe7\x8b\xbf\xe5\x75\xe7\x6a\x36\xde\xb9\x99\xa7\x34\x81\x88\xf8\x03\x9b\xf7\x21\x62\x54\x52\xb3\xa9\xef\x9d\x67\x42\xcc\x95\xe0\x6c\x13\x91\xe9\x62\xa6\x70\x6e\xc0\x82\xdc\x25\x4a\xa5\x3b\x35\xae\xd5\xb6\x91\x97\x90\xb7\xb7\x76\xde\xe8\xeb\xd5\x93\x76\x24\x21\x7f\x59\x60\x99\xe1\xb8\xb9\x72\xf3\xda\x0b\xd6\xcb\x22\x8d\xef\xa4\xd8\xdc\x2b\xe5\x73\xd9\x6e\x2c\x42\x1a\x11\x34\xd9\x2e\x7a\x95\x50\xdc\x82\xb5\xce\x24\x1f\xeb\xde\x38\xe5\xa3\xe2\xad\x63\xa4\x35\x0b\x52\xb7\x52\xc8\xfb\x5b\xd1\x82\x5f\xde\x65\x7f\xc1\xf6\x49\x5a\xde\x92\xd3\x22\x4b\xb8\x0c\x5c\x69\x00\x0c\x62\x6e\xf6\xc8\x62\xaa\x5b\xb2\x98\xea\x8a\x44\x40\xa8\x49\x6a\xa8\x9b\xd5\xcd\xc7\x9c\xc6\xb1\xab\xf8\xe3\x63\x0a\x54\xb0\x00\x8a\x99\x81\x20\xa1\x08\x76\xfc\xa8\xb4\x12\x2a\xd9\x8c\x6b\x8e\x76\xfb\xac\x8b\x1d\x06\xb8\x77\x03\xf2\x14\x54\x86\xe3\x9f\xd3\xda\x72\x0c\x0b\x9a\x09\x0c\x16\xd6\x11\xae\x31\xbc\xe0\x5f\x6a\xcf\x8b\xa4\xd8\x82\xf6\xc5\x63\xd4\xcc\x6a\x37\xa4\x24\xcc\xb8\x11\xcb\xf2\x24\x28\xa6\xf5\xb0\x31\xf8\x44\xeb\xcf\xc3\x8b\xe1\xe7\xb3\xd2\xbc\x6b\xb4\x39\x29\xdf\x47\x6f\x9e\xef\x47\xa5\xee\x09\x09\xb8\x17\x8f\xc9\xe4\xa5\x9d\x29\xe9\xd0\x34\x30\xf8\x47\xdf\x2c\x98\x7c\xa4\xd9\x9e\x54\x9d\xf4\xfa\x58\xa1\x7b\xa1\x12\x8e\x42\x54\x19\x49\x40\x60\xb1\x00\x86\x8e\x54\x14\x24\x68\xa7\xd3\x93\x14\x57\xbb\xfd\x60\x3b\x5c\x65\xcf\x60\x24\x20\xf8\x89\x3b\xa5\x6e\x5c\x1d\x54\x3d\x54\x3d\x35\xd5\xb8\xb9\xe6\x26\x22\x32\x13\xa2\x59\xd9\xf6\xf8\x25\xe8\xbd\xf0\x16\x98\x81\x5a\xf0\xf2\x95\x86\xd5\x5b\xe1\xfc\xa9\xed\x80\xf4\xef\xff\x34\x00\x95\xb7\xbd\x7f\x16\xb9\xa6\x90\x2a\xf9\xb6\x93\x88\xf3\xf6\x81\x19\xe4\xc4\xa9\xa3\x38\xf1\x4c\x78\x1f\x3a\x4c\x54\xa0\xbf\xef\x18\xf1\xea\x5c\x38\x06\x77\x4d\x6f\xa9\xa4\x09\x98\x71\x8e\xf5\x77\x72\xe5\x9a\x73\x7a\x58\x72\xab\xf3\x1c\x45\x75\xb7\xa5\xa3\x41\xa0\x0b\xa9\xf9\xdd\xf5\xd3\x74\xfe\x93\xe7\xd1\xa3\x23\x78\x77\x47\x4d\x6a\x73\xf0\x77\xe1\xd7\x16\x29\x7a\xba\x32\x0e\xd7\xd4\x84\x82\x3f\x87\x47\xf0\xec\xd3\x58\xb9\xb3\x76\x0e\x86\x81\x44\x9a\xc0\x78\x54\x37\xf3\x7f\x9d\xb3\x57\x12\xe0\x1d\xa0\x20\xc5\xcc\x0e\xb5\x8a\x2b\xda\x5e\x9d\xf2\xbf\xe2\x18\xf2\x7f\x3d\x3d\x68\xc3\xd7\x5c\x40\x02\x71\x83\xbd\xd4\xf8\xcb\xc5\xdb\x0f\x12\xe5\xd5\x76\x94\x45\x00\x86\x39\xe3\xb0\x61\x9d\xc2\xd4\x39\x5b\x2e\x6f\x94\xa6\x89\x57\x1a\x91\x2f\x3c\xaf\xd4\x5c\x49\x2a\xda\x7e\x71\xfb\x7d\x91\xeb\x99\x2d\x5a\x40\xf2\x2f\xa3\xcf\xd5\xe9\xc4\x7b\xb4\x75\xcf\x4f\x9e\xc1\xf5\xcc\x4e\x31\xac\x5b\x32\x31\xac\x7b\xf4\xd8\x4d\x5b\x8b\xdd\xf4\x22\xeb\xa0\xc7\x07\x07\xb3\xd2\x79\x3d\x37\xf8\x0c\x17\xba\xc3\x7c\x17\x38\x6d\xc0\x2b\x22\x58\x76\xb8\x3c\x2f\x75\xad\x91\x34\xb3\x6d\x4f\xab\xe8\xec\xca\x9d\x03\x64\x7d\x57\x67\x6f\xf8\xdd\x35\xf0\xf0\xa0\xe7\xf3\x27\x2f\x25\x5b\xeb\x4d\xb4\x1e\x0d\x3f\x0f\x2f\xce\xaa\x4d\xcd\xb3\x3e\x7c\x50\x3b\x98\x89\xd5\xa0\xb7\xa4\x6b\x19\xb1\x3b\xa3\xfa\x29\xf1\x0e\x4c\xe1\xd8\x3c\x24\xfb\xa6\xa7\xa5\xb2\xb9\xe6\x6a\x6d\xed\xaf\x6c\xbd\x77\x24\xff\xca\xe5\xda\xdf\x0a\x65\x36\x77\xe6\xaa\xfc\xc5\x41\xaf\x17\xce\x01\xf2\x54\x32\xc0\xf0\x64\xfd\x7b\xfc\x78\x96\x3b\xfa\x0a\xfd\x71\x68\x3a\xcb\xfb\x69\x58\xea\xb5\xfe\x38\xb5\x8d\x0a\x1f\xec\xad\xe1\x47\x8e\xc3\x5e\xb0\x39\x0a\x1f\x61\xc4\x2b\xe4\xd3\x9e\x4a\xdb\xa3\xbc\xde\x89\x8e\xd3\x52\xef\x54\xbd\xc7\xd7\xdb\xd6\x91\x97\xa2\x68\x6b\xcd\x8f\x06\xea\xbf\x5b\x09\xd7\xa3\x67\x40\xba\xfd\x11\xc2\xc3\xf4\x3a\xa7\x5e\x6f\xf6\x49\x41\x25\x2e\xe5\xe4\x4a\x11\x29\x5b\xde\x17\x5f\x6c\x45\xc4\x7f\xbd\xe3\xbf\xfd\x8d\xa7\x72\xa1\xee\xa4\x2f\x8c\xdb\x92\x99\x57\x9d\xaf\x7c\x01\x6c\xc3\x04\xdc\xaa\xb8\xfc\x85\xcc\x7c\xfb\x2b\x2c\xff\xe7\x44\x2f\x21\x05\x43\xc5\xe0\xbf\x01\x00\x00\xff\xff\x99\xe3\x8f\xb5\x93\x2a\x00\x00")
func deployKubernetes119DirectPmemCsiYamlBytes() ([]byte, error) {
return bindataRead(
@@ -220,12 +220,12 @@ func deployKubernetes119DirectPmemCsiYaml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "deploy/kubernetes-1.19/direct/pmem-csi.yaml", size: 10962, mode: os.FileMode(436), modTime: time.Unix(1608146551, 0)}
+ info := bindataFileInfo{name: "deploy/kubernetes-1.19/direct/pmem-csi.yaml", size: 10899, mode: os.FileMode(420), modTime: time.Unix(1608283277, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
-var _deployKubernetes119FakePmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\xdd\x6f\xe3\xb8\x11\x7f\xf7\x5f\xc1\x6e\xef\xe1\x0e\xa8\xac\x78\xdb\x03\x5a\x01\x7e\xc8\x26\xbe\xd4\xe8\xc6\x31\x92\xec\xbd\x06\x0c\x35\x96\x59\x53\x24\x4b\x8e\xbc\xf1\x15\xfd\xdf\x0b\x52\x92\xad\x2f\xcb\x1f\xcd\x07\x8a\xf3\x3e\xac\x23\x72\x38\xbf\xf9\xe0\xcc\x6f\x6c\xff\x91\xdc\x80\x04\x43\x11\x62\xf2\x9d\xe3\x92\x7c\x4a\xe9\x0a\xc8\x2a\xb3\xa8\x52\xfe\x1b\x7c\xfa\x13\x89\x15\x91\x0a\x09\xc4\x1c\xff\x30\x18\x50\xcd\x7f\x05\x63\xb9\x92\x11\x59\x8f\x06\x2b\x2e\xe3\x88\xcc\x68\x0a\x56\x53\x06\x83\x14\x90\xc6\x14\x69\x34\x20\x44\xd0\x67\x10\xd6\xbd\x23\x44\xa7\x90\x06\xcc\xf2\x21\x97\x08\x62\xc8\x54\x1a\xc6\xa0\x85\xda\xa4\x20\x31\x22\x0b\xba\x82\x40\x1b\x15\x67\x0c\xb9\x92\x03\x42\x24\x4d\x21\xda\x8a\x0d\x82\x20\xe8\x56\xfd\x00\x66\xcd\x19\x5c\x32\xa6\x32\x89\x6f\xa5\x3f\x60\x4a\xa2\x51\x42\x80\x29\xd6\xbc\xb9\x3d\x00\xcd\x33\x65\x43\x9a\xe1\x52\x19\xfe\x1b\x75\x87\x0e\x57\x7f\xb5\x43\xae\xc2\x2d\xf4\x7b\x25\xde\xcc\x61\x01\xbc\x20\x18\x49\x85\xdb\xb4\xe6\x0e\x13\x98\x80\x2d\x92\x3d\xf0\x4d\x26\xc0\x46\x83\x80\x50\xcd\x6f\x8c\xca\xb4\x87\x11\x90\x4f\x9f\x06\x84\x18\xb0\x2a\x33\x0c\x8a\x67\x20\x63\xad\xb8\x44\x3b\x20\x64\x0d\xe6\xb9\x78\x9c\x00\xfa\xff\xbf\x53\x64\x4b\xff\x4e\x70\x9b\x3f\x8a\x41\x00\x82\x7f\x9b\xe9\x98\x16\x6f\x99\x01\xf7\xb6\xa5\x93\x29\x65\x62\x2e\xab\x4e\x6b\x83\x10\x40\x2d\xbc\x15\x02\x8b\xca\xd0\x04\xf6\x2a\x67\x96\x17\x5b\x18\xd5\x94\x71\xe4\xfb\xa0\x6c\x01\xec\x30\x15\x4a\x1b\x50\xf4\x76\xbd\x80\x7a\x54\x28\xb4\x8a\x3b\x14\xb7\x44\xa9\xd6\xb6\x2d\x6c\x40\x0b\xce\xa8\x85\xae\x48\x9e\x91\xcf\x57\x22\xb3\x08\xe6\xfd\xd3\xda\x64\x52\x82\x39\x29\x87\xb5\xb3\xcb\x22\x48\x5c\x2b\x91\xa5\xe7\x85\xef\xa4\x48\x35\x14\x32\x41\x79\x7a\xbc\xd6\x22\x53\x4e\xce\xd4\x32\x4d\x05\xb5\x7b\xaf\x4b\x43\xdd\x71\x35\x60\x0d\xad\x02\x70\x62\xae\xb7\x6d\x91\x54\xdb\xa5\xc2\xe1\x21\xa3\x8a\x90\x15\xdb\xfb\xac\x7a\x2d\x1d\xae\xfc\xb7\x0d\x3e\xa0\xea\x70\x11\x91\x2a\x7e\xcd\xa0\x9c\x70\xdc\x79\xdd\xea\x0b\x97\x31\x97\xc9\xdb\x75\x59\xcb\xeb\x17\x5b\x09\xe8\x6b\x5a\x4a\xc0\x3d\x2c\x9c\xee\xd2\x3b\x3d\xa6\x0c\x08\xa9\xf4\xdd\xe3\x1b\xa6\xcd\x9e\xff\x09\x0c\x7d\x65\xe9\xe4\x1c\xef\x42\x16\x2a\xc5\xf5\x23\xa2\x70\xae\xaf\xab\x3d\xe1\xa4\x62\xfe\x0e\x5e\x6f\x72\xc8\x8f\x23\x8f\x56\x03\x73\xaa\xb4\x32\xb8\xed\xec\x06\x23\x32\xba\xb8\xb8\xb8\xf0\x18\x90\x9a\x04\x70\x5e\x7b\x6a\x41\x00\x43\x65\x72\x94\x54\xeb\x7d\x3a\x4f\x36\xe1\xc3\x5c\x95\x02\x1a\xce\xec\x19\x7e\x1a\x75\xfa\x69\xf4\xb6\x7e\x22\x04\x37\x1a\x22\x32\x53\x31\x38\x9d\x2d\xc7\x39\xe6\xb5\xbb\xc4\x0f\x48\x11\x16\x99\x78\x80\x0f\x9c\x54\x4a\x27\x96\xf4\x2f\x22\xa3\x96\x8f\x52\xd7\x25\xbe\x56\x50\x1d\x70\xdb\x19\xb0\x6d\x9e\x49\xb3\x1e\xf4\x08\xa9\x16\x14\xa1\xc0\x54\x71\x98\x07\x24\xa5\x42\x5f\x74\xb6\x18\x3b\x61\x58\x66\xa8\x8b\x91\x3b\x9a\x72\x09\xc6\x16\xbb\x45\xcd\xbe\x83\x16\x9e\x61\xe3\x5e\xb1\xef\xf0\xbc\x54\x6a\x15\x11\x9e\x48\x65\xc0\x6f\x2d\xe3\xe2\xa1\x2c\x16\x5c\x72\xdc\xec\xc0\xb9\xde\x7e\xd9\x7a\xea\xa2\xf8\xaf\x8c\x1b\x88\xaf\x33\xc3\x65\xf2\xc0\x96\x10\x67\x82\xcb\x64\xea\x0f\x2e\x1e\x4f\x5e\x80\x65\x0e\x53\x55\x32\x3f\xf3\xa1\x88\xfb\x23\x98\xd4\xd6\x97\x83\x3c\x0d\x26\x2f\xda\x80\xb5\x75\x3f\x97\x3b\x56\xb0\x89\xba\x0c\xec\xf0\x5e\xf9\x52\x1a\x0c\x75\x99\x46\x66\x0a\xa7\xb2\xb5\xbe\xa6\x22\x83\x96\x2a\xcf\x79\xa4\xfa\xd4\xf5\x78\x41\x85\x85\x72\x65\x17\xe6\xf2\x08\x37\x51\xa6\x29\x95\xf1\xee\xcc\x80\x84\x99\x35\xa1\x50\x8c\x8a\xf0\x99\xcb\x70\x1b\xf6\xd8\xf0\x75\x05\x74\x40\x82\xf5\xf8\xcf\xd5\x3f\x53\x15\xc3\xb8\xc3\xbc\x80\x04\xe5\x60\x3c\xce\x24\x7f\x89\xc2\x30\x64\x96\x87\xf5\x5c\x1a\x5a\xc5\x56\x55\x19\x03\x09\xb7\x68\x36\x93\x52\x16\x99\x8e\xc2\xf0\x62\xe8\xff\x45\xbb\x06\x50\xec\x77\x31\xe3\xf1\xf8\x87\x1f\xff\xf1\xed\xcb\xe4\x69\x76\x77\x3d\x79\x9a\x5d\xde\x4e\x7e\xaa\xee\x61\xf4\x17\x2e\x60\x1c\x32\x30\x68\x43\x46\x87\xcc\x60\x6d\x1d\x0c\x56\x77\xa0\xb0\xcd\x2d\x2b\xd8\x34\x77\xac\x60\x53\xdd\x91\x3b\xca\x15\x98\xf1\x0f\x3f\xce\x6f\x27\xb7\x4f\x57\x0f\xd3\xa7\xeb\xfb\xe9\xaf\x93\xfb\x36\xa4\xa2\xae\x7f\xf5\x23\xd0\x38\xda\xd5\x6b\xf7\x02\xb9\xae\x86\x26\x2f\x68\x75\xfb\x06\x8d\xfc\xf8\xc5\xa8\xb4\x9e\x22\x0b\x0e\x22\x2e\x18\x4a\xf5\xd5\x68\x63\xf5\x45\x2f\x34\xa7\xb8\x8c\xfc\xf5\x1b\x3a\xef\xba\x8a\xd4\x42\xf3\x38\xb9\xbf\x9d\xce\x2e\x1f\xa7\x77\xb3\xa7\xaf\x77\x37\x4f\xf3\xcb\xc7\xbf\x37\x31\x45\x24\xc4\x54\x87\x08\x26\x2d\x3e\xbd\x08\x84\x4a\x5a\x47\x75\xf9\xaa\x7d\x54\xfb\x4e\xb5\x0e\xba\xb9\xbb\x9e\x7c\xf9\x76\xd3\x96\x7d\xf9\xf9\xe2\x6f\x79\x61\xb9\x9a\x8d\x77\x6e\xe6\x29\x4d\x20\x22\xfe\xc0\x66\xc2\x47\x8c\x4a\x6a\x36\xf5\xbd\xf3\x4c\x88\xb9\x12\x9c\x6d\x22\x32\x5d\xcc\x14\xce\x0d\x58\x90\xbb\x44\xa9\xb4\x9e\xc6\xbd\xd9\x76\xe8\x12\xf2\xf6\x5a\xce\x1b\x0d\xbb\x7a\xd2\xae\xfb\xe7\x2f\x0b\x2c\x33\x1c\x37\x57\x6e\xfc\x7a\xc1\x7a\xdd\xa3\xf1\x9d\x14\x9b\x7b\xa5\x7c\x2e\xdb\x8d\x45\x48\x23\x82\x26\xdb\x45\xaf\x12\x8a\x5b\xb0\xd6\x99\xe4\x63\xdd\x1b\xa7\x7c\xf2\xbb\x75\x24\xb3\x66\x41\xea\x9e\x14\xf2\xfe\x56\xb4\xe0\x97\x77\xd9\x5f\xb0\x7d\x92\x96\xb7\xe4\xb4\xc8\x12\x2e\x03\x57\x1a\x00\x83\x98\x9b\x3d\xb2\x98\xea\x96\x2c\xa6\xba\x22\x11\x10\x6a\x92\x1a\xea\x66\xf9\xf2\x31\xa7\x71\xec\x4a\xfa\xf8\x98\x02\x15\x2c\x80\x62\x66\x20\x48\x28\x82\x1d\x3f\x2a\xad\x84\x4a\x36\xe3\x9a\xa3\xdd\x3e\xeb\x62\x87\x01\xee\xdd\x80\x3c\x05\x95\xe1\xf8\xe7\xb4\xf6\x38\x86\x05\xcd\x04\x06\x0b\xeb\xb8\xd4\x18\x5e\xf0\x2f\xb5\xf5\x22\x29\xb6\xa0\x7d\xf1\x18\x35\xb3\xda\xcd\x1d\x09\x33\x6e\x66\xb2\x3c\x09\x8a\xe1\x3b\x6c\xcc\x32\xd1\xfa\xf3\xf0\x62\xf8\xf9\xac\x34\xef\x9a\x56\x4e\xca\xf7\xd1\x9b\xe7\xfb\x51\xa9\x7b\x42\x02\xee\xc5\x63\x32\x79\x69\x67\x4a\x3a\x34\x0d\x0c\x7e\xe9\x9b\x05\x93\xcf\x29\xdb\x93\xaa\xc3\x5b\x1f\xe9\x73\x2f\x54\xc2\x71\x84\x2a\xe5\x08\x08\x2c\x16\xc0\xd0\xb1\x86\x82\xe5\xec\x74\x7a\x16\xe2\x6a\xb7\x9f\x55\x87\xab\xec\x19\x8c\x04\x04\x3f\x42\xa7\xd4\x4d\xa0\x83\xaa\x87\xaa\xa7\xa6\x1a\x37\xd7\xdc\x44\x44\x66\x42\x34\x2b\xdb\x1e\xbf\x04\xbd\x17\xde\x02\x33\x50\x0b\x5e\xfe\xa4\x61\xf5\x56\x38\x5f\xb5\x1d\x90\xfe\xfd\x9f\x06\xa0\xf2\xb6\xf7\x8f\x19\xd7\x14\x52\x25\xdf\x72\xc8\x70\xbe\x3e\x30\x5e\x9c\x38\x50\x14\x27\x9e\x05\xee\x43\xe7\x84\x0a\xf0\xf7\x9c\x10\x5e\x9d\xe6\xc6\xe0\x2e\xe8\x2d\x95\x34\x01\x33\x8e\xb9\x01\x86\x87\x68\x70\xcd\xf6\x1e\x02\xdc\x6a\x2a\x47\xb1\xd8\x6d\x55\x68\x70\xe3\x42\x6a\x7e\x77\xfd\x34\x9d\xff\xe4\x29\xf2\xe8\x08\x4a\xdd\x51\x6e\xda\xf4\xfa\x5d\xa8\xb3\x45\x8a\x9e\x89\x8c\xc3\x35\x35\xa1\xe0\xcf\xe1\x11\x14\xfa\x34\xc2\xed\xac\x9d\x83\x61\x20\x91\x26\x30\x1e\xd5\xcd\xec\xa5\xe3\xad\x64\x70\x69\xfb\xff\x44\xd6\x2b\xe9\xf1\x0e\x50\x90\x62\x66\x87\x5a\xc5\x15\x6d\xaf\xce\xf5\x5f\x71\xfe\xf8\x5d\x8f\x0d\xda\xf0\x35\x17\x90\x40\xdc\xa0\x2d\x35\xe2\x72\xf1\xf6\x13\x44\x79\xf1\x1d\x57\x11\x80\x61\x4e\x35\x6c\x58\xe7\x2e\x75\xb2\x96\xcb\x1b\xa5\x69\xe2\x95\x46\xe4\x0b\xcf\x0b\x35\x57\x92\x8a\xb6\x5f\xdc\x7e\x5f\x02\x7b\x86\x8a\x16\x90\xfc\x2b\xe5\x73\x75\x3a\xf1\x1e\x6d\xdd\x83\x93\xa7\x6e\x3d\x43\x53\x0c\xeb\x96\x4c\x0c\xeb\x1e\x3d\x76\xd3\xd6\x62\x37\xbd\xc8\x3a\x78\xf1\xc1\x89\xac\x74\x5e\xcf\x0d\x3e\xc3\x85\xee\x30\xdf\x23\x4e\x9b\xec\x8a\x08\x96\xfd\x2f\xcf\x4b\x5d\x6b\x33\xcd\x6c\xdb\xd3\x48\x3a\x7b\x76\xe7\xe4\x58\xdf\xd5\xd9\x1b\xfe\xe7\x1a\x78\x78\xc2\xf3\xf9\x93\x97\x92\xad\xf5\x26\x5a\x8f\x86\x9f\x87\x17\x67\xd5\xa6\xe6\x59\x1f\x3e\xa1\x1d\xcc\xc4\x6a\xd0\x5b\xd2\xb5\x8c\xd8\x9d\x51\xfd\xfc\x77\x07\xa6\x70\x6c\x1e\x92\x7d\x63\xd3\x52\xd9\x5c\x73\xb5\xb6\xf6\x57\xb6\xde\x3b\x92\x7f\x8d\x72\xed\x6f\x85\x32\x9b\x3b\x73\x55\xfe\x72\xa0\xd7\x0b\xe7\x00\x79\x2a\xf9\x61\x78\xb2\xfe\x3d\x7e\x3c\xcb\x1d\x7d\x85\xfe\x38\x34\x9d\xe5\xfd\x34\x2c\xf5\x5a\x7f\x9c\xda\x46\x85\x0f\xf6\xd6\xf0\x23\xe7\x60\x2f\xd8\x9c\x81\x8f\x30\xe2\x15\xf2\x69\x4f\xa5\xed\x51\x5e\xef\x44\xc7\x69\xa9\x77\xaa\xde\xe3\xeb\x6d\xeb\xc8\x4b\x51\xb4\xb5\xe6\x67\x02\xf5\xdf\x9f\x84\xeb\xd1\x33\x20\xdd\xfe\x9c\xe0\x61\x7a\x9d\x53\xaf\x37\xfa\x88\xa0\x12\x95\x72\x6c\xa5\x88\x94\x2d\xef\x8b\x2f\xac\xdc\x11\xc2\x82\xff\x36\x37\x9e\xca\x85\xba\x93\xbe\x2c\x6e\x0b\x66\x5e\x73\xbe\xf2\x05\xb0\x0d\x13\x70\xab\xe2\xf2\x77\x2e\xf3\xed\x6f\xa9\xfc\x9f\x13\xbd\x84\x14\x0c\x15\x83\xff\x06\x00\x00\xff\xff\xba\x68\x0a\x1a\xce\x2a\x00\x00")
+var _deployKubernetes119FakePmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\xdd\x6f\xe3\xb8\x11\x7f\xf7\x5f\xc1\x6e\xef\xe1\x0e\xa8\xac\x78\xdb\x03\x5a\x01\x7e\xc8\x26\xbe\xd4\xe8\x26\x31\x92\xec\xbd\x06\x0c\x35\x96\x59\x53\x24\x4b\x8e\xbc\xd1\x15\xfd\xdf\x0b\x52\x92\xad\x2f\x2b\xb6\x2f\x1f\x28\xea\x7d\x58\x87\xe2\x70\x7e\xf3\xc1\x99\xdf\xd8\xfe\x23\xb9\x02\x09\x86\x22\xc4\xe4\x3b\xc7\x15\xf9\x94\xd2\x35\x90\x75\x66\x51\xa5\xfc\x37\xf8\xf4\x27\x12\x2b\x22\x15\x12\x88\x39\xfe\x61\x34\xa2\x9a\xff\x0a\xc6\x72\x25\x23\xb2\x99\x8c\xd6\x5c\xc6\x11\xb9\x07\xb3\xe1\x0c\xce\x19\x53\x99\xc4\x51\x0a\x48\x63\x8a\x34\x1a\x11\x22\xe8\x13\x08\xeb\xde\x11\xa2\x53\x48\x03\x66\xf9\x98\x4b\x04\x31\x66\x2a\x0d\x63\xd0\x42\xe5\x29\x48\x8c\xc8\x92\xae\x21\xd0\x46\xc5\x19\x43\xae\xe4\x88\x10\x49\x53\x88\xb6\x62\x01\x53\x12\x8d\x12\x02\x4c\xf9\xcc\x6a\xca\x6a\x1b\x46\x41\x10\x34\x00\x9a\x27\xca\xc6\x34\xc3\x95\x32\xfc\x37\xea\x0e\x1d\xaf\xff\x6a\xc7\x5c\x85\x5b\xe8\x77\x4a\xc0\x9b\x01\x86\x67\x04\x23\xa9\x70\x9b\x36\xdc\x61\x02\x13\xb0\x65\xb2\x07\xbe\xc9\x04\xd8\x68\x14\x10\xaa\xf9\x95\x51\x99\xf6\x30\x02\xf2\xe9\xd3\x88\x10\x03\x56\x65\x86\x41\xb9\x06\x32\xd6\x8a\x4b\xb4\x23\x42\x36\x60\x9e\xca\xe5\x04\xd0\xff\xff\x9d\x22\x5b\xf9\x77\x82\xdb\x62\x29\x06\x01\x08\xfe\x6d\xa6\x63\x5a\xbe\x65\x06\xdc\xdb\x8e\x4e\xa6\x94\x89\xb9\xac\x3b\xad\x0b\x42\x00\xb5\xf0\x56\x08\x2c\x2a\x43\x13\xd8\xab\x9c\x59\x5e\x6e\x61\x54\x53\xc6\x91\xef\x83\xb2\x05\xb0\xc3\x54\x2a\x6d\x41\xd1\xdb\xe7\x25\xd4\x83\x42\xa1\x55\xdc\xa3\xb8\x23\x4a\xb5\xb6\x5d\x61\x03\x5a\x70\x46\x2d\xf4\x45\xf2\x84\x7c\xbe\x10\x99\x45\x30\xef\x9f\xd6\x26\x93\x12\xcc\x51\x39\xac\x9d\x5d\x16\x41\xe2\x46\x89\x2c\x3d\x2d\x7c\x47\x45\xaa\xa5\x90\x09\xca\xd3\xc3\xb5\x96\x99\x72\x74\xa6\x56\x69\x2a\xa8\xdd\x7b\x5d\x5a\xea\x0e\xab\x01\x1b\xe8\x14\x80\x23\x73\xbd\x6b\x8b\xa4\xda\xae\x14\x8e\x5f\x32\xaa\x0c\x59\xb9\x7d\xc8\xaa\xd7\xd2\xe1\xca\x7f\xd7\xe0\x17\x54\xbd\x5c\x44\xa4\x8a\x5f\x33\x28\x47\x1c\x77\x5a\xb7\xfa\xc2\x65\xcc\x65\xf2\x76\x5d\xd6\xf2\xe6\xc5\x56\x02\x86\x9a\x96\x12\x70\x07\x4b\xa7\xbb\xf2\xce\x80\x29\x23\x42\x6a\x7d\xf7\xf0\x86\x69\xb3\xa7\x7f\x02\x43\x5f\x59\x7a\x39\xc7\xbb\x90\x85\x5a\x71\xfd\x88\x28\x9c\xea\xeb\x7a\x4f\x38\xaa\x98\xbf\x83\xd7\xdb\x1c\xf2\xe3\xc8\xa3\xd5\xc0\x9c\x2a\xad\x0c\x6e\x3b\xbb\xc1\x88\x4c\xce\xce\xce\xce\x3c\x06\xa4\x26\x01\x5c\x34\x56\x2d\x08\x60\xa8\x4c\x81\x92\x6a\xbd\x4f\xe7\xd1\x26\x7c\x98\xab\x52\x40\xc3\x99\x3d\xc1\x4f\x93\x5e\x3f\x4d\xde\xd6\x4f\x84\x60\xae\x21\x22\x37\x2a\x06\xa7\xb3\xe3\x38\xc7\xbc\x76\x97\xf8\x1e\x29\xc2\x32\x13\xf7\xf0\x81\x93\x4a\xe5\xc4\x8a\xfe\x45\x64\xd2\xf1\x51\xea\xba\xc4\xd7\x1a\xaa\x17\xdc\x76\x02\x6c\x5b\x64\xd2\xcd\x00\x7a\x84\x54\x0b\x8a\x50\x62\xaa\x39\xcc\x03\x92\x52\xa1\x2f\x3a\x5b\x8c\xbd\x30\x2c\x33\xd4\xc5\xc8\x1d\x4d\xb9\x04\x63\xcb\xdd\xa2\x61\xdf\x8b\x16\x9e\x60\xe3\x5e\xb1\xef\xf0\xb4\x52\x6a\x1d\x11\x9e\x48\x65\xc0\x6f\xad\xe2\xe2\xa1\x2c\x97\x5c\x72\xcc\x77\xe0\x5c\x6f\x3f\xef\xac\xba\x28\xfe\x2b\xe3\x06\xe2\xcb\xcc\x70\x99\xdc\xb3\x15\xc4\x99\xe0\x32\x99\xfb\x83\xcb\xe5\xd9\x33\xb0\xcc\x61\xaa\x4b\x16\x67\xde\x97\x71\x7f\x00\x93\xda\xe6\xe3\xa0\x48\x83\xd9\xb3\x36\x60\x6d\xd3\xcf\xd5\x8e\x35\xe4\x51\x9f\x81\x3d\xde\xab\x5e\x4a\xbb\xa1\x5f\x19\x77\x6b\x70\x2e\x3b\xcf\x37\x54\x64\xd0\x51\xe5\x39\x8f\x54\x9f\xfa\x96\x97\x54\x58\xa8\x9e\xec\xc2\x5c\x1d\xe1\x26\xca\x34\xa5\x32\xde\x9d\x19\x90\x30\xb3\x26\x14\x8a\x51\x11\x3e\x71\x19\x6e\xc3\x1e\x1b\xbe\xa9\x81\x0e\x48\xb0\x99\xfe\xb9\xfe\xa7\x50\x49\xc2\x65\x12\x2c\x95\x49\x29\x4e\x11\x9e\xb1\xfe\x38\x55\x31\x4c\x7b\xac\x0f\x48\x50\xcd\xcd\xd3\x4c\xf2\xe7\x28\x0c\x43\x66\x79\xd8\x4c\xb5\xb1\x55\x6c\x5d\x97\x31\x90\x70\x8b\x26\x9f\x55\xb2\xc8\x74\x14\x86\x67\x63\xff\x2f\xda\xf5\x87\x72\xbf\x0b\x29\x8f\xa7\x3f\xfc\xf8\x8f\x6f\x5f\x66\x8f\x37\xb7\x97\xb3\xc7\x9b\xf3\xeb\xd9\x4f\xf5\x3d\x8c\xfe\xc2\x05\x4c\x43\x06\x06\x6d\xc8\xe8\x98\x99\x86\x09\x6e\xbd\xbe\x03\x85\x6d\x6f\x59\x43\xde\xde\xb1\x86\xbc\xbe\xa3\xf0\xa3\xab\x3f\xd3\x1f\x7e\x5c\x5c\xcf\xae\x1f\x2f\xee\xe7\x8f\x97\x77\xf3\x5f\x67\x77\x5d\x48\x65\xd9\xff\xea\x27\xa4\x69\xb4\x2b\xe7\xee\x05\x72\x53\x8f\x5c\x51\xef\x9a\xf6\x8d\x5a\xe9\xf3\x8b\x51\x69\x33\x83\x96\x1c\x44\x5c\x12\x98\xfa\xab\xd5\xe5\x9a\x0f\xbd\xd0\x82\xe2\x2a\xf2\xb7\x73\xec\xbc\xeb\x0a\x56\x07\xcd\xc3\xec\xee\x7a\x7e\x73\xfe\x30\xbf\xbd\x79\xfc\x7a\x7b\xf5\xb8\x38\x7f\xf8\x7b\x1b\x53\x44\x42\x4c\x75\x88\x60\xd2\xf2\xc3\x0d\x97\x4b\x9d\xa3\xfa\x7c\xd5\x3d\xaa\x7b\xe5\x3a\x07\x5d\xdd\x5e\xce\xbe\x7c\xbb\xea\xca\x3e\xff\x7c\xf6\xb7\xa2\xee\x5c\xdc\x4c\x77\x6e\xe6\x29\x4d\x20\x22\xfe\xc0\xf6\x7d\x88\x18\x95\xd4\xe4\xcd\xbd\x8b\x4c\x88\x85\x12\x9c\xe5\x11\x99\x2f\x6f\x14\x2e\x0c\x58\x90\xbb\x44\xa9\x75\xa6\xd6\xb5\xda\x36\xf0\x0a\xf2\xf6\xd6\x2e\x5a\xfd\xbc\x7e\xd2\x8e\x1c\x14\x2f\x0b\x2c\x33\x1c\xf3\x0b\x37\x9d\x3d\x63\xb3\x2c\xd2\xf8\x56\x8a\xfc\x4e\x29\x9f\xcb\x36\xb7\x08\x69\x44\xd0\x64\xbb\xe8\xd5\x42\x71\x0d\xd6\x3a\x93\x7c\xac\x07\xe3\x54\x0c\x86\xd7\x8e\x83\x36\x2c\x48\xdd\x4a\x29\xef\x6f\x45\x07\x7e\x75\x97\xfd\x05\xdb\x27\x69\x79\x47\x4e\x8b\x2c\xe1\x32\x70\xa5\x01\x30\x88\xb9\xd9\x23\x8b\xa9\xee\xc8\x62\xaa\x6b\x12\x01\xa1\x26\x69\xa0\x6e\x57\x37\x1f\x73\x1a\xc7\xae\xe2\x4f\x0f\x29\x50\xc1\x12\x28\x66\x06\x82\x84\x22\xd8\xe9\x83\xd2\x4a\xa8\x24\x9f\x36\x1c\xed\xf6\x59\x17\x3b\x0c\x70\xef\x06\xe4\x29\xa8\x0c\xa7\x3f\xa7\x8d\xe5\x18\x96\x34\x13\x18\x2c\xad\xa3\x5a\x53\x78\xc6\xbf\x34\x9e\x97\x49\xb1\x05\xed\x8b\xc7\xa4\x9d\xd5\x6e\x2c\x49\x98\x71\x23\x95\xe5\x49\x50\xce\xe6\x61\x6b\xd4\x89\x36\x9f\xc7\x67\xe3\xcf\x27\xa5\x79\xdf\x30\x73\x54\xbe\x4f\xde\x3c\xdf\x0f\x4a\xdd\x23\x12\x70\x2f\x1e\x93\xc9\x73\x7b\xa3\xa4\x43\xd3\xc2\xe0\x1f\x7d\xb3\x60\x8a\x31\x66\x7b\x52\x7d\xb6\x1b\xe2\x84\xee\x85\x4a\x38\x0a\x51\x67\x24\x01\x81\xe5\x12\x18\x3a\x52\x51\x92\xa0\x9d\x4e\x4f\x52\x5c\xed\xf6\xa3\xec\x78\x9d\x3d\x81\x91\x80\xe0\x27\xec\x94\xba\x01\x75\x54\xf7\x50\xfd\xd4\x54\x63\x7e\xc9\x4d\x44\x64\x26\x44\xbb\xb2\xed\xf1\x4b\x30\x78\xe1\x2d\x30\x03\x8d\xe0\x15\x2b\x2d\xab\xb7\xc2\xc5\x53\xdb\x03\xe9\xdf\xff\x69\x01\xaa\x6e\xfb\xf0\x14\x72\x49\x21\x55\xf2\x2d\x67\x10\xe7\xeb\x17\xa6\x8f\x23\xe7\x8d\xf2\xc4\x93\xc0\x7d\xe8\x18\x51\x03\xfe\x9e\x03\xc4\xab\xb3\xe0\x18\xdc\x05\xbd\xa6\x92\x26\x60\xa6\x31\x37\xc0\xf0\x77\xb2\xe4\x86\x6b\x06\xf8\x71\xa7\xe7\x1c\x44\x72\xb7\x45\xa3\x45\x9d\x4b\xa9\xc5\xed\xe5\xe3\x7c\xf1\x93\x67\xd0\x93\x03\x18\x77\x4f\x35\xea\xb2\xef\x77\x61\xd6\x16\x29\x7a\xa2\x32\x0d\x37\xd4\x84\x82\x3f\x85\x07\x30\xec\xe3\xf8\xb8\xb3\x76\x01\x86\x81\x44\x9a\xc0\x74\xd2\x34\x73\x90\xad\x77\x72\xc5\x65\xf5\xff\x12\x97\xaf\xa5\xc7\x3b\x40\x41\x8a\x99\x1d\x6b\x15\xd7\xb4\xbd\xfa\x28\xf0\x8a\xe3\xc9\xff\xf5\x54\xa1\x0d\xdf\x70\x01\x09\xc4\x2d\x56\xd3\xe0\x35\x67\x6f\x3f\x60\x54\x17\xdf\x51\x19\x01\x18\x16\x4c\xc4\x86\x4d\x6a\xd3\xe4\x72\x85\xbc\x51\x9a\x26\x5e\x69\x44\xbe\xf0\xa2\x8e\x73\x25\xa9\xe8\xfa\xc5\xed\xf7\x25\x70\x60\xe6\xe8\x00\x29\xbe\x90\x3e\x55\xa7\x13\x1f\xd0\xd6\x3f\x57\x79\x66\x37\x30\x53\xc5\xb0\xe9\xc8\xc4\xb0\x19\xd0\x63\xf3\xae\x16\x9b\x0f\x22\xeb\xa1\xcd\x2f\x0e\x6c\x95\xf3\x06\x6e\xf0\x09\x2e\x74\x87\xf9\x1e\x71\xdc\xe0\x57\x46\xb0\xea\x7f\x45\x5e\xea\x46\x9b\x69\x67\xdb\x9e\x46\xd2\xdb\xb3\x7b\x07\xcb\xe6\xae\xde\xde\xf0\xbb\x6b\xe0\xcb\x03\xa0\xcf\x9f\xa2\x94\x6c\xad\x37\xd1\x66\x32\xfe\x3c\x3e\x3b\xa9\x36\xb5\xcf\xfa\xf0\x01\xee\xc5\x4c\xac\x07\xbd\x23\xdd\xc8\x88\xdd\x19\xf5\x4f\x8f\x77\x60\x4a\xc7\x16\x21\xd9\x37\x55\xad\x94\x2d\x34\xd7\x6b\xeb\x70\x65\x1b\xbc\x23\xc5\x97\x30\x97\xfe\x56\x28\x93\xdf\x9a\x8b\xea\x77\x07\x83\x5e\x38\x05\xc8\x63\xc5\x0f\xc3\xa3\xf5\xef\xf1\xe3\x49\xee\x18\x2a\xf4\x87\xa1\xe9\x2d\xef\xc7\x61\x69\xd6\xfa\xc3\xd4\xb6\x2a\x7c\xb0\xb7\x86\x1f\x38\x26\x7b\xc1\xf6\x88\x7c\x80\x11\xaf\x90\x4f\x7b\x2a\xed\x80\xf2\x66\x27\x3a\x4c\x4b\xb3\x53\x0d\x1e\xdf\x6c\x5b\x07\x5e\x8a\xb2\xad\xb5\x3f\x32\x68\xfe\x7a\x25\xdc\x4c\x9e\x00\xe9\xf6\xc7\x08\xf7\xf3\xcb\x82\x7a\xbd\xd1\x27\x08\xb5\xa8\x54\x53\x2d\x45\xa4\x6c\x75\x57\x7e\xdd\xe5\x8e\x10\x16\xfc\x77\xc1\xf1\x5c\x2e\xd5\xad\xf4\x65\x71\x5b\x30\x8b\x9a\xf3\x95\x2f\x81\xe5\x4c\xc0\xb5\x8a\xab\x5f\xc9\x2c\xb6\xbf\xc4\xf2\x7f\xce\xf4\x0a\x52\x30\x54\x8c\xfe\x1b\x00\x00\xff\xff\xc7\x92\xe8\x5c\x91\x2a\x00\x00")
func deployKubernetes119FakePmemCsiYamlBytes() ([]byte, error) {
return bindataRead(
@@ -240,12 +240,12 @@ func deployKubernetes119FakePmemCsiYaml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "deploy/kubernetes-1.19/fake/pmem-csi.yaml", size: 10958, mode: os.FileMode(436), modTime: time.Unix(1608146582, 0)}
+ info := bindataFileInfo{name: "deploy/kubernetes-1.19/fake/pmem-csi.yaml", size: 10897, mode: os.FileMode(420), modTime: time.Unix(1608283294, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
-var _deployKubernetes119LvmPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\xdd\x6f\xe3\xb8\x11\x7f\xf7\x5f\xc1\x6e\xef\xe1\x0e\xa8\xac\x78\xdb\x03\x5a\x01\x7e\xc8\x26\xbe\xd4\xe8\xc6\x31\x92\xec\xbd\x06\x0c\x35\x96\x59\x53\x24\x4b\x8e\xbc\xf1\x15\xfd\xdf\x0b\x52\x92\xad\x2f\xcb\x1f\xcd\x07\x8a\xf3\x3e\xac\x23\x72\x38\xbf\xf9\xe0\xcc\xfc\x6c\xff\x91\xdc\x80\x04\x43\x11\x62\xf2\x9d\xe3\x92\x7c\x4a\xe9\x0a\xc8\x2a\xb3\xa8\x52\xfe\x1b\x7c\xfa\x13\x89\x15\x91\x0a\x09\xc4\x1c\xff\x30\x18\x50\xcd\x7f\x05\x63\xb9\x92\x11\x59\x8f\x06\x2b\x2e\xe3\x88\xcc\x68\x0a\x56\x53\x06\x83\x14\x90\xc6\x14\x69\x34\x20\x44\xd0\x67\x10\xd6\xbd\x23\x44\xa7\x90\x06\xcc\xf2\x21\x97\x08\x62\xc8\x54\x1a\xc6\xa0\x85\xda\xa4\x20\x31\x22\x62\x9d\x06\xda\xa8\x38\x63\xc8\x95\x1c\x10\x22\x69\x0a\xd1\x56\x6a\x10\x04\x41\xb7\xe6\x07\x30\x6b\xce\xe0\x92\x31\x95\x49\x7c\x23\xf5\x01\x53\x12\x8d\x12\x02\x4c\xb1\xe6\x8d\xed\xc1\x67\x9e\x29\x1b\xd2\x0c\x97\xca\xf0\xdf\xa8\x3b\x74\xb8\xfa\xab\x1d\x72\x15\x6e\x91\xdf\x2b\xf1\x56\xee\x0a\xe0\x05\xc1\x48\x2a\xdc\xa6\x35\x77\x90\xc0\x04\x6c\x91\xec\x41\x6f\x32\x01\x36\x1a\x04\x84\x6a\x7e\x63\x54\xa6\x3d\x8a\x80\x7c\xfa\x34\x20\xc4\x80\x55\x99\x61\x50\x3c\x03\x19\x6b\xc5\x25\xda\x01\x21\x6b\x30\xcf\xc5\xe3\x04\xd0\xff\xff\x9d\x22\x5b\xfa\x77\x82\xdb\xfc\x51\x0c\x02\x10\xfc\xdb\x4c\xc7\xb4\x78\xcb\x0c\xb8\xb7\x2d\x9d\x4c\x29\x13\x73\x59\xf5\x59\x1b\x84\x00\x6a\xe1\xad\x10\x58\x54\x86\x26\xb0\x57\x39\xb3\xbc\xd8\xc2\xa8\xa6\x8c\x23\xdf\x07\x65\x0b\x60\x87\xa9\x50\xda\x80\xa2\xb7\xeb\x05\xd4\xa3\x42\xa1\x55\xdc\xa1\xb8\x25\x4a\xb5\xb6\x6d\x61\x03\x5a\x70\x46\x2d\x74\x45\xf2\x8c\x74\xbe\x12\x99\x45\x30\xef\x9e\xd5\x26\x93\x12\xcc\x49\x29\xac\x9d\x59\x16\x41\xe2\x5a\x89\x2c\x3d\x2f\x7a\x27\x05\xaa\xa1\x90\x09\xca\xd3\xe3\xb5\x16\x89\x72\x72\xa2\x96\x59\x2a\xa8\xdd\x7b\x5b\x1a\xea\x8e\x2b\x01\x6b\x68\xdd\xff\x13\x53\xbd\x6d\x8b\xa4\xda\x2e\x15\x0e\x0f\x19\x55\x84\xac\xd8\xde\x67\xd5\x6b\xe9\x70\xc5\xbf\x6d\xf0\x01\x55\x87\x6b\x88\x54\xf1\x6b\x06\xe5\x84\xe3\xce\xeb\x55\x5f\xb8\x8c\xb9\x4c\xde\xac\xc5\x5a\x5e\xbf\xd7\x4a\x40\x5f\xcb\x52\x02\xee\x61\xe1\x54\x97\xce\xe9\xb1\x64\x40\x48\xa5\xe9\x1e\xdf\x2e\x6d\xf6\xfc\x4f\x60\xe8\x0b\x4b\xe7\xbc\xf1\x2e\x93\x42\xa5\xb4\x7e\x40\x10\xce\x75\x75\xb5\x21\x9c\x54\xca\xdf\xc1\xe9\xcd\xf1\xf1\xc3\xe6\x46\xab\x81\x39\x4d\x5a\x19\xdc\x76\x75\x83\x11\x19\x5d\x5c\x5c\x5c\x78\x08\x48\x4d\x02\x38\xaf\x3d\xb5\x20\x80\xa1\x32\x39\x48\xaa\xf5\x3e\x9d\xa7\x5a\xf0\x51\x8e\x4a\x01\x0d\x67\xf6\x0c\x2f\x8d\x3a\xbd\x34\x7a\x53\x2f\x11\x82\x1b\x0d\x11\x99\xa9\x18\x9c\xca\x96\xdb\xdc\xc8\xb5\xbb\xbf\x0f\x48\x11\x16\x99\x78\x80\x8f\x23\x28\xa5\x0b\xcb\xb1\x2f\x22\xa3\x96\x87\x52\xd7\x1e\xbe\x56\x40\x1d\x70\xda\xe9\xa8\x6d\x9e\x45\xb3\x1e\xf0\x08\xa9\x16\x14\xa1\x80\x54\x71\x97\xc7\x23\xa5\x42\x5f\x6e\xb6\x10\x3b\x51\x58\x66\xa8\x8b\x90\x3b\x9a\x72\x09\xc6\x16\xbb\x45\xcd\xbc\x83\x06\x9e\x6e\xe2\x5e\xa9\xef\xf0\xbc\x54\x6a\x15\x11\x9e\x48\x65\xc0\x6f\x2d\xa3\xe2\x91\x2c\x16\x5c\x72\xdc\xec\xb0\xb9\x96\x7e\xd9\x7a\xea\x62\xf8\xaf\x8c\x1b\x88\xaf\x33\xc3\x65\xf2\xc0\x96\x10\x67\x82\xcb\x64\xea\x0f\x2e\x1e\x4f\x5e\x80\x65\x0e\x53\x55\x32\x3f\xf3\xa1\x88\xfa\x23\x98\xd4\xd6\x97\x83\x3c\x09\x26\x2f\xda\x80\xb5\x75\x37\x97\x3b\x56\xb0\x89\xba\x0c\xec\x70\x5e\xf9\x52\x1a\x0c\x75\x79\x46\x66\x0a\xa7\xb2\xb5\xbe\xa6\x22\x83\x96\x2a\x3f\xea\x48\xf5\xa9\xeb\xf1\x82\x0a\x0b\xe5\xca\x2e\xca\xe5\x11\x8e\x47\xa6\x29\x95\xf1\xee\xcc\x80\x84\x99\x35\xa1\x50\x8c\x8a\xf0\x99\xcb\x70\x1b\xf5\xd8\xf0\x75\x05\x74\x40\x82\xf5\xf8\xcf\xd5\x3f\x53\x15\xc3\xb8\xc3\xbc\x80\x04\x25\x1d\x1e\x67\x92\xbf\x44\x61\x18\x32\xcb\xc3\x7a\x2a\x0d\xad\x62\xab\xaa\x8c\x81\x84\x5b\x34\x9b\x49\x29\x8b\x4c\x47\x61\x78\x31\xf4\xff\xa2\x5d\xe9\x2f\xf6\xbb\x98\xf1\x78\xfc\xc3\x8f\xff\xf8\xf6\x65\xf2\x34\xbb\xbb\x9e\x3c\xcd\x2e\x6f\x27\x3f\x55\xf7\x30\xfa\x0b\x17\x30\x0e\x19\x18\xb4\x21\xa3\x43\x66\xb0\xb6\x0e\x06\xab\x3b\x50\xd8\xe6\x96\x15\x6c\x9a\x3b\x56\xb0\xa9\xee\xc8\x1d\xe5\xca\xcb\xf8\x87\x1f\xe7\xb7\x93\xdb\xa7\xab\x87\xe9\xd3\xf5\xfd\xf4\xd7\xc9\x7d\x1b\x52\x51\xd3\xbf\x7a\xe6\x33\x8e\x76\xb5\xda\xbd\x40\xae\xab\xa1\xc9\xcb\x59\xdd\xbe\x41\x23\x3f\x7e\x31\x2a\xad\xa7\xc8\x82\x83\x88\x8b\xd1\xa4\xfa\x6a\x74\xb0\xfa\xa2\x17\x9a\x53\x5c\x46\xfe\xfa\x0d\x9d\x77\x5d\x41\x6a\xa1\x79\x9c\xdc\xdf\x4e\x67\x97\x8f\xd3\xbb\xd9\xd3\xd7\xbb\x9b\xa7\xf9\xe5\xe3\xdf\x9b\x98\x22\x12\x62\xaa\x43\x04\x93\x16\x9f\x59\x04\x42\x25\xad\xa3\xba\x7c\xd5\x3e\xaa\x7d\xa7\x5a\x07\xdd\xdc\x5d\x4f\xbe\x7c\xbb\x69\xcb\xbe\xfc\x7c\xf1\xb7\xbc\xb0\x5c\xcd\xc6\x3b\x37\xf3\x94\x26\x10\x11\x7f\x60\x33\xe1\x23\x46\x25\x35\x9b\xfa\xde\x79\x26\xc4\x5c\x09\xce\x36\x11\x99\x2e\x66\x0a\xe7\x06\x2c\xc8\x5d\xa2\x54\x1a\x4f\xe3\xde\x6c\xbb\x73\x09\x79\x7b\x2d\xe7\x8d\x66\x5d\x3d\x69\xd7\xf9\xf3\x97\x05\x96\x19\x8e\x9b\x2b\xc7\xba\x5e\xb0\x5e\xf7\x68\x7c\x27\xc5\xe6\x5e\x29\x9f\xcb\x76\x63\x11\xd2\x88\xa0\xc9\x76\xd1\xab\x84\xe2\x16\xac\x75\x26\xf9\x58\xf7\xc6\x29\x27\x7c\xb7\x6e\xba\xac\x59\x90\xba\x27\x85\xbc\xbf\x15\x2d\xf8\xe5\x5d\xf6\x17\x6c\x9f\xa4\xe5\x2d\x39\x2d\xb2\x84\xcb\xc0\x95\x06\xc0\x20\xe6\x66\x8f\x2c\xa6\xba\x25\x8b\xa9\xae\x48\x04\x84\x9a\xa4\x86\xba\x59\xbe\x7c\xcc\x69\x1c\xbb\x92\x3e\x3e\xa6\x40\x05\x0b\xa0\x98\x19\x08\x12\x8a\x60\xc7\x8f\x4a\x2b\xa1\x92\xcd\xb8\xe6\x68\xb7\xcf\xba\xd8\x61\x80\x7b\x37\x20\x4f\x41\x65\x38\xfe\x39\xad\x3d\x8e\x61\x41\x33\x81\xc1\xc2\xba\x41\x6a\x0c\x2f\xf8\x97\xda\x7a\x91\x14\x5b\xd0\xbe\x78\x8c\x9a\x59\xed\x08\x47\xc2\x8c\xe3\x4a\x96\x27\x41\xc1\xb9\xc3\x06\x89\x89\xd6\x9f\x87\x17\xc3\xcf\x67\xa5\x79\x17\x4d\x39\x29\xdf\x47\x6f\x9e\xef\x47\xa5\xee\x09\x09\xb8\x17\x8f\xc9\xe4\xa5\x9d\x29\xe9\xd0\x34\x30\xf8\xa5\x6f\x16\x4c\xce\x50\xb6\x27\x55\x59\x5b\xdf\xcc\xe7\x5e\xa8\x84\x9b\x11\xaa\x23\x47\x40\x60\xb1\x00\x86\x6e\x6a\x28\xa6\x9c\x9d\x4e\x3f\x85\xb8\xda\xed\x49\xea\x70\x95\x3d\x83\x91\x80\xe0\xa9\x73\x4a\x1d\xf5\x1c\x54\x3d\x54\x3d\x35\xd5\xb8\xb9\xe6\x26\x22\x32\x13\xa2\x59\xd9\xf6\xf8\x25\xe8\xbd\xf0\x16\x98\x81\x5a\xf0\xf2\x27\x0d\xab\xb7\xc2\xf9\xaa\xed\x80\xf4\xef\xff\x34\x00\x95\xb7\xbd\x9f\x63\x5c\x53\x48\x95\x7c\x43\x86\xe1\x5c\x7d\x80\x5b\x9c\xc8\x26\x8a\x13\xcf\xc1\xf6\xa1\x24\xa1\x82\xfb\x1d\xe9\xc1\xab\xcf\xb8\x31\xb8\xdb\x79\x4b\x25\x4d\xc0\x8c\xc5\x3a\x3d\x34\x00\xd7\xec\xee\x19\x7d\x5b\xed\xe4\xa8\xf9\x75\x5b\x0f\x1a\x53\x71\x21\x35\xbf\xbb\x7e\x9a\xce\x7f\xf2\xc3\xf1\xe8\x88\x61\xba\xa3\xd0\xb4\x07\xeb\x77\x19\x9a\xad\x63\xff\xae\x10\x8f\xc3\x35\x35\xa1\xe0\xcf\xe1\x11\xc3\xf3\x69\xa3\xb6\xb3\x76\x0e\x86\x81\x44\x9a\xc0\x78\x54\x37\xf3\xff\x7d\x10\xaf\x24\xc0\x3b\x40\x41\x8a\x99\x1d\x6a\x15\x57\xb4\xbd\xfa\x1c\xff\x8a\xdc\xe2\x77\x4d\x09\xb4\xe1\x6b\x2e\x20\x81\xb8\x31\x92\xd4\x86\x92\x8b\xb7\x67\x07\xe5\xd5\x76\x73\x88\x00\x0c\xf3\x31\xc2\x86\xf5\xb9\xa4\x3e\x88\xe5\xf2\x46\x69\x9a\x78\xa5\x11\xf9\xc2\x63\x6e\xc0\xf7\x0a\x2a\xda\x7e\x71\xfb\x7d\x91\xeb\x21\x0c\x2d\x20\xf9\x97\xc4\xe7\xea\x74\xe2\x3d\xda\xba\x49\x91\x1f\xcb\x7a\x08\x51\x0c\xeb\x96\x4c\x0c\xeb\x1e\x3d\x76\xd3\xd6\x62\x37\xbd\xc8\x3a\x66\xde\x83\x6c\xab\x74\x5e\xcf\x0d\x3e\xc3\x85\xee\x30\xdf\x05\x4e\x63\x6d\x45\x04\xcb\x0e\x97\xe7\xa5\xae\x35\x92\x66\xb6\xed\x69\x15\x9d\x5d\xb9\x93\x15\xd6\x77\x75\xf6\x86\xff\xb9\x06\x1e\x66\x6f\x3e\x7f\xf2\x52\xb2\xb5\xde\x44\xeb\xd1\xf0\xf3\xf0\xe2\xac\xda\xd4\x3c\xeb\xc3\xd9\xd7\xc1\x4c\xac\x06\xbd\x25\x5d\xcb\x88\xdd\x19\xd5\xcf\x76\x77\x60\x0a\xc7\xe6\x21\xd9\x47\x89\x96\xca\xe6\x9a\xab\xb5\xb5\xbf\xb2\xf5\xde\x91\xfc\xfb\x91\x6b\x7f\x2b\x94\xd9\xdc\x99\xab\xf2\xc7\x00\xbd\x5e\x38\x07\xc8\x53\x39\x01\x86\x27\xeb\xdf\xe3\xc7\xb3\xdc\xd1\x57\xe8\x8f\x43\xd3\x59\xde\x4f\xc3\x52\xaf\xf5\xc7\xa9\x6d\x54\xf8\x60\x6f\x0d\x3f\x92\xe3\x7a\xc1\x26\xbf\x3d\xc2\x88\x57\xc8\xa7\x3d\x95\xb6\x47\x79\xbd\x13\x1d\xa7\xa5\xde\xa9\x7a\x8f\xaf\xb7\xad\x23\x2f\x45\xd1\xd6\x9a\x7c\xbf\xfe\x93\x92\x70\x3d\x7a\x06\xa4\xdb\x9f\x08\x3c\x4c\xaf\xf3\xd1\xeb\x6d\xe8\x7f\x25\x28\x25\x29\xa5\x88\x94\x2d\xef\x8b\xef\xa2\x22\xe2\xbf\x91\xf1\x5f\xd2\xc6\x53\xb9\x50\x77\xd2\x57\xc5\x6d\xbd\xcc\x4b\xce\x57\xbe\x00\xb6\x61\x02\x6e\x55\x5c\xfe\x72\x65\xbe\xfd\x75\x94\xff\x73\xa2\x97\x90\x82\xa1\x62\xf0\xdf\x00\x00\x00\xff\xff\xfa\x42\x3c\xbb\x9c\x2a\x00\x00")
+var _deployKubernetes119LvmPmemCsiYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\x5b\x6f\xe3\xb8\x15\x7e\xf7\xaf\x60\xa7\xfb\xb0\x0b\x54\x56\x3c\xed\x02\xad\x00\x3f\x64\x12\x6f\x6a\x74\x92\x18\x49\x66\x5f\x03\x86\x3a\x96\x59\x53\x24\x4b\x1e\x69\xe2\x2d\xfa\xdf\x0b\x52\x92\xad\x9b\x15\xdb\x9b\x0b\x8a\x7a\x1e\xc6\xa1\x78\x78\x3e\x9e\xeb\x77\x6c\xff\x91\x5c\x81\x04\x43\x11\x62\xf2\x9d\xe3\x8a\x7c\x4a\xe9\x1a\xc8\x3a\xb3\xa8\x52\xfe\x1b\x7c\xfa\x13\x89\x15\x91\x0a\x09\xc4\x1c\xff\x30\x1a\x51\xcd\x7f\x05\x63\xb9\x92\x11\xc9\x27\xa3\x35\x97\x71\x44\xee\xc1\xe4\x9c\xc1\x39\x63\x2a\x93\x38\x4a\x01\x69\x4c\x91\x46\x23\x42\x04\x7d\x02\x61\xdd\x3b\x42\x74\x0a\x69\xc0\x2c\x1f\x73\x89\x20\xc6\x4c\xa5\x61\x0c\x5a\xa8\x4d\x0a\x12\x23\x22\xf2\x34\xd0\x46\xc5\x19\x43\xae\xe4\x88\x10\x49\x53\x88\xb6\x52\x01\x53\x12\x8d\x12\x02\x4c\xf9\xcc\x6a\xca\x6a\x1b\x46\x41\x10\x34\xf0\x99\x27\xca\xc6\x34\xc3\x95\x32\xfc\x37\xea\x0e\x1d\xaf\xff\x6a\xc7\x5c\x85\x5b\xe4\x77\x4a\xc0\x5b\xe1\x85\x67\x04\x23\xa9\x70\x9b\x72\xee\x20\x81\x09\xd8\x32\xd9\x83\xde\x64\x02\x6c\x34\x0a\x08\xd5\xfc\xca\xa8\x4c\x7b\x14\x01\xf9\xf4\x69\x44\x88\x01\xab\x32\xc3\xa0\x5c\x03\x19\x6b\xc5\x25\xda\x11\x21\x39\x98\xa7\x72\x39\x01\xf4\xff\x7f\xa7\xc8\x56\xfe\x9d\xe0\xb6\x58\x8a\x41\x00\x82\x7f\x9b\xe9\x98\x96\x6f\x99\x01\xf7\xb6\xa3\x93\x29\x65\x62\x2e\xeb\x36\xeb\x82\x10\x40\x2d\xbc\x15\x02\x8b\xca\xd0\x04\xf6\x2a\x67\x96\x97\x5b\x18\xd5\x94\x71\xe4\xfb\xa0\x6c\x01\xec\x30\x95\x4a\x5b\x50\xf4\xf6\x79\x09\xf5\x20\x57\x68\x15\xf7\x28\xee\x88\x52\xad\x6d\x57\xd8\x80\x16\x9c\x51\x0b\x7d\x9e\x3c\x21\x9c\x2f\x44\x66\x11\xcc\xbb\x47\xb5\xc9\xa4\x04\x73\x54\x08\x6b\x77\x2d\x8b\x20\x31\x57\x22\x4b\x4f\xf3\xde\x51\x8e\x6a\x29\x64\x82\xf2\xf4\x70\xad\x65\xa0\x1c\x1d\xa8\x55\x94\x0a\x6a\xf7\x66\x4b\x4b\xdd\x61\x25\x20\x87\x4e\xfe\x1f\x19\xea\xdd\xbb\x48\xaa\xed\x4a\xe1\xf8\xa5\x4b\x95\x2e\x2b\xb7\x0f\xdd\xea\xb5\x74\xb8\xe2\xdf\xbd\xf0\x0b\xaa\x5e\xae\x21\x52\xc5\xaf\xe9\x94\x23\x8e\x3b\xad\x57\x7d\xe1\x32\xe6\x32\x79\xb3\x16\x6b\x79\x33\xaf\x95\x80\xa1\x96\xa5\x04\xdc\xc1\xd2\xa9\xae\x8c\x33\x70\x93\x11\x21\xb5\xa6\x7b\x78\xbb\xb4\xd9\xd3\x3f\x81\xa1\x2f\x2c\xbd\x7c\xe3\x5d\x98\x42\xad\xb4\x7e\x80\x13\x4e\x35\x75\xbd\x21\x1c\x55\xca\xdf\xc1\xe8\x6d\xfa\xf8\x61\xbc\xd1\x6a\x60\x4e\x93\x56\x06\xb7\x5d\xdd\x60\x44\x26\x67\x67\x67\x67\x1e\x02\x52\x93\x00\x2e\x1a\xab\x16\x04\x30\x54\xa6\x00\x49\xb5\xde\xa7\xf3\xd8\x1b\x7c\x94\xa1\x52\x40\xc3\x99\x3d\xc1\x4a\x93\x5e\x2b\x4d\xde\xd4\x4a\x84\xe0\x46\x43\x44\x6e\x54\x0c\x4e\x65\xc7\x6c\x8e\x72\xed\xf2\xf7\x1e\x29\xc2\x32\x13\xf7\xf0\x71\x03\x4a\x65\xc2\x8a\xf6\x45\x64\xd2\xb1\x50\xea\xda\xc3\xd7\x1a\xa8\x17\x8c\x76\x3c\x6a\x5b\x44\xd1\xcd\x00\x78\x84\x54\x0b\x8a\x50\x42\xaa\x99\xcb\xe3\x91\x52\xa1\x2f\x37\x5b\x88\xbd\x28\x2c\x33\xd4\x79\xc8\x1d\x4d\xb9\x04\x63\xcb\xdd\xa2\x71\xbd\x17\x2f\x78\xfc\x15\xf7\x4a\x7d\x87\xa7\x95\x52\xeb\x88\xf0\x44\x2a\x03\x7e\x6b\xe5\x15\x8f\x64\xb9\xe4\x92\xe3\x66\x87\xcd\xb5\xf4\xf3\xce\xaa\xf3\xe1\xbf\x32\x6e\x20\xbe\xcc\x0c\x97\xc9\x3d\x5b\x41\x9c\x09\x2e\x93\xb9\x3f\xb8\x5c\x9e\x3d\x03\xcb\x1c\xa6\xba\x64\x71\xe6\x7d\xe9\xf5\x07\x30\xa9\x6d\x3e\x0e\x8a\x20\x98\x3d\x6b\x03\xd6\x36\xcd\x5c\xed\x58\xc3\x26\xea\xbb\x60\x8f\xf1\xaa\x97\xd2\x6e\xd0\x57\xc6\xa5\x0c\xce\x65\xe7\x79\x4e\x45\x06\x1d\x55\x9e\xea\x48\xf5\xa9\x6f\x79\x49\x85\x85\xea\xc9\xce\xcb\xd5\x11\x6e\x8e\x4c\x53\x2a\xe3\xdd\x99\x01\x09\x33\x6b\x42\xa1\x18\x15\xe1\x13\x97\xe1\xd6\xeb\xb1\xe1\x79\x0d\x74\x40\x82\x7c\xfa\xe7\xfa\x9f\x42\x25\x09\x97\x49\xb0\x54\x26\xa5\x38\x45\x78\xc6\xfa\xe3\x54\xc5\x30\xed\xb9\x7d\x40\x82\x6a\x5a\x9e\x66\x92\x3f\x47\x61\x18\x32\xcb\xc3\x66\xa4\x8d\xad\x62\xeb\xba\x8c\x81\x84\x5b\x34\x9b\x59\x25\x8b\x4c\x47\x61\x78\x36\xf6\xff\xa2\x5d\x67\x28\xf7\x3b\x97\xf2\x78\xfa\xc3\x8f\xff\xf8\xf6\x65\xf6\x78\x73\x7b\x39\x7b\xbc\x39\xbf\x9e\xfd\x54\xdf\xc3\xe8\x2f\x5c\xc0\x34\x64\x60\xd0\x86\x8c\x8e\x99\x69\x5c\xc1\xad\xd7\x77\xa0\xb0\xed\x2d\x6b\xd8\xb4\x77\xac\x61\x53\xdf\x51\xd8\xd1\x55\x9f\xe9\x0f\x3f\x2e\xae\x67\xd7\x8f\x17\xf7\xf3\xc7\xcb\xbb\xf9\xaf\xb3\xbb\x2e\xa4\xb2\xe4\x7f\xf5\x83\xd1\x34\xda\x95\x72\xf7\x02\x99\xd7\x3d\x57\x54\xbb\xe6\xfd\x46\xad\xf0\xf9\xc5\xa8\xb4\x19\x41\x4b\x0e\x22\x2e\x99\x4b\xfd\xd5\x6a\x70\xcd\x87\x5e\x68\x41\x71\x15\xf9\xec\x1c\x3b\xeb\xba\x7a\xd5\x41\xf3\x30\xbb\xbb\x9e\xdf\x9c\x3f\xcc\x6f\x6f\x1e\xbf\xde\x5e\x3d\x2e\xce\x1f\xfe\xde\xc6\x14\x91\x10\x53\x1d\x22\x98\xb4\xfc\x48\xc3\xc5\x52\xe7\xa8\x3e\x5b\x75\x8f\xea\xa6\x5c\xe7\xa0\xab\xdb\xcb\xd9\x97\x6f\x57\x5d\xd9\xe7\x9f\xcf\xfe\x56\xd4\x9d\x8b\x9b\xe9\xce\xcc\x3c\xa5\x09\x44\xc4\x1f\xd8\xce\x87\x88\x51\x49\xcd\xa6\xb9\x77\x91\x09\xb1\x50\x82\xb3\x4d\x44\xe6\xcb\x1b\x85\x0b\x03\x16\xe4\x2e\x50\x6a\x7d\xa9\x95\x56\xdb\xe6\x5d\x41\xde\x66\xed\xa2\xd5\xcb\xeb\x27\xed\x88\x41\xf1\xb2\xc0\x32\xc3\x71\x73\xe1\x86\xb2\x67\x6c\x96\x45\x1a\xdf\x4a\xb1\xb9\x53\xca\xc7\xb2\xdd\x58\x84\x34\x22\x68\xb2\x9d\xf7\x6a\xae\xb8\x06\x6b\xdd\x95\xbc\xaf\x07\xfd\x54\xcc\x83\xd7\x8e\x7c\x36\x6e\x90\xba\x95\x52\xde\x67\x45\x07\x7e\x95\xcb\x3e\xc1\xf6\x49\x5a\xde\x91\xd3\x22\x4b\xb8\x0c\x5c\x69\x00\x0c\x62\x6e\xf6\xc8\x62\xaa\x3b\xb2\x98\xea\x9a\x44\x40\xa8\x49\x1a\xa8\xdb\xd5\xcd\xfb\x9c\xc6\xb1\xab\xf8\xd3\x43\x0a\x54\xb0\x04\x8a\x99\x81\x20\xa1\x08\x76\xfa\xa0\xb4\x12\x2a\xd9\x4c\x1b\x86\x76\xfb\xac\xf3\x1d\x06\xb8\x77\x03\xf2\x14\x54\x86\xd3\x9f\xd3\xc6\x72\x0c\x4b\x9a\x09\x0c\x96\xd6\xf1\xac\x29\x3c\xe3\x5f\x1a\xcf\xcb\xa0\xd8\x82\xf6\xc5\x63\xd2\x8e\x6a\x37\x8f\x24\xcc\xb8\x51\xca\xf2\x24\x28\x47\xf2\xb0\x35\xe3\x44\xf9\xe7\xf1\xd9\xf8\xf3\x49\x61\xde\x37\xc5\x1c\x15\xef\x93\x37\x8f\xf7\x83\x42\xf7\x88\x00\xdc\x8b\xc7\x64\xf2\xdc\xde\x28\xe9\xd0\xb4\x30\xf8\x47\xdf\x2c\x98\x62\x80\xd9\x9e\x54\x1f\xea\x86\x28\xa1\x7b\xa1\x12\x8e\x42\xd4\x19\x49\x40\x60\xb9\x04\x86\x8e\x54\x94\x24\x68\xa7\xd3\x93\x14\x57\xbb\xfd\x0c\x3b\x5e\x67\x4f\x60\x24\x20\xf8\xc9\x3a\xa5\x6e\x32\x1d\xd5\x2d\x54\x3f\x35\xd5\xb8\xb9\xe4\x26\x22\x32\x13\xa2\x5d\xd9\xf6\xd8\x25\x18\x4c\x78\x0b\xcc\x40\xc3\x79\xc5\x4a\xeb\xd6\x5b\xe1\xe2\xa9\xed\x81\xf4\xef\xff\xb4\x00\x55\xd9\x3e\x3c\x82\x5c\x52\x48\x95\x7c\xc3\x01\xc4\x99\xfa\x85\xd1\xe3\xc8\x61\xa3\x3c\xf1\x14\x6c\x1f\x3a\x43\xd4\x70\xbf\xe3\xf4\xf0\xea\x14\x38\x06\x97\x9d\xd7\x54\xd2\x04\xcc\x54\xe4\xe9\xef\xe4\xc7\x0d\xb3\x0c\x30\xe3\x4e\xb7\x39\x88\xde\x6e\xcb\x45\x8b\x34\x97\x52\x8b\xdb\xcb\xc7\xf9\xe2\x27\xcf\x9d\x27\x07\x70\xed\x9e\x3a\xd4\xe5\xdd\xef\xc2\xa9\x2d\x52\xf4\x14\x65\x1a\xe6\xd4\x84\x82\x3f\x85\x07\x70\xeb\xe3\x98\xb8\xbb\xed\x02\x0c\x03\x89\x34\x81\xe9\xa4\x79\xcd\xff\x75\x9e\x5e\x0b\x80\x77\x80\x82\x14\x33\x3b\xd6\x2a\xae\x69\x7b\x75\x9a\xff\x8a\xa3\xc7\xff\xf5\xc4\xa0\x0d\xcf\xb9\x80\x04\xe2\x16\x63\x69\x70\x96\xb3\xb7\x1f\x1e\xaa\xd4\x76\x34\x45\x00\x86\x05\xcb\xb0\x61\x93\xb6\x34\x79\x5a\x21\x6f\x94\xa6\x89\x57\x1a\x91\x2f\x3c\xe6\x06\x7c\x2b\xa1\xa2\x6b\x17\xb7\xdf\x17\xb9\x81\x79\xa2\x03\xa4\xf8\x8a\xf9\x54\x9d\x4e\x7c\x40\x5b\xff\xcc\xe4\x59\xdb\xc0\xbc\x14\x43\xde\x91\x89\x21\x1f\xd0\x63\x37\x5d\x2d\x76\x33\x88\xac\x87\x12\xbf\x38\x8c\x55\xc6\x1b\xc8\xe0\x13\x4c\xe8\x0e\xf3\x5d\xe0\xb8\xa1\xae\xf4\x60\xd5\xe1\x8a\xb8\xd4\x8d\x46\xd2\x8e\xb6\x3d\xad\xa2\xb7\x2b\xf7\x0e\x8d\xcd\x5d\xbd\xbd\xe1\x77\xd7\xc0\x97\x87\x3b\x1f\x3f\x45\x29\xd9\xde\xde\x44\xf9\x64\xfc\x79\x7c\x76\x52\x6d\x6a\x9f\xf5\xe1\xc3\xd9\x8b\x91\x58\x77\x7a\x47\xba\x11\x11\xbb\x33\xea\x9f\x0c\xef\xc0\x94\x86\x2d\x5c\xb2\x6f\x62\x5a\x29\x5b\x68\xae\xd7\xd6\xe1\xca\x36\x98\x23\xc5\xb7\x2b\x97\x3e\x2b\x94\xd9\xdc\x9a\x8b\xea\xa7\x04\x83\x56\x38\x05\xc8\x63\xc5\x00\xc3\xa3\xf5\xef\xb1\xe3\x49\xe6\x18\x2a\xf4\x87\xa1\xe9\x2d\xef\xc7\x61\x69\xd6\xfa\xc3\xd4\xb6\x2a\x7c\xb0\xb7\x86\x1f\x38\x02\x7b\xc1\xf6\xf8\x7b\xc0\x25\x5e\x21\x9e\xf6\x54\xda\x01\xe5\xcd\x4e\x74\x98\x96\x66\xa7\x1a\x3c\xbe\xd9\xb6\x0e\x4c\x8a\xb2\xad\xb5\x3f\x0e\x68\xfe\x20\x25\xcc\x27\x4f\x80\x74\xfb\x03\x83\xfb\xf9\x65\x41\xbd\xde\xe6\xd3\x81\x9a\x53\xaa\x99\x95\x22\x52\xb6\xba\x2b\xbf\xc9\x8a\x88\xff\x3e\xc7\x7f\xc5\x1b\xcf\xe5\x52\xdd\x4a\x5f\x15\xb7\xf5\xb2\x28\x39\x5f\xf9\x12\xd8\x86\x09\xb8\x56\x71\xf5\xbb\x97\xc5\xf6\xb7\x55\xfe\xcf\x99\x5e\x41\x0a\x86\x8a\xd1\x7f\x03\x00\x00\xff\xff\x3a\x78\x18\xc6\x60\x2a\x00\x00")
func deployKubernetes119LvmPmemCsiYamlBytes() ([]byte, error) {
return bindataRead(
@@ -260,7 +260,7 @@ func deployKubernetes119LvmPmemCsiYaml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "deploy/kubernetes-1.19/lvm/pmem-csi.yaml", size: 10908, mode: os.FileMode(436), modTime: time.Unix(1608146553, 0)}
+ info := bindataFileInfo{name: "deploy/kubernetes-1.19/lvm/pmem-csi.yaml", size: 10848, mode: os.FileMode(420), modTime: time.Unix(1608283278, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
diff --git a/deploy/crd/pmem-csi.intel.com_deployments.yaml b/deploy/crd/pmem-csi.intel.com_deployments.yaml
index 19cd7c363b..80df4d13e2 100644
--- a/deploy/crd/pmem-csi.intel.com_deployments.yaml
+++ b/deploy/crd/pmem-csi.intel.com_deployments.yaml
@@ -342,6 +342,12 @@ spec:
description: Labels contains additional labels for all objects created
by the operator.
type: object
+ logFormat:
+ description: LogFormat
+ enum:
+ - text
+ - json
+ type: string
logLevel:
description: LogLevel number for the log verbosity
type: integer
diff --git a/deploy/crd/pmem-csi.intel.com_deployments_webhook.yaml b/deploy/crd/pmem-csi.intel.com_deployments_webhook.yaml
index a1b07a160d..a5739300c6 100644
--- a/deploy/crd/pmem-csi.intel.com_deployments_webhook.yaml
+++ b/deploy/crd/pmem-csi.intel.com_deployments_webhook.yaml
@@ -307,6 +307,12 @@ spec:
type: string
description: Labels contains additional labels for all objects created by the operator.
type: object
+ logFormat:
+ description: LogFormat
+ enum:
+ - text
+ - json
+ type: string
logLevel:
description: LogLevel number for the log verbosity
type: integer
diff --git a/deploy/kubernetes-1.17/direct/pmem-csi.yaml b/deploy/kubernetes-1.17/direct/pmem-csi.yaml
index ef79e37981..8aa197f272 100644
--- a/deploy/kubernetes-1.17/direct/pmem-csi.yaml
+++ b/deploy/kubernetes-1.17/direct/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -342,6 +336,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.17/direct/testing/pmem-csi.yaml b/deploy/kubernetes-1.17/direct/testing/pmem-csi.yaml
index b42d037aee..2fd604ff23 100644
--- a/deploy/kubernetes-1.17/direct/testing/pmem-csi.yaml
+++ b/deploy/kubernetes-1.17/direct/testing/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -390,6 +384,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.17/lvm/pmem-csi.yaml b/deploy/kubernetes-1.17/lvm/pmem-csi.yaml
index 93b59e032f..23c2720183 100644
--- a/deploy/kubernetes-1.17/lvm/pmem-csi.yaml
+++ b/deploy/kubernetes-1.17/lvm/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -342,6 +336,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.17/lvm/testing/pmem-csi.yaml b/deploy/kubernetes-1.17/lvm/testing/pmem-csi.yaml
index 4e5c4984e9..cd1028d7af 100644
--- a/deploy/kubernetes-1.17/lvm/testing/pmem-csi.yaml
+++ b/deploy/kubernetes-1.17/lvm/testing/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -390,6 +384,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.17/pmem-csi-direct-testing.yaml b/deploy/kubernetes-1.17/pmem-csi-direct-testing.yaml
index b42d037aee..2fd604ff23 100644
--- a/deploy/kubernetes-1.17/pmem-csi-direct-testing.yaml
+++ b/deploy/kubernetes-1.17/pmem-csi-direct-testing.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -390,6 +384,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.17/pmem-csi-direct.yaml b/deploy/kubernetes-1.17/pmem-csi-direct.yaml
index ef79e37981..8aa197f272 100644
--- a/deploy/kubernetes-1.17/pmem-csi-direct.yaml
+++ b/deploy/kubernetes-1.17/pmem-csi-direct.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -342,6 +336,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.17/pmem-csi-lvm-testing.yaml b/deploy/kubernetes-1.17/pmem-csi-lvm-testing.yaml
index 4e5c4984e9..cd1028d7af 100644
--- a/deploy/kubernetes-1.17/pmem-csi-lvm-testing.yaml
+++ b/deploy/kubernetes-1.17/pmem-csi-lvm-testing.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -390,6 +384,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.17/pmem-csi-lvm.yaml b/deploy/kubernetes-1.17/pmem-csi-lvm.yaml
index 93b59e032f..23c2720183 100644
--- a/deploy/kubernetes-1.17/pmem-csi-lvm.yaml
+++ b/deploy/kubernetes-1.17/pmem-csi-lvm.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -342,6 +336,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.18/direct/pmem-csi.yaml b/deploy/kubernetes-1.18/direct/pmem-csi.yaml
index ef79e37981..8aa197f272 100644
--- a/deploy/kubernetes-1.18/direct/pmem-csi.yaml
+++ b/deploy/kubernetes-1.18/direct/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -342,6 +336,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.18/direct/testing/pmem-csi.yaml b/deploy/kubernetes-1.18/direct/testing/pmem-csi.yaml
index b42d037aee..2fd604ff23 100644
--- a/deploy/kubernetes-1.18/direct/testing/pmem-csi.yaml
+++ b/deploy/kubernetes-1.18/direct/testing/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -390,6 +384,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.18/lvm/pmem-csi.yaml b/deploy/kubernetes-1.18/lvm/pmem-csi.yaml
index 93b59e032f..23c2720183 100644
--- a/deploy/kubernetes-1.18/lvm/pmem-csi.yaml
+++ b/deploy/kubernetes-1.18/lvm/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -342,6 +336,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.18/lvm/testing/pmem-csi.yaml b/deploy/kubernetes-1.18/lvm/testing/pmem-csi.yaml
index 4e5c4984e9..cd1028d7af 100644
--- a/deploy/kubernetes-1.18/lvm/testing/pmem-csi.yaml
+++ b/deploy/kubernetes-1.18/lvm/testing/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -390,6 +384,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.18/pmem-csi-direct-testing.yaml b/deploy/kubernetes-1.18/pmem-csi-direct-testing.yaml
index b42d037aee..2fd604ff23 100644
--- a/deploy/kubernetes-1.18/pmem-csi-direct-testing.yaml
+++ b/deploy/kubernetes-1.18/pmem-csi-direct-testing.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -390,6 +384,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.18/pmem-csi-direct.yaml b/deploy/kubernetes-1.18/pmem-csi-direct.yaml
index ef79e37981..8aa197f272 100644
--- a/deploy/kubernetes-1.18/pmem-csi-direct.yaml
+++ b/deploy/kubernetes-1.18/pmem-csi-direct.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -342,6 +336,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.18/pmem-csi-lvm-testing.yaml b/deploy/kubernetes-1.18/pmem-csi-lvm-testing.yaml
index 4e5c4984e9..cd1028d7af 100644
--- a/deploy/kubernetes-1.18/pmem-csi-lvm-testing.yaml
+++ b/deploy/kubernetes-1.18/pmem-csi-lvm-testing.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -390,6 +384,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.18/pmem-csi-lvm.yaml b/deploy/kubernetes-1.18/pmem-csi-lvm.yaml
index 93b59e032f..23c2720183 100644
--- a/deploy/kubernetes-1.18/pmem-csi-lvm.yaml
+++ b/deploy/kubernetes-1.18/pmem-csi-lvm.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -342,6 +336,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19-alpha/direct/pmem-csi.yaml b/deploy/kubernetes-1.19-alpha/direct/pmem-csi.yaml
index 9d92a236c5..f6029c785f 100644
--- a/deploy/kubernetes-1.19-alpha/direct/pmem-csi.yaml
+++ b/deploy/kubernetes-1.19-alpha/direct/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -352,6 +346,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19-alpha/direct/testing/pmem-csi.yaml b/deploy/kubernetes-1.19-alpha/direct/testing/pmem-csi.yaml
index 9d8fdda086..d810dc53c7 100644
--- a/deploy/kubernetes-1.19-alpha/direct/testing/pmem-csi.yaml
+++ b/deploy/kubernetes-1.19-alpha/direct/testing/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -400,6 +394,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19-alpha/lvm/pmem-csi.yaml b/deploy/kubernetes-1.19-alpha/lvm/pmem-csi.yaml
index b60eff0b26..d145fa4ed5 100644
--- a/deploy/kubernetes-1.19-alpha/lvm/pmem-csi.yaml
+++ b/deploy/kubernetes-1.19-alpha/lvm/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -352,6 +346,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19-alpha/lvm/testing/pmem-csi.yaml b/deploy/kubernetes-1.19-alpha/lvm/testing/pmem-csi.yaml
index 20db94dc5f..01b1295cca 100644
--- a/deploy/kubernetes-1.19-alpha/lvm/testing/pmem-csi.yaml
+++ b/deploy/kubernetes-1.19-alpha/lvm/testing/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -400,6 +394,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19-alpha/pmem-csi-direct-testing.yaml b/deploy/kubernetes-1.19-alpha/pmem-csi-direct-testing.yaml
index 9d8fdda086..d810dc53c7 100644
--- a/deploy/kubernetes-1.19-alpha/pmem-csi-direct-testing.yaml
+++ b/deploy/kubernetes-1.19-alpha/pmem-csi-direct-testing.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -400,6 +394,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19-alpha/pmem-csi-direct.yaml b/deploy/kubernetes-1.19-alpha/pmem-csi-direct.yaml
index 9d92a236c5..f6029c785f 100644
--- a/deploy/kubernetes-1.19-alpha/pmem-csi-direct.yaml
+++ b/deploy/kubernetes-1.19-alpha/pmem-csi-direct.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -352,6 +346,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19-alpha/pmem-csi-lvm-testing.yaml b/deploy/kubernetes-1.19-alpha/pmem-csi-lvm-testing.yaml
index 20db94dc5f..01b1295cca 100644
--- a/deploy/kubernetes-1.19-alpha/pmem-csi-lvm-testing.yaml
+++ b/deploy/kubernetes-1.19-alpha/pmem-csi-lvm-testing.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -400,6 +394,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19-alpha/pmem-csi-lvm.yaml b/deploy/kubernetes-1.19-alpha/pmem-csi-lvm.yaml
index b60eff0b26..d145fa4ed5 100644
--- a/deploy/kubernetes-1.19-alpha/pmem-csi-lvm.yaml
+++ b/deploy/kubernetes-1.19-alpha/pmem-csi-lvm.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -352,6 +346,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19/direct/pmem-csi.yaml b/deploy/kubernetes-1.19/direct/pmem-csi.yaml
index ef79e37981..8aa197f272 100644
--- a/deploy/kubernetes-1.19/direct/pmem-csi.yaml
+++ b/deploy/kubernetes-1.19/direct/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -342,6 +336,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19/direct/testing/pmem-csi.yaml b/deploy/kubernetes-1.19/direct/testing/pmem-csi.yaml
index b42d037aee..2fd604ff23 100644
--- a/deploy/kubernetes-1.19/direct/testing/pmem-csi.yaml
+++ b/deploy/kubernetes-1.19/direct/testing/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -390,6 +384,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19/fake/pmem-csi.yaml b/deploy/kubernetes-1.19/fake/pmem-csi.yaml
index 9c66e52940..a9378c2d94 100644
--- a/deploy/kubernetes-1.19/fake/pmem-csi.yaml
+++ b/deploy/kubernetes-1.19/fake/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: fake-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -342,6 +336,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19/lvm/pmem-csi.yaml b/deploy/kubernetes-1.19/lvm/pmem-csi.yaml
index 93b59e032f..23c2720183 100644
--- a/deploy/kubernetes-1.19/lvm/pmem-csi.yaml
+++ b/deploy/kubernetes-1.19/lvm/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -342,6 +336,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19/lvm/testing/pmem-csi.yaml b/deploy/kubernetes-1.19/lvm/testing/pmem-csi.yaml
index 4e5c4984e9..cd1028d7af 100644
--- a/deploy/kubernetes-1.19/lvm/testing/pmem-csi.yaml
+++ b/deploy/kubernetes-1.19/lvm/testing/pmem-csi.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -390,6 +384,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19/pmem-csi-direct-testing.yaml b/deploy/kubernetes-1.19/pmem-csi-direct-testing.yaml
index b42d037aee..2fd604ff23 100644
--- a/deploy/kubernetes-1.19/pmem-csi-direct-testing.yaml
+++ b/deploy/kubernetes-1.19/pmem-csi-direct-testing.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -390,6 +384,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19/pmem-csi-direct.yaml b/deploy/kubernetes-1.19/pmem-csi-direct.yaml
index ef79e37981..8aa197f272 100644
--- a/deploy/kubernetes-1.19/pmem-csi-direct.yaml
+++ b/deploy/kubernetes-1.19/pmem-csi-direct.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: direct-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -342,6 +336,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19/pmem-csi-fake.yaml b/deploy/kubernetes-1.19/pmem-csi-fake.yaml
index 9c66e52940..a9378c2d94 100644
--- a/deploy/kubernetes-1.19/pmem-csi-fake.yaml
+++ b/deploy/kubernetes-1.19/pmem-csi-fake.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: fake-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -342,6 +336,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=direct
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19/pmem-csi-lvm-testing.yaml b/deploy/kubernetes-1.19/pmem-csi-lvm-testing.yaml
index 4e5c4984e9..cd1028d7af 100644
--- a/deploy/kubernetes-1.19/pmem-csi-lvm-testing.yaml
+++ b/deploy/kubernetes-1.19/pmem-csi-lvm-testing.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-testing
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -259,6 +252,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -390,6 +384,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kubernetes-1.19/pmem-csi-lvm.yaml b/deploy/kubernetes-1.19/pmem-csi-lvm.yaml
index 93b59e032f..23c2720183 100644
--- a/deploy/kubernetes-1.19/pmem-csi-lvm.yaml
+++ b/deploy/kubernetes-1.19/pmem-csi-lvm.yaml
@@ -1,12 +1,5 @@
# Generated with "make kustomize", do not edit!
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- pmem-csi.intel.com/deployment: lvm-production
- name: pmem-csi
----
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -244,6 +237,7 @@ spec:
- command:
- /usr/local/bin/pmem-csi-driver
- -v=3
+ - -logging-format=text
- -mode=controller
- -endpoint=unix:///csi/csi-controller.sock
- -registryEndpoint=tcp://0.0.0.0:10000
@@ -342,6 +336,7 @@ spec:
- /usr/local/bin/pmem-csi-driver
- -deviceManager=lvm
- -v=3
+ - -logging-format=text
- -mode=node
- -endpoint=unix:///csi/csi.sock
- -nodeid=$(KUBE_NODE_NAME)
diff --git a/deploy/kustomize/driver/kustomization.yaml b/deploy/kustomize/driver/kustomization.yaml
index 8b38dec781..00b80c6553 100644
--- a/deploy/kustomize/driver/kustomization.yaml
+++ b/deploy/kustomize/driver/kustomization.yaml
@@ -1,3 +1,2 @@
resources:
- pmem-csi.yaml
- - namespace.yaml
diff --git a/deploy/kustomize/driver/namespace.yaml b/deploy/kustomize/driver/namespace.yaml
deleted file mode 100644
index 854af147a8..0000000000
--- a/deploy/kustomize/driver/namespace.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-apiVersion: v1
-kind: Namespace
-metadata:
- name: pmem-csi
diff --git a/deploy/kustomize/driver/pmem-csi.yaml b/deploy/kustomize/driver/pmem-csi.yaml
index 175d79d426..821b77fef3 100644
--- a/deploy/kustomize/driver/pmem-csi.yaml
+++ b/deploy/kustomize/driver/pmem-csi.yaml
@@ -85,6 +85,7 @@ spec:
command: [
"/usr/local/bin/pmem-csi-driver",
"-v=3",
+ "-logging-format=text",
"-mode=controller",
"-endpoint=unix:///csi/csi-controller.sock",
"-registryEndpoint=tcp://0.0.0.0:10000",
@@ -166,6 +167,7 @@ spec:
command: [
"/usr/local/bin/pmem-csi-driver",
"-v=3",
+ "-logging-format=text",
"-mode=node",
"-endpoint=unix:///csi/csi.sock",
"-nodeid=$(KUBE_NODE_NAME)",
diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md
index 4dcce0eb6b..32f1a9c197 100644
--- a/docs/DEVELOPMENT.md
+++ b/docs/DEVELOPMENT.md
@@ -257,6 +257,8 @@ The klog.Info statements are used via the verbosity checker using the following
- klog.V(4) - Elevated verbosity messages.
- klog.V(5) - Even more verbose messages, useful for debugging and issue resolving. This level is used in testing type of deployment examples.
+These are *not* the same levels as in the [Kubernetes logging conventions](https://github.com/kubernetes/community/blob/4eeba4d57bed01502cb09598a74d21671d4ee876/contributors/devel/sig-instrumentation/logging.md).
+
There are also messages using klog.Warning, klog.Error and klog.Fatal, and their formatted counterparts.
## Performance and resource measurements
diff --git a/docs/install.md b/docs/install.md
index 4307528cee..f325370ac0 100644
--- a/docs/install.md
+++ b/docs/install.md
@@ -63,6 +63,11 @@ Optionally, the administrator can enable [the scheduler
extensions](#enable-scheduler-extensions) (recommended) and monitoring
of resource usage via the [metrics support](#metrics-support).
+Optionally, the log output format can be changed from the default
+"text" format (= the traditional glog format) to "json" (= output via
+[zap](https://github.com/uber-go/zap/blob/master/README.md)) for easier
+processing.
+
When using the operator, existing PMEM-CSI installations can be
upgraded seamlessly by installing a newer version of the
operator. Downgrading by installing an older version is also
@@ -239,17 +244,26 @@ PMEM-CSI operator or by using reference yaml files provided in source code.
[PMEM-CSI operator](./design.md#operator) facilitates deploying and managing
the [PMEM-CSI driver](https://github.com/intel/pmem-csi) on a Kubernetes cluster.
-If your cluster supports managing the operators using the [Operator Life Manager](https://olm.operatorframework.io/),
-then it is recommended to install the PMEM-CSI operator from the [OperatorHub](https://operatorhub.io/operator/pmem-csi-operator).
-Otherwise, follow below steps to install the operator manually:
+##### Installing the operator from Operator Hub
+
+If your cluster supports managing the operators using the [Operator
+Lifecycle Manager](https://olm.operatorframework.io/), then it is
+recommended to install the PMEM-CSI operator from the
+[OperatorHub](https://operatorhub.io/operator/pmem-csi-operator). Follow
+the instructions shown by the "Install" button. When using this
+approach, the operator itself always runs with default parameters, in
+particular log output in "text" format.
+
+##### Installing the operator from YAML
-- **Install the PMEM-CSI Deployment CRD**
+Alternatively, the you can install the operator manually from YAML files.
+First install the PMEM-CSI Deployment CRD:
``` console
$ kubectl create -f https://github.com/intel/pmem-csi/raw/devel/deploy/crd/pmem-csi.intel.com_deployments.yaml
```
-- **Install the PMEM-CSI operator**
+Then install the PMEM-CSI operator itself:
``` console
$ kubectl create -f https://github.com/intel/pmem-csi/raw/devel/deploy/operator/pmem-csi-operator.yaml
@@ -259,9 +273,9 @@ The operator gets deployed in a namespace called 'pmem-csi' which gets created b
**NOTE:** Refer to the [PMEM-CSI operator API conversion webhook](#pmem-csi-operator-api-conversion-webhook) section
for steps to install the operator with built-in conversion webhook.
-- **Create a custom resource**
+##### Create a driver deployment
-Once the operator deployed in the previous step is in the `Running` state,
+Once the operator is installed and running,
it is ready to handle PMEM-CSI `Deployment` objects in the `pmem-csi.intel.com`
API group. Refer to the [Deployment CRD API](#PMEM-CSI-Deployment-CRD) for
a complete list of supported properties.
@@ -371,8 +385,6 @@ pmem-csi-intel-com-node-msgds 2/2 Running 0 51s
pmem-csi-operator-749c7c7c69-k5k8n 1/1 Running 0 3m
```
-- **Setup deployment certificates**
-
By default, the operator creates the needed private keys and certificates required
for running the driver as described in the [driver security](./design.md#security)
section. Those certificates are generated by the operator using a self-signed CA.
@@ -399,6 +411,17 @@ To get the source code, use:
$ git clone https://github.com/intel/pmem-csi
```
+- **Choose a namespace**
+
+By default, setting up certificates as described in the next step will
+automatically create a `pmem-csi` namespace if it does not exist yet.
+Later the driver will be installed in that namespace.
+
+This can be changed by:
+- setting the `TEST_DRIVER_NAMESPACE` env variable to a different name
+ when invoking `setup-ca-kubernetes.sh` and
+- modifying the deployment with kustomize as explained below.
+
- **Set up certificates**
Certificates are required as explained in [Security](design.md#security).
@@ -463,7 +486,6 @@ for `kubectl kustomize`. For example:
bases:
- ../deploy/kubernetes-1.17/lvm
EOF
- $ kubectl create namespace pmem-driver
$ kubectl create --kustomize my-pmem-csi-deployment
```
@@ -1232,9 +1254,10 @@ of the API specification.
| nodeRegistrarImage | string | [CSI node driver registrar](https://github.com/kubernetes-csi/node-driver-registrar) docker image name | latest [node driver registrar](https://kubernetes-csi.github.io/docs/node-driver-registrar.html) stable release image2 |
| pullPolicy | string | Docker image pull policy. either one of `Always`, `Never`, `IfNotPresent` | `IfNotPresent` |
| logLevel | integer | PMEM-CSI driver logging level | 3 |
+| logFormat | text | log output format | "text" or "json" 3 |
| deviceMode | string | Device management mode to use. Supports one of `lvm` or `direct` | `lvm`
-| controllerResources | [ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#resourcerequirements-v1-core) | Describes the compute resource requirements for controller pod.
3_Deprecated and only available in `v1alpha1`._ |
-| nodeResources | [ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#resourcerequirements-v1-core) | Describes the compute resource requirements for the pods running on node(s).
_3Deprecated and only available in `v1alpha1`._ |
+| controllerResources | [ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#resourcerequirements-v1-core) | Describes the compute resource requirements for controller pod.
4_Deprecated and only available in `v1alpha1`._ |
+| nodeResources | [ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#resourcerequirements-v1-core) | Describes the compute resource requirements for the pods running on node(s).
_4Deprecated and only available in `v1alpha1`._ |
| controllerDriverResources | [ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#resourcerequirements-v1-core) | Describes the compute resource requirements for controller driver container running on master node. Available since `v1beta1`. |
| nodeDriverResources | [ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#resourcerequirements-v1-core) | Describes the compute resource requirements for the driver container running on worker node(s).
_Available since `v1beta1`._ |
| provisionerResources | [ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#resourcerequirements-v1-core) | Describes the compute resource requirements for the [external provisioner](https://kubernetes-csi.github.io/docs/external-provisioner.html) sidecar container.
_Available since `v1beta1`._ |
@@ -1259,7 +1282,13 @@ appropriate values:
operator dynamically chooses suitable image versions. Users have to
take care of that themselves when overriding the values.
-3 Pod level resource requirements (`nodeResources` and `controllerResources`)
+3 In PMEM-CSI 0.9.0, "json" output is only available for
+the PMEM-CSI container. The sidecars are still producing plain text
+messages. This may change in the future. Also, the migration from
+formatted log messages (= printf style) to structured log messages
+(message plus key/value pairs) is not complete.
+
+4 Pod level resource requirements (`nodeResources` and `controllerResources`)
are deprecated in favor of per-container resource requirements (`nodeDriverResources`, `nodeRegistrarResources`,
`controllerDriverResources` and `provisionerResources`).
diff --git a/go.mod b/go.mod
index 35de96cd20..c8f80c75ec 100644
--- a/go.mod
+++ b/go.mod
@@ -10,7 +10,7 @@ require (
github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c // indirect
github.com/emicklei/go-restful v2.9.6+incompatible // indirect
github.com/go-bindata/go-bindata v3.1.2+incompatible
- github.com/go-logr/logr v0.2.1
+ github.com/go-logr/logr v0.3.0
github.com/go-logr/zapr v0.2.0 // indirect
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
github.com/golang/protobuf v1.4.2
diff --git a/go.sum b/go.sum
index 8d06293ce5..839c7a5c51 100644
--- a/go.sum
+++ b/go.sum
@@ -223,8 +223,8 @@ github.com/go-logr/logr v0.1.0 h1:M1Tv3VzNlEHg6uyACnRdtrploV2P7wZqH8BoQMtz0cg=
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY=
github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
-github.com/go-logr/logr v0.2.1 h1:fV3MLmabKIZ383XifUjFSwcoGee0v9qgPp8wy5svibE=
-github.com/go-logr/logr v0.2.1/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
+github.com/go-logr/logr v0.3.0 h1:q4c+kbcR0d5rSurhBR8dIgieOaYpXtsdTYfx22Cu6rs=
+github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk=
github.com/go-logr/zapr v0.2.0 h1:v6Ji8yBW77pva6NkJKQdHLAJKrIJKRHz0RXwPqCHSR4=
github.com/go-logr/zapr v0.2.0/go.mod h1:qhKdvif7YF5GI9NWEpyxTSSBdGmzkNguibrdCNVPunU=
diff --git a/pkg/apis/pmemcsi/v1beta1/deployment_types.go b/pkg/apis/pmemcsi/v1beta1/deployment_types.go
index ad783ed01d..016f7b6bbd 100644
--- a/pkg/apis/pmemcsi/v1beta1/deployment_types.go
+++ b/pkg/apis/pmemcsi/v1beta1/deployment_types.go
@@ -50,6 +50,15 @@ const (
DeviceModeFake DeviceMode = "fake"
)
+type LogFormat string
+
+const (
+ // LogFormatText selects logging via the traditional glog (aka klog) plain text format.
+ LogFormatText LogFormat = "text"
+ // LogFormatJSON selects logging via the zap JSON format.
+ LogFormatJSON LogFormat = "json"
+)
+
// +k8s:deepcopy-gen=true
// DeploymentSpec defines the desired state of Deployment
type DeploymentSpec struct {
@@ -76,6 +85,10 @@ type DeploymentSpec struct {
DeviceMode DeviceMode `json:"deviceMode,omitempty"`
// LogLevel number for the log verbosity
LogLevel uint16 `json:"logLevel,omitempty"`
+ // LogFormat
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Enum=text;json
+ LogFormat LogFormat `json:"logFormat,omitempty"`
// RegistryCert encoded certificate signed by a CA for registry server authentication
// If not provided, provisioned one by the operator using self-signed CA
RegistryCert []byte `json:"registryCert,omitempty"`
@@ -367,6 +380,9 @@ func (d *Deployment) EnsureDefaults(operatorImage string) error {
if d.Spec.LogLevel == 0 {
d.Spec.LogLevel = DefaultLogLevel
}
+ if d.Spec.LogFormat == "" {
+ d.Spec.LogFormat = LogFormatText
+ }
if d.Spec.ProvisionerImage == "" {
d.Spec.ProvisionerImage = DefaultProvisionerImage
diff --git a/pkg/deployments/load.go b/pkg/deployments/load.go
index a7b57679d4..5b531a5398 100644
--- a/pkg/deployments/load.go
+++ b/pkg/deployments/load.go
@@ -69,6 +69,12 @@ func LoadAndCustomizeObjects(kubernetes version.Version, deviceMode api.DeviceMo
[]byte("-v=3"),
[]byte(fmt.Sprintf("-v=%d", deployment.Spec.LogLevel)))
+ if deployment.Spec.LogFormat != "" {
+ *yaml = bytes.ReplaceAll(*yaml,
+ []byte("-logging-format=text"),
+ []byte(fmt.Sprintf("-logging-format=%s", deployment.Spec.LogFormat)))
+ }
+
*yaml = pmemImage.ReplaceAll(*yaml, []byte("image: "+deployment.Spec.Image))
}
@@ -232,12 +238,6 @@ func loadObjects(kubernetes version.Version, deviceMode api.DeviceMode,
if err != nil {
return nil, fmt.Errorf("decode item %q from file %q: %v", item, path, err)
}
- if obj.GetKind() == "Namespace" {
- // Though the driver deployment manifests have Namespace object defined
- // but, Namespaces are not owned by PMEM-CSI Deployments. So we can
- // ignore.
- continue
- }
if patchUnstructured != nil {
patchUnstructured(&obj)
}
diff --git a/pkg/logger/flag.go b/pkg/logger/flag.go
new file mode 100644
index 0000000000..b4cac8f89c
--- /dev/null
+++ b/pkg/logger/flag.go
@@ -0,0 +1,35 @@
+/*
+Copyright 2020 Intel Coporation.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package logger
+
+import (
+ "flag"
+
+ utilerrors "k8s.io/apimachinery/pkg/util/errors"
+ "k8s.io/component-base/logs"
+)
+
+func NewFlag() *Options {
+ f := &Options{}
+ flag.Var(f, "logging-format", "determines log output format, 'text' and 'json' are supported")
+ return f
+}
+
+// Options is a wrapper around Options which makes
+// it usable with flags.Var.
+type Options struct {
+ logs.Options
+}
+
+func (f *Options) Set(value string) error {
+ f.LogFormat = value
+ return utilerrors.NewAggregate(f.Validate())
+}
+
+func (f *Options) String() string {
+ return f.LogFormat
+}
diff --git a/pkg/logger/klogr/klogr.go b/pkg/logger/klogr/klogr.go
new file mode 100644
index 0000000000..9e526305d2
--- /dev/null
+++ b/pkg/logger/klogr/klogr.go
@@ -0,0 +1,212 @@
+/*
+Copyright 2019 The Kubernetes Authors.
+Copyright 2020 Intel Coporation.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package klogr implements github.com/go-logr/logr.Logger in terms of
+// k8s.io/klog. It's a fork of klog/klogr because that serializes
+// differently than klog itself.
+//
+// The formating of key/value pairs had to be copied from
+// klog because there is no klog.InfosDepth and klog.ErrorsDepth
+// and therefore klog cannot be called.
+//
+// This package can be removed once https://github.com/kubernetes/klog/pull/197
+// is merged.
+package klogr
+
+import (
+ "bytes"
+ "fmt"
+ "runtime"
+
+ "github.com/go-logr/logr"
+ "k8s.io/klog/v2"
+)
+
+// New returns a logr.Logger which is implemented by klog.
+func New() logr.Logger {
+ return klogger{
+ level: 0,
+ prefix: "",
+ values: nil,
+ }
+}
+
+type klogger struct {
+ level int
+ prefix string
+ values []interface{}
+}
+
+func (l klogger) clone() klogger {
+ return klogger{
+ level: l.level,
+ prefix: l.prefix,
+ values: copySlice(l.values),
+ }
+}
+
+func copySlice(in []interface{}) []interface{} {
+ out := make([]interface{}, len(in))
+ copy(out, in)
+ return out
+}
+
+// Magic string for intermediate frames that we should ignore.
+const autogeneratedFrameName = ""
+
+// Discover how many frames we need to climb to find the caller. This approach
+// was suggested by Ian Lance Taylor of the Go team, so it *should* be safe
+// enough (famous last words).
+func framesToCaller() int {
+ // 1 is the immediate caller. 3 should be too many.
+ for i := 1; i < 3; i++ {
+ _, file, _, _ := runtime.Caller(i + 1) // +1 for this function's frame
+ if file != autogeneratedFrameName {
+ return i
+ }
+ }
+ return 1 // something went wrong, this is safe
+}
+
+// trimDuplicates will deduplicates elements provided in multiple KV tuple
+// slices, whilst maintaining the distinction between where the items are
+// contained.
+func trimDuplicates(kvLists ...[]interface{}) [][]interface{} {
+ // maintain a map of all seen keys
+ seenKeys := map[interface{}]struct{}{}
+ // build the same number of output slices as inputs
+ outs := make([][]interface{}, len(kvLists))
+ // iterate over the input slices backwards, as 'later' kv specifications
+ // of the same key will take precedence over earlier ones
+ for i := len(kvLists) - 1; i >= 0; i-- {
+ // initialise this output slice
+ outs[i] = []interface{}{}
+ // obtain a reference to the kvList we are processing
+ kvList := kvLists[i]
+
+ // start iterating at len(kvList) - 2 (i.e. the 2nd last item) for
+ // slices that have an even number of elements.
+ // We add (len(kvList) % 2) here to handle the case where there is an
+ // odd number of elements in a kvList.
+ // If there is an odd number, then the last element in the slice will
+ // have the value 'null'.
+ for i2 := len(kvList) - 2 + (len(kvList) % 2); i2 >= 0; i2 -= 2 {
+ k := kvList[i2]
+ // if we have already seen this key, do not include it again
+ if _, ok := seenKeys[k]; ok {
+ continue
+ }
+ // make a note that we've observed a new key
+ seenKeys[k] = struct{}{}
+ // attempt to obtain the value of the key
+ var v interface{}
+ // i2+1 should only ever be out of bounds if we handling the first
+ // iteration over a slice with an odd number of elements
+ if i2+1 < len(kvList) {
+ v = kvList[i2+1]
+ }
+ // add this KV tuple to the *start* of the output list to maintain
+ // the original order as we are iterating over the slice backwards
+ outs[i] = append([]interface{}{k, v}, outs[i]...)
+ }
+ }
+ return outs
+}
+
+// Serialization from klog.Infos (https://github.com/kubernetes/klog/blob/199a06da05a146312d7e58c2eeda84f069b1b932/klog.go#L798-L841).
+const missingValue = "(MISSING)"
+
+func kvListFormat(keysAndValues ...interface{}) string {
+ b := bytes.Buffer{}
+ for i := 0; i < len(keysAndValues); i += 2 {
+ var v interface{}
+ k := keysAndValues[i]
+ if i+1 < len(keysAndValues) {
+ v = keysAndValues[i+1]
+ } else {
+ v = missingValue
+ }
+ if i > 0 {
+ b.WriteByte(' ')
+ }
+
+ switch v.(type) {
+ case string, error:
+ b.WriteString(fmt.Sprintf("%s=%q", k, v))
+ default:
+ if _, ok := v.(fmt.Stringer); ok {
+ b.WriteString(fmt.Sprintf("%s=%q", k, v))
+ } else {
+ b.WriteString(fmt.Sprintf("%s=%+v", k, v))
+ }
+ }
+ }
+ return b.String()
+}
+
+func (l klogger) Info(msg string, kvList ...interface{}) {
+ if l.Enabled() {
+ trimmed := trimDuplicates(l.values, kvList)
+ fixedStr := kvListFormat(trimmed[0]...)
+ userStr := kvListFormat(trimmed[1]...)
+ klog.InfoDepth(framesToCaller(), concatenate(l.prefix, msg, fixedStr, userStr)...)
+ }
+}
+
+func (l klogger) Enabled() bool {
+ return bool(klog.V(klog.Level(l.level)).Enabled())
+}
+
+func (l klogger) Error(err error, msg string, kvList ...interface{}) {
+ errStr := kvListFormat("err", err)
+ trimmed := trimDuplicates(l.values, kvList)
+ fixedStr := kvListFormat(trimmed[0]...)
+ userStr := kvListFormat(trimmed[1]...)
+ klog.ErrorDepth(framesToCaller(), concatenate(l.prefix, msg, errStr, fixedStr, userStr)...)
+}
+
+func concatenate(prefix string, pieces ...string) []interface{} {
+ var args []interface{}
+ if prefix != "" {
+ args = append(args, prefix+":")
+ }
+ for _, piece := range pieces {
+ if piece != "" {
+ if args != nil {
+ args = append(args, " ")
+ }
+ args = append(args, piece)
+ }
+ }
+ return args
+}
+
+func (l klogger) V(level int) logr.Logger {
+ new := l.clone()
+ new.level = level
+ return new
+}
+
+// WithName returns a new logr.Logger with the specified name appended. klogr
+// uses '/' characters to separate name elements. Callers should not pass '/'
+// in the provided name string, but this library does not actually enforce that.
+func (l klogger) WithName(name string) logr.Logger {
+ new := l.clone()
+ if len(l.prefix) > 0 {
+ new.prefix = l.prefix + "/"
+ }
+ new.prefix += name
+ return new
+}
+
+func (l klogger) WithValues(kvList ...interface{}) logr.Logger {
+ new := l.clone()
+ new.values = append(new.values, kvList...)
+ return new
+}
+
+var _ logr.Logger = klogger{}
diff --git a/pkg/logger/klogr/klogr_test.go b/pkg/logger/klogr/klogr_test.go
new file mode 100644
index 0000000000..3ad5fde7a6
--- /dev/null
+++ b/pkg/logger/klogr/klogr_test.go
@@ -0,0 +1,154 @@
+/*
+Copyright 2019 The Kubernetes Authors.
+Copyright 2020 Intel Coporation.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package klogr
+
+import (
+ "bytes"
+ "errors"
+ "flag"
+ "testing"
+
+ "k8s.io/klog/v2"
+
+ "github.com/go-logr/logr"
+)
+
+func TestInfo(t *testing.T) {
+ klog.InitFlags(nil)
+ flag.CommandLine.Set("v", "10")
+ flag.CommandLine.Set("skip_headers", "true")
+ flag.CommandLine.Set("logtostderr", "false")
+ flag.CommandLine.Set("alsologtostderr", "false")
+ flag.CommandLine.Set("stderrthreshold", "10")
+ flag.Parse()
+
+ tests := map[string]struct {
+ klogr logr.Logger
+ text string
+ keysAndValues []interface{}
+ names []string
+ err error
+ expectedOutput string
+ }{
+ "should log with values passed to keysAndValues": {
+ klogr: New().V(0),
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue"},
+ expectedOutput: `test akey="avalue"
+`,
+ },
+ "should support single name": {
+ klogr: New().V(0),
+ names: []string{"hello"},
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue"},
+ expectedOutput: `hello: test akey="avalue"
+`,
+ },
+ "should support multiple names": {
+ klogr: New().V(0),
+ names: []string{"hello", "world"},
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue"},
+ expectedOutput: `hello/world: test akey="avalue"
+`,
+ },
+ "should not print duplicate keys with the same value": {
+ klogr: New().V(0),
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue", "akey", "avalue"},
+ expectedOutput: `test akey="avalue"
+`,
+ },
+ "should only print the last duplicate key when the values are passed to Info": {
+ klogr: New().V(0),
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue", "akey", "avalue2"},
+ expectedOutput: `test akey="avalue2"
+`,
+ },
+ "should only print the duplicate key that is passed to Info if one was passed to the logger": {
+ klogr: New().WithValues("akey", "avalue"),
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue"},
+ expectedOutput: `test akey="avalue"
+`,
+ },
+ "should only print the key passed to Info when one is already set on the logger": {
+ klogr: New().WithValues("akey", "avalue"),
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue2"},
+ expectedOutput: `test akey="avalue2"
+`,
+ },
+ "should correctly handle odd-numbers of KVs": {
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue", "akey2"},
+ expectedOutput: `test akey="avalue" akey2=
+`,
+ },
+ "should correctly html characters": {
+ text: "test",
+ keysAndValues: []interface{}{"akey", "<&>"},
+ expectedOutput: `test akey="<&>"
+`,
+ },
+ "should correctly handle odd-numbers of KVs in both log values and Info args": {
+ klogr: New().WithValues("basekey1", "basevar1", "basekey2"),
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue", "akey2"},
+ expectedOutput: `test basekey1="basevar1" basekey2= akey="avalue" akey2=
+`,
+ },
+ "should correctly print regular error types": {
+ klogr: New().V(0),
+ text: "test",
+ keysAndValues: []interface{}{"err", errors.New("whoops")},
+ expectedOutput: `test err="whoops"
+`,
+ },
+ "should correctly print regular error types when using logr.Error": {
+ klogr: New().V(0),
+ text: "test",
+ err: errors.New("whoops"),
+ // The message is printed to three different log files (info, warning, error), so we see it three times in our output buffer.
+ expectedOutput: `test err="whoops"
+test err="whoops"
+test err="whoops"
+`,
+ },
+ }
+ for n, test := range tests {
+ t.Run(n, func(t *testing.T) {
+ klogr := test.klogr
+ if klogr == nil {
+ klogr = New()
+ }
+ for _, name := range test.names {
+ klogr = klogr.WithName(name)
+ }
+
+ // hijack the klog output
+ tmpWriteBuffer := bytes.NewBuffer(nil)
+ klog.SetOutput(tmpWriteBuffer)
+
+ if test.err != nil {
+ klogr.Error(test.err, test.text, test.keysAndValues...)
+ } else {
+ klogr.Info(test.text, test.keysAndValues...)
+ }
+ // call Flush to ensure the text isn't still buffered
+ klog.Flush()
+
+ actual := tmpWriteBuffer.String()
+ if actual != test.expectedOutput {
+ t.Errorf("expected %q did not match actual %q", test.expectedOutput, actual)
+ }
+ })
+ }
+}
diff --git a/pkg/logger/kubernetes.go b/pkg/logger/kubernetes.go
new file mode 100644
index 0000000000..2ed66f52a9
--- /dev/null
+++ b/pkg/logger/kubernetes.go
@@ -0,0 +1,31 @@
+/*
+Copyright 2020 Intel Coporation.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package logger
+
+import (
+ "fmt"
+
+ "k8s.io/klog/v2"
+)
+
+// ObjectRef references a kubernetes object
+type ObjectRefWithType struct {
+ klog.ObjectRef
+ Type string `json:"type,omitempty"`
+}
+
+func (ref ObjectRefWithType) String() string {
+ return fmt.Sprintf("%s <%s>", ref.ObjectRef.String(), ref.Type)
+}
+
+// KObj returns ObjectRefWithType from ObjectMeta
+func KObjWithType(obj klog.KMetadata) ObjectRefWithType {
+ return ObjectRefWithType{
+ ObjectRef: klog.KObj(obj),
+ Type: fmt.Sprintf("%T", obj),
+ }
+}
diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go
new file mode 100644
index 0000000000..9d3a358bef
--- /dev/null
+++ b/pkg/logger/logger.go
@@ -0,0 +1,40 @@
+/*
+Copyright 2020 Intel Coporation.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package logger defines an interface for adding a structured logger
+// to a context and retrieving it again. The fallback when a context
+// doesn't have a logger is the global klog logger.
+//
+// This uses the same context key as logr and thus is compatible
+// with code that uses that interface. The difference is that
+// the Get function here never returns nil.
+//
+// Also contains an extension of klog.KObj which includes the
+// type of the object in the log output.
+package logger
+
+import (
+ "context"
+
+ "github.com/intel/pmem-csi/pkg/logger/klogr"
+
+ "github.com/go-logr/logr"
+)
+
+// Set returns a context with the given structured logger added to the given context.
+func Set(ctx context.Context, logger logr.Logger) context.Context {
+ return logr.NewContext(ctx, logger)
+}
+
+// Get returns the structured logger stored in the context or (if not set)
+// a klog based logger.
+func Get(ctx context.Context) logr.Logger {
+ l := logr.FromContext(ctx)
+ if l != nil {
+ return l
+ }
+ return klogr.New()
+}
diff --git a/pkg/logger/testinglogger/testinglogger.go b/pkg/logger/testinglogger/testinglogger.go
new file mode 100644
index 0000000000..ea6f86073e
--- /dev/null
+++ b/pkg/logger/testinglogger/testinglogger.go
@@ -0,0 +1,198 @@
+/*
+Copyright 2019 The Kubernetes Authors.
+Copyright 2020 Intel Coporation.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package testinglogger contains an implementation of the logr interface
+// which is logging through a function like testing.TB.Log function.
+// Serialization of the structured log parameters is done in the format
+// used also by klog/klogr.
+//
+// The code had to be copied because:
+// - klog/klogr always prints to the global klog
+// - go-logr/stdr (a very similar code) allows redirecting output,
+// but its own functions then appear as source code location
+// because they are not calling t.Helper()
+// - we want to output *all* messages regardless of their log level;
+// "go test" will suppress output by default unless a test
+// failed, in which case we want all output that we can get
+package testinglogger
+
+import (
+ "bytes"
+ "fmt"
+
+ "github.com/go-logr/logr"
+)
+
+// Logger is the relevant subset of testing.TB.
+type Logger interface {
+ Helper()
+ Log(args ...interface{})
+}
+
+// New constructs a new logger for the given test interface.
+func New(l Logger) logr.Logger {
+ return tlogger{
+ l: l,
+ prefix: "",
+ values: nil,
+ }
+}
+
+type tlogger struct {
+ l Logger
+ prefix string
+ values []interface{}
+}
+
+func (l tlogger) clone() tlogger {
+ return tlogger{
+ l: l.l,
+ prefix: l.prefix,
+ values: copySlice(l.values),
+ }
+}
+
+func copySlice(in []interface{}) []interface{} {
+ out := make([]interface{}, len(in))
+ copy(out, in)
+ return out
+}
+
+// trimDuplicates will deduplicates elements provided in multiple KV tuple
+// slices, whilst maintaining the distinction between where the items are
+// contained.
+func trimDuplicates(kvLists ...[]interface{}) [][]interface{} {
+ // maintain a map of all seen keys
+ seenKeys := map[interface{}]struct{}{}
+ // build the same number of output slices as inputs
+ outs := make([][]interface{}, len(kvLists))
+ // iterate over the input slices backwards, as 'later' kv specifications
+ // of the same key will take precedence over earlier ones
+ for i := len(kvLists) - 1; i >= 0; i-- {
+ // initialise this output slice
+ outs[i] = []interface{}{}
+ // obtain a reference to the kvList we are processing
+ kvList := kvLists[i]
+
+ // start iterating at len(kvList) - 2 (i.e. the 2nd last item) for
+ // slices that have an even number of elements.
+ // We add (len(kvList) % 2) here to handle the case where there is an
+ // odd number of elements in a kvList.
+ // If there is an odd number, then the last element in the slice will
+ // have the value 'null'.
+ for i2 := len(kvList) - 2 + (len(kvList) % 2); i2 >= 0; i2 -= 2 {
+ k := kvList[i2]
+ // if we have already seen this key, do not include it again
+ if _, ok := seenKeys[k]; ok {
+ continue
+ }
+ // make a note that we've observed a new key
+ seenKeys[k] = struct{}{}
+ // attempt to obtain the value of the key
+ var v interface{}
+ // i2+1 should only ever be out of bounds if we handling the first
+ // iteration over a slice with an odd number of elements
+ if i2+1 < len(kvList) {
+ v = kvList[i2+1]
+ }
+ // add this KV tuple to the *start* of the output list to maintain
+ // the original order as we are iterating over the slice backwards
+ outs[i] = append([]interface{}{k, v}, outs[i]...)
+ }
+ }
+ return outs
+}
+
+// Serialization from klog.Infos (https://github.com/kubernetes/klog/blob/199a06da05a146312d7e58c2eeda84f069b1b932/klog.go#L798-L841).
+const missingValue = "(MISSING)"
+
+func kvListFormat(keysAndValues ...interface{}) string {
+ b := bytes.Buffer{}
+ for i := 0; i < len(keysAndValues); i += 2 {
+ var v interface{}
+ k := keysAndValues[i]
+ if i+1 < len(keysAndValues) {
+ v = keysAndValues[i+1]
+ } else {
+ v = missingValue
+ }
+ if i > 0 {
+ b.WriteByte(' ')
+ }
+
+ switch v.(type) {
+ case string, error:
+ b.WriteString(fmt.Sprintf("%s=%q", k, v))
+ default:
+ if _, ok := v.(fmt.Stringer); ok {
+ b.WriteString(fmt.Sprintf("%s=%q", k, v))
+ } else {
+ b.WriteString(fmt.Sprintf("%s=%+v", k, v))
+ }
+ }
+ }
+ return b.String()
+}
+
+func (l tlogger) Info(msg string, kvList ...interface{}) {
+ l.l.Helper()
+ trimmed := trimDuplicates(l.values, kvList)
+ fixedStr := kvListFormat(trimmed[0]...)
+ userStr := kvListFormat(trimmed[1]...)
+ l.log("INFO", l.prefix, msg, fixedStr, userStr)
+}
+
+func (l tlogger) Enabled() bool {
+ return true
+}
+
+func (l tlogger) Error(err error, msg string, kvList ...interface{}) {
+ l.l.Helper()
+ errStr := kvListFormat("err", err)
+ trimmed := trimDuplicates(l.values, kvList)
+ fixedStr := kvListFormat(trimmed[0]...)
+ userStr := kvListFormat(trimmed[1]...)
+ l.log("ERROR", l.prefix, msg, errStr, fixedStr, userStr)
+}
+
+func (l tlogger) log(what, prefix string, pieces ...string) {
+ args := []interface{}{what}
+ if prefix != "" {
+ args = append(args, prefix+":")
+ }
+ for _, piece := range pieces {
+ if piece != "" {
+ args = append(args, piece)
+ }
+ }
+ l.l.Log(args...)
+}
+
+func (l tlogger) V(level int) logr.Logger {
+ // No-op, level is ignored.
+ return l
+}
+
+// WithName returns a new logr.Logger with the specified name appended. klogr
+// uses '/' characters to separate name elements. Callers should not pass '/'
+// in the provided name string, but this library does not actually enforce that.
+func (l tlogger) WithName(name string) logr.Logger {
+ new := l.clone()
+ if len(l.prefix) > 0 {
+ new.prefix = l.prefix + "/"
+ }
+ new.prefix += name
+ return new
+}
+
+func (l tlogger) WithValues(kvList ...interface{}) logr.Logger {
+ new := l.clone()
+ new.values = append(new.values, kvList...)
+ return new
+}
+
+var _ logr.Logger = tlogger{}
diff --git a/pkg/logger/testinglogger/testinglogger_test.go b/pkg/logger/testinglogger/testinglogger_test.go
new file mode 100644
index 0000000000..e36dc1fdd1
--- /dev/null
+++ b/pkg/logger/testinglogger/testinglogger_test.go
@@ -0,0 +1,142 @@
+/*
+Copyright 2019 The Kubernetes Authors.
+Copyright 2020 Intel Coporation.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package testinglogger
+
+import (
+ "bytes"
+ "errors"
+ "fmt"
+ "testing"
+)
+
+func TestInfo(t *testing.T) {
+ tests := map[string]struct {
+ text string
+ withValues []interface{}
+ keysAndValues []interface{}
+ names []string
+ err error
+ expectedOutput string
+ }{
+ "should log with values passed to keysAndValues": {
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue"},
+ expectedOutput: `INFO test akey="avalue"
+`,
+ },
+ "should support single name": {
+ names: []string{"hello"},
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue"},
+ expectedOutput: `INFO hello: test akey="avalue"
+`,
+ },
+ "should support multiple names": {
+ names: []string{"hello", "world"},
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue"},
+ expectedOutput: `INFO hello/world: test akey="avalue"
+`,
+ },
+ "should not print duplicate keys with the same value": {
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue", "akey", "avalue"},
+ expectedOutput: `INFO test akey="avalue"
+`,
+ },
+ "should only print the last duplicate key when the values are passed to Info": {
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue", "akey", "avalue2"},
+ expectedOutput: `INFO test akey="avalue2"
+`,
+ },
+ "should only print the duplicate key that is passed to Info if one was passed to the logger": {
+ withValues: []interface{}{"akey", "avalue"},
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue"},
+ expectedOutput: `INFO test akey="avalue"
+`,
+ },
+ "should only print the key passed to Info when one is already set on the logger": {
+ withValues: []interface{}{"akey", "avalue"},
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue2"},
+ expectedOutput: `INFO test akey="avalue2"
+`,
+ },
+ "should correctly handle odd-numbers of KVs": {
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue", "akey2"},
+ expectedOutput: `INFO test akey="avalue" akey2=
+`,
+ },
+ "should correctly html characters": {
+ text: "test",
+ keysAndValues: []interface{}{"akey", "<&>"},
+ expectedOutput: `INFO test akey="<&>"
+`,
+ },
+ "should correctly handle odd-numbers of KVs in both log values and Info args": {
+ withValues: []interface{}{"basekey1", "basevar1", "basekey2"},
+ text: "test",
+ keysAndValues: []interface{}{"akey", "avalue", "akey2"},
+ expectedOutput: `INFO test basekey1="basevar1" basekey2= akey="avalue" akey2=
+`,
+ },
+ "should correctly print regular error types": {
+ text: "test",
+ keysAndValues: []interface{}{"err", errors.New("whoops")},
+ expectedOutput: `INFO test err="whoops"
+`,
+ },
+ "should correctly print regular error types when using logr.Error": {
+ text: "test",
+ err: errors.New("whoops"),
+ expectedOutput: `ERROR test err="whoops"
+`,
+ },
+ }
+ for n, test := range tests {
+ t.Run(n, func(t *testing.T) {
+ var buffer logToBuf
+ klogr := New(&buffer)
+ for _, name := range test.names {
+ klogr = klogr.WithName(name)
+ }
+ klogr = klogr.WithValues(test.withValues...)
+
+ if test.err != nil {
+ klogr.Error(test.err, test.text, test.keysAndValues...)
+ } else {
+ klogr.Info(test.text, test.keysAndValues...)
+ }
+
+ actual := buffer.String()
+ if actual != test.expectedOutput {
+ t.Errorf("expected %q did not match actual %q", test.expectedOutput, actual)
+ }
+ })
+ }
+}
+
+type logToBuf struct {
+ bytes.Buffer
+}
+
+func (l *logToBuf) Helper() {
+}
+
+func (l *logToBuf) Log(args ...interface{}) {
+ for i, arg := range args {
+ if i > 0 {
+ l.Write([]byte(" "))
+ }
+ l.Write([]byte(fmt.Sprintf("%s", arg)))
+ }
+ l.Write([]byte("\n"))
+}
diff --git a/pkg/pmem-csi-driver/main.go b/pkg/pmem-csi-driver/main.go
index 498e3dd749..8e9296279f 100644
--- a/pkg/pmem-csi-driver/main.go
+++ b/pkg/pmem-csi-driver/main.go
@@ -16,6 +16,7 @@ import (
api "github.com/intel/pmem-csi/pkg/apis/pmemcsi/v1alpha1"
"github.com/intel/pmem-csi/pkg/k8sutil"
+ "github.com/intel/pmem-csi/pkg/logger"
pmemcommon "github.com/intel/pmem-csi/pkg/pmem-common"
)
@@ -25,6 +26,7 @@ var (
DeviceManager: api.DeviceModeLVM,
}
showVersion = flag.Bool("version", false, "Show release version and exit")
+ logFormat = logger.NewFlag()
version = "unknown" // Set version during build time
)
@@ -59,6 +61,8 @@ func init() {
}
func Main() int {
+ flag.Parse()
+ logFormat.Apply()
if *showVersion {
fmt.Println(version)
return 0
diff --git a/pkg/pmem-csi-driver/pmem-csi-driver_test.go b/pkg/pmem-csi-driver/pmem-csi-driver_test.go
index 81e906f44f..f49b603ea7 100644
--- a/pkg/pmem-csi-driver/pmem-csi-driver_test.go
+++ b/pkg/pmem-csi-driver/pmem-csi-driver_test.go
@@ -15,8 +15,6 @@ import (
"os"
"testing"
- "k8s.io/klog/v2"
-
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -27,10 +25,6 @@ var (
keyFile = os.ExpandEnv("${TEST_WORK}/pmem-ca/pmem-registry-key.pem")
)
-func init() {
- klog.InitFlags(nil)
-}
-
func TestMetrics(t *testing.T) {
cases := map[string]struct {
path string
diff --git a/pkg/pmem-csi-operator/controller/controller.go b/pkg/pmem-csi-operator/controller/controller.go
index a72eca446c..824537f495 100644
--- a/pkg/pmem-csi-operator/controller/controller.go
+++ b/pkg/pmem-csi-operator/controller/controller.go
@@ -7,6 +7,8 @@ SPDX-License-Identifier: Apache-2.0
package controller
import (
+ "context"
+
"github.com/intel/pmem-csi/pkg/version"
v1 "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/rest"
@@ -28,12 +30,12 @@ type ControllerOptions struct {
}
// AddToManagerFuncs is a list of functions to add all Controllers to the Manager
-var AddToManagerFuncs []func(manager.Manager, ControllerOptions) error
+var AddToManagerFuncs []func(context.Context, manager.Manager, ControllerOptions) error
// AddToManager adds all Controllers to the Manager
-func AddToManager(m manager.Manager, opts ControllerOptions) error {
+func AddToManager(ctx context.Context, m manager.Manager, opts ControllerOptions) error {
for _, f := range AddToManagerFuncs {
- if err := f(m, opts); err != nil {
+ if err := f(ctx, m, opts); err != nil {
return err
}
}
diff --git a/pkg/pmem-csi-operator/controller/deployment/controller_driver.go b/pkg/pmem-csi-operator/controller/deployment/controller_driver.go
index c282f9daba..7f2874c878 100644
--- a/pkg/pmem-csi-operator/controller/deployment/controller_driver.go
+++ b/pkg/pmem-csi-operator/controller/deployment/controller_driver.go
@@ -14,10 +14,12 @@ import (
"io/ioutil"
"os"
"path"
+ "reflect"
"runtime"
api "github.com/intel/pmem-csi/pkg/apis/pmemcsi/v1beta1"
grpcserver "github.com/intel/pmem-csi/pkg/grpc-server"
+ "github.com/intel/pmem-csi/pkg/logger"
pmemtls "github.com/intel/pmem-csi/pkg/pmem-csi-operator/pmem-tls"
pmemgrpc "github.com/intel/pmem-csi/pkg/pmem-grpc"
"github.com/intel/pmem-csi/pkg/version"
@@ -33,7 +35,6 @@ import (
apiruntime "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/intstr"
- "k8s.io/klog/v2"
"k8s.io/kubectl/pkg/scheme"
"sigs.k8s.io/controller-runtime/pkg/client"
)
@@ -102,20 +103,25 @@ func AllObjectLists() []*unstructured.UnstructuredList {
return lists
}
-type PmemCSIDriver struct {
+// pmemCSIDeployment represents the desired state of a PMEM-CSI driver
+// deployment.
+type pmemCSIDeployment struct {
*api.Deployment
- // operators namespace used for creating sub-resources
+ // operator's namespace used for creating sub-resources
namespace string
k8sVersion version.Version
}
-type ObjectPatch struct {
+// objectPatch combines a modified object and the patch against
+// the current revision of that object that produces the modified
+// object.
+type objectPatch struct {
obj apiruntime.Object
patch client.Patch
}
-func NewObjectPatch(obj, copy apiruntime.Object) *ObjectPatch {
- return &ObjectPatch{
+func newObjectPatch(obj, copy apiruntime.Object) *objectPatch {
+ return &objectPatch{
obj: obj,
patch: client.MergeFrom(copy),
}
@@ -123,7 +129,7 @@ func NewObjectPatch(obj, copy apiruntime.Object) *ObjectPatch {
// IsNew checks if the object is a new object, i.e, the it is not
// yet stored with the APIServer.
-func (op ObjectPatch) IsNew() bool {
+func (op objectPatch) isNew() bool {
if op.obj != nil {
// We ignore only possible error - client.errNotObject
// and treat it's as new object
@@ -138,7 +144,7 @@ func (op ObjectPatch) IsNew() bool {
// Diff returns the raw data representing the differences between
// original object and the changed/patch object.
-func (op ObjectPatch) Diff() ([]byte, error) {
+func (op objectPatch) diff() ([]byte, error) {
data, err := op.patch.Data(op.obj)
if err != nil {
return nil, err
@@ -153,28 +159,29 @@ func (op ObjectPatch) Diff() ([]byte, error) {
// Apply sends the changes to API Server
// Creates new object if not existing, otherwise patches it with changes
-func (op *ObjectPatch) Apply(c client.Client, labels map[string]string) error {
+func (op *objectPatch) apply(ctx context.Context, c client.Client, labels map[string]string) error {
objMeta, err := meta.Accessor(op.obj)
if err != nil {
return fmt.Errorf("internal error %T: %v", op.obj, err)
}
+ l := logger.Get(ctx).WithName("objectPatch/apply")
// NOTE(avalluri): Set labels just before creating/patching.
// Setting them before creating the client.Patch makes
// they get lost from the final diff.
objMeta.SetLabels(labels)
- if op.IsNew() {
+ if op.isNew() {
// For unknown reason client.Create() clearing off the
// GVK on obj, So restore it manually.
gvk := op.obj.GetObjectKind().GroupVersionKind()
- klog.Infof("Create: %T/%s", op.obj, objMeta.GetName())
- err := c.Create(context.TODO(), op.obj)
+ l.V(3).Info("create", logger.KObjWithType(objMeta))
+ err := c.Create(ctx, op.obj)
op.obj.GetObjectKind().SetGroupVersionKind(gvk)
return err
}
- klog.Infof("Update: %T/%s", op.obj, objMeta.GetName())
- data, err := op.Diff()
+ l.V(3).Info("update", logger.KObjWithType(objMeta))
+ data, err := op.diff()
if err != nil {
return err
}
@@ -185,70 +192,38 @@ func (op *ObjectPatch) Apply(c client.Client, labels map[string]string) error {
return nil
}
- return c.Patch(context.TODO(), op.obj, op.patch)
+ return c.Patch(ctx, op.obj, op.patch)
}
// Reconcile reconciles the driver deployment. When adding new
// objects, extend also currentObjects above and the RBAC rules in
// deploy/kustomize/operator/operator.yaml.
-func (d *PmemCSIDriver) Reconcile(r *ReconcileDeployment) error {
+func (d *pmemCSIDeployment) reconcile(ctx context.Context, r *ReconcileDeployment) error {
if err := d.EnsureDefaults(r.containerImage); err != nil {
return err
}
+ l := logger.Get(ctx).WithName("reconcile")
- klog.Infof("Deployment: %q, state %q ", d.Name, d.Status.Phase)
+ l.V(3).Info("start", "deployment", d.Name, "phase", d.Status.Phase)
var allObjects []apiruntime.Object
redeployAll := func() error {
var o apiruntime.Object
var err error
- s, err := d.redeploySecrets(r)
+ s, err := d.redeploySecrets(ctx, r)
if err != nil {
return err
}
for _, o := range s {
allObjects = append(allObjects, o)
}
- if o, err = d.redeployProvisionerRole(r); err != nil {
- return fmt.Errorf("failed to update RBAC role: %v", err)
- }
- allObjects = append(allObjects, o)
- if o, err = d.redeployProvisionerRoleBinding(r); err != nil {
- return fmt.Errorf("failed to update RBAC role bindings: %v", err)
- }
- allObjects = append(allObjects, o)
- if o, err = d.redeployProvisionerClusterRole(r); err != nil {
- return fmt.Errorf("failed to update RBAC cluster role: %v", err)
- }
- allObjects = append(allObjects, o)
- if o, err = d.redeployProvisionerClusterRoleBinding(r); err != nil {
- return fmt.Errorf("failed to update RBAC cluster role bindings: %v", err)
- }
- allObjects = append(allObjects, o)
- if o, err = d.redeployServiceAccount(r); err != nil {
- return fmt.Errorf("failed to update service account: %v", err)
- }
- allObjects = append(allObjects, o)
- if o, err = d.redeployControllerService(r); err != nil {
- return fmt.Errorf("failed to update controller service: %v", err)
- }
- allObjects = append(allObjects, o)
- if o, err = d.redeployMetricsService(r); err != nil {
- return fmt.Errorf("failed to update controller service: %v", err)
- }
- allObjects = append(allObjects, o)
- if o, err = d.redeployCSIDriver(r); err != nil {
- return fmt.Errorf("failed to update CSI driver: %v", err)
- }
- allObjects = append(allObjects, o)
- if o, err = d.redeployControllerDriver(r); err != nil {
- return fmt.Errorf("failed to update controller driver: %v", err)
- }
- allObjects = append(allObjects, o)
- if o, err = d.redeployNodeDriver(r); err != nil {
- return fmt.Errorf("failed to update node driver: %v", err)
+
+ for name, handler := range subObjectHandlers {
+ if o, err = d.redeploy(ctx, r, handler); err != nil {
+ return fmt.Errorf("failed to update %s: %v", name, err)
+ }
+ allObjects = append(allObjects, o)
}
- allObjects = append(allObjects, o)
return nil
}
@@ -259,10 +234,10 @@ func (d *PmemCSIDriver) Reconcile(r *ReconcileDeployment) error {
d.SetCondition(api.DriverDeployed, corev1.ConditionTrue, "Driver deployed successfully.")
- klog.Infof("Deployed '%d' objects.", len(allObjects))
+ l.V(3).Info("deployed", "numObjects", len(allObjects))
// FIXME(avalluri): Limit the obsolete object deletion either only on version upgrades
// or on operator restart.
- if err := d.deleteObsoleteObjects(r, allObjects); err != nil {
+ if err := d.deleteObsoleteObjects(ctx, r, allObjects); err != nil {
return fmt.Errorf("Delete obsolete objects failed with error: %v", err)
}
@@ -271,16 +246,17 @@ func (d *PmemCSIDriver) Reconcile(r *ReconcileDeployment) error {
// getSubObject retrieves the latest revision of given object type from the API server
// And checks if that object is owned by the current deployment CR
-func (d *PmemCSIDriver) getSubObject(r *ReconcileDeployment, obj apiruntime.Object) error {
+func (d *pmemCSIDeployment) getSubObject(ctx context.Context, r *ReconcileDeployment, obj apiruntime.Object) error {
objMeta, err := meta.Accessor(obj)
if err != nil {
return fmt.Errorf("internal error %T: %v", obj, err)
}
+ l := logger.Get(ctx).WithName("getSubObject")
- klog.Infof("Get: %T/%s", obj, objMeta.GetName())
+ l.V(3).Info("get", "object", logger.KObjWithType(objMeta))
if err := r.Get(obj); err != nil {
if errors.IsNotFound(err) {
- klog.Infof("Not found: %T/%s", obj, objMeta.GetName())
+ l.V(3).Info("not found", logger.KObjWithType(objMeta))
return nil
}
return err
@@ -294,14 +270,15 @@ func (d *PmemCSIDriver) getSubObject(r *ReconcileDeployment, obj apiruntime.Obje
}
// updateSubObject writes the object changes to the API server.
-func (d *PmemCSIDriver) updateSubObject(r *ReconcileDeployment, op *ObjectPatch) error {
- return op.Apply(r.client, d.Spec.Labels)
+func (d *pmemCSIDeployment) updateSubObject(ctx context.Context, r *ReconcileDeployment, op *objectPatch) error {
+ return op.apply(ctx, r.client, d.Spec.Labels)
}
type redeployObject struct {
- object func() apiruntime.Object
- modify func(apiruntime.Object) error
- postUpdate func(apiruntime.Object) error
+ objType reflect.Type
+ object func(*pmemCSIDeployment) apiruntime.Object
+ modify func(*pmemCSIDeployment, apiruntime.Object) error
+ postUpdate func(*pmemCSIDeployment, apiruntime.Object) error
}
// redeploy resets/patches the object returned by ro.object()
@@ -309,28 +286,28 @@ type redeployObject struct {
// Here are the redeploy steps:
// 1. Get the object by calling ro.object() which needs redeploying.
// 2. Retrieve the latest data saved at APIServer for that object.
-// 3. Create an ObjectPatch for that object to record the changes from this point.
+// 3. Create an objectPatch for that object to record the changes from this point.
// 4. Call ro.modify() to modify the object's data.
-// 5. Call ObjectPatch.Apply() to submit the chanages to the APIServer.
+// 5. Call objectPatch.Apply() to submit the chanages to the APIServer.
// 6. If the update in step-5 was success, then call the ro.postUpdate() callback
// to run any post update steps.
-func (d *PmemCSIDriver) redeploy(r *ReconcileDeployment, ro redeployObject) (apiruntime.Object, error) {
- o := ro.object()
+func (d *pmemCSIDeployment) redeploy(ctx context.Context, r *ReconcileDeployment, ro redeployObject) (apiruntime.Object, error) {
+ o := ro.object(d)
if o == nil {
return nil, fmt.Errorf("nil object")
}
- if err := d.getSubObject(r, o); err != nil {
+ if err := d.getSubObject(ctx, r, o); err != nil {
return nil, err
}
- op := NewObjectPatch(o, o.DeepCopyObject())
- if err := ro.modify(o); err != nil {
+ op := newObjectPatch(o, o.DeepCopyObject())
+ if err := ro.modify(d, o); err != nil {
return nil, err
}
- if err := d.updateSubObject(r, op); err != nil {
+ if err := d.updateSubObject(ctx, r, op); err != nil {
return nil, err
}
if ro.postUpdate != nil {
- if err := ro.postUpdate(o); err != nil {
+ if err := ro.postUpdate(d, o); err != nil {
return nil, err
}
}
@@ -346,33 +323,33 @@ func (d *PmemCSIDriver) redeploy(r *ReconcileDeployment, ro redeployObject) (api
//
// We cannot use d.redeploy() as secrets needs to be provisioned if not preset.
// This special case cannot be fit into generice redeploy logic.
-func (d *PmemCSIDriver) redeploySecrets(r *ReconcileDeployment) ([]*corev1.Secret, error) {
+func (d *pmemCSIDeployment) redeploySecrets(ctx context.Context, r *ReconcileDeployment) ([]*corev1.Secret, error) {
rs := &corev1.Secret{
TypeMeta: metav1.TypeMeta{Kind: "Secret", APIVersion: "v1"},
ObjectMeta: d.getObjectMeta(d.RegistrySecretName(), false),
}
- if err := d.getSubObject(r, rs); err != nil {
+ if err := d.getSubObject(ctx, r, rs); err != nil {
return nil, err
}
- rop := NewObjectPatch(rs, rs.DeepCopy())
+ rop := newObjectPatch(rs, rs.DeepCopy())
ns := &corev1.Secret{
TypeMeta: metav1.TypeMeta{Kind: "Secret", APIVersion: "v1"},
ObjectMeta: d.getObjectMeta(d.NodeSecretName(), false),
}
- if err := d.getSubObject(r, ns); err != nil {
+ if err := d.getSubObject(ctx, r, ns); err != nil {
return nil, err
}
- nop := NewObjectPatch(ns, ns.DeepCopy())
+ nop := newObjectPatch(ns, ns.DeepCopy())
update := func() error {
d.getRegistrySecrets(rs)
- if err := d.updateSubObject(r, rop); err != nil {
+ if err := d.updateSubObject(ctx, r, rop); err != nil {
return fmt.Errorf("failed to update registry secrets: %w", err)
}
d.getNodeSecrets(ns)
- if err := d.updateSubObject(r, nop); err != nil {
+ if err := d.updateSubObject(ctx, r, nop); err != nil {
return fmt.Errorf("failed to update node secrets: %w", err)
}
return nil
@@ -392,9 +369,9 @@ func (d *PmemCSIDriver) redeploySecrets(r *ReconcileDeployment) ([]*corev1.Secre
}
d.SetCondition(api.CertsVerified, corev1.ConditionTrue, "Driver certificates validated.")
updateSecrets = true
- } else if rop.IsNew() || nop.IsNew() {
+ } else if rop.isNew() || nop.isNew() {
// Provision new self-signed certificates if not already present
- if err := d.provisionCertificates(); err != nil {
+ if err := d.provisionCertificates(ctx); err != nil {
d.SetCondition(api.CertsReady, corev1.ConditionFalse, err.Error())
return nil, err
}
@@ -411,20 +388,20 @@ func (d *PmemCSIDriver) redeploySecrets(r *ReconcileDeployment) ([]*corev1.Secre
return []*corev1.Secret{rs, ns}, nil
}
-// redeployNodeDriver deploys the node daemon set and records its status on to CR status.
-func (d *PmemCSIDriver) redeployNodeDriver(r *ReconcileDeployment) (apiruntime.Object, error) {
- return d.redeploy(r, redeployObject{
- object: func() apiruntime.Object {
+var subObjectHandlers = map[string]redeployObject{
+ "node driver": {
+ objType: reflect.TypeOf(&appsv1.DaemonSet{}),
+ object: func(d *pmemCSIDeployment) apiruntime.Object {
return &appsv1.DaemonSet{
TypeMeta: metav1.TypeMeta{Kind: "DaemonSet", APIVersion: "apps/v1"},
ObjectMeta: d.getObjectMeta(d.NodeDriverName(), false),
}
},
- modify: func(o apiruntime.Object) error {
+ modify: func(d *pmemCSIDeployment, o apiruntime.Object) error {
d.getNodeDaemonSet(o.(*appsv1.DaemonSet))
return nil
},
- postUpdate: func(o apiruntime.Object) error {
+ postUpdate: func(d *pmemCSIDeployment, o apiruntime.Object) error {
ds := o.(*appsv1.DaemonSet)
// Update node driver status is status object
status := "NotReady"
@@ -440,23 +417,20 @@ func (d *PmemCSIDriver) redeployNodeDriver(r *ReconcileDeployment) (apiruntime.O
d.SetDriverStatus(api.NodeDriver, status, reason)
return nil
},
- })
-}
-
-// redeployControllerDriver deploys the controller stateful set and records its status on to CR status.
-func (d *PmemCSIDriver) redeployControllerDriver(r *ReconcileDeployment) (apiruntime.Object, error) {
- return d.redeploy(r, redeployObject{
- object: func() apiruntime.Object {
+ },
+ "controller driver": {
+ objType: reflect.TypeOf(&appsv1.StatefulSet{}),
+ object: func(d *pmemCSIDeployment) apiruntime.Object {
return &appsv1.StatefulSet{
TypeMeta: metav1.TypeMeta{Kind: "StatefulSet", APIVersion: "apps/v1"},
ObjectMeta: d.getObjectMeta(d.ControllerDriverName(), false),
}
},
- modify: func(o apiruntime.Object) error {
+ modify: func(d *pmemCSIDeployment, o apiruntime.Object) error {
d.getControllerStatefulSet(o.(*appsv1.StatefulSet))
return nil
},
- postUpdate: func(o apiruntime.Object) error {
+ postUpdate: func(d *pmemCSIDeployment, o apiruntime.Object) error {
ss := o.(*appsv1.StatefulSet)
// Update controller status is status object
status := "NotReady"
@@ -473,205 +447,154 @@ func (d *PmemCSIDriver) redeployControllerDriver(r *ReconcileDeployment) (apirun
d.SetDriverStatus(api.ControllerDriver, status, reason)
return nil
},
- })
-}
-
-func (d *PmemCSIDriver) redeployControllerService(r *ReconcileDeployment) (apiruntime.Object, error) {
- return d.redeploy(r, redeployObject{
- object: func() apiruntime.Object {
+ },
+ "controller service": {
+ objType: reflect.TypeOf(&corev1.Service{}),
+ object: func(d *pmemCSIDeployment) apiruntime.Object {
return &corev1.Service{
TypeMeta: metav1.TypeMeta{Kind: "Service", APIVersion: "v1"},
ObjectMeta: d.getObjectMeta(d.ControllerServiceName(), false),
}
},
- modify: func(o apiruntime.Object) error {
+ modify: func(d *pmemCSIDeployment, o apiruntime.Object) error {
d.getControllerService(o.(*corev1.Service))
return nil
},
- })
-}
-
-func (d *PmemCSIDriver) redeployMetricsService(r *ReconcileDeployment) (apiruntime.Object, error) {
- return d.redeploy(r, redeployObject{
- object: func() apiruntime.Object {
+ },
+ "metrics service": {
+ objType: reflect.TypeOf(&corev1.Service{}),
+ object: func(d *pmemCSIDeployment) apiruntime.Object {
return &corev1.Service{
TypeMeta: metav1.TypeMeta{Kind: "Service", APIVersion: "v1"},
ObjectMeta: d.getObjectMeta(d.MetricsServiceName(), false),
}
},
- modify: func(o apiruntime.Object) error {
+ modify: func(d *pmemCSIDeployment, o apiruntime.Object) error {
d.getMetricsService(o.(*corev1.Service))
return nil
},
- })
-}
-
-func (d *PmemCSIDriver) redeployCSIDriver(r *ReconcileDeployment) (apiruntime.Object, error) {
- return d.redeploy(r, redeployObject{
- object: func() apiruntime.Object {
+ },
+ "CSIDriver": {
+ objType: reflect.TypeOf(&storagev1beta1.CSIDriver{}),
+ object: func(d *pmemCSIDeployment) apiruntime.Object {
return &storagev1beta1.CSIDriver{
TypeMeta: metav1.TypeMeta{Kind: "CSIDriver", APIVersion: "storage.k8s.io/v1beta1"},
ObjectMeta: d.getObjectMeta(d.CSIDriverName(), true),
}
},
- modify: func(o apiruntime.Object) error {
+ modify: func(d *pmemCSIDeployment, o apiruntime.Object) error {
d.getCSIDriver(o.(*storagev1beta1.CSIDriver))
return nil
},
- })
-}
-
-func (d *PmemCSIDriver) redeployProvisionerRole(r *ReconcileDeployment) (apiruntime.Object, error) {
- return d.redeploy(r, redeployObject{
- object: func() apiruntime.Object {
+ },
+ "provisioner role": {
+ objType: reflect.TypeOf(&rbacv1.Role{}),
+ object: func(d *pmemCSIDeployment) apiruntime.Object {
return &rbacv1.Role{
TypeMeta: metav1.TypeMeta{Kind: "Role", APIVersion: "rbac.authorization.k8s.io/v1"},
ObjectMeta: d.getObjectMeta(d.ProvisionerRoleName(), false),
}
},
- modify: func(o apiruntime.Object) error {
+ modify: func(d *pmemCSIDeployment, o apiruntime.Object) error {
d.getControllerProvisionerRole(o.(*rbacv1.Role))
return nil
},
- })
-}
-
-func (d *PmemCSIDriver) redeployProvisionerRoleBinding(r *ReconcileDeployment) (apiruntime.Object, error) {
- return d.redeploy(r, redeployObject{
- object: func() apiruntime.Object {
+ },
+ "provisioner role binding": {
+ objType: reflect.TypeOf(&rbacv1.RoleBinding{}),
+ object: func(d *pmemCSIDeployment) apiruntime.Object {
return &rbacv1.RoleBinding{
TypeMeta: metav1.TypeMeta{Kind: "RoleBinding", APIVersion: "rbac.authorization.k8s.io/v1"},
ObjectMeta: d.getObjectMeta(d.ProvisionerRoleBindingName(), false),
}
},
- modify: func(o apiruntime.Object) error {
+ modify: func(d *pmemCSIDeployment, o apiruntime.Object) error {
d.getControllerProvisionerRoleBinding(o.(*rbacv1.RoleBinding))
return nil
},
- })
-}
-
-func (d *PmemCSIDriver) redeployProvisionerClusterRole(r *ReconcileDeployment) (apiruntime.Object, error) {
- return d.redeploy(r, redeployObject{
- object: func() apiruntime.Object {
+ },
+ "provisioner cluster role": {
+ objType: reflect.TypeOf(&rbacv1.ClusterRole{}),
+ object: func(d *pmemCSIDeployment) apiruntime.Object {
return &rbacv1.ClusterRole{
TypeMeta: metav1.TypeMeta{Kind: "ClusterRole", APIVersion: "rbac.authorization.k8s.io/v1"},
ObjectMeta: d.getObjectMeta(d.ProvisionerClusterRoleName(), true),
}
},
- modify: func(o apiruntime.Object) error {
+ modify: func(d *pmemCSIDeployment, o apiruntime.Object) error {
d.getControllerProvisionerClusterRole(o.(*rbacv1.ClusterRole))
return nil
},
- })
-}
-
-func (d *PmemCSIDriver) redeployProvisionerClusterRoleBinding(r *ReconcileDeployment) (apiruntime.Object, error) {
- return d.redeploy(r, redeployObject{
- object: func() apiruntime.Object {
+ },
+ "provisioner cluster role binding": {
+ objType: reflect.TypeOf(&rbacv1.ClusterRoleBinding{}),
+ object: func(d *pmemCSIDeployment) apiruntime.Object {
return &rbacv1.ClusterRoleBinding{
TypeMeta: metav1.TypeMeta{Kind: "ClusterRoleBinding", APIVersion: "rbac.authorization.k8s.io/v1"},
ObjectMeta: d.getObjectMeta(d.ProvisionerClusterRoleBindingName(), true),
}
},
- modify: func(o apiruntime.Object) error {
+ modify: func(d *pmemCSIDeployment, o apiruntime.Object) error {
d.getControllerProvisionerClusterRoleBinding(o.(*rbacv1.ClusterRoleBinding))
return nil
},
- })
-}
-
-func (d *PmemCSIDriver) redeployServiceAccount(r *ReconcileDeployment) (apiruntime.Object, error) {
- return d.redeploy(r, redeployObject{
- object: func() apiruntime.Object {
+ },
+ "service account": {
+ objType: reflect.TypeOf(&corev1.ServiceAccount{}),
+ object: func(d *pmemCSIDeployment) apiruntime.Object {
return &corev1.ServiceAccount{
TypeMeta: metav1.TypeMeta{Kind: "ServiceAccount", APIVersion: "v1"},
ObjectMeta: d.getObjectMeta(d.ServiceAccountName(), false),
}
},
- modify: func(o apiruntime.Object) error {
+ modify: func(d *pmemCSIDeployment, o apiruntime.Object) error {
// nothing to customize for service account
return nil
},
- })
+ },
}
-// HandleEvent handles the delete/update events received on sub-objects
-func (d *PmemCSIDriver) HandleEvent(meta metav1.Object, obj apiruntime.Object, r *ReconcileDeployment) error {
- switch obj.(type) {
- case *corev1.Secret:
- klog.Infof("Redeploying driver secrets")
- if _, err := d.redeploySecrets(r); err != nil {
- return fmt.Errorf("failed to redeploy %q secrets: %v", meta.GetName(), err)
- }
- case *appsv1.DaemonSet:
- klog.Infof("Redeploying node driver")
- org := d.DeepCopy()
- if _, err := d.redeployNodeDriver(r); err != nil {
- return fmt.Errorf("failed to redeploy node driver: %v", err)
+var v1SecretPtr = reflect.TypeOf(&corev1.Secret{})
+
+// HandleEvent handles the delete/update events received on sub-objects. It ensures that any undesirable change
+// is reverted.
+func (d *pmemCSIDeployment) handleEvent(ctx context.Context, metaData metav1.Object, obj apiruntime.Object, r *ReconcileDeployment) error {
+ objType := reflect.TypeOf(obj)
+ l := logger.Get(ctx).WithName("deployment/event")
+ l.V(5).Info("start", "object", logger.KObjWithType(metaData), "type", objType)
+
+ objName := metaData.GetName()
+ for name, handler := range subObjectHandlers {
+ if objType != handler.objType {
+ continue
}
- if err := r.PatchDeploymentStatus(d.Deployment, client.MergeFrom(org)); err != nil {
- return fmt.Errorf("failed to update deployment CR status: %v", err)
+ metaObj, _ := meta.Accessor(handler.object(d))
+ if objName != metaObj.GetName() {
+ continue
}
- case *appsv1.StatefulSet:
- klog.Infof("Redeploying controller driver")
+ l.V(3).Info("redeploying", "name", name, "object", logger.KObjWithType(metaData))
org := d.DeepCopy()
- if _, err := d.redeployControllerDriver(r); err != nil {
- return fmt.Errorf("failed to redeploy controller driver: %v", err)
+ if _, err := d.redeploy(ctx, r, handler); err != nil {
+ return fmt.Errorf("failed to redeploy %s: %v", name, err)
}
- if err := r.PatchDeploymentStatus(d.Deployment, client.MergeFrom(org)); err != nil {
+ if err := r.patchDeploymentStatus(d.Deployment, client.MergeFrom(org)); err != nil {
return fmt.Errorf("failed to update deployment CR status: %v", err)
}
- case *rbacv1.Role:
- klog.Infof("Redeploying provisioner RBAC role: %q", meta.GetName())
- if _, err := d.redeployProvisionerRole(r); err != nil {
- return fmt.Errorf("failed to redeploy %q provisioner role: %v", meta.GetName(), err)
- }
- case *rbacv1.ClusterRole:
- klog.Infof("Redeploying provisioner cluster role: %q", meta.GetName())
- if _, err := d.redeployProvisionerClusterRole(r); err != nil {
- return fmt.Errorf("failed to redeploy %q cluster role: %v", meta.GetName(), err)
- }
- case *rbacv1.RoleBinding:
- klog.Infof("Redeploying provisioner role binding")
- if _, err := d.redeployProvisionerRoleBinding(r); err != nil {
- return fmt.Errorf("failed to redeploy %q role binding: %v", meta.GetName(), err)
- }
- case *rbacv1.ClusterRoleBinding:
- klog.Infof("Redeploying provisioner cluster role binding: %q", meta.GetName())
- if _, err := d.redeployProvisionerClusterRoleBinding(r); err != nil {
- return fmt.Errorf("failed to redeploy %q cluster role binding: %v", meta.GetName(), err)
- }
- case *corev1.ServiceAccount:
- klog.Infof("Redeploying service account")
- if _, err := d.redeployServiceAccount(r); err != nil {
- return fmt.Errorf("failed to redeploy %q service account: %v", meta.GetName(), err)
- }
- case *corev1.Service:
- var err error
- klog.Infof("Redeploying service: %s", meta.GetName())
- if meta.GetName() == d.ControllerServiceName() {
- _, err = d.redeployControllerService(r)
- } else if meta.GetName() == d.MetricsServiceName() {
- _, err = d.redeployMetricsService(r)
- }
- if err != nil {
- return fmt.Errorf("failed to redeploy %q service: %v", meta.GetName(), err)
- }
- case *storagev1beta1.CSIDriver:
- klog.Infof("Redeploying %q CSIDriver", meta.GetName())
- if _, err := d.redeployCSIDriver(r); err != nil {
- return fmt.Errorf("failed to redeploy %q CSIDriver: %v", meta.GetName(), err)
+ }
+
+ if objType == v1SecretPtr {
+ l.V(3).Info("redeploying", "name", "driver secrets", "object", logger.KObjWithType(metaData))
+ if _, err := d.redeploySecrets(ctx, r); err != nil {
+ return fmt.Errorf("failed to redeploy %q secrets: %v", metaData.GetName(), err)
}
- default:
- klog.Infof("Ignoring event on '%s' of type %T", meta.GetName(), obj)
}
return nil
}
-func objectIsObsolete(objList []apiruntime.Object, toFind unstructured.Unstructured) (bool, error) {
- klog.V(5).Infof("Checking if %q of type %q is obsolete...", toFind.GetName(), toFind.GetObjectKind().GroupVersionKind())
+func objectIsObsolete(ctx context.Context, objList []apiruntime.Object, toFind unstructured.Unstructured) (bool, error) {
+ l := logger.Get(ctx)
+ l.V(5).Info("checking for obsolete object", "name", toFind.GetName(), "gkv", toFind.GetObjectKind().GroupVersionKind())
for i := range objList {
metaObj, err := meta.Accessor(objList[i])
if err != nil {
@@ -686,7 +609,7 @@ func objectIsObsolete(objList []apiruntime.Object, toFind unstructured.Unstructu
return true, nil
}
-func (d *PmemCSIDriver) isOwnerOf(obj unstructured.Unstructured) bool {
+func (d *pmemCSIDeployment) isOwnerOf(obj unstructured.Unstructured) bool {
for _, owner := range obj.GetOwnerReferences() {
if owner.UID == d.GetUID() {
return true
@@ -696,10 +619,11 @@ func (d *PmemCSIDriver) isOwnerOf(obj unstructured.Unstructured) bool {
return false
}
-func (d *PmemCSIDriver) deleteObsoleteObjects(r *ReconcileDeployment, newObjects []apiruntime.Object) error {
+func (d *pmemCSIDeployment) deleteObsoleteObjects(ctx context.Context, r *ReconcileDeployment, newObjects []apiruntime.Object) error {
+ l := logger.Get(ctx).WithName("deleteObsoleteObjects")
for _, obj := range newObjects {
metaObj, _ := meta.Accessor(obj)
- klog.V(5).Infof("==>%q type %q", metaObj.GetName(), obj.GetObjectKind().GroupVersionKind())
+ l.V(5).Info("new object", "name", metaObj.GetName(), "gkv", obj.GetObjectKind().GroupVersionKind())
}
for _, list := range AllObjectLists() {
@@ -707,8 +631,8 @@ func (d *PmemCSIDriver) deleteObsoleteObjects(r *ReconcileDeployment, newObjects
Namespace: d.namespace,
}
- klog.V(5).Infof("Fetching '%s' list with options: %v", list.GetObjectKind(), opts.Namespace)
- if err := r.client.List(context.TODO(), list, opts); err != nil {
+ l.V(5).Info("fetching objects", "gkv", list.GetObjectKind(), "options", opts.Namespace)
+ if err := r.client.List(ctx, list, opts); err != nil {
return err
}
@@ -716,14 +640,14 @@ func (d *PmemCSIDriver) deleteObsoleteObjects(r *ReconcileDeployment, newObjects
if !d.isOwnerOf(obj) {
continue
}
- obsolete, err := objectIsObsolete(newObjects, obj)
+ obsolete, err := objectIsObsolete(ctx, newObjects, obj)
if err != nil {
return err
}
if !obsolete {
continue
}
- klog.Infof("Deleting %q of type '%s' because it is an obsolete object.", obj.GetName(), obj.GetObjectKind().GroupVersionKind())
+ l.V(3).Info("deleting obsolete object", "name", obj.GetName(), "gkv", obj.GetObjectKind().GroupVersionKind())
o, err := scheme.Scheme.New(obj.GetObjectKind().GroupVersionKind())
if err != nil {
@@ -744,18 +668,19 @@ func (d *PmemCSIDriver) deleteObsoleteObjects(r *ReconcileDeployment, newObjects
return nil
}
-func (d *PmemCSIDriver) getRegistrySecrets(secret *corev1.Secret) {
+func (d *pmemCSIDeployment) getRegistrySecrets(secret *corev1.Secret) {
d.getSecret(secret, "registry-secrets", d.Spec.CACert, d.Spec.RegistryPrivateKey, d.Spec.RegistryCert)
}
-func (d *PmemCSIDriver) getNodeSecrets(secret *corev1.Secret) {
+func (d *pmemCSIDeployment) getNodeSecrets(secret *corev1.Secret) {
d.getSecret(secret, "node-secrets", d.Spec.CACert, d.Spec.NodeControllerPrivateKey, d.Spec.NodeControllerCert)
}
-func (d *PmemCSIDriver) provisionCertificates() error {
+func (d *pmemCSIDeployment) provisionCertificates(ctx context.Context) error {
+ l := logger.Get(ctx).WithName("provisionCertificates")
var prKey *rsa.PrivateKey
- klog.Infof("Provisioning new certificates for deployment '%s'", d.Name)
+ l.V(3).Info("provisioning new certificates")
ca, err := pmemtls.NewCA(nil, nil)
if err != nil {
return fmt.Errorf("failed to initialize CA: %v", err)
@@ -806,7 +731,7 @@ func (d *PmemCSIDriver) provisionCertificates() error {
// a tls client connection to that sever using the provided keys and certificates.
// As we use mutual-tls, testing one server is enough to make sure that the provided
// certificates works
-func (d *PmemCSIDriver) validateCertificates() error {
+func (d *pmemCSIDeployment) validateCertificates() error {
tmp, err := ioutil.TempDir("", "pmem-csi-validate-certs-*")
if err != nil {
return err
@@ -842,7 +767,7 @@ func (d *PmemCSIDriver) validateCertificates() error {
return nil
}
-func (d *PmemCSIDriver) getCSIDriver(csiDriver *storagev1beta1.CSIDriver) {
+func (d *pmemCSIDeployment) getCSIDriver(csiDriver *storagev1beta1.CSIDriver) {
attachRequired := false
podInfoOnMount := true
@@ -860,7 +785,7 @@ func (d *PmemCSIDriver) getCSIDriver(csiDriver *storagev1beta1.CSIDriver) {
}
}
-func (d *PmemCSIDriver) getSecret(secret *corev1.Secret, cn string, ca, encodedKey, encodedCert []byte) {
+func (d *pmemCSIDeployment) getSecret(secret *corev1.Secret, cn string, ca, encodedKey, encodedCert []byte) {
secret.Type = corev1.SecretTypeTLS
secret.Data = map[string][]byte{
// Same names as in the example secrets and in the v1 API.
@@ -870,7 +795,7 @@ func (d *PmemCSIDriver) getSecret(secret *corev1.Secret, cn string, ca, encodedK
}
}
-func (d *PmemCSIDriver) getService(service *corev1.Service, t corev1.ServiceType, port int32) {
+func (d *pmemCSIDeployment) getService(service *corev1.Service, t corev1.ServiceType, port int32) {
service.Spec.Type = t
if service.Spec.Ports == nil {
service.Spec.Ports = append(service.Spec.Ports, corev1.ServicePort{})
@@ -884,15 +809,15 @@ func (d *PmemCSIDriver) getService(service *corev1.Service, t corev1.ServiceType
}
}
-func (d *PmemCSIDriver) getControllerService(service *corev1.Service) {
+func (d *pmemCSIDeployment) getControllerService(service *corev1.Service) {
d.getService(service, corev1.ServiceTypeClusterIP, controllerServicePort)
}
-func (d *PmemCSIDriver) getMetricsService(service *corev1.Service) {
+func (d *pmemCSIDeployment) getMetricsService(service *corev1.Service) {
d.getService(service, corev1.ServiceTypeNodePort, controllerMetricsPort)
}
-func (d *PmemCSIDriver) getControllerProvisionerRole(role *rbacv1.Role) {
+func (d *pmemCSIDeployment) getControllerProvisionerRole(role *rbacv1.Role) {
role.Rules = []rbacv1.PolicyRule{
{
APIGroups: []string{""},
@@ -935,7 +860,7 @@ func (d *PmemCSIDriver) getControllerProvisionerRole(role *rbacv1.Role) {
}
}
-func (d *PmemCSIDriver) getControllerProvisionerRoleBinding(rb *rbacv1.RoleBinding) {
+func (d *pmemCSIDeployment) getControllerProvisionerRoleBinding(rb *rbacv1.RoleBinding) {
rb.Subjects = []rbacv1.Subject{
{
Kind: "ServiceAccount",
@@ -950,7 +875,7 @@ func (d *PmemCSIDriver) getControllerProvisionerRoleBinding(rb *rbacv1.RoleBindi
}
}
-func (d *PmemCSIDriver) getControllerProvisionerClusterRole(cr *rbacv1.ClusterRole) {
+func (d *pmemCSIDeployment) getControllerProvisionerClusterRole(cr *rbacv1.ClusterRole) {
cr.Rules = []rbacv1.PolicyRule{
{
APIGroups: []string{""},
@@ -1011,7 +936,7 @@ func (d *PmemCSIDriver) getControllerProvisionerClusterRole(cr *rbacv1.ClusterRo
}
}
-func (d *PmemCSIDriver) getControllerProvisionerClusterRoleBinding(crb *rbacv1.ClusterRoleBinding) {
+func (d *pmemCSIDeployment) getControllerProvisionerClusterRoleBinding(crb *rbacv1.ClusterRoleBinding) {
crb.Subjects = []rbacv1.Subject{
{
Kind: "ServiceAccount",
@@ -1026,7 +951,7 @@ func (d *PmemCSIDriver) getControllerProvisionerClusterRoleBinding(crb *rbacv1.C
}
}
-func (d *PmemCSIDriver) getControllerStatefulSet(ss *appsv1.StatefulSet) {
+func (d *pmemCSIDeployment) getControllerStatefulSet(ss *appsv1.StatefulSet) {
replicas := int32(1)
true := true
pmemcsiUser := int64(1000)
@@ -1126,7 +1051,7 @@ func (d *PmemCSIDriver) getControllerStatefulSet(ss *appsv1.StatefulSet) {
}
}
-func (d *PmemCSIDriver) getNodeDaemonSet(ds *appsv1.DaemonSet) {
+func (d *pmemCSIDeployment) getNodeDaemonSet(ds *appsv1.DaemonSet) {
directoryOrCreate := corev1.HostPathDirectoryOrCreate
ds.Spec = appsv1.DaemonSetSpec{
Selector: &metav1.LabelSelector{
@@ -1230,10 +1155,11 @@ func (d *PmemCSIDriver) getNodeDaemonSet(ds *appsv1.DaemonSet) {
}
}
-func (d *PmemCSIDriver) getControllerCommand() []string {
+func (d *pmemCSIDeployment) getControllerCommand() []string {
return []string{
"/usr/local/bin/pmem-csi-driver",
fmt.Sprintf("-v=%d", d.Spec.LogLevel),
+ "-logging-format=" + string(d.Spec.LogFormat),
"-mode=controller",
"-endpoint=unix:///csi/csi-controller.sock",
fmt.Sprintf("-registryEndpoint=tcp://0.0.0.0:%d", controllerServicePort),
@@ -1246,11 +1172,12 @@ func (d *PmemCSIDriver) getControllerCommand() []string {
}
}
-func (d *PmemCSIDriver) getNodeDriverCommand() []string {
+func (d *pmemCSIDeployment) getNodeDriverCommand() []string {
return []string{
"/usr/local/bin/pmem-csi-driver",
fmt.Sprintf("-deviceManager=%s", d.Spec.DeviceMode),
fmt.Sprintf("-v=%d", d.Spec.LogLevel),
+ "-logging-format=" + string(d.Spec.LogFormat),
"-mode=node",
"-endpoint=unix:///csi/csi.sock",
"-nodeid=$(KUBE_NODE_NAME)",
@@ -1267,7 +1194,7 @@ func (d *PmemCSIDriver) getNodeDriverCommand() []string {
}
}
-func (d *PmemCSIDriver) getControllerContainer() corev1.Container {
+func (d *pmemCSIDeployment) getControllerContainer() corev1.Container {
true := true
return corev1.Container{
Name: "pmem-driver",
@@ -1320,7 +1247,7 @@ func (d *PmemCSIDriver) getControllerContainer() corev1.Container {
}
}
-func (d *PmemCSIDriver) getNodeDriverContainer() corev1.Container {
+func (d *pmemCSIDeployment) getNodeDriverContainer() corev1.Container {
bidirectional := corev1.MountPropagationBidirectional
true := true
root := int64(0)
@@ -1407,7 +1334,7 @@ func (d *PmemCSIDriver) getNodeDriverContainer() corev1.Container {
return c
}
-func (d *PmemCSIDriver) getProvisionerContainer() corev1.Container {
+func (d *pmemCSIDeployment) getProvisionerContainer() corev1.Container {
true := true
return corev1.Container{
Name: "external-provisioner",
@@ -1436,7 +1363,7 @@ func (d *PmemCSIDriver) getProvisionerContainer() corev1.Container {
}
}
-func (d *PmemCSIDriver) getNodeRegistrarContainer() corev1.Container {
+func (d *pmemCSIDeployment) getNodeRegistrarContainer() corev1.Container {
true := true
return corev1.Container{
Name: "driver-registrar",
@@ -1470,7 +1397,7 @@ func (d *PmemCSIDriver) getNodeRegistrarContainer() corev1.Container {
}
}
-func (d *PmemCSIDriver) getMetricsPorts(port int32) []corev1.ContainerPort {
+func (d *pmemCSIDeployment) getMetricsPorts(port int32) []corev1.ContainerPort {
return []corev1.ContainerPort{
{
Name: "metrics",
@@ -1480,7 +1407,7 @@ func (d *PmemCSIDriver) getMetricsPorts(port int32) []corev1.ContainerPort {
}
}
-func (d *PmemCSIDriver) getObjectMeta(name string, isClusterResource bool) metav1.ObjectMeta {
+func (d *pmemCSIDeployment) getObjectMeta(name string, isClusterResource bool) metav1.ObjectMeta {
meta := metav1.ObjectMeta{
Name: name,
OwnerReferences: []metav1.OwnerReference{
diff --git a/pkg/pmem-csi-operator/controller/deployment/deployment_controller.go b/pkg/pmem-csi-operator/controller/deployment/deployment_controller.go
index d9ab070ed3..56e3f7f486 100644
--- a/pkg/pmem-csi-operator/controller/deployment/deployment_controller.go
+++ b/pkg/pmem-csi-operator/controller/deployment/deployment_controller.go
@@ -16,8 +16,10 @@ import (
api "github.com/intel/pmem-csi/pkg/apis/pmemcsi/v1beta1"
"github.com/intel/pmem-csi/pkg/k8sutil"
+ "github.com/intel/pmem-csi/pkg/logger"
pmemcontroller "github.com/intel/pmem-csi/pkg/pmem-csi-operator/controller"
"github.com/intel/pmem-csi/pkg/version"
+
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -26,7 +28,6 @@ import (
"k8s.io/client-go/kubernetes"
v1 "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/tools/record"
- "k8s.io/klog/v2"
"k8s.io/kubectl/pkg/scheme"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller"
@@ -45,28 +46,28 @@ func init() {
// Add creates a new Deployment Controller and adds it to the Manager. The Manager will set fields on the Controller
// and Start it when the Manager is Started.
-func Add(mgr manager.Manager, opts pmemcontroller.ControllerOptions) error {
- r, err := NewReconcileDeployment(mgr.GetClient(), opts)
+func Add(ctx context.Context, mgr manager.Manager, opts pmemcontroller.ControllerOptions) error {
+ r, err := NewReconcileDeployment(ctx, mgr.GetClient(), opts)
if err != nil {
return err
}
- return add(mgr, r.(*ReconcileDeployment))
+ return add(ctx, mgr, r.(*ReconcileDeployment))
}
// add adds a new Controller to mgr with r as the reconcile.Reconciler
-func add(mgr manager.Manager, r *ReconcileDeployment) error {
+func add(ctx context.Context, mgr manager.Manager, r *ReconcileDeployment) error {
// Create a new controller
c, err := controller.New("deployment-controller", mgr, controller.Options{Reconciler: r})
if err != nil {
- klog.Errorf("Deployment.Add: error: %v", err)
- return err
+ return fmt.Errorf("create controller: %v", err)
}
+ l := logger.Get(ctx)
p := predicate.Funcs{
UpdateFunc: func(e event.UpdateEvent) bool {
r.reconcileMutex.Lock()
defer r.reconcileMutex.Unlock()
- klog.Infof("UPDATED: %T/%s, generation:%d", e.MetaOld, e.MetaOld.GetName(), e.MetaNew.GetGeneration())
+ l.V(3).Info("UPDATED", "object", logger.KObjWithType(e.MetaOld), "generation", e.MetaNew.GetGeneration())
if e.MetaNew.GetDeletionTimestamp() != nil {
// Deployment CR deleted, remove it's reference from cache.
// Objects owned by it are automatically garbage collected.
@@ -78,27 +79,27 @@ func add(mgr manager.Manager, r *ReconcileDeployment) error {
return false
}
- op := NewObjectPatch(e.ObjectOld, e.ObjectNew)
- data, err := op.Diff()
+ op := newObjectPatch(e.ObjectOld, e.ObjectNew)
+ data, err := op.diff()
if err != nil {
- klog.Warningf("Failed to find deployment changes: %v", err)
+ l.Error(err, "find deployment changes")
return true
}
- klog.Infof("Diff: %v", string(data))
+ l.V(3).Info("all changes", "diff", string(data))
// We are intersted in only spec changes, not CR status/metadata changes
re := regexp.MustCompile(`{.*"spec":{(.*)}.*}`)
res := re.FindSubmatch(data)
if len(res) < 2 {
- klog.Infof("No spec changes observed, ignoring the event")
+ l.V(3).Info("no spec changes observed, ignoring the event")
return false
}
- klog.Infof("CR changes: %v", string(res[1]))
+ l.V(3).Info("CR changes", "diff", string(res[1]))
return true
},
DeleteFunc: func(e event.DeleteEvent) bool {
r.reconcileMutex.Lock()
defer r.reconcileMutex.Unlock()
- klog.Infof("DELETED: %T/%s", e.Object, e.Meta.GetName())
+ l.V(3).Info("DELETED", "object", logger.KObjWithType(e.Meta))
// Deployment CR deleted, remove it's reference from cache.
// Objects owned by it are automatically garbage collected.
r.deleteDeployment(e.Meta.GetName())
@@ -110,8 +111,7 @@ func add(mgr manager.Manager, r *ReconcileDeployment) error {
// Watch for changes to primary resource Deployment
if err := c.Watch(&source.Kind{Type: &api.Deployment{}}, &handler.EnqueueRequestForObject{}, p); err != nil {
- klog.Errorf("Deployment.Add: watch error: %v", err)
- return err
+ return fmt.Errorf("watch: %v", err)
}
// Predicate functions for sub-object changes
@@ -122,35 +122,37 @@ func add(mgr manager.Manager, r *ReconcileDeployment) error {
// One exception is: If we fail to handle here, then we pass this
// event to reconcile loop, where it should recognize these requests
// and just requeue. Expecting that the failure is retried.
- eventFunc := func(meta metav1.Object, obj apiruntime.Object) bool {
+ eventFunc := func(what string, meta metav1.Object, obj apiruntime.Object) bool {
+ // TODO:
+ // - check that this output is okay
+ // - check why "go test" does not cover this code
+ l.V(3).Info(what, "object", logger.KObjWithType(meta))
// Get the owned deployment
d, err := r.getDeploymentFor(meta)
if err != nil {
- klog.Infof("%T/%s is not owned by any deployment", obj, meta.GetName())
+ l.V(3).Info("not owned by any deployment", "object", logger.KObjWithType(meta))
// The owner might have deleted already
// we can safely ignore this event
return false
}
r.reconcileMutex.Lock()
defer r.reconcileMutex.Unlock()
- if err := d.HandleEvent(meta, obj, r); err != nil {
- klog.Warningf("Error occurred while handling the event: %v, requeuing the event", err)
+ if err := d.handleEvent(ctx, meta, obj, r); err != nil {
+ l.Error(err, "while handling the event, requeuing the event")
return true
}
return false
}
sop := predicate.Funcs{
DeleteFunc: func(e event.DeleteEvent) bool {
- klog.Infof("DELETED: %T/%s", e.Object, e.Meta.GetName())
- return eventFunc(e.Meta, e.Object)
+ return eventFunc("DELETED", e.Meta, e.Object)
},
UpdateFunc: func(e event.UpdateEvent) bool {
if e.MetaNew.GetDeletionTimestamp() != nil {
// We can handle this in delete handler
return false
}
- klog.Infof("UPDATED: %T/%s", e.ObjectOld, e.MetaOld.GetName())
- return eventFunc(e.MetaOld, e.ObjectOld)
+ return eventFunc("UPDATED", e.MetaOld, e.ObjectOld)
},
CreateFunc: func(e event.CreateEvent) bool {
// Do not handle sub-object create events as the object was create by us.
@@ -168,8 +170,7 @@ func add(mgr manager.Manager, r *ReconcileDeployment) error {
IsController: true,
OwnerType: &api.Deployment{},
}, sop); err != nil {
- klog.Errorf("Deployment.Add: watch error: %v", err)
- return err
+ return fmt.Errorf("create watch: %v", err)
}
}
@@ -184,6 +185,10 @@ type ReconcileHook *func(d *api.Deployment)
// ReconcileDeployment reconciles a Deployment object
type ReconcileDeployment struct {
+ // The context passed into NewReconcileDeployment, i.e. the same for all
+ // operations.
+ ctx context.Context
+
client client.Client
evBroadcaster record.EventBroadcaster
evRecorder record.EventRecorder
@@ -203,7 +208,11 @@ type ReconcileDeployment struct {
}
// NewReconcileDeployment creates new deployment reconciler
-func NewReconcileDeployment(client client.Client, opts pmemcontroller.ControllerOptions) (reconcile.Reconciler, error) {
+func NewReconcileDeployment(ctx context.Context, client client.Client, opts pmemcontroller.ControllerOptions) (reconcile.Reconciler, error) {
+ // "reconcile" will be part of all future log messages.
+ l := logger.Get(ctx).WithName("reconcile")
+ ctx = logger.Set(ctx, l)
+
if opts.Namespace == "" {
opts.Namespace = k8sutil.GetNamespace()
}
@@ -217,19 +226,20 @@ func NewReconcileDeployment(client client.Client, opts pmemcontroller.Controller
if err != nil {
return nil, fmt.Errorf("failed to get in-cluster client: %v", err)
}
- image, err := containerImage(cs, opts.Namespace)
+ image, err := containerImage(ctx, cs, opts.Namespace)
if err != nil {
return nil, fmt.Errorf("failed to find the operator image: %v", err)
}
opts.DriverImage = image
}
- klog.Infof("Using '%s' as default driver image.", opts.DriverImage)
+ l.Info("new instance", "defaultDriverImage", opts.DriverImage)
evBroadcaster := record.NewBroadcaster()
evBroadcaster.StartRecordingToSink(&v1.EventSinkImpl{Interface: opts.EventsClient})
evRecorder := evBroadcaster.NewRecorder(scheme.Scheme, corev1.EventSource{Component: "pmem-csi-operator"})
return &ReconcileDeployment{
+ ctx: ctx,
client: client,
evBroadcaster: evBroadcaster,
evRecorder: evRecorder,
@@ -254,19 +264,21 @@ func (r *ReconcileDeployment) Reconcile(request reconcile.Request) (reconcile.Re
startTime := time.Now()
requeueDelayOnError := 2 * time.Minute
+ l := logger.Get(r.ctx).WithValues("deployment", request.NamespacedName.Name)
+ ctx := logger.Set(r.ctx, l)
// Fetch the Deployment instance
deployment := &api.Deployment{}
- err = r.client.Get(context.TODO(), request.NamespacedName, deployment)
+ err = r.client.Get(ctx, request.NamespacedName, deployment)
if err != nil {
- klog.V(3).Infof("Failed to retrieve object '%s' to reconcile", request.Name)
+ l.Error(err, "failed to retrieve CR to reconcile", "deployment", request.Name)
// One reason for this could be a failed predicate event handler of
// sub-objects. So requeue the request so that the same predicate
// handle could be called on that object.
return reconcile.Result{Requeue: requeue, RequeueAfter: requeueDelayOnError}, err
}
- klog.Infof("Reconciling deployment %q", deployment.GetName())
+ l.V(3).Info("reconcile starting", "deployment", deployment.GetName())
// If the deployment has already been marked for deletion,
// then we don't need to do anything for it because the
@@ -294,23 +306,23 @@ func (r *ReconcileDeployment) Reconcile(request reconcile.Request) (reconcile.Re
// update status
defer func() {
- klog.Infof("Updating deployment status...")
+ l.V(5).Info("updating deployment status")
// Some clients(fake client used in tests) do not support patching status reliably
// and updates even spec changes. So, revert any spec changes(like deployment defaults) we made.
// Revert back spec changes, those are not supposed to get saved on the API server.
deployment.Spec.DeepCopyInto(&dep.Spec)
- if err := r.PatchDeploymentStatus(dep, client.MergeFrom(deployment.DeepCopy())); err != nil {
- klog.Warningf("failed to update status %q for deployment %q: %v",
- dep.Status.Phase, dep.Name, err)
+ if err := r.patchDeploymentStatus(dep, client.MergeFrom(deployment.DeepCopy())); err != nil {
+ l.Error(err, "failed to update status", "phase", dep.Status.Phase, "deployment", dep.Name)
+ // TODO: requeue object?!
}
- klog.Infof("End of reconcile. Duration: %v", time.Since(startTime))
+ l.V(3).Info("reconcile done", "duration", time.Since(startTime))
}()
- d := &PmemCSIDriver{dep, r.namespace, r.k8sVersion}
- if err := d.Reconcile(r); err != nil {
- klog.Infof("Reconcile error: %v", err)
+ d := &pmemCSIDeployment{dep, r.namespace, r.k8sVersion}
+ if err := d.reconcile(ctx, r); err != nil {
+ l.Error(err, "reconcile failed")
dep.Status.Phase = api.DeploymentPhaseFailed
dep.Status.Reason = err.Error()
r.evRecorder.Event(dep, corev1.EventTypeWarning, api.EventReasonFailed, err.Error())
@@ -349,7 +361,7 @@ func (r *ReconcileDeployment) Get(obj runtime.Object) error {
if err != nil {
return fmt.Errorf("internal error %T: %v", obj, err)
}
- return r.client.Get(context.TODO(), key, obj)
+ return r.client.Get(r.ctx, key, obj)
}
// Delete delete existing Kubernetes object
@@ -358,16 +370,16 @@ func (r *ReconcileDeployment) Delete(obj runtime.Object) error {
if err != nil {
return fmt.Errorf("internal error %T: %v", obj, err)
}
- klog.Infof("Deleting '%s/%s' of type '%T'", metaObj.GetNamespace(), metaObj.GetName(), obj)
- return r.client.Delete(context.TODO(), obj)
+ logger.Get(r.ctx).Info("deleting", "object", logger.KObjWithType(metaObj))
+ return r.client.Delete(r.ctx, obj)
}
// PatchDeploymentStatus patches the give given deployment CR status
-func (r *ReconcileDeployment) PatchDeploymentStatus(dep *api.Deployment, patch client.Patch) error {
+func (r *ReconcileDeployment) patchDeploymentStatus(dep *api.Deployment, patch client.Patch) error {
dep.Status.LastUpdated = metav1.Now()
// Passing a copy of CR to patch as the fake client used in tests
// will write back the changes to both status and spec.
- if err := r.client.Status().Patch(context.TODO(), dep.DeepCopy(), patch); err != nil {
+ if err := r.client.Status().Patch(r.ctx, dep.DeepCopy(), patch); err != nil {
return err
}
// update the status of cached deployment
@@ -401,7 +413,7 @@ func (r *ReconcileDeployment) cacheDeploymentStatus(name string, status api.Depl
}
}
-func (r *ReconcileDeployment) getDeploymentFor(obj metav1.Object) (*PmemCSIDriver, error) {
+func (r *ReconcileDeployment) getDeploymentFor(obj metav1.Object) (*pmemCSIDeployment, error) {
r.deploymentsMutex.Lock()
defer r.deploymentsMutex.Unlock()
for _, d := range r.deployments {
@@ -411,7 +423,7 @@ func (r *ReconcileDeployment) getDeploymentFor(obj metav1.Object) (*PmemCSIDrive
if err := deployment.EnsureDefaults(r.containerImage); err != nil {
return nil, err
}
- return &PmemCSIDriver{deployment, r.namespace, r.k8sVersion}, nil
+ return &pmemCSIDeployment{deployment, r.namespace, r.k8sVersion}, nil
}
}
@@ -419,14 +431,14 @@ func (r *ReconcileDeployment) getDeploymentFor(obj metav1.Object) (*PmemCSIDrive
}
// containerImage returns container image name used by operator Pod
-func containerImage(cs *kubernetes.Clientset, namespace string) (string, error) {
+func containerImage(ctx context.Context, cs *kubernetes.Clientset, namespace string) (string, error) {
const podNameEnv = "POD_NAME"
const operatorNameEnv = "OPERATOR_NAME"
containerImage := ""
// Operator deployment shall provide this environment
if podName := os.Getenv(podNameEnv); podName != "" {
- pod, err := cs.CoreV1().Pods(namespace).Get(context.TODO(), podName, metav1.GetOptions{})
+ pod, err := cs.CoreV1().Pods(namespace).Get(ctx, podName, metav1.GetOptions{})
if err != nil {
return "", fmt.Errorf("error getting self pod '%s/%s': %v", namespace, podName, err)
}
diff --git a/pkg/pmem-csi-operator/controller/deployment/deployment_controller_test.go b/pkg/pmem-csi-operator/controller/deployment/deployment_controller_test.go
index 1ab4186c83..d234d29c45 100644
--- a/pkg/pmem-csi-operator/controller/deployment/deployment_controller_test.go
+++ b/pkg/pmem-csi-operator/controller/deployment/deployment_controller_test.go
@@ -17,6 +17,8 @@ import (
"github.com/intel/pmem-csi/deploy"
"github.com/intel/pmem-csi/pkg/apis"
api "github.com/intel/pmem-csi/pkg/apis/pmemcsi/v1beta1"
+ "github.com/intel/pmem-csi/pkg/logger"
+ "github.com/intel/pmem-csi/pkg/logger/testinglogger"
pmemcontroller "github.com/intel/pmem-csi/pkg/pmem-csi-operator/controller"
"github.com/intel/pmem-csi/pkg/pmem-csi-operator/controller/deployment"
"github.com/intel/pmem-csi/pkg/pmem-csi-operator/controller/deployment/testcases"
@@ -45,6 +47,7 @@ type pmemDeployment struct {
name string
deviceMode string
logLevel uint16
+ logFormat string
image, pullPolicy, provisionerImage, registrarImage string
controllerCPU, controllerMemory string
nodeCPU, nodeMemory string
@@ -73,6 +76,7 @@ func getDeployment(d *pmemDeployment) *api.Deployment {
spec := &dep.Spec
spec.DeviceMode = api.DeviceMode(d.deviceMode)
spec.LogLevel = d.logLevel
+ spec.LogFormat = api.LogFormat(d.logFormat)
spec.Image = d.image
spec.PullPolicy = corev1.PullPolicy(d.pullPolicy)
spec.ProvisionerImage = d.provisionerImage
@@ -203,6 +207,8 @@ func TestDeploymentController(t *testing.T) {
testIt := func(t *testing.T, testK8sVersion version.Version) {
type testContext struct {
+ ctx context.Context
+ t *testing.T
c client.Client
cs kubernetes.Interface
rc reconcile.Reconciler
@@ -215,8 +221,8 @@ func TestDeploymentController(t *testing.T) {
testDriverImage = "fake-driver-image"
)
- newReconcileDeployment := func(c client.Client, cs kubernetes.Interface) reconcile.Reconciler {
- rc, err := deployment.NewReconcileDeployment(c, pmemcontroller.ControllerOptions{
+ newReconcileDeployment := func(ctx context.Context, c client.Client, cs kubernetes.Interface) reconcile.Reconciler {
+ rc, err := deployment.NewReconcileDeployment(ctx, c, pmemcontroller.ControllerOptions{
Namespace: testNamespace,
K8sVersion: testK8sVersion,
DriverImage: testDriverImage,
@@ -228,12 +234,15 @@ func TestDeploymentController(t *testing.T) {
}
setup := func(t *testing.T) *testContext {
+ ctx := logger.Set(context.Background(), testinglogger.New(t))
tc := &testContext{
+ ctx: ctx,
+ t: t,
c: fake.NewFakeClient(),
cs: cgfake.NewSimpleClientset(),
resourceVersions: map[string]string{},
}
- tc.rc = newReconcileDeployment(tc.c, tc.cs)
+ tc.rc = newReconcileDeployment(ctx, tc.c, tc.cs)
tc.evWatcher = tc.rc.(*deployment.ReconcileDeployment).EventBroadcaster().StartEventWatcher(func(ev *corev1.Event) {
// Discard consecutive duplicate events, mimicking the EventAggregator behavior
if len(tc.events) != 0 {
@@ -247,14 +256,14 @@ func TestDeploymentController(t *testing.T) {
return tc
}
- teardown := func(t *testing.T, tc *testContext) {
+ teardown := func(tc *testContext) {
if tc != nil && tc.evWatcher != nil {
tc.evWatcher.Stop()
}
}
- validateEvents := func(t *testing.T, tc *testContext, dep *api.Deployment, expectedEvents []string) {
- require.Eventually(t, func() bool {
+ validateEvents := func(tc *testContext, dep *api.Deployment, expectedEvents []string) {
+ require.Eventually(tc.t, func() bool {
return len(tc.events) >= len(expectedEvents)
}, 30*time.Second, time.Second, "receive all expected events")
events := []string{}
@@ -263,25 +272,25 @@ func TestDeploymentController(t *testing.T) {
events = append(events, e.Reason)
}
}
- require.ElementsMatch(t, events, expectedEvents, "events must match")
+ require.ElementsMatch(tc.t, events, expectedEvents, "events must match")
}
- validateConditions := func(t *testing.T, tc *testContext, name string, expected map[api.DeploymentConditionType]corev1.ConditionStatus) {
+ validateConditions := func(tc *testContext, name string, expected map[api.DeploymentConditionType]corev1.ConditionStatus) {
dep := &api.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: name,
},
}
- err := tc.c.Get(context.TODO(), client.ObjectKey{Name: name}, dep)
- require.NoError(t, err, "get deployment: %s", name)
- require.Equal(t, len(expected), len(dep.Status.Conditions), "mismatched conditions(%+v)", dep.Status.Conditions)
+ err := tc.c.Get(tc.ctx, client.ObjectKey{Name: name}, dep)
+ require.NoError(tc.t, err, "get deployment: %s", name)
+ require.Equal(tc.t, len(expected), len(dep.Status.Conditions), "mismatched conditions(%+v)", dep.Status.Conditions)
for _, c := range dep.Status.Conditions {
- require.Equal(t, expected[c.Type], c.Status, "condition status")
+ require.Equal(tc.t, expected[c.Type], c.Status, "condition status")
}
}
- validateDriver := func(t *testing.T, tc *testContext, dep *api.Deployment, expectedEvents []string, wasUpdated bool) {
+ validateDriver := func(tc *testContext, dep *api.Deployment, expectedEvents []string, wasUpdated bool) {
// We may have to fill in some defaults, so make a copy first.
dep = dep.DeepCopyObject().(*api.Deployment)
if dep.Spec.Image == "" {
@@ -294,27 +303,27 @@ func TestDeploymentController(t *testing.T) {
rv = nil
}
_, err := validate.DriverDeployment(tc.c, testK8sVersion, testNamespace, *dep, rv)
- require.NoError(t, err, "validate deployment")
- validateEvents(t, tc, dep, expectedEvents)
+ require.NoError(tc.t, err, "validate deployment")
+ validateEvents(tc, dep, expectedEvents)
}
t.Parallel()
t.Run("deployment with defaults", func(t *testing.T) {
tc := setup(t)
- defer teardown(t, tc)
+ defer teardown(tc)
d := &pmemDeployment{
name: "test-deployment",
}
dep := getDeployment(d)
- err := tc.c.Create(context.TODO(), dep)
+ err := tc.c.Create(tc.ctx, dep)
require.NoError(t, err, "failed to create deployment")
testReconcilePhase(t, tc.rc, tc.c, d.name, false, false, api.DeploymentPhaseRunning)
- validateDriver(t, tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
- validateConditions(t, tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
+ validateDriver(tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
+ validateConditions(tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
api.CertsReady: corev1.ConditionTrue,
api.DriverDeployed: corev1.ConditionTrue,
})
@@ -322,7 +331,7 @@ func TestDeploymentController(t *testing.T) {
t.Run("deployment with explicit values", func(t *testing.T) {
tc := setup(t)
- defer teardown(t, tc)
+ defer teardown(tc)
d := &pmemDeployment{
name: "test-deployment",
image: "test-driver:v0.0.0",
@@ -330,6 +339,7 @@ func TestDeploymentController(t *testing.T) {
registrarImage: "test-driver-registrar-image:v.0.0.0",
pullPolicy: "Never",
logLevel: 10,
+ logFormat: "json",
controllerCPU: "1500m",
controllerMemory: "300Mi",
nodeCPU: "1000m",
@@ -338,13 +348,13 @@ func TestDeploymentController(t *testing.T) {
}
dep := getDeployment(d)
- err := tc.c.Create(context.TODO(), dep)
+ err := tc.c.Create(tc.ctx, dep)
require.NoError(t, err, "failed to create deployment")
// Reconcile now should change Phase to running
testReconcilePhase(t, tc.rc, tc.c, d.name, false, false, api.DeploymentPhaseRunning)
- validateDriver(t, tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
- validateConditions(t, tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
+ validateDriver(tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
+ validateConditions(tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
api.CertsReady: corev1.ConditionTrue,
api.DriverDeployed: corev1.ConditionTrue,
})
@@ -352,7 +362,7 @@ func TestDeploymentController(t *testing.T) {
t.Run("multiple deployments", func(t *testing.T) {
tc := setup(t)
- defer teardown(t, tc)
+ defer teardown(tc)
d1 := &pmemDeployment{
name: "test-deployment1",
}
@@ -362,11 +372,11 @@ func TestDeploymentController(t *testing.T) {
}
dep1 := getDeployment(d1)
- err := tc.c.Create(context.TODO(), dep1)
+ err := tc.c.Create(tc.ctx, dep1)
require.NoError(t, err, "failed to create deployment1")
dep2 := getDeployment(d2)
- err = tc.c.Create(context.TODO(), dep2)
+ err = tc.c.Create(tc.ctx, dep2)
require.NoError(t, err, "failed to create deployment2")
conditions := map[api.DeploymentConditionType]corev1.ConditionStatus{
@@ -375,16 +385,16 @@ func TestDeploymentController(t *testing.T) {
}
testReconcilePhase(t, tc.rc, tc.c, d1.name, false, false, api.DeploymentPhaseRunning)
- validateDriver(t, tc, dep1, []string{api.EventReasonNew, api.EventReasonRunning}, false)
- validateConditions(t, tc, d1.name, conditions)
+ validateDriver(tc, dep1, []string{api.EventReasonNew, api.EventReasonRunning}, false)
+ validateConditions(tc, d1.name, conditions)
testReconcilePhase(t, tc.rc, tc.c, d2.name, false, false, api.DeploymentPhaseRunning)
- validateDriver(t, tc, dep2, []string{api.EventReasonNew, api.EventReasonRunning}, false)
- validateConditions(t, tc, d2.name, conditions)
+ validateDriver(tc, dep2, []string{api.EventReasonNew, api.EventReasonRunning}, false)
+ validateConditions(tc, d2.name, conditions)
})
t.Run("invalid device mode", func(t *testing.T) {
tc := setup(t)
- defer teardown(t, tc)
+ defer teardown(tc)
d := &pmemDeployment{
name: "test-driver-modes",
deviceMode: "foobar",
@@ -392,12 +402,12 @@ func TestDeploymentController(t *testing.T) {
dep := getDeployment(d)
- err := tc.c.Create(context.TODO(), dep)
+ err := tc.c.Create(tc.ctx, dep)
require.NoError(t, err, "failed to create deployment")
// Deployment should failed with an error
testReconcilePhase(t, tc.rc, tc.c, d.name, true, true, api.DeploymentPhaseFailed)
- validateEvents(t, tc, dep, []string{api.EventReasonNew, api.EventReasonFailed})
- validateConditions(t, tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{})
+ validateEvents(tc, dep, []string{api.EventReasonNew, api.EventReasonFailed})
+ validateConditions(tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{})
})
t.Run("LVM mode", func(t *testing.T) {
@@ -409,11 +419,11 @@ func TestDeploymentController(t *testing.T) {
dep := getDeployment(d)
- err := tc.c.Create(context.TODO(), dep)
+ err := tc.c.Create(tc.ctx, dep)
require.NoError(t, err, "failed to create deployment")
testReconcilePhase(t, tc.rc, tc.c, d.name, false, false, api.DeploymentPhaseRunning)
- validateDriver(t, tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
- validateConditions(t, tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
+ validateDriver(tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
+ validateConditions(tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
api.CertsReady: corev1.ConditionTrue,
api.DriverDeployed: corev1.ConditionTrue,
})
@@ -428,11 +438,11 @@ func TestDeploymentController(t *testing.T) {
dep := getDeployment(d)
- err := tc.c.Create(context.TODO(), dep)
+ err := tc.c.Create(tc.ctx, dep)
require.NoError(t, err, "failed to create deployment")
testReconcilePhase(t, tc.rc, tc.c, d.name, false, false, api.DeploymentPhaseRunning)
- validateDriver(t, tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
- validateConditions(t, tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
+ validateDriver(tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
+ validateConditions(tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
api.CertsReady: corev1.ConditionTrue,
api.DriverDeployed: corev1.ConditionTrue,
})
@@ -440,7 +450,7 @@ func TestDeploymentController(t *testing.T) {
t.Run("provided private keys", func(t *testing.T) {
tc := setup(t)
- defer teardown(t, tc)
+ defer teardown(tc)
// Generate private key
regKey, err := pmemtls.NewPrivateKey()
require.NoError(t, err, "Failed to generate a private key: %v", err)
@@ -452,13 +462,13 @@ func TestDeploymentController(t *testing.T) {
regKey: encodedKey,
}
dep := getDeployment(d)
- err = tc.c.Create(context.TODO(), dep)
+ err = tc.c.Create(tc.ctx, dep)
require.NoError(t, err, "failed to create deployment")
// First deployment expected to be successful
testReconcilePhase(t, tc.rc, tc.c, d.name, false, false, api.DeploymentPhaseRunning)
- validateDriver(t, tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
- validateConditions(t, tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
+ validateDriver(tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
+ validateConditions(tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
api.CertsReady: corev1.ConditionTrue,
api.DriverDeployed: corev1.ConditionTrue,
})
@@ -466,7 +476,7 @@ func TestDeploymentController(t *testing.T) {
t.Run("provided private keys and certificates", func(t *testing.T) {
tc := setup(t)
- defer teardown(t, tc)
+ defer teardown(tc)
ca, err := pmemtls.NewCA(nil, nil)
require.NoError(t, err, "failed to instantiate CA")
@@ -489,13 +499,13 @@ func TestDeploymentController(t *testing.T) {
ncCert: pmemtls.EncodeCert(ncCert),
}
dep := getDeployment(d)
- err = tc.c.Create(context.TODO(), dep)
+ err = tc.c.Create(tc.ctx, dep)
require.NoError(t, err, "failed to create deployment")
// First deployment expected to be successful
testReconcilePhase(t, tc.rc, tc.c, d.name, false, false, api.DeploymentPhaseRunning)
- validateDriver(t, tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
- validateConditions(t, tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
+ validateDriver(tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
+ validateConditions(tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
api.CertsReady: corev1.ConditionTrue,
api.CertsVerified: corev1.ConditionTrue,
api.DriverDeployed: corev1.ConditionTrue,
@@ -504,7 +514,7 @@ func TestDeploymentController(t *testing.T) {
t.Run("invalid private keys and certificates", func(t *testing.T) {
tc := setup(t)
- defer teardown(t, tc)
+ defer teardown(tc)
ca, err := pmemtls.NewCA(nil, nil)
require.NoError(t, err, "faield to instantiate CA")
@@ -527,12 +537,12 @@ func TestDeploymentController(t *testing.T) {
ncCert: pmemtls.EncodeCert(ncCert),
}
dep := getDeployment(d)
- err = tc.c.Create(context.TODO(), dep)
+ err = tc.c.Create(tc.ctx, dep)
require.NoError(t, err, "failed to create deployment")
testReconcilePhase(t, tc.rc, tc.c, d.name, true, true, api.DeploymentPhaseFailed)
- validateEvents(t, tc, dep, []string{api.EventReasonNew, api.EventReasonFailed})
- validateConditions(t, tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
+ validateEvents(tc, dep, []string{api.EventReasonNew, api.EventReasonFailed})
+ validateConditions(tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
api.CertsVerified: corev1.ConditionFalse,
api.DriverDeployed: corev1.ConditionFalse,
})
@@ -540,7 +550,7 @@ func TestDeploymentController(t *testing.T) {
t.Run("expired certificates", func(t *testing.T) {
tc := setup(t)
- defer teardown(t, tc)
+ defer teardown(tc)
oneDayAgo := time.Now().Add(-24 * time.Hour)
oneMinuteAgo := time.Now().Add(-1 * time.Minute)
@@ -566,12 +576,12 @@ func TestDeploymentController(t *testing.T) {
ncCert: pmemtls.EncodeCert(ncCert),
}
dep := getDeployment(d)
- err = tc.c.Create(context.TODO(), dep)
+ err = tc.c.Create(tc.ctx, dep)
require.NoError(t, err, "failed to create deployment")
testReconcilePhase(t, tc.rc, tc.c, d.name, true, true, api.DeploymentPhaseFailed)
- validateEvents(t, tc, dep, []string{api.EventReasonNew, api.EventReasonFailed})
- validateConditions(t, tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
+ validateEvents(tc, dep, []string{api.EventReasonNew, api.EventReasonFailed})
+ validateConditions(tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
api.CertsVerified: corev1.ConditionFalse,
api.DriverDeployed: corev1.ConditionFalse,
})
@@ -579,7 +589,7 @@ func TestDeploymentController(t *testing.T) {
t.Run("modified deployment under reconcile", func(t *testing.T) {
tc := setup(t)
- defer teardown(t, tc)
+ defer teardown(tc)
d := &pmemDeployment{
name: "modified-deployment",
@@ -588,13 +598,13 @@ func TestDeploymentController(t *testing.T) {
var updatedDep *api.Deployment
dep := getDeployment(d)
- err := tc.c.Create(context.TODO(), dep)
+ err := tc.c.Create(tc.ctx, dep)
require.NoError(t, err, "failed to create deployment")
hook := func(d *api.Deployment) {
updatedDep = d.DeepCopy()
updatedDep.Spec.LogLevel++
- err := tc.c.Update(context.TODO(), updatedDep)
+ err := tc.c.Update(tc.ctx, updatedDep)
require.NoError(t, err, "failed to update deployment")
}
tc.rc.(*deployment.ReconcileDeployment).AddHook(&hook)
@@ -605,15 +615,15 @@ func TestDeploymentController(t *testing.T) {
}
testReconcilePhase(t, tc.rc, tc.c, d.name, false, false, api.DeploymentPhaseRunning)
- validateDriver(t, tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
- validateConditions(t, tc, d.name, conditions)
+ validateDriver(tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
+ validateConditions(tc, d.name, conditions)
tc.rc.(*deployment.ReconcileDeployment).RemoveHook(&hook)
// Next reconcile phase should catch the deployment changes
testReconcilePhase(t, tc.rc, tc.c, d.name, false, false, api.DeploymentPhaseRunning)
- validateDriver(t, tc, updatedDep, []string{api.EventReasonNew, api.EventReasonRunning}, true)
- validateConditions(t, tc, d.name, conditions)
+ validateDriver(tc, updatedDep, []string{api.EventReasonNew, api.EventReasonRunning}, true)
+ validateConditions(tc, d.name, conditions)
})
t.Run("updating", func(t *testing.T) {
@@ -623,7 +633,7 @@ func TestDeploymentController(t *testing.T) {
t.Run(testcase.Name, func(t *testing.T) {
testIt := func(restart bool) {
tc := setup(t)
- defer teardown(t, tc)
+ defer teardown(tc)
dep := testcase.Deployment.DeepCopyObject().(*api.Deployment)
// Assumption is that all the testcases are positive cases.
@@ -638,39 +648,41 @@ func TestDeploymentController(t *testing.T) {
// When working with the fake client, we need to make up a UID.
dep.UID = types.UID("fake-uid-" + dep.Name)
- err := tc.c.Create(context.TODO(), dep)
+ err := tc.c.Create(tc.ctx, dep)
require.NoError(t, err, "create deployment")
testReconcilePhase(t, tc.rc, tc.c, dep.Name, false, false, api.DeploymentPhaseRunning)
- validateDriver(t, tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
+ validateDriver(tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
// Reconcile now should keep phase as running.
testReconcilePhase(t, tc.rc, tc.c, dep.Name, false, false, api.DeploymentPhaseRunning)
- validateDriver(t, tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
- validateEvents(t, tc, dep, []string{api.EventReasonNew, api.EventReasonRunning})
- validateConditions(t, tc, dep.Name, conditions)
+ validateDriver(tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
+ validateEvents(tc, dep, []string{api.EventReasonNew, api.EventReasonRunning})
+ validateConditions(tc, dep.Name, conditions)
// Retrieve existing object before updating it.
- err = tc.c.Get(context.TODO(), types.NamespacedName{Name: dep.Name}, dep)
+ err = tc.c.Get(tc.ctx, types.NamespacedName{Name: dep.Name}, dep)
require.NoError(t, err, "retrive existing deployment object")
if restart {
// Simulate restarting the operator by creating a new instance.
- tc.rc = newReconcileDeployment(tc.c, tc.cs)
+ tc.rc = newReconcileDeployment(tc.ctx, tc.c, tc.cs)
}
// Update.
testcase.Mutate(dep)
- err = tc.c.Update(context.TODO(), dep)
+ err = tc.c.Update(tc.ctx, dep)
require.NoError(t, err, "update deployment")
// Reconcile is expected to not fail.
testReconcilePhase(t, tc.rc, tc.c, dep.Name, false, false, api.DeploymentPhaseRunning)
// Recheck the container resources are updated
- validateDriver(t, tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, true)
+ validateDriver(tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, true)
}
+ t.Parallel()
+
t.Run("while running", func(t *testing.T) {
testIt(false)
})
@@ -684,23 +696,23 @@ func TestDeploymentController(t *testing.T) {
t.Run("delete obsolete objects", func(t *testing.T) {
tc := setup(t)
- defer teardown(t, tc)
+ defer teardown(tc)
d := &pmemDeployment{
name: "test-driver-upgrades",
}
dep := getDeployment(d)
- err := tc.c.Create(context.TODO(), dep)
+ err := tc.c.Create(tc.ctx, dep)
require.NoError(t, err, "failed to create deployment")
testReconcilePhase(t, tc.rc, tc.c, d.name, false, false, api.DeploymentPhaseRunning)
- validateDriver(t, tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
- validateConditions(t, tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
+ validateDriver(tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, false)
+ validateConditions(tc, d.name, map[api.DeploymentConditionType]corev1.ConditionStatus{
api.CertsReady: corev1.ConditionTrue,
api.DriverDeployed: corev1.ConditionTrue,
})
- err = tc.c.Get(context.TODO(), client.ObjectKey{Name: d.name}, dep)
+ err = tc.c.Get(tc.ctx, client.ObjectKey{Name: d.name}, dep)
require.NoError(t, err, "get deployment")
cm1 := &corev1.ConfigMap{
@@ -717,7 +729,7 @@ func TestDeploymentController(t *testing.T) {
},
Data: map[string]string{},
}
- err = tc.c.Create(context.TODO(), cm1)
+ err = tc.c.Create(tc.ctx, cm1)
require.NoError(t, err, "create configmap owned by deployment")
cm2 := &corev1.ConfigMap{
@@ -731,27 +743,27 @@ func TestDeploymentController(t *testing.T) {
},
Data: map[string]string{},
}
- err = tc.c.Create(context.TODO(), cm2)
+ err = tc.c.Create(tc.ctx, cm2)
require.NoError(t, err, "create configmap: %s", cm2.Name)
// Use a fresh reconciler to mimic operator restart
- tc.rc = newReconcileDeployment(tc.c, tc.cs)
+ tc.rc = newReconcileDeployment(tc.ctx, tc.c, tc.cs)
// A fresh reconcile should delete the newly created above ConfigMap
testReconcilePhase(t, tc.rc, tc.c, d.name, false, false, api.DeploymentPhaseRunning)
- err = tc.c.Get(context.TODO(), client.ObjectKey{Name: d.name}, dep)
+ err = tc.c.Get(tc.ctx, client.ObjectKey{Name: d.name}, dep)
require.NoError(t, err, "get deployment")
// It is debatable whether the operator should update all objects after
// a restart. Currently it does.
- validateDriver(t, tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, true)
+ validateDriver(tc, dep, []string{api.EventReasonNew, api.EventReasonRunning}, true)
cm := &corev1.ConfigMap{}
- err = tc.c.Get(context.TODO(), client.ObjectKey{Name: cm1.Name, Namespace: testNamespace}, cm)
+ err = tc.c.Get(tc.ctx, client.ObjectKey{Name: cm1.Name, Namespace: testNamespace}, cm)
require.Errorf(t, err, "get '%s' config map after reconcile", cm1.Name)
require.True(t, errors.IsNotFound(err), "config map not found after reconcile")
// operator should not delete the objects unrelated to any deployment
- err = tc.c.Get(context.TODO(), client.ObjectKey{Name: cm2.Name, Namespace: testNamespace}, cm)
+ err = tc.c.Get(tc.ctx, client.ObjectKey{Name: cm2.Name, Namespace: testNamespace}, cm)
require.NoErrorf(t, err, "get '%s' config map after reconcile", cm2.Name)
})
}
diff --git a/pkg/pmem-csi-operator/controller/deployment/testcases/testcases.go b/pkg/pmem-csi-operator/controller/deployment/testcases/testcases.go
index 977d7b454b..47f49e7081 100644
--- a/pkg/pmem-csi-operator/controller/deployment/testcases/testcases.go
+++ b/pkg/pmem-csi-operator/controller/deployment/testcases/testcases.go
@@ -79,6 +79,13 @@ func UpdateTests() []UpdateTest {
"logLevel": func(d *api.Deployment) {
d.Spec.LogLevel++
},
+ "logFormat": func(d *api.Deployment) {
+ if d.Spec.LogFormat == api.LogFormatText {
+ d.Spec.LogFormat = api.LogFormatJSON
+ } else {
+ d.Spec.LogFormat = api.LogFormatText
+ }
+ },
"nodeSelector": func(d *api.Deployment) {
d.Spec.NodeSelector = map[string]string{
"still-no-such-label": "still-no-such-value",
diff --git a/pkg/pmem-csi-operator/main.go b/pkg/pmem-csi-operator/main.go
index 01841f0164..a559017af2 100644
--- a/pkg/pmem-csi-operator/main.go
+++ b/pkg/pmem-csi-operator/main.go
@@ -12,18 +12,18 @@ import (
"fmt"
"runtime"
- "k8s.io/client-go/kubernetes"
- "k8s.io/klog/v2"
-
"github.com/intel/pmem-csi/pkg/apis"
api "github.com/intel/pmem-csi/pkg/apis/pmemcsi/v1beta1"
"github.com/intel/pmem-csi/pkg/k8sutil"
+ "github.com/intel/pmem-csi/pkg/logger"
pmemcommon "github.com/intel/pmem-csi/pkg/pmem-common"
"github.com/intel/pmem-csi/pkg/pmem-csi-operator/controller"
"github.com/operator-framework/operator-lib/leader"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
apiruntime "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/client-go/kubernetes"
+ "k8s.io/klog/v2"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client/config"
"sigs.k8s.io/controller-runtime/pkg/manager"
@@ -39,8 +39,11 @@ func printVersion() {
klog.Info(fmt.Sprintf("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH))
}
-var driverImage string
-var startWebhook bool
+var (
+ driverImage = flag.String("image", "", "docker container image used for deploying the operator.")
+ startWebhook = flag.Bool("webhook", false, "run conversion webhook server")
+ logFormat = logger.NewFlag()
+)
const (
// Default values used by OLM CA for webhook
@@ -51,15 +54,14 @@ const (
)
func init() {
- klog.InitFlags(nil)
- flag.StringVar(&driverImage, "image", "", "docker container image used for deploying the operator.")
- flag.BoolVar(&startWebhook, "webhook", false, "run conversion webhook server")
+ // klog gets initialized by k8s.io/component-base/logs.
flag.Set("logtostderr", "true")
}
func Main() int {
flag.Parse()
+ logFormat.Apply()
printVersion()
@@ -70,7 +72,7 @@ func Main() int {
return 1
}
- ctx := context.TODO()
+ ctx := context.Background()
// Become the leader before proceeding
err = leader.Become(ctx, "pmem-csi-operator-lock")
if err != nil {
@@ -111,11 +113,11 @@ func Main() int {
return 1
}
// Setup all Controllers
- if err := controller.AddToManager(mgr, controller.ControllerOptions{
+ if err := controller.AddToManager(ctx, mgr, controller.ControllerOptions{
Config: mgr.GetConfig(),
Namespace: namespace,
K8sVersion: *ver,
- DriverImage: driverImage,
+ DriverImage: *driverImage,
EventsClient: cs.CoreV1().Events(""),
}); err != nil {
pmemcommon.ExitError("Failed to add controller to manager: ", err)
@@ -124,7 +126,7 @@ func Main() int {
// Setup conversion webhooks
- if startWebhook {
+ if *startWebhook {
if err := setupWebhookWithManager(mgr, &api.Deployment{
ObjectMeta: metav1.ObjectMeta{Name: "pmem-csi-operator"},
}); err != nil {
@@ -142,7 +144,7 @@ func Main() int {
}
list := &api.DeploymentList{}
- if err := mgr.GetClient().List(context.TODO(), list); err != nil {
+ if err := mgr.GetClient().List(ctx, list); err != nil {
pmemcommon.ExitError("failed to get deployment list: %v", err)
return 1
}
diff --git a/test/e2e/deploy/deploy.go b/test/e2e/deploy/deploy.go
index af10a58ca6..d378278c20 100644
--- a/test/e2e/deploy/deploy.go
+++ b/test/e2e/deploy/deploy.go
@@ -811,7 +811,9 @@ func EnsureDeploymentNow(f *framework.Framework, deployment *Deployment) {
}
return
}
- framework.Logf("have %s PMEM-CSI deployment, want %s -> delete existing deployment", running.Name(), deployment.Name())
+ framework.Logf("have %s PMEM-CSI deployment in namespace %s, want %s in namespace %s-> delete existing deployment",
+ running.Name(), running.Namespace,
+ deployment.Name(), deployment.Namespace)
if running.HasOLM {
cmd := exec.Command("test/stop-operator.sh", "-olm")
diff --git a/test/e2e/operator/deployment_api.go b/test/e2e/operator/deployment_api.go
index fb4df94542..af0810f126 100644
--- a/test/e2e/operator/deployment_api.go
+++ b/test/e2e/operator/deployment_api.go
@@ -39,6 +39,7 @@ import (
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/kubernetes/test/e2e/framework"
+ e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
e2epv "k8s.io/kubernetes/test/e2e/framework/pv"
runtime "sigs.k8s.io/controller-runtime/pkg/client"
@@ -294,6 +295,38 @@ var _ = deploy.DescribeForSome("API", func(d *deploy.Deployment) bool {
validateDriver(deployment)
})
+ Context("logging format", func() {
+ cases := map[string]api.LogFormat{
+ "default": "",
+ "text": api.LogFormatText,
+ "JSON": api.LogFormatJSON,
+ }
+ for name, format := range cases {
+ format := format
+ It(name, func() {
+ deployment := getDeployment("test-deployment-driver-image")
+ deployment.Spec.Image = ""
+ deployment.Spec.PMEMPercentage = 50
+ deployment.Spec.LogFormat = format
+
+ deployment = deploy.CreateDeploymentCR(f, deployment)
+ defer deploy.DeleteDeploymentCR(f, deployment.Name)
+
+ validateDriver(deployment)
+
+ output, err := e2epod.GetPodLogs(f.ClientSet, d.Namespace, deployment.Name+"-controller-0", "pmem-driver")
+ framework.ExpectNoError(err, "get pod logs for controller-0")
+
+ if format == api.LogFormatJSON {
+ Expect(output).To(MatchRegexp(`\{"ts":\d+.\d+,"msg":"Version:`), "PMEM-CSI driver output in JSON")
+ } else {
+ Expect(output).To(MatchRegexp(`I.*main.go:.*Version: `), "PMEM-CSI driver output in glog format")
+ }
+ framework.Logf("got pod log: %s", output)
+ })
+ }
+ })
+
It("shall be able to edit running deployment", func() {
deployment := getDeployment("test-deployment-update")
@@ -908,6 +941,36 @@ var _ = deploy.DescribeForSome("API", func(d *deploy.Deployment) bool {
})
}
})
+
+ Context("LogFormat", func() {
+ if gvr == deploy.AlphaDeploymentResource {
+ // Field not part of API.
+ return
+ }
+
+ cases := map[string]bool{
+ string(api.LogFormatText): true,
+ string(api.LogFormatJSON): true,
+ "noSuchMode": false,
+ }
+ for format, valid := range cases {
+ format, valid := format, valid
+ It(format, func() {
+ dep := getDeployment("format")
+ dep.Spec.LogFormat = api.LogFormat(format)
+ unstructured := toUnstructured(&dep)
+ _, err := f.DynamicClient.Resource(gvr).Create(context.Background(), unstructured, metav1.CreateOptions{})
+ if err == nil {
+ defer deploy.DeleteDeploymentCR(f, dep.Name)
+ }
+ if valid {
+ framework.ExpectNoError(err, "valid log format should work")
+ } else {
+ framework.ExpectError(err, "invalid log format should be rejected")
+ }
+ })
+ }
+ })
})
}
})
diff --git a/test/setup-ca-kubernetes.sh b/test/setup-ca-kubernetes.sh
index 5951c5aeed..ae27cf9a09 100755
--- a/test/setup-ca-kubernetes.sh
+++ b/test/setup-ca-kubernetes.sh
@@ -10,9 +10,7 @@
# The directory containing setup-ca*.sh.
: ${TEST_DIRECTORY:=$(dirname $(readlink -f $0))}
-
-: ${TEST_DRIVER_NAMESPACE:=pmem-csi}
-
+. ${TEST_CONFIG:-${TEST_DIRECTORY}/test-config.sh}
tmpdir=`mktemp -d`
trap 'rm -r $tmpdir' EXIT
@@ -39,6 +37,8 @@ NODE_CERT=$(read_key "$tmpdir/pmem-node-controller.pem")
# -keyFile (same for all nodes)
NODE_KEY=$(read_key "$tmpdir/pmem-node-controller-key.pem")
+kubectl get ns ${TEST_DRIVER_NAMESPACE} 2>/dev/null >/dev/null || kubectl create ns ${TEST_DRIVER_NAMESPACE}
+
${KUBECTL} apply -f - </dev/null >/dev/null || ${KUBECTL} create ns ${TEST_DRIVER_NAMESPACE}
+
${KUBECTL} apply -f - <