Store workers in database when registering
This commit is contained in:
parent
931fd1a24c
commit
28a56f3d91
10
Makefile
10
Makefile
@ -28,11 +28,13 @@ with-deps:
|
||||
go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen
|
||||
make -s application
|
||||
|
||||
application: ${RESOURCES}
|
||||
go generate ${PKG}/...
|
||||
application: ${RESOURCES} generate
|
||||
go build -v ${BUILD_FLAGS} ${PKG}/cmd/flamenco-manager-poc
|
||||
go build -v ${BUILD_FLAGS} ${PKG}/cmd/flamenco-worker-poc
|
||||
|
||||
generate:
|
||||
go generate ${PKG}/...
|
||||
|
||||
# resource.syso: resource/thermogui.ico resource/versioninfo.json
|
||||
# goversioninfo -icon=resource/thermogui.ico -64 resource/versioninfo.json
|
||||
|
||||
@ -53,7 +55,7 @@ swagger-ui:
|
||||
@echo
|
||||
@echo 'Now update pkg/api/static/swagger-ui/index.html to have url: "/api/openapi3.json",'
|
||||
|
||||
test:
|
||||
test: generate
|
||||
go test -short ${PKG_LIST}
|
||||
|
||||
vet:
|
||||
@ -70,7 +72,7 @@ clean:
|
||||
go generate ./...
|
||||
|
||||
# static: vet lint resource.syso
|
||||
static: vet lint
|
||||
static: vet lint generate
|
||||
CGO_ENABLED=0 go build -v -o flamenco-manager-poc-static -tags netgo -ldflags="-extldflags \"-static\" -w -s ${LDFLAGS}" ${PKG}/cmd/flamenco-manager-poc
|
||||
CGO_ENABLED=0 go build -v -o flamenco-worker-poc-static -tags netgo -ldflags="-extldflags \"-static\" -w -s ${LDFLAGS}" ${PKG}/cmd/flamenco-worker-poc
|
||||
|
||||
|
@ -26,18 +26,22 @@ import (
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"gitlab.com/blender/flamenco-ng-poc/internal/manager/job_compilers"
|
||||
"gitlab.com/blender/flamenco-ng-poc/internal/manager/persistence"
|
||||
"gitlab.com/blender/flamenco-ng-poc/pkg/api"
|
||||
)
|
||||
|
||||
type Flamenco struct {
|
||||
jobCompiler JobCompiler
|
||||
persist JobPersistenceService
|
||||
persist PersistenceService
|
||||
}
|
||||
|
||||
type JobPersistenceService interface {
|
||||
type PersistenceService interface {
|
||||
// StoreJob stores a job in the persistence layer.
|
||||
StoreJob(ctx context.Context, authoredJob job_compilers.AuthoredJob) error
|
||||
FetchJob(ctx context.Context, jobID string) (*api.Job, error)
|
||||
|
||||
CreateWorker(ctx context.Context, w *persistence.Worker) error
|
||||
FetchWorker(ctx context.Context, uuid string) (*persistence.Worker, error)
|
||||
}
|
||||
|
||||
type JobCompiler interface {
|
||||
@ -48,7 +52,7 @@ type JobCompiler interface {
|
||||
var _ api.ServerInterface = (*Flamenco)(nil)
|
||||
|
||||
// NewFlamenco creates a new Flamenco service, using the given JobCompiler.
|
||||
func NewFlamenco(jc JobCompiler, jps JobPersistenceService) *Flamenco {
|
||||
func NewFlamenco(jc JobCompiler, jps PersistenceService) *Flamenco {
|
||||
return &Flamenco{
|
||||
jobCompiler: jc,
|
||||
persist: jps,
|
||||
|
@ -22,14 +22,17 @@ package api_impl
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/rs/zerolog/log"
|
||||
|
||||
"gitlab.com/blender/flamenco-ng-poc/internal/manager/persistence"
|
||||
"gitlab.com/blender/flamenco-ng-poc/pkg/api"
|
||||
)
|
||||
|
||||
// RegisterWorker registers a new worker and stores it in the database.
|
||||
func (f *Flamenco) RegisterWorker(e echo.Context) error {
|
||||
remoteIP := e.RealIP()
|
||||
|
||||
@ -46,17 +49,33 @@ func (f *Flamenco) RegisterWorker(e echo.Context) error {
|
||||
|
||||
logger.Info().Str("nickname", req.Nickname).Msg("registering new worker")
|
||||
|
||||
dbWorker := persistence.Worker{
|
||||
UUID: uuid.New().String(),
|
||||
Name: req.Nickname,
|
||||
Platform: req.Platform,
|
||||
Address: remoteIP,
|
||||
SupportedTaskTypes: strings.Join(req.SupportedTaskTypes, ","),
|
||||
}
|
||||
if err := f.persist.CreateWorker(e.Request().Context(), &dbWorker); err != nil {
|
||||
logger.Warn().Err(err).Msg("error creating new worker in DB")
|
||||
return sendAPIError(e, http.StatusBadRequest, "error registering worker")
|
||||
}
|
||||
|
||||
return e.JSON(http.StatusOK, &api.RegisteredWorker{
|
||||
Id: uuid.New().String(),
|
||||
Nickname: req.Nickname,
|
||||
Platform: req.Platform,
|
||||
Address: remoteIP,
|
||||
Uuid: dbWorker.UUID,
|
||||
Nickname: dbWorker.Name,
|
||||
Address: dbWorker.Address,
|
||||
LastActivity: dbWorker.LastActivity,
|
||||
Platform: dbWorker.Platform,
|
||||
Software: dbWorker.Software,
|
||||
Status: dbWorker.Status,
|
||||
SupportedTaskTypes: strings.Split(dbWorker.SupportedTaskTypes, ","),
|
||||
})
|
||||
}
|
||||
|
||||
func (f *Flamenco) ScheduleTask(e echo.Context) error {
|
||||
return e.JSON(http.StatusOK, &api.AssignedTask{
|
||||
Id: uuid.New().String(),
|
||||
Uuid: uuid.New().String(),
|
||||
Commands: []api.Command{
|
||||
{Name: "echo", Settings: echo.Map{"payload": "Simon says \"Shaders!\""}},
|
||||
{Name: "blender", Settings: echo.Map{"blender_cmd": "/shared/bin/blender"}},
|
||||
|
@ -25,7 +25,7 @@ import (
|
||||
)
|
||||
|
||||
func (db *DB) migrate() error {
|
||||
err := db.gormDB.AutoMigrate(&Job{}, &Task{})
|
||||
err := db.gormDB.AutoMigrate(&Job{}, &Task{}, &Worker{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to automigrate database: %v", err)
|
||||
}
|
||||
|
@ -112,4 +112,6 @@ func TestStoreAuthoredJob(t *testing.T) {
|
||||
assert.NoError(t, tx.Error)
|
||||
|
||||
assert.Len(t, tasks, 3)
|
||||
|
||||
// TODO: test task contents.
|
||||
}
|
||||
|
59
internal/manager/persistence/workers.go
Normal file
59
internal/manager/persistence/workers.go
Normal file
@ -0,0 +1,59 @@
|
||||
package persistence
|
||||
|
||||
/* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* Original Code Copyright (C) 2022 Blender Foundation.
|
||||
*
|
||||
* This file is part of Flamenco.
|
||||
*
|
||||
* Flamenco is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* Flamenco is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* Flamenco. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK ***** */
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"gitlab.com/blender/flamenco-ng-poc/pkg/api"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type Worker struct {
|
||||
gorm.Model
|
||||
UUID string `gorm:"type:char(36);not null;unique;index"`
|
||||
Name string `gorm:"type:varchar(64);not null"`
|
||||
|
||||
Address string `gorm:"type:varchar(39);not null;index"` // 39 = max length of IPv6 address.
|
||||
LastActivity string `gorm:"type:varchar(255);not null"`
|
||||
Platform string `gorm:"type:varchar(16);not null"`
|
||||
Software string `gorm:"type:varchar(32);not null"`
|
||||
Status api.WorkerStatus `gorm:"type:varchar(16);not null"`
|
||||
|
||||
SupportedTaskTypes string `gorm:"type:varchar(255);not null"` // comma-separated list of task types.
|
||||
}
|
||||
|
||||
func (db *DB) CreateWorker(ctx context.Context, w *Worker) error {
|
||||
if err := db.gormDB.Create(w).Error; err != nil {
|
||||
return fmt.Errorf("error creating new worker: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *DB) FetchWorker(ctx context.Context, uuid string) (*Worker, error) {
|
||||
w := Worker{}
|
||||
findResult := db.gormDB.First(&w, "uuid = ?", uuid)
|
||||
if findResult.Error != nil {
|
||||
return nil, findResult.Error
|
||||
}
|
||||
return &w, nil
|
||||
}
|
68
internal/manager/persistence/workers_test.go
Normal file
68
internal/manager/persistence/workers_test.go
Normal file
@ -0,0 +1,68 @@
|
||||
// Package persistence provides the database interface for Flamenco Manager.
|
||||
package persistence
|
||||
|
||||
/* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* Original Code Copyright (C) 2022 Blender Foundation.
|
||||
*
|
||||
* This file is part of Flamenco.
|
||||
*
|
||||
* Flamenco is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* Flamenco is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* Flamenco. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK ***** */
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"gitlab.com/blender/flamenco-ng-poc/pkg/api"
|
||||
"golang.org/x/net/context"
|
||||
)
|
||||
|
||||
func TestCreateFetchWorker(t *testing.T) {
|
||||
db := createTestDB(t)
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 1*time.Second)
|
||||
defer cancel()
|
||||
|
||||
w := Worker{
|
||||
UUID: uuid.New().String(),
|
||||
Name: "дрон",
|
||||
Address: "fe80::5054:ff:fede:2ad7",
|
||||
LastActivity: "",
|
||||
Platform: "linux",
|
||||
Software: "3.0",
|
||||
Status: api.WorkerStatusAwake,
|
||||
SupportedTaskTypes: "blender,ffmpeg,file-management",
|
||||
}
|
||||
|
||||
err := db.CreateWorker(ctx, &w)
|
||||
assert.NoError(t, err)
|
||||
|
||||
fetchedWorker, err := db.FetchWorker(ctx, w.UUID)
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, fetchedWorker)
|
||||
|
||||
// Test contents of fetched job
|
||||
assert.Equal(t, w.UUID, fetchedWorker.UUID)
|
||||
assert.Equal(t, w.Name, fetchedWorker.Name)
|
||||
assert.Equal(t, w.Address, fetchedWorker.Address)
|
||||
assert.Equal(t, w.LastActivity, fetchedWorker.LastActivity)
|
||||
assert.Equal(t, w.Platform, fetchedWorker.Platform)
|
||||
assert.Equal(t, w.Software, fetchedWorker.Software)
|
||||
assert.Equal(t, w.Status, fetchedWorker.Status)
|
||||
|
||||
assert.EqualValues(t, w.SupportedTaskTypes, fetchedWorker.SupportedTaskTypes)
|
||||
}
|
@ -138,23 +138,27 @@ components:
|
||||
RegisteredWorker:
|
||||
type: object
|
||||
properties:
|
||||
id: {type: string, format: uuid}
|
||||
uuid: {type: string, format: uuid}
|
||||
nickname: {type: string}
|
||||
address: {type: string}
|
||||
status: {type: string}
|
||||
status: {$ref: "#/components/schemas/WorkerStatus"}
|
||||
platform: {type: string}
|
||||
last_activity: {type: string}
|
||||
software: {type: string}
|
||||
supported_task_types:
|
||||
type: array
|
||||
items: {type: string}
|
||||
required: [id, nickname, address, status, platform, current_task, last_activity, software, supported_task_types]
|
||||
required: [uuid, nickname, address, status, platform, current_task, last_activity, software, supported_task_types]
|
||||
|
||||
WorkerStatus:
|
||||
type: string
|
||||
enum: [starting, awake, asleep, error, shutting-down, testing]
|
||||
|
||||
AssignedTask:
|
||||
type: object
|
||||
description: AssignedTask is a task as it is received by the Worker.
|
||||
properties:
|
||||
id: {type: string, format: uuid}
|
||||
uuid: {type: string, format: uuid}
|
||||
job: {type: string}
|
||||
user: {type: string}
|
||||
name: {type: string}
|
||||
@ -166,7 +170,7 @@ components:
|
||||
commands:
|
||||
type: array
|
||||
items: {$ref: "#/components/schemas/Command"}
|
||||
required: [id, job, user, name, status, priority, job_priority, job_type, task_type, commands]
|
||||
required: [uuid, job, user, name, status, priority, job_priority, job_type, task_type, commands]
|
||||
|
||||
JobStatus:
|
||||
type: string
|
||||
|
@ -18,50 +18,50 @@ import (
|
||||
// Base64 encoded, gzipped, json marshaled Swagger object
|
||||
var swaggerSpec = []string{
|
||||
|
||||
"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",
|
||||
"///WNQTcViMAAA==",
|
||||
"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",
|
||||
}
|
||||
|
||||
// GetSwagger returns the content of the embedded swagger specification file
|
||||
|
@ -89,10 +89,24 @@ const (
|
||||
TaskStatusSoftFailed TaskStatus = "soft-failed"
|
||||
)
|
||||
|
||||
// Defines values for WorkerStatus.
|
||||
const (
|
||||
WorkerStatusAsleep WorkerStatus = "asleep"
|
||||
|
||||
WorkerStatusAwake WorkerStatus = "awake"
|
||||
|
||||
WorkerStatusError WorkerStatus = "error"
|
||||
|
||||
WorkerStatusShuttingDown WorkerStatus = "shutting-down"
|
||||
|
||||
WorkerStatusStarting WorkerStatus = "starting"
|
||||
|
||||
WorkerStatusTesting WorkerStatus = "testing"
|
||||
)
|
||||
|
||||
// AssignedTask is a task as it is received by the Worker.
|
||||
type AssignedTask struct {
|
||||
Commands []Command `json:"commands"`
|
||||
Id string `json:"id"`
|
||||
Job string `json:"job"`
|
||||
JobPriority int `json:"job_priority"`
|
||||
JobType string `json:"job_type"`
|
||||
@ -101,6 +115,7 @@ type AssignedTask struct {
|
||||
Status TaskStatus `json:"status"`
|
||||
TaskType string `json:"task_type"`
|
||||
User string `json:"user"`
|
||||
Uuid string `json:"uuid"`
|
||||
}
|
||||
|
||||
// Single setting of a Job types.
|
||||
@ -191,14 +206,14 @@ type JobStatus string
|
||||
|
||||
// RegisteredWorker defines model for RegisteredWorker.
|
||||
type RegisteredWorker struct {
|
||||
Address string `json:"address"`
|
||||
Id string `json:"id"`
|
||||
LastActivity string `json:"last_activity"`
|
||||
Nickname string `json:"nickname"`
|
||||
Platform string `json:"platform"`
|
||||
Software string `json:"software"`
|
||||
Status string `json:"status"`
|
||||
SupportedTaskTypes []string `json:"supported_task_types"`
|
||||
Address string `json:"address"`
|
||||
LastActivity string `json:"last_activity"`
|
||||
Nickname string `json:"nickname"`
|
||||
Platform string `json:"platform"`
|
||||
Software string `json:"software"`
|
||||
Status WorkerStatus `json:"status"`
|
||||
SupportedTaskTypes []string `json:"supported_task_types"`
|
||||
Uuid string `json:"uuid"`
|
||||
}
|
||||
|
||||
// SecurityError defines model for SecurityError.
|
||||
@ -227,6 +242,9 @@ type WorkerRegistration struct {
|
||||
SupportedTaskTypes []string `json:"supported_task_types"`
|
||||
}
|
||||
|
||||
// WorkerStatus defines model for WorkerStatus.
|
||||
type WorkerStatus string
|
||||
|
||||
// SubmitJobJSONBody defines parameters for SubmitJob.
|
||||
type SubmitJobJSONBody SubmittedJob
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user