db import Datas added

This commit is contained in:
mr
2026-01-21 12:03:02 +01:00
parent 4ff6e706ca
commit 7a8a4f678a
12 changed files with 83 additions and 58 deletions

View File

@@ -6,6 +6,8 @@ import (
"oc-k8s/utils"
"os"
"strings"
"bytes"
"os/exec"
)
func Help_DB() {
@@ -23,7 +25,7 @@ Usage:
namespace - Namespace values name (default: dev)
db_name - db name (default: opencloud)
folder - Helm config folder (required, default: .)
oc-k8s upgrade db -d [db_name] -r [release] -n [namespace] -f [folder]
oc-k8s upgrade db -d [db_name] -r [release] -n [namespace] -f [folder]
folder - Datas folder files path (required)
release - Release values name (default: dev)
namespace - Namespace values name (default: dev)
@@ -36,9 +38,12 @@ Usage:
oc-k8s help db `)
}
func Delete_DB(release string, namespace string, dbName string) error {
podName := "$(kubectl get pods -n " + namespace + " -o=name | grep " + release + "-mongodb-* | sed 's|pod/||')"
return utils.Exec("kubectl exec " + podName + ": -- mongosh --eval \"db.getSiblingDB('" + dbName + "').dropDatabase()\"")
func Delete_DB(release string, namespace string, dbName string, adminUsr string, adminPsw string) error {
podName, err := getMongoPod(namespace)
if err != nil {
return err
}
return utils.Exec("kubectl exec " + podName + " -- mongosh --eval \"db.getSiblingDB('" + dbName + "').dropDatabase()\" -u " + adminUsr + " -p " + adminPsw +" --authenticationDatabase admin")
}
func getFileNames(folderPath string) []string {
@@ -56,25 +61,40 @@ func getFileNames(folderPath string) []string {
return fileNames
}
func Create_DB(filePath *string, release string, namespace string, dbName string) error {
func Create_DB(filePath *string, release string, namespace string, dbName string, adminUsr string, adminPsw string) error {
if filePath == nil {
return errors.New("missing db datas file path")
}
podName := "$(kubectl get pods -n " + namespace + " -o jsonpath='{.items[0].metadata.name}')"
podName, err := getMongoPod(namespace)
if err != nil {
return err
}
for _, fileName := range getFileNames(*filePath) {
fmt.Println("ADD file " + fileName + " in collection")
fmt.Println("POD=" + podName + " && kubectl cp -n " + namespace + " " + *filePath + "/" + fileName + " \"$POD:/tmp/" + fileName + "\"")
if err := utils.Exec("POD=" + podName + " && kubectl cp -n " + namespace + " " + *filePath + "/" + fileName + " \"$POD:/tmp/" + fileName + "\""); err != nil {
fmt.Println("kubectl cp -n " + namespace + " " + *filePath + "/" + fileName + " \"" + podName + ":/tmp/" + fileName + "\"")
if err := utils.Exec("kubectl cp -n " + namespace + " " + *filePath + "/" + fileName + " \"" + podName + ":/tmp/" + fileName + "\""); err != nil {
return err
}
if err := utils.Exec("POD=" + podName + " && kubectl exec -n " + namespace + " $POD: -- mongoimport --db " + dbName + " --collection " + strings.ReplaceAll(fileName, ".json", "") + " --file /tmp/" + fileName + " --jsonArray"); err != nil {
fmt.Println("kubectl exec -n " + namespace + " " + podName + " -- mongoimport --db " + dbName + " --collection " + strings.ReplaceAll(fileName, ".json", "") + " --file /tmp/" + fileName + " --jsonArray -u " + adminUsr + " -p " + adminPsw +" --authenticationDatabase admin")
if err := utils.Exec("kubectl exec -n " + namespace + " " + podName + " -- mongoimport --db " + dbName + " --collection " + strings.ReplaceAll(fileName, ".json", "") + " --file /tmp/" + fileName + " --jsonArray -u " + adminUsr + " -p " + adminPsw +" --authenticationDatabase admin"); err != nil {
return err
}
}
return nil
}
func Upgrade_DB(filePath *string, release string, namespace string, dbName string) error {
Delete_DB(release, namespace, dbName)
return Create_DB(filePath, release, namespace, dbName)
func getMongoPod(namespace string) (string, error) {
cmd := exec.Command("bash", "-c", "kubectl get pods -n "+namespace+" --no-headers -o custom-columns=\":metadata.name\" | grep mongodb | head -n 1")
var out bytes.Buffer
cmd.Stdout = &out
if err := cmd.Run(); err != nil {
return "", err
}
podName := strings.TrimSpace(out.String()) // remove newline
return podName, nil
}
func Upgrade_DB(filePath *string, release string, namespace string, dbName string, adminUsr string, adminPsw string) error {
Delete_DB(release, namespace, dbName, adminUsr, adminPsw)
return Create_DB(filePath, release, namespace, dbName, adminUsr, adminPsw)
}