Add support for bindata in cm (#1418)

Signed-off-by: Hang Yan <hang.yan@hotmail.com>
This commit is contained in:
Hang Yan
2021-08-29 08:33:16 +08:00
committed by GitHub
parent e82fe96c38
commit 0671410009
9 changed files with 462 additions and 210 deletions
+27 -5
View File
@@ -17,6 +17,7 @@ limitations under the License.
package kubernetes
import (
"encoding/base64"
"fmt"
"io/ioutil"
"os"
@@ -28,6 +29,8 @@ import (
"strconv"
"strings"
"golang.org/x/tools/godoc/util"
"github.com/fatih/structs"
"github.com/kubernetes/kompose/pkg/kobject"
"github.com/kubernetes/kompose/pkg/loader/compose"
@@ -280,7 +283,7 @@ func (k *Kubernetes) IntiConfigMapFromFileOrDir(name, cmName, filePath string, s
dataMap[file.Name()] = data
}
}
configMap.Data = dataMap
initConfigMapData(configMap, dataMap)
case mode.IsRegular():
// do file stuff
@@ -306,6 +309,23 @@ func useSubPathMount(cm *api.ConfigMap) bool {
return true
}
func initConfigMapData(configMap *api.ConfigMap, data map[string]string) {
stringData := map[string]string{}
binData := map[string][]byte{}
for k, v := range data {
isText := util.IsText([]byte(v))
if isText {
stringData[k] = v
} else {
binData[k] = []byte(base64.StdEncoding.EncodeToString([]byte(v)))
}
}
configMap.Data = stringData
configMap.BinaryData = binData
}
//InitConfigMapFromFile initializes a ConfigMap object
func (k *Kubernetes) InitConfigMapFromFile(name string, service kobject.ServiceConfig, fileName string) *api.ConfigMap {
content, err := GetContentFromFile(fileName)
@@ -313,9 +333,6 @@ func (k *Kubernetes) InitConfigMapFromFile(name string, service kobject.ServiceC
log.Fatalf("Unable to retrieve file: %s", err)
}
dataMap := make(map[string]string)
dataMap[filepath.Base(fileName)] = content
configMapName := ""
for key, tmpConfig := range service.ConfigsMetaData {
if tmpConfig.File == fileName {
@@ -331,8 +348,10 @@ func (k *Kubernetes) InitConfigMapFromFile(name string, service kobject.ServiceC
Name: FormatFileName(configMapName),
Labels: transformer.ConfigLabels(name),
},
Data: dataMap,
}
data := map[string]string{filepath.Base(fileName): content}
initConfigMapData(configMap, data)
return configMap
}
@@ -925,6 +944,9 @@ func (k *Kubernetes) ConfigConfigMapVolumeSource(cmName string, targetPath strin
for k := range cm.Data {
keys = append(keys, k)
}
for k := range cm.BinaryData {
keys = append(keys, k)
}
key := keys[0]
_, p := path.Split(targetPath)
s.Items = []api.KeyToPath{