VirtualMachine: Implement virtual machines using KubeVirt

Auto adds new VM into given user's Tailscale network

Change-Id: I16847a0b9eacc17b0e794d3b4913eb1d80a93f0a
diff --git a/core/installer/cmd/app_manager.go b/core/installer/cmd/app_manager.go
index c03c83e..a6224a0 100644
--- a/core/installer/cmd/app_manager.go
+++ b/core/installer/cmd/app_manager.go
@@ -16,10 +16,11 @@
 )
 
 var appManagerFlags struct {
-	sshKey      string
-	repoAddr    string
-	port        int
-	appRepoAddr string
+	sshKey           string
+	repoAddr         string
+	port             int
+	appRepoAddr      string
+	headscaleAPIAddr string
 }
 
 func appManagerCmd() *cobra.Command {
@@ -51,6 +52,12 @@
 		"",
 		"",
 	)
+	cmd.Flags().StringVar(
+		&appManagerFlags.headscaleAPIAddr,
+		"headscale-api-addr",
+		"",
+		"",
+	)
 	return cmd
 }
 
@@ -85,7 +92,8 @@
 		return err
 	}
 	hf := installer.NewGitHelmFetcher()
-	m, err := installer.NewAppManager(repoIO, nsc, jc, hf, "/apps")
+	vpnKeyGen := installer.NewHeadscaleAPIClient(appManagerFlags.headscaleAPIAddr)
+	m, err := installer.NewAppManager(repoIO, nsc, jc, hf, vpnKeyGen, "/apps")
 	if err != nil {
 		return err
 	}
diff --git a/core/installer/cmd/dodo_app.go b/core/installer/cmd/dodo_app.go
index f61ee78..2fe1697 100644
--- a/core/installer/cmd/dodo_app.go
+++ b/core/installer/cmd/dodo_app.go
@@ -32,6 +32,7 @@
 	db                string
 	networks          []string
 	fetchUsersAddr    string
+	headscaleAPIAddr  string
 }
 
 func dodoAppCmd() *cobra.Command {
@@ -123,6 +124,12 @@
 		[]string{},
 		"",
 	)
+	cmd.Flags().StringVar(
+		&dodoAppFlags.headscaleAPIAddr,
+		"headscale-api-addr",
+		"",
+		"",
+	)
 	return cmd
 }
 
@@ -193,6 +200,7 @@
 			// &tasks.KustomizationReconciler{},
 		},
 	}
+	vpnKeyGen := installer.NewHeadscaleAPIClient(dodoAppFlags.headscaleAPIAddr)
 	s, err := welcome.NewDodoAppServer(
 		st,
 		nf,
@@ -208,6 +216,7 @@
 		dodoAppFlags.envAppManagerAddr,
 		nsc,
 		jc,
+		vpnKeyGen,
 		env,
 		dodoAppFlags.external,
 		dodoAppFlags.fetchUsersAddr,
diff --git a/core/installer/cmd/launcher.go b/core/installer/cmd/launcher.go
index 0af1d1e..e671fe6 100644
--- a/core/installer/cmd/launcher.go
+++ b/core/installer/cmd/launcher.go
@@ -74,7 +74,7 @@
 	if err != nil {
 		return err
 	}
-	appManager, err := installer.NewAppManager(repoIO, nil, nil, nil, "/apps")
+	appManager, err := installer.NewAppManager(repoIO, nil, nil, nil, nil, "/apps")
 	if err != nil {
 		return err
 	}
diff --git a/core/installer/cmd/rewrite.go b/core/installer/cmd/rewrite.go
index 3ebb390..0562c0e 100644
--- a/core/installer/cmd/rewrite.go
+++ b/core/installer/cmd/rewrite.go
@@ -62,7 +62,7 @@
 	log.Println("Creating repository")
 	r := installer.NewInMemoryAppRepository(installer.CreateAllApps())
 	hf := installer.NewGitHelmFetcher()
-	mgr, err := installer.NewAppManager(repoIO, nil, nil, hf, "/apps")
+	mgr, err := installer.NewAppManager(repoIO, nil, nil, hf, nil, "/apps")
 	if err != nil {
 		return err
 	}