Skip to content

Commit f918848

Browse files
committed
Default egress enabled when mode is set
1 parent d6745f3 commit f918848

2 files changed

Lines changed: 57 additions & 13 deletions

File tree

pkg/cmd/run.go

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -250,20 +250,11 @@ func handleRun(ctx context.Context, cmd *cli.Command) error {
250250
params.Network.BandwidthUpload = hypeman.Opt(bandwidthUp)
251251
}
252252
if egressEnabledSet || egressMode != "" {
253-
params.Network.Egress = hypeman.InstanceNewParamsNetworkEgress{}
254-
if egressEnabledSet {
255-
params.Network.Egress.Enabled = hypeman.Opt(cmd.Bool("network-egress-enabled"))
256-
}
257-
if egressMode != "" {
258-
switch egressMode {
259-
case "all", "http_https_only":
260-
params.Network.Egress.Enforcement = hypeman.InstanceNewParamsNetworkEgressEnforcement{
261-
Mode: egressMode,
262-
}
263-
default:
264-
return fmt.Errorf("invalid network-egress-mode: %s (must be 'all' or 'http_https_only')", egressMode)
265-
}
253+
egress, err := buildNetworkEgress(cmd.Bool("network-egress-enabled"), egressEnabledSet, egressMode)
254+
if err != nil {
255+
return err
266256
}
257+
params.Network.Egress = egress
267258
}
268259
}
269260

@@ -391,6 +382,28 @@ func handleRun(ctx context.Context, cmd *cli.Command) error {
391382
return nil
392383
}
393384

385+
func buildNetworkEgress(enabled bool, enabledSet bool, mode string) (hypeman.InstanceNewParamsNetworkEgress, error) {
386+
egress := hypeman.InstanceNewParamsNetworkEgress{}
387+
if enabledSet {
388+
egress.Enabled = hypeman.Opt(enabled)
389+
} else if mode != "" {
390+
egress.Enabled = hypeman.Opt(true)
391+
}
392+
393+
if mode != "" {
394+
switch mode {
395+
case "all", "http_https_only":
396+
egress.Enforcement = hypeman.InstanceNewParamsNetworkEgressEnforcement{
397+
Mode: mode,
398+
}
399+
default:
400+
return hypeman.InstanceNewParamsNetworkEgress{}, fmt.Errorf("invalid network-egress-mode: %s (must be 'all' or 'http_https_only')", mode)
401+
}
402+
}
403+
404+
return egress, nil
405+
}
406+
394407
// isNotFoundError checks if err is a 404 not found error
395408
func isNotFoundError(err error, target **hypeman.Error) bool {
396409
if apiErr, ok := err.(*hypeman.Error); ok {

pkg/cmd/run_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package cmd
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
"github.com/stretchr/testify/require"
8+
)
9+
10+
func TestBuildNetworkEgress(t *testing.T) {
11+
t.Run("defaults enabled to true when mode is set", func(t *testing.T) {
12+
egress, err := buildNetworkEgress(false, false, "all")
13+
require.NoError(t, err)
14+
require.True(t, egress.Enabled.Valid())
15+
assert.True(t, egress.Enabled.Value)
16+
assert.Equal(t, "all", egress.Enforcement.Mode)
17+
})
18+
19+
t.Run("honors explicit disabled flag when mode is set", func(t *testing.T) {
20+
egress, err := buildNetworkEgress(false, true, "http_https_only")
21+
require.NoError(t, err)
22+
require.True(t, egress.Enabled.Valid())
23+
assert.False(t, egress.Enabled.Value)
24+
assert.Equal(t, "http_https_only", egress.Enforcement.Mode)
25+
})
26+
27+
t.Run("rejects unsupported modes", func(t *testing.T) {
28+
_, err := buildNetworkEgress(false, false, "smtp_only")
29+
require.EqualError(t, err, "invalid network-egress-mode: smtp_only (must be 'all' or 'http_https_only')")
30+
})
31+
}

0 commit comments

Comments
 (0)