forked from LaconicNetwork/kompose
Add support for bindata in cm (#1418)
Signed-off-by: Hang Yan <hang.yan@hotmail.com>
This commit is contained in:
@@ -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{
|
||||
|
||||
Reference in New Issue
Block a user