Installer: Move port forwarding config into the apps
Change-Id: I6d70c8ce72d21ebe74d126a680fa66ba6c3f2857
diff --git a/core/installer/app_manager.go b/core/installer/app_manager.go
index fbee783..c5b849f 100644
--- a/core/installer/app_manager.go
+++ b/core/installer/app_manager.go
@@ -203,25 +203,25 @@
return ret, nil
}
-func openPorts(ports []PortForward, reservations map[string]reservePortResp, allocators map[string]string) error {
+func openPorts(ports []PortForward, reservations map[string]reservePortResp, allocators map[string]string, ns string) error {
for _, p := range ports {
var buf bytes.Buffer
req := allocatePortReq{
Protocol: p.Protocol,
- SourcePort: p.SourcePort,
- TargetService: p.TargetService,
- TargetPort: p.TargetPort,
+ SourcePort: p.Port,
+ TargetService: fmt.Sprintf("%s/%s", ns, p.Service.Name),
+ TargetPort: p.Service.Port,
}
allocator := ""
for n, r := range reservations {
- if p.SourcePort == r.Port {
+ if p.Port == r.Port {
allocator = allocators[n]
req.Secret = r.Secret
break
}
}
if allocator == "" {
- return fmt.Errorf("Could not find allocator for: %d", p.SourcePort)
+ return fmt.Errorf("Could not find allocator for: %d", p.Port)
}
if err := json.NewEncoder(&buf).Encode(req); err != nil {
return err
@@ -233,21 +233,21 @@
if resp.StatusCode != http.StatusOK {
var r bytes.Buffer
io.Copy(&r, resp.Body)
- return fmt.Errorf("Could not allocate port %d, status code %d, message: %s", p.SourcePort, resp.StatusCode, r.String())
+ return fmt.Errorf("Could not allocate port %d, status code %d, message: %s", p.Port, resp.StatusCode, r.String())
}
}
return nil
}
-func closePorts(ports []PortForward) error {
+func closePorts(ports []PortForward, ns string) error {
var retErr error
for _, p := range ports {
var buf bytes.Buffer
req := removePortReq{
Protocol: p.Protocol,
- SourcePort: p.SourcePort,
- TargetService: p.TargetService,
- TargetPort: p.TargetPort,
+ SourcePort: p.Port,
+ TargetService: fmt.Sprintf("%s/%s", ns, p.Service.Name),
+ TargetPort: p.Service.Port,
}
if err := json.NewEncoder(&buf).Encode(req); err != nil {
retErr = err
@@ -259,7 +259,7 @@
continue
}
if resp.StatusCode != http.StatusOK {
- retErr = fmt.Errorf("Could not deallocate port %d, status code: %d", p.SourcePort, resp.StatusCode)
+ retErr = fmt.Errorf("Could not deallocate port %d, status code: %d", p.Port, resp.StatusCode)
continue
}
}
@@ -478,8 +478,8 @@
reservators := map[string]string{}
allocators := map[string]string{}
for _, pf := range rendered.Ports {
- reservators[portFields[pf.SourcePort]] = pf.ReserveAddr
- allocators[portFields[pf.SourcePort]] = pf.Allocator
+ reservators[portFields[pf.Port]] = pf.ReserveAddr
+ allocators[portFields[pf.Port]] = pf.Allocator
}
portReservations, err := reservePorts(reservators)
if err != nil {
@@ -526,7 +526,7 @@
return ReleaseResources{}, err
}
// TODO(gio): add ingress-nginx to release resources
- if err := openPorts(rendered.Ports, portReservations, allocators); err != nil {
+ if err := openPorts(rendered.Ports, portReservations, allocators, release.Namespace); err != nil {
return ReleaseResources{}, err
}
for _, p := range rendered.ClusterProxies {
@@ -719,7 +719,7 @@
}); err != nil {
return err
}
- if err := closePorts(cfg.PortForward); err != nil {
+ if err := closePorts(cfg.Output.PortForward, cfg.Release.Namespace); err != nil {
return err
}
for _, cp := range cfg.Out.ClusterProxy {
@@ -1091,9 +1091,14 @@
}
type renderedInstance struct {
+ Release Release `json:"release"`
LocalCharts map[string]helmv2.HelmChartTemplateSpec `json:"localCharts"`
- PortForward []PortForward `json:"portForward"`
Out outRendered `json:"out"`
+ Output outputRendered `json:"output"`
+}
+
+type outputRendered struct {
+ PortForward []PortForward `json:"openPort"`
}
type outRendered struct {