default policy for slaDrainHosts (#17)
This commit is contained in:
parent
907430768c
commit
5d0998647a
3 changed files with 55 additions and 0 deletions
|
@ -59,6 +59,18 @@ func (c *Client) SLADrainHosts(policy *aurora.SlaPolicy, timeout int64, hosts ..
|
|||
return nil, errors.New("no hosts provided to drain")
|
||||
}
|
||||
|
||||
if policy == nil || policy.CountSetFieldsSlaPolicy() == 0 {
|
||||
policy = &defaultSlaPolicy
|
||||
c.logger.Printf("Warning: start draining with default sla policy %v", policy)
|
||||
}
|
||||
|
||||
if timeout < 0 {
|
||||
c.logger.Printf("Warning: timeout %d secs is invalid, draining with default timeout %d secs",
|
||||
timeout,
|
||||
defaultSlaDrainTimeoutSecs)
|
||||
timeout = defaultSlaDrainTimeoutSecs
|
||||
}
|
||||
|
||||
drainList := aurora.NewHosts()
|
||||
drainList.HostNames = hosts
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/apache/thrift/lib/go/thrift"
|
||||
"github.com/aurora-scheduler/gorealis/v2/gen-go/apache/aurora"
|
||||
)
|
||||
|
||||
type clientConfig struct {
|
||||
|
@ -48,6 +49,15 @@ var defaultBackoff = Backoff{
|
|||
Jitter: 0.1,
|
||||
}
|
||||
|
||||
var defaultSlaPolicy = aurora.SlaPolicy{
|
||||
PercentageSlaPolicy: &aurora.PercentageSlaPolicy{
|
||||
Percentage: 66,
|
||||
DurationSecs: 300,
|
||||
},
|
||||
}
|
||||
|
||||
const defaultSlaDrainTimeoutSecs = 900
|
||||
|
||||
type TransportProtocol int
|
||||
|
||||
const (
|
||||
|
|
|
@ -612,6 +612,39 @@ func TestRealisClient_SLADrainHosts(t *testing.T) {
|
|||
5*time.Second,
|
||||
10*time.Second)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// slaDrainHosts goes with default policy if no policy is specified
|
||||
_, err = r.SLADrainHosts(nil, 30, hosts...)
|
||||
if err != nil {
|
||||
fmt.Printf("error: %+v\n", err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
hostResults, err = r.MonitorHostMaintenance(
|
||||
hosts,
|
||||
[]aurora.MaintenanceMode{aurora.MaintenanceMode_DRAINED, aurora.MaintenanceMode_DRAINING},
|
||||
1*time.Second,
|
||||
50*time.Second)
|
||||
assert.Equal(t, map[string]bool{"localhost": true}, hostResults)
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = r.EndMaintenance(hosts...)
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = r.SLADrainHosts(&aurora.SlaPolicy{}, 30, hosts...)
|
||||
if err != nil {
|
||||
fmt.Printf("error: %+v\n", err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
hostResults, err = r.MonitorHostMaintenance(
|
||||
hosts,
|
||||
[]aurora.MaintenanceMode{aurora.MaintenanceMode_DRAINED, aurora.MaintenanceMode_DRAINING},
|
||||
1*time.Second,
|
||||
50*time.Second)
|
||||
assert.Equal(t, map[string]bool{"localhost": true}, hostResults)
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = r.EndMaintenance(hosts...)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
// Test multiple go routines using a single connection
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue