Clusters: Support persistent storage on remote clusters.

With this merged users can request persistent volumes and PostgreSQL
instances on remote clusters.

This is achieved by Cluster manager installing open-iscsi on all
remote servers and running longhorn on top of them.

Change-Id: Ic1b24ede12fa32bb99f38e560207230437b45fd6
diff --git a/core/installer/app_test.go b/core/installer/app_test.go
index 83cf701..bcad861 100644
--- a/core/installer/app_test.go
+++ b/core/installer/app_test.go
@@ -344,6 +344,22 @@
 	}
 }
 
+func TestLonghorn(t *testing.T) {
+	contents, err := valuesTmpls.ReadFile("values-tmpl/longhorn.cue")
+	if err != nil {
+		t.Fatal(err)
+	}
+	app, err := NewCueEnvApp(CueAppData{
+		"base.cue":   []byte(cueBaseConfig),
+		"app.cue":    []byte(contents),
+		"global.cue": []byte(cueEnvAppGlobal),
+	})
+	if err != nil {
+		t.Fatal(err)
+	}
+	t.Logf("%+v\n", app.Schema())
+}
+
 func TestDNSGateway(t *testing.T) {
 	contents, err := valuesTmpls.ReadFile("values-tmpl/dns-gateway.cue")
 	if err != nil {