func getHandlerPairs()

in pkg/cmd/cmdutil/cmdutil.go [103:138]


func getHandlerPairs(cmd *cobra.Command, config cfg.Config) []handlerPair {
	// always register these paths
	handlerPairs := []handlerPair{
		{path: "/", handler: handlers.ListRoutesHandler},
		{path: "/latest", handler: handlers.ListRoutesHandler},
		{path: static.ServicePath, handler: handlers.ListRoutesHandler},
		{path: dynamic.ServicePath, handler: handlers.ListRoutesHandler},
	}

	isSpot := strings.Contains(cmd.Name(), "spot")
	isEvents := strings.Contains(cmd.Name(), "events")
	isASGLifecycle := strings.Contains(cmd.Name(), "asglifecycle")

	subCommandHandlers := map[string][]handlerPair{
		"spot": {{path: config.Metadata.Paths.Spot, handler: spot.Handler},
			{path: config.Metadata.Paths.SpotTerminationTime, handler: spot.Handler},
			{path: config.Metadata.Paths.RebalanceRecTime, handler: spot.Handler}},
		"events":       {{path: config.Metadata.Paths.Events, handler: events.Handler}},
		"asglifecycle": {{path: config.Metadata.Paths.ASGLifecycle, handler: asglifecycle.Handler}},
	}

	if isSpot {
		handlerPairs = append(handlerPairs, subCommandHandlers["spot"]...)
	} else if isEvents {
		handlerPairs = append(handlerPairs, subCommandHandlers["events"]...)
	} else if isASGLifecycle {
		handlerPairs = append(handlerPairs, subCommandHandlers["asglifecycle"]...)
	} else {
		// root registers all subcommands
		for k := range subCommandHandlers {
			handlerPairs = append(handlerPairs, subCommandHandlers[k]...)
		}
	}

	return handlerPairs
}