Installer: matrix with hydra maester to auto-register oauth2 client
diff --git a/apps/matrix/capture-config/main.go b/apps/matrix/capture-config/main.go
index b031fbb..08d7be2 100644
--- a/apps/matrix/capture-config/main.go
+++ b/apps/matrix/capture-config/main.go
@@ -10,9 +10,13 @@
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
+
+ "github.com/miracl/conflate"
)
var configFile = flag.String("config", "", "Path to the homeserver.yaml config file.")
+var configToMerge = flag.String("config-to-merge", "", "Name of the configmap to merge with generated one.")
+var toMergeFilename = flag.String("to-merge-filename", "", "Name of the file from config to merge.")
var namespace = flag.String("namespace", "", "Namespace name.")
var configMapName = flag.String("config-map-name", "", "Name of the ConfigMap to create.")
@@ -28,11 +32,7 @@
return cs
}
-func createConfigFromFile() *v1.ConfigMap {
- f, err := ioutil.ReadFile(*configFile)
- if err != nil {
- panic(err)
- }
+func createConfig(data []byte) *v1.ConfigMap {
return &v1.ConfigMap{
TypeMeta: metav1.TypeMeta{
Kind: "ConfigMap",
@@ -42,17 +42,35 @@
Name: *configMapName,
},
Data: map[string]string{
- path.Base(*configFile): string(f),
+ path.Base(*configFile): string(data),
},
}
}
func main() {
flag.Parse()
- config := createConfigFromFile()
client := createClient().CoreV1().ConfigMaps(*namespace)
- _, err := client.Create(context.TODO(), config, metav1.CreateOptions{})
+ conf := conflate.New()
+ generated, err := ioutil.ReadFile(*configFile)
if err != nil {
panic(err)
}
+ if err := conf.AddData(generated); err != nil {
+ panic(err)
+ }
+ toMerge, err := client.Get(context.TODO(), *configToMerge, metav1.GetOptions{})
+ if err != nil {
+ panic(err)
+ }
+ if err := conf.AddData([]byte(toMerge.Data[*toMergeFilename])); err != nil {
+ panic(err)
+ }
+ merged, err := conf.MarshalYAML()
+ if err != nil {
+ panic(err)
+ }
+ config := createConfig(merged)
+ if _, err := client.Create(context.TODO(), config, metav1.CreateOptions{}); err != nil {
+ panic(err)
+ }
}