VirtualMachine: Implement virtual machines using KubeVirt

Auto adds new VM into given user's Tailscale network

Change-Id: I16847a0b9eacc17b0e794d3b4913eb1d80a93f0a
diff --git a/core/installer/app_manager.go b/core/installer/app_manager.go
index c27b641..3157a45 100644
--- a/core/installer/app_manager.go
+++ b/core/installer/app_manager.go
@@ -35,6 +35,7 @@
 	nsc        NamespaceCreator
 	jc         JobCreator
 	hf         HelmFetcher
+	vpnKeyGen  VPNAuthKeyGenerator
 	appDirRoot string
 }
 
@@ -43,6 +44,7 @@
 	nsc NamespaceCreator,
 	jc JobCreator,
 	hf HelmFetcher,
+	vpnKeyGen VPNAuthKeyGenerator,
 	appDirRoot string,
 ) (*AppManager, error) {
 	return &AppManager{
@@ -51,6 +53,7 @@
 		nsc,
 		jc,
 		hf,
+		vpnKeyGen,
 		appDirRoot,
 	}, nil
 }
@@ -457,7 +460,7 @@
 		RepoAddr:      m.repoIO.FullAddress(),
 		AppDir:        appDir,
 	}
-	rendered, err := app.Render(release, env, networks, values, nil)
+	rendered, err := app.Render(release, env, networks, values, nil, m.vpnKeyGen)
 	if err != nil {
 		return ReleaseResources{}, err
 	}
@@ -489,7 +492,7 @@
 	if o.FetchContainerImages {
 		release.ImageRegistry = imageRegistry
 	}
-	rendered, err = app.Render(release, env, networks, values, localCharts)
+	rendered, err = app.Render(release, env, networks, values, localCharts, m.vpnKeyGen)
 	if err != nil {
 		return ReleaseResources{}, err
 	}
@@ -582,7 +585,7 @@
 	if err != nil {
 		return ReleaseResources{}, err
 	}
-	rendered, err := app.Render(config.Release, env, networks, values, renderedCfg.LocalCharts)
+	rendered, err := app.Render(config.Release, env, networks, values, renderedCfg.LocalCharts, m.vpnKeyGen)
 	if err != nil {
 		return ReleaseResources{}, err
 	}
@@ -989,6 +992,8 @@
 		return []string{}
 	case KindPort:
 		return []string{""}
+	case KindVPNAuthKey:
+		return []string{}
 	default:
 		panic("MUST NOT REACH!")
 	}