Files
oc-k8s/internal/services.go

75 lines
2.5 KiB
Go
Raw Normal View History

2026-01-07 16:56:27 +01:00
package internal
import (
"fmt"
"oc-k8s/utils"
"os"
)
var REPOS = []string{
"oc-auth",
"oc-catalog",
"oc-datacenter",
"oc-front",
"oc-monitord",
"oc-peer",
"oc-shared",
"oc-scheduler",
"oc-schedulerd",
"oc-workflow",
"oc-workspace",
}
func Help_Service() {
fmt.Println(`
Service commands: oc-k8s <action> services
create - Build all opencloud services
help - Show this help message
Usage:
2026-01-20 16:21:04 +01:00
oc-k8s create services -f [env_folder] -r [release] -b [branch] -t [target]
2026-01-07 16:56:27 +01:00
env_folder - Helm config folder (required, default: .)
2026-01-20 16:21:04 +01:00
release - Release values name (required, default: dev)
branch - Git branch to build (default: main)
target - make target (default: all)
2026-01-07 16:56:27 +01:00
oc-k8s help services `)
}
2026-01-20 16:21:04 +01:00
func Create_Service(folder string, release string, branch string, target string) error {
2026-01-19 11:24:16 +01:00
scheme := "http"
2026-01-07 16:56:27 +01:00
hostname := "beta.opencloud.com"
2026-01-20 16:21:04 +01:00
clusterName := "opencloud"
pport := "80"
2026-01-07 16:56:27 +01:00
if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil {
hostname, _ = utils.Extract(string(b), "host")
2026-01-19 11:24:16 +01:00
scheme, _ = utils.Extract(string(b), "scheme")
2026-01-20 16:21:04 +01:00
clusterName, _ = utils.Extract(string(b), "clusterName")
pport, _ = utils.Extract(string(b), "port")
2026-01-07 16:56:27 +01:00
}
for _, repo := range REPOS {
repo_url := "https://cloud.o-forge.io/core/" + repo + ".git"
host := "$(ip -4 addr show $(ip route | awk '/default/ {print $5}') | awk '/inet / {print $2}' | cut -d/ -f1)"
port := "6443"
ca := "$(kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}')"
cert := "$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-certificate-data}')"
key := "$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-key-data}')"
if inf, err := os.Stat("./" + repo); err != nil || !inf.IsDir() {
fmt.Println("Cloning repository: " + repo)
if err := utils.Exec("git clone " + repo_url); err != nil {
return err
}
}
fmt.Println("Repository '" + repo + "' now exists. Pulling latest changes...")
2026-01-20 16:21:04 +01:00
utils.Exec("cd " + repo + " && git checkout " + branch + " && git pull")
fmt.Println("Build '" + repo + "'...")
if err := utils.Exec("cd " + repo + " && export CLUSTER_NAME=" + clusterName + " && export HOST=" + scheme + "://" + hostname + ":" + pport + " && export KUBERNETES_SERVICE_HOST=" + host + " && export KUBERNETES_SERVICE_PORT=" + port + " && export KUBE_CA=" + ca + " && export KUBE_CERT=" + cert + " && export KUBE_DATA=" + key + " && make " + target); err != nil {
fmt.Println("ERR", err)
2026-01-07 16:56:27 +01:00
return err
}
}
return nil
}