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")
|
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 := aurora.NewHosts()
|
||||||
drainList.HostNames = hosts
|
drainList.HostNames = hosts
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/apache/thrift/lib/go/thrift"
|
"github.com/apache/thrift/lib/go/thrift"
|
||||||
|
"github.com/aurora-scheduler/gorealis/v2/gen-go/apache/aurora"
|
||||||
)
|
)
|
||||||
|
|
||||||
type clientConfig struct {
|
type clientConfig struct {
|
||||||
|
@ -48,6 +49,15 @@ var defaultBackoff = Backoff{
|
||||||
Jitter: 0.1,
|
Jitter: 0.1,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var defaultSlaPolicy = aurora.SlaPolicy{
|
||||||
|
PercentageSlaPolicy: &aurora.PercentageSlaPolicy{
|
||||||
|
Percentage: 66,
|
||||||
|
DurationSecs: 300,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const defaultSlaDrainTimeoutSecs = 900
|
||||||
|
|
||||||
type TransportProtocol int
|
type TransportProtocol int
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -612,6 +612,39 @@ func TestRealisClient_SLADrainHosts(t *testing.T) {
|
||||||
5*time.Second,
|
5*time.Second,
|
||||||
10*time.Second)
|
10*time.Second)
|
||||||
assert.NoError(t, err)
|
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
|
// Test multiple go routines using a single connection
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue