Merge jira-integration branch to main (#4949)

This commit is contained in:
Martin Angers
2022-04-05 12:56:15 -04:00
committed by GitHub
parent 536e828f43
commit f28dc10a51
14 changed files with 887 additions and 305 deletions
+70
View File
@@ -0,0 +1,70 @@
package mysql
import (
"context"
"github.com/fleetdm/fleet/v4/server/fleet"
"github.com/jmoiron/sqlx"
)
func (ds *Datastore) NewJob(ctx context.Context, job *fleet.Job) (*fleet.Job, error) {
query := `
INSERT INTO jobs (
name,
args,
state,
retries,
error
)
VALUES (?, ?, ?, ?, ?)
`
result, err := ds.writer.ExecContext(ctx, query, job.Name, job.Args, job.State, job.Retries, job.Error)
if err != nil {
return nil, err
}
id, _ := result.LastInsertId()
job.ID = uint(id)
return job, nil
}
func (ds *Datastore) GetQueuedJobs(ctx context.Context, maxNumJobs int) ([]*fleet.Job, error) {
query := `
SELECT
id, created_at, updated_at, name, args, state, retries, error
FROM
jobs
WHERE
state = ?
ORDER BY
created_at asc
LIMIT ?
`
var jobs []*fleet.Job
err := sqlx.SelectContext(ctx, ds.reader, &jobs, query, fleet.JobStateQueued, maxNumJobs)
if err != nil {
return nil, err
}
return jobs, nil
}
func (ds *Datastore) UpdateJob(ctx context.Context, id uint, job *fleet.Job) (*fleet.Job, error) {
query := `
UPDATE jobs
SET
state = ?,
retries = ?,
error = ?
WHERE
id = ?
`
_, err := ds.writer.ExecContext(ctx, query, job.State, job.Retries, job.Error, job.ID)
if err != nil {
return nil, err
}
return job, nil
}
@@ -0,0 +1,35 @@
package tables
import (
"database/sql"
"github.com/pkg/errors"
)
func init() {
MigrationClient.AddMigration(Up_20220330100659, Down_20220330100659)
}
func Up_20220330100659(tx *sql.Tx) error {
_, err := tx.Exec(`
CREATE TABLE jobs (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
name VARCHAR(255) NOT NULL,
args JSON,
state VARCHAR(255) NOT NULL,
retries INT NOT NULL DEFAULT 0,
error TEXT
)
`)
if err != nil {
return errors.Wrapf(err, "create table")
}
return nil
}
func Down_20220330100659(tx *sql.Tx) error {
return nil
}
@@ -0,0 +1,26 @@
package tables
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestUp_20220330100659(t *testing.T) {
db := applyUpToPrev(t)
applyNext(t, db)
query := `
INSERT INTO jobs (
name,
args,
state,
retries,
error
)
VALUES (?, ?, ?, ?, ?)
`
_, err := db.Exec(query, "test", nil, "queued", 0, "")
require.NoError(t, err)
}
File diff suppressed because one or more lines are too long