blob: 73b94d6d2b2704c3acc4c510beabea1da1413524 [file] [log] [blame]
giolekva56c15692021-10-20 11:44:54 +04001package main
2
3import (
4 "context"
5 "flag"
Giorgi Lekveishvili6d7dcb82023-12-20 14:44:42 +04006 "fmt"
giolekva56c15692021-10-20 11:44:54 +04007 "io/ioutil"
8 "path"
9
10 v1 "k8s.io/api/core/v1"
11 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12 "k8s.io/client-go/kubernetes"
13 "k8s.io/client-go/rest"
giolekva95340e82021-11-08 21:36:55 +040014
15 "github.com/miracl/conflate"
giolekva56c15692021-10-20 11:44:54 +040016)
17
Giorgi Lekveishvili6d7dcb82023-12-20 14:44:42 +040018var baseFile = flag.String("base", "", "Path to the homeserver.yaml config file.")
19var mergeWith = flag.String("merge-with", "", "Name of the file from config to merge.")
giolekva56c15692021-10-20 11:44:54 +040020var namespace = flag.String("namespace", "", "Namespace name.")
21var configMapName = flag.String("config-map-name", "", "Name of the ConfigMap to create.")
22
23func createClient() *kubernetes.Clientset {
24 config, err := rest.InClusterConfig()
25 if err != nil {
26 panic(err.Error())
27 }
28 cs, err := kubernetes.NewForConfig(config)
29 if err != nil {
30 panic(err.Error())
31 }
32 return cs
33}
34
Giorgi Lekveishvili6d7dcb82023-12-20 14:44:42 +040035func newConig(data []byte) *v1.ConfigMap {
giolekva56c15692021-10-20 11:44:54 +040036 return &v1.ConfigMap{
37 TypeMeta: metav1.TypeMeta{
38 Kind: "ConfigMap",
39 APIVersion: "v1",
40 },
41 ObjectMeta: metav1.ObjectMeta{
42 Name: *configMapName,
43 },
44 Data: map[string]string{
Giorgi Lekveishvili6d7dcb82023-12-20 14:44:42 +040045 path.Base(*baseFile): string(data),
giolekva56c15692021-10-20 11:44:54 +040046 },
47 }
48}
49
50func main() {
51 flag.Parse()
giolekva56c15692021-10-20 11:44:54 +040052 client := createClient().CoreV1().ConfigMaps(*namespace)
giolekva95340e82021-11-08 21:36:55 +040053 conf := conflate.New()
Giorgi Lekveishvili6d7dcb82023-12-20 14:44:42 +040054 generated, err := ioutil.ReadFile(*baseFile)
giolekva56c15692021-10-20 11:44:54 +040055 if err != nil {
56 panic(err)
57 }
Giorgi Lekveishvili6d7dcb82023-12-20 14:44:42 +040058 fmt.Printf("--- BASE:\n%s\n", string(generated))
giolekva95340e82021-11-08 21:36:55 +040059 if err := conf.AddData(generated); err != nil {
60 panic(err)
61 }
Giorgi Lekveishvili6d7dcb82023-12-20 14:44:42 +040062 mergeWith, err := ioutil.ReadFile(*mergeWith)
giolekva95340e82021-11-08 21:36:55 +040063 if err != nil {
64 panic(err)
65 }
Giorgi Lekveishvili6d7dcb82023-12-20 14:44:42 +040066 fmt.Printf("--- MERGE WITH:\n%s\n", string(mergeWith))
67 if err := conf.AddData(mergeWith); err != nil {
giolekva95340e82021-11-08 21:36:55 +040068 panic(err)
69 }
70 merged, err := conf.MarshalYAML()
71 if err != nil {
72 panic(err)
73 }
Giorgi Lekveishvili6d7dcb82023-12-20 14:44:42 +040074 fmt.Printf("--- MERGED:\n%s\n", string(merged))
75 config := newConig(merged)
giolekva95340e82021-11-08 21:36:55 +040076 if _, err := client.Create(context.TODO(), config, metav1.CreateOptions{}); err != nil {
77 panic(err)
78 }
giolekva56c15692021-10-20 11:44:54 +040079}