Skip to content

Commit

Permalink
initial client crud for jobs
Browse files Browse the repository at this point in the history
  • Loading branch information
jgramoll committed Jul 9, 2019
1 parent 758dc47 commit 3eb44f3
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 11 deletions.
2 changes: 1 addition & 1 deletion client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ func (client *Client) NewRequestWithBody(method string, path string, data interf
if err != nil {
return nil, err
}
req.Header.Add("Content-Type", "text/xml;charset=UTF-8")
req.Header.Add("Content-Type", "application/xml;charset=UTF-8")
return req, nil
}

Expand Down
3 changes: 3 additions & 0 deletions client/job_config.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package client

import "encoding/xml"

// JobConfig
type JobConfig struct {
XMLName xml.Name `xml:"flow-definition"`
// actions
Description string `xml:"description"`
// keepDependencies
Expand Down
61 changes: 53 additions & 8 deletions client/job_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ type JobsResponse struct {
Jobs *[]*Job `xml:"job"`
}

func fullName(folder string, jobName string) string {
return fmt.Sprintf("%s/job/%s", folder, jobName)
}

// GetJobs get all jobs
func (service *JobService) GetJobs() (*[]*Job, error) {
path := "/api/xml?tree=jobs[name]"
Expand All @@ -30,10 +34,8 @@ func (service *JobService) GetJobs() (*[]*Job, error) {
return response.Jobs, nil
}

func (service *JobService) GetJob(jobName string) (*Job, error) {
path := fmt.Sprintf(
"/job/%s/api/xml",
jobName)
func (service *JobService) GetJob(folder, jobName string) (*Job, error) {
path := fmt.Sprintf("/%s/api/xml", fullName(folder, jobName))
req, err := service.NewRequest("GET", path)
if err != nil {
return nil, err
Expand All @@ -48,10 +50,8 @@ func (service *JobService) GetJob(jobName string) (*Job, error) {
return &response, nil
}

func (service *JobService) GetJobConfig(jobName string) (*JobConfig, error) {
path := fmt.Sprintf(
"/job/%s/config.xml",
jobName)
func (service *JobService) GetJobConfig(folder string, jobName string) (*JobConfig, error) {
path := fmt.Sprintf("/%s/config.xml", fullName(folder, jobName))
req, err := service.NewRequest("GET", path)
if err != nil {
return nil, err
Expand All @@ -65,3 +65,48 @@ func (service *JobService) GetJobConfig(jobName string) (*JobConfig, error) {

return &response, nil
}

func (service *JobService) CreateJob(folder string, jobName string, config *JobConfig) error {
path := fmt.Sprintf("/%s/createItem?name=%s", folder, jobName)
req, err := service.NewRequestWithBody("POST", path, config)
if err != nil {
return err
}

_, respErr := service.Do(req)
if respErr != nil {
return respErr
}

return nil
}

func (service *JobService) UpdateJob(folder string, jobName string, jobConfig *JobConfig) error {
path := fmt.Sprintf("/%s/config.xml", fullName(folder, jobName))
req, err := service.NewRequestWithBody("POST", path, jobConfig)
if err != nil {
return err
}

_, respErr := service.Do(req)
if respErr != nil {
return respErr
}

return nil
}

func (service *JobService) DeleteJob(folder string, jobName string) error {
path := fmt.Sprintf("/%s/doDelete", fullName(folder, jobName))
req, err := service.NewRequest("POST", path)
if err != nil {
return err
}

_, respErr := service.Do(req)
if respErr != nil {
return respErr
}

return nil
}
26 changes: 24 additions & 2 deletions client/job_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (

var jobService *JobService

const folder string = "job/Bridge%20Career"

func init() {
// rand.Seed(time.Now().UTC().UnixNano())
jobService = &JobService{newTestClient()}
Expand All @@ -23,7 +25,7 @@ func TestGetJobs(t *testing.T) {
}

func TestGetJob(t *testing.T) {
jobConfig, err := jobService.GetJob("Bridge%20Career/job/migrations")
jobConfig, err := jobService.GetJob(folder, "migrations")
if err != nil {
t.Fatal(err)
}
Expand All @@ -33,8 +35,28 @@ func TestGetJob(t *testing.T) {
}
}

func TestCreateJob(t *testing.T) {
name := "my_test_job"
config := JobConfig{}
err := jobService.CreateJob("job/Bridge%20Career/", name, &config)
if err != nil {
t.Fatal(err)
}

config.Description = "my new desc 3"
err = jobService.UpdateJob(folder, name, &config)
if err != nil {
t.Fatal(err)
}

err = jobService.DeleteJob("job/Bridge%20Career/", name)
if err != nil {
t.Fatal(err)
}
}

func TestGetJobConfig(t *testing.T) {
jobConfig, err := jobService.GetJobConfig("Bridge%20Career/job/migrations")
jobConfig, err := jobService.GetJobConfig(folder, "migrations")
if err != nil {
t.Fatal(err)
}
Expand Down

0 comments on commit 3eb44f3

Please sign in to comment.