// Scale grows or shrinks the number of running components. // Currently "router", "registry" and "store-gateway" are the only types that can be scaled. func Scale(targets []string, b backend.Backend) error { var wg sync.WaitGroup for _, target := range targets { component, num, err := splitScaleTarget(target) if err != nil { return err } // the router, registry, and store-gateway are the only component that can scale at the moment if !strings.Contains(component, "router") && !strings.Contains(component, "registry") && !strings.Contains(component, "store-gateway") { return fmt.Errorf("cannot scale %s component", component) } b.Scale(component, num, &wg, Stdout, Stderr) wg.Wait() } return nil }
// Scale grows or shrinks the number of running components. // Currently "router", "registry" and "store-gateway" are the only types that can be scaled. func Scale(targets []string, b backend.Backend) error { outchan := make(chan string) errchan := make(chan error) var wg sync.WaitGroup go printState(outchan, errchan, 500*time.Millisecond) for _, target := range targets { component, num, err := splitScaleTarget(target) if err != nil { return err } // the router, registry, and store-gateway are the only component that can scale at the moment if !strings.Contains(component, "router") && !strings.Contains(component, "registry") && !strings.Contains(component, "store-gateway") { return fmt.Errorf("cannot scale %s component", component) } b.Scale(component, num, &wg, outchan, errchan) wg.Wait() } close(outchan) close(errchan) return nil }
// Scale grows or shrinks the number of running components. // Currently "router" is the only type that can be scaled. func Scale(argv []string, b backend.Backend) error { usage := `Grows or shrinks the number of running components. Currently "router" is the only type that can be scaled. Usage: deisctl scale [<target>...] [options] ` // parse command-line arguments args, err := docopt.Parse(usage, argv, true, "", false) if err != nil { return err } targets := args["<target>"].([]string) outchan := make(chan string) errchan := make(chan error) var wg sync.WaitGroup go printState(outchan, errchan, 500*time.Millisecond) for _, target := range targets { component, num, err := splitScaleTarget(target) if err != nil { return err } // the router is the only component that can scale at the moment if !strings.Contains(component, "router") { return fmt.Errorf("cannot scale %s components", component) } b.Scale(component, num, &wg, outchan, errchan) wg.Wait() } close(outchan) return nil }