parent
dbb08ded90
commit
8bd3957247
3 changed files with 53 additions and 3 deletions
|
@ -31,7 +31,7 @@ import (
|
||||||
"github.com/paypal/gorealis/response"
|
"github.com/paypal/gorealis/response"
|
||||||
)
|
)
|
||||||
|
|
||||||
var cmd, executor, url, clustersConfig, clusterName, updateId, username, password, zkUrl, hostList string
|
var cmd, executor, url, clustersConfig, clusterName, updateId, username, password, zkUrl, hostList, role string
|
||||||
|
|
||||||
var CONNECTION_TIMEOUT = 20000
|
var CONNECTION_TIMEOUT = 20000
|
||||||
|
|
||||||
|
@ -46,6 +46,8 @@ func init() {
|
||||||
flag.StringVar(&password, "password", "secret", "Password to use for authorization")
|
flag.StringVar(&password, "password", "secret", "Password to use for authorization")
|
||||||
flag.StringVar(&zkUrl, "zkurl", "", "zookeeper url")
|
flag.StringVar(&zkUrl, "zkurl", "", "zookeeper url")
|
||||||
flag.StringVar(&hostList, "hostList", "", "Comma separated list of hosts to operate on")
|
flag.StringVar(&hostList, "hostList", "", "Comma separated list of hosts to operate on")
|
||||||
|
flag.StringVar(&role, "role", "", "owner role to use")
|
||||||
|
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
// Attempt to load leader from zookeeper using a
|
// Attempt to load leader from zookeeper using a
|
||||||
|
@ -593,6 +595,16 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Print(result.String())
|
fmt.Print(result.String())
|
||||||
|
case "getJobs":
|
||||||
|
fmt.Println("GetJobs...role: ", role)
|
||||||
|
_, result, err := r.GetJobs(role)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Print("error: %+v\n", err.Error())
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
fmt.Println("map size: ", len(result.Configs))
|
||||||
|
fmt.Println(result.String())
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fmt.Println("Command not supported")
|
fmt.Println("Command not supported")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
|
31
realis.go
31
realis.go
|
@ -47,6 +47,7 @@ type Realis interface {
|
||||||
GetJobUpdateSummaries(jobUpdateQuery *aurora.JobUpdateQuery) (*aurora.Response, error)
|
GetJobUpdateSummaries(jobUpdateQuery *aurora.JobUpdateQuery) (*aurora.Response, error)
|
||||||
GetTaskStatus(query *aurora.TaskQuery) ([]*aurora.ScheduledTask, error)
|
GetTaskStatus(query *aurora.TaskQuery) ([]*aurora.ScheduledTask, error)
|
||||||
GetTasksWithoutConfigs(query *aurora.TaskQuery) ([]*aurora.ScheduledTask, error)
|
GetTasksWithoutConfigs(query *aurora.TaskQuery) ([]*aurora.ScheduledTask, error)
|
||||||
|
GetJobs(role string) (*aurora.Response, *aurora.GetJobsResult_, error)
|
||||||
JobUpdateDetails(updateQuery aurora.JobUpdateQuery) (*aurora.Response, error)
|
JobUpdateDetails(updateQuery aurora.JobUpdateQuery) (*aurora.Response, error)
|
||||||
KillJob(key *aurora.JobKey) (*aurora.Response, error)
|
KillJob(key *aurora.JobKey) (*aurora.Response, error)
|
||||||
KillInstances(key *aurora.JobKey, instances ...int32) (*aurora.Response, error)
|
KillInstances(key *aurora.JobKey, instances ...int32) (*aurora.Response, error)
|
||||||
|
@ -548,6 +549,33 @@ func (r *realisClient) GetJobUpdateSummaries(jobUpdateQuery *aurora.JobUpdateQue
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *realisClient) GetJobs(role string) (*aurora.Response, *aurora.GetJobsResult_, error) {
|
||||||
|
var resp *aurora.Response
|
||||||
|
var result *aurora.GetJobsResult_
|
||||||
|
var clientErr error
|
||||||
|
|
||||||
|
retryErr := ExponentialBackoff(*r.config.backoff, func() (bool, error) {
|
||||||
|
resp, clientErr = r.thriftCallHelper(func() (*aurora.Response, error) {
|
||||||
|
return r.readonlyClient.GetJobs(role)
|
||||||
|
})
|
||||||
|
|
||||||
|
if clientErr != nil {
|
||||||
|
return false, clientErr
|
||||||
|
}
|
||||||
|
return true, nil
|
||||||
|
})
|
||||||
|
|
||||||
|
if resp != nil && resp.GetResult_() != nil {
|
||||||
|
result = resp.GetResult_().GetJobsResult_
|
||||||
|
}
|
||||||
|
|
||||||
|
if retryErr != nil {
|
||||||
|
return nil, result, errors.Wrap(clientErr, retryErr.Error()+": Error getting Jobs from Aurora Scheduler")
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp, result, nil
|
||||||
|
}
|
||||||
|
|
||||||
// Kill specific instances of a job.
|
// Kill specific instances of a job.
|
||||||
func (r *realisClient) KillInstances(key *aurora.JobKey, instances ...int32) (*aurora.Response, error) {
|
func (r *realisClient) KillInstances(key *aurora.JobKey, instances ...int32) (*aurora.Response, error) {
|
||||||
|
|
||||||
|
@ -696,6 +724,9 @@ func (r *realisClient) DescheduleCronJob(key *aurora.JobKey) (*aurora.Response,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func (r *realisClient) StartCronJob(key *aurora.JobKey) (*aurora.Response, error) {
|
func (r *realisClient) StartCronJob(key *aurora.JobKey) (*aurora.Response, error) {
|
||||||
var resp *aurora.Response
|
var resp *aurora.Response
|
||||||
var clientErr error
|
var clientErr error
|
||||||
|
|
|
@ -83,9 +83,10 @@ func TestGetCACerts(t *testing.T) {
|
||||||
|
|
||||||
func TestRealisClient_CreateJob_Thermos(t *testing.T) {
|
func TestRealisClient_CreateJob_Thermos(t *testing.T) {
|
||||||
|
|
||||||
|
role := "vagrant"
|
||||||
job := realis.NewJob().
|
job := realis.NewJob().
|
||||||
Environment("prod").
|
Environment("prod").
|
||||||
Role("vagrant").
|
Role(role).
|
||||||
Name("create_thermos_job_test").
|
Name("create_thermos_job_test").
|
||||||
ExecutorName(aurora.AURORA_EXECUTOR_NAME).
|
ExecutorName(aurora.AURORA_EXECUTOR_NAME).
|
||||||
ExecutorData(string(thermosPayload)).
|
ExecutorData(string(thermosPayload)).
|
||||||
|
@ -109,7 +110,13 @@ func TestRealisClient_CreateJob_Thermos(t *testing.T) {
|
||||||
assert.True(t, success)
|
assert.True(t, success)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Tasks must exist for it to be killed
|
//Fetch all obs
|
||||||
|
_, result, err := r.GetJobs(role)
|
||||||
|
fmt.Printf("GetJobs length: %+v \n", len(result.Configs))
|
||||||
|
assert.Equal(t, len(result.Configs), 1)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Tasks must exist for it to, be killed
|
||||||
t.Run("TestRealisClient_KillJob_Thermos", func(t *testing.T) {
|
t.Run("TestRealisClient_KillJob_Thermos", func(t *testing.T) {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
resp, err := r.KillJob(job.JobKey())
|
resp, err := r.KillJob(job.JobKey())
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue