61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
|
// Copyright (C) 2020 Storj Labs, Inc.
|
||
|
// See LICENSE for copying information.
|
||
|
|
||
|
package orders
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/zeebo/errs"
|
||
|
)
|
||
|
|
||
|
// WindowEndpointRolloutPhase controls the phase of the new orders endpoint rollout.
|
||
|
type WindowEndpointRolloutPhase int
|
||
|
|
||
|
const (
|
||
|
// WindowEndpointRolloutPhase1 is when both the old and new endpoint are enabled and
|
||
|
// the new endpoint places orders in the queue just like the old endpoint.
|
||
|
WindowEndpointRolloutPhase1 WindowEndpointRolloutPhase = 1 + iota
|
||
|
|
||
|
// WindowEndpointRolloutPhase2 is when the old endpoint is disabled and the new endpint
|
||
|
// places orders in the queue just like the old endpoint used to.
|
||
|
WindowEndpointRolloutPhase2
|
||
|
|
||
|
// WindowEndpointRolloutPhase3 is when the old endpoint is disabled and the new endpoint
|
||
|
// does not use a queue and just does direct insertion of rollup values.
|
||
|
WindowEndpointRolloutPhase3
|
||
|
)
|
||
|
|
||
|
// String provides a human readable form of the rollout phase.
|
||
|
func (phase WindowEndpointRolloutPhase) String() string {
|
||
|
switch phase {
|
||
|
case WindowEndpointRolloutPhase1:
|
||
|
return "phase1"
|
||
|
case WindowEndpointRolloutPhase2:
|
||
|
return "phase2"
|
||
|
case WindowEndpointRolloutPhase3:
|
||
|
return "phase3"
|
||
|
default:
|
||
|
return fmt.Sprintf("WindowEndpointRolloutPhase(%d)", int(phase))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Set implements flag.Value interface.
|
||
|
func (phase *WindowEndpointRolloutPhase) Set(s string) error {
|
||
|
switch strings.ToLower(s) {
|
||
|
case "phase1":
|
||
|
*phase = WindowEndpointRolloutPhase1
|
||
|
case "phase2":
|
||
|
*phase = WindowEndpointRolloutPhase2
|
||
|
case "phase3":
|
||
|
*phase = WindowEndpointRolloutPhase3
|
||
|
default:
|
||
|
return errs.New("invalid window endpoint rollout phase: %q", s)
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Type implements pflag.Value.
|
||
|
func (WindowEndpointRolloutPhase) Type() string { return "orders.WindowEndpointRolloutPhase" }
|