Propagates dashboard port in standalone mode. (#465)

This commit is contained in:
Artur Souza 2020-09-21 14:18:03 -07:00 committed by GitHub
parent 02be9c1e6e
commit b00983e9b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 19 deletions

View File

@ -38,7 +38,7 @@ const (
) )
var dashboardNamespace string var dashboardNamespace string
var localPort int var dashboardLocalPort int
var dashboardVersion bool var dashboardVersion bool
var DashboardCmd = &cobra.Command{ var DashboardCmd = &cobra.Command{
@ -50,10 +50,9 @@ var DashboardCmd = &cobra.Command{
os.Exit(0) os.Exit(0)
} }
if port < 0 { if dashboardLocalPort <= 0 {
localPort = defaultLocalPort print.FailureStatusEvent(os.Stdout, "Invalid port: %v", dashboardLocalPort)
} else { os.Exit(1)
localPort = port
} }
if kubernetesMode { if kubernetesMode {
@ -107,7 +106,7 @@ var DashboardCmd = &cobra.Command{
foundNamespace, foundNamespace,
dashboardSvc, dashboardSvc,
defaultHost, defaultHost,
localPort, dashboardLocalPort,
remotePort, remotePort,
false, false,
) )
@ -129,7 +128,7 @@ var DashboardCmd = &cobra.Command{
}() }()
// url for dashboard after port forwarding // url for dashboard after port forwarding
var webURL string = fmt.Sprintf("http://%s:%d", defaultHost, localPort) var webURL string = fmt.Sprintf("http://%s:%d", defaultHost, dashboardLocalPort)
print.InfoStatusEvent(os.Stdout, fmt.Sprintf("Dapr dashboard found in namespace:\t%s", foundNamespace)) print.InfoStatusEvent(os.Stdout, fmt.Sprintf("Dapr dashboard found in namespace:\t%s", foundNamespace))
print.InfoStatusEvent(os.Stdout, fmt.Sprintf("Dapr dashboard available at:\t%s\n", webURL)) print.InfoStatusEvent(os.Stdout, fmt.Sprintf("Dapr dashboard available at:\t%s\n", webURL))
@ -143,7 +142,10 @@ var DashboardCmd = &cobra.Command{
<-portForward.GetStop() <-portForward.GetStop()
} else { } else {
// Standalone mode // Standalone mode
standalone.RunDashboard() err := standalone.NewDashboardCmd(dashboardLocalPort).Run()
if err != nil {
print.FailureStatusEvent(os.Stdout, "Dapr dashboard not found. Is Dapr installed?")
}
} }
}, },
} }
@ -151,7 +153,7 @@ var DashboardCmd = &cobra.Command{
func init() { func init() {
DashboardCmd.Flags().BoolVarP(&kubernetesMode, "kubernetes", "k", false, "Start Dapr dashboard in local browser") DashboardCmd.Flags().BoolVarP(&kubernetesMode, "kubernetes", "k", false, "Start Dapr dashboard in local browser")
DashboardCmd.Flags().BoolVarP(&dashboardVersion, "version", "v", false, "Check Dapr dashboard version") DashboardCmd.Flags().BoolVarP(&dashboardVersion, "version", "v", false, "Check Dapr dashboard version")
DashboardCmd.Flags().IntVarP(&port, "port", "p", defaultLocalPort, "The local port on which to serve dashboard") DashboardCmd.Flags().IntVarP(&dashboardLocalPort, "port", "p", defaultLocalPort, "The local port on which to serve dashboard")
DashboardCmd.Flags().StringVarP(&dashboardNamespace, "namespace", "n", daprSystemNamespace, "The namespace where Dapr dashboard is running") DashboardCmd.Flags().StringVarP(&dashboardNamespace, "namespace", "n", daprSystemNamespace, "The namespace where Dapr dashboard is running")
RootCmd.AddCommand(DashboardCmd) RootCmd.AddCommand(DashboardCmd)
} }

View File

@ -1,3 +1,8 @@
// ------------------------------------------------------------
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
// ------------------------------------------------------------
package standalone package standalone
import ( import (
@ -5,12 +10,11 @@ import (
"os/exec" "os/exec"
"path/filepath" "path/filepath"
"runtime" "runtime"
"strconv"
"github.com/dapr/cli/pkg/print"
) )
// RunDashboard finds the dashboard binary and runs it // NewDashboardCmd creates the command to run dashboard.
func RunDashboard() { func NewDashboardCmd(port int) *exec.Cmd {
// Use the default binary install location // Use the default binary install location
dashboardPath := defaultDaprBinPath() dashboardPath := defaultDaprBinPath()
binaryName := "dashboard" binaryName := "dashboard"
@ -19,14 +23,10 @@ func RunDashboard() {
} }
// Construct command to run dashboard // Construct command to run dashboard
cmdDashboardStandalone := &exec.Cmd{ return &exec.Cmd{
Path: filepath.Join(dashboardPath, binaryName), Path: filepath.Join(dashboardPath, binaryName),
Args: []string{binaryName, "--port", strconv.Itoa(port)},
Dir: dashboardPath, Dir: dashboardPath,
Stdout: os.Stdout, Stdout: os.Stdout,
} }
err := cmdDashboardStandalone.Run()
if err != nil {
print.FailureStatusEvent(os.Stdout, "Dapr dashboard not found. Is Dapr installed?")
}
} }

View File

@ -0,0 +1,22 @@
// ------------------------------------------------------------
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
// ------------------------------------------------------------
package standalone
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestDashboardRun(t *testing.T) {
t.Run("build Cmd", func(t *testing.T) {
cmd := NewDashboardCmd(9090)
assert.Contains(t, cmd.Args[0], "dashboard")
assert.Equal(t, cmd.Args[1], "--port")
assert.Equal(t, cmd.Args[2], "9090")
})
}