diff --git a/cmd/headscale/cli/routes.go b/cmd/headscale/cli/routes.go index e1deb79e..105175a1 100644 --- a/cmd/headscale/cli/routes.go +++ b/cmd/headscale/cli/routes.go @@ -131,12 +131,10 @@ omit the route you do not want to enable. defer cancel() defer conn.Close() - routes := []string{} + var routes []string isAll, _ := cmd.Flags().GetBool("all") - if isAll == true { - // x := v1.NewHeadscaleServiceClient(conn) - // machine, err := x.GetMachineByID(machineID) + if isAll { response, err := client.GetMachineRoute(ctx, &v1.GetMachineRouteRequest{ MachineId: machineID, }) @@ -149,6 +147,8 @@ omit the route you do not want to enable. ), output, ) + + return } routes = response.GetRoutes().GetAdvertisedRoutes() } else { @@ -159,6 +159,7 @@ omit the route you do not want to enable. fmt.Sprintf("Error getting routes from flag: %s", err), output, ) + return } } diff --git a/integration_cli_test.go b/integration_cli_test.go index 29bca647..05bca29f 100644 --- a/integration_cli_test.go +++ b/integration_cli_test.go @@ -1076,6 +1076,35 @@ func (s *IntegrationCLITestSuite) TestRouteCommand() { string(failEnableNonAdvertisedRoute), "route (route-machine) is not available on node", ) + + // Enable all routes on host + enableAllRouteResult, err := ExecuteCommand( + &s.headscale, + []string{ + "headscale", + "routes", + "enable", + "--output", + "json", + "--identifier", + "0", + "--all", + }, + []string{}, + ) + assert.Nil(s.T(), err) + + var enableAllRoute v1.Routes + err = json.Unmarshal([]byte(enableAllRouteResult), &enableAllRoute) + assert.Nil(s.T(), err) + + assert.Len(s.T(), enableAllRoute.AdvertisedRoutes, 2) + assert.Contains(s.T(), enableAllRoute.AdvertisedRoutes, "10.0.0.0/8") + assert.Contains(s.T(), enableAllRoute.AdvertisedRoutes, "192.168.1.0/24") + + assert.Len(s.T(), enableAllRoute.EnabledRoutes, 2) + assert.Contains(s.T(), enableAllRoute.EnabledRoutes, "10.0.0.0/8") + assert.Contains(s.T(), enableAllRoute.EnabledRoutes, "192.168.1.0/24") } func (s *IntegrationCLITestSuite) TestApiKeyCommand() {