AppManager: Support exposing cross-cluster ports
Change-Id: I4bdb3573209935f6777656ec2f3481e79d84a9c9
diff --git a/core/installer/cmd/app_manager.go b/core/installer/cmd/app_manager.go
index afc7d32..c2547d6 100644
--- a/core/installer/cmd/app_manager.go
+++ b/core/installer/cmd/app_manager.go
@@ -3,8 +3,8 @@
import (
"log"
"os"
-
- "golang.org/x/crypto/ssh"
+ "path/filepath"
+ "strings"
"github.com/giolekva/pcloud/core/installer"
"github.com/giolekva/pcloud/core/installer/server/appmanager"
@@ -80,20 +80,14 @@
if err != nil {
return err
}
- signer, err := ssh.ParsePrivateKey(sshKey)
+ items := strings.Split(appManagerFlags.repoAddr, "/")
+ ipPort := items[len(items)-2]
+ repoName := items[len(items)-1]
+ ssClient, err := soft.NewClient(ipPort, sshKey, log.Default())
if err != nil {
return err
}
- addr, err := soft.ParseRepositoryAddress(appManagerFlags.repoAddr)
- if err != nil {
- return err
- }
- repo, err := soft.CloneRepository(addr, signer)
- if err != nil {
- return err
- }
- log.Println("Cloned repository")
- repoIO, err := soft.NewRepoIO(repo, signer)
+ repoIO, err := ssClient.GetRepo(repoName)
if err != nil {
return err
}
@@ -112,7 +106,8 @@
PrivateSubdomain: "p",
DNSAPIAddr: appManagerFlags.dnsAPIAddr,
Repo: repoIO,
- NginxConfigPath: appManagerFlags.clusterProxyConfigPath,
+ ConfigPath: appManagerFlags.clusterProxyConfigPath,
+ ServicePath: filepath.Join(filepath.Dir(appManagerFlags.clusterProxyConfigPath), "proxy-backend-service.yaml"),
}
m, err := installer.NewAppManager(repoIO, nsc, jc, hf, vpnAPIClient, cnc, "/apps")
if err != nil {
@@ -145,6 +140,7 @@
}
s, err := appmanager.NewServer(
appManagerFlags.port,
+ ssClient,
repoIO,
m,
r,
diff --git a/core/installer/cmd/dodo_app.go b/core/installer/cmd/dodo_app.go
index adc8beb..9b5da30 100644
--- a/core/installer/cmd/dodo_app.go
+++ b/core/installer/cmd/dodo_app.go
@@ -245,6 +245,8 @@
return s.Start()
}
+// TODO(gio): this should be removed, all of app installtions including dodo app
+// must be done directly by main app manager.
type proxyConfigurator struct {
apiAddr string
}
@@ -262,7 +264,7 @@
To string `json:"to"`
}
-func (pc *proxyConfigurator) AddProxy(src, dst string) error {
+func (pc *proxyConfigurator) AddIngressProxy(src, dst string) error {
var buf bytes.Buffer
if err := json.NewEncoder(&buf).Encode(proxyPair{src, dst}); err != nil {
return err
@@ -279,7 +281,17 @@
return nil
}
-func (pc *proxyConfigurator) RemoveProxy(src, dst string) error {
+func (pc *proxyConfigurator) AddProxy(src int, dst string, protocol installer.Protocol) (string, error) {
+ // TODO(gio): implement
+ return "", fmt.Errorf("NOT IMPLEMENTED")
+}
+
+func (pc *proxyConfigurator) RemoveProxy(src int, dst string, protocol installer.Protocol) error {
+ // TODO(gio): implement
+ return fmt.Errorf("NOT IMPLEMENTED")
+}
+
+func (pc *proxyConfigurator) RemoveIngressProxy(src, dst string) error {
var buf bytes.Buffer
if err := json.NewEncoder(&buf).Encode(proxyPair{src, dst}); err != nil {
return err