Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion CONTEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,6 @@ Legacy REST endpoints were removed from OpenAPI and code:
```text
/api/v1/command
/api/v1/procedure
/api/v1/procedures
/api/v1/logs
/api/v1/metrics
/api/v1/pstree
Expand Down
49 changes: 24 additions & 25 deletions api/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -251,9 +251,28 @@ components:
additionalProperties:
$ref: '#/components/schemas/RuntimeUIPackage'

CommandStatusMap:
LockStatus:
type: object
additionalProperties: true
required:
- status
- last_status_change
properties:
status:
type: string
enum: [running, done, error, waiting]
exit_code:
type: integer
nullable: true
last_status_change:
type: integer
format: int64

ProcedureStatusMap:
type: object
additionalProperties:
type: object
additionalProperties:
$ref: '#/components/schemas/LockStatus'

ScrollLogMap:
type: object
Expand Down Expand Up @@ -299,9 +318,8 @@ components:
updated_at:
type: string
format: date-time
commands:
type: object
additionalProperties: true
procedures:
$ref: '#/components/schemas/ProcedureStatusMap'

DeletedScroll:
type: object
Expand Down Expand Up @@ -583,26 +601,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/CommandStatusMap'

/api/v1/scrolls/{id}/procedures:
get:
operationId: getScrollProcedures
summary: Get procedure state
tags: [runtime, daemon]
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Procedure state
content:
application/json:
schema:
$ref: '#/components/schemas/CommandStatusMap'
$ref: '#/components/schemas/ProcedureStatusMap'

/api/v1/scrolls/{id}/consoles:
get:
Expand Down
104 changes: 0 additions & 104 deletions apps/druid/adapters/cli/client/command.go

This file was deleted.

22 changes: 6 additions & 16 deletions apps/druid/adapters/cli/client/procedure.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ var ProcedureListCommand = &cobra.Command{
if err != nil {
return err
}
statuses, err := daemon.GetScrollProcedures(cmd.Context(), args[0])
statuses, err := daemon.GetScrollQueue(cmd.Context(), args[0])
if err != nil {
return err
}
Expand Down Expand Up @@ -70,7 +70,7 @@ type procedureRow struct {
console string
}

func procedureRows(file *domain.File, statuses map[string]domain.ScrollLockStatus, consoles map[string]domain.Console) []procedureRow {
func procedureRows(file *domain.File, statuses domain.ProcedureStatusMap, consoles map[string]domain.Console) []procedureRow {
if file == nil {
return nil
}
Expand All @@ -88,11 +88,7 @@ func procedureRows(file *domain.File, statuses map[string]domain.ScrollLockStatu
}
for idx, procedure := range definition.Procedures {
name := domain.ProcedureName(command, idx, procedure)
procedureStatusValue := ""
if name != command {
procedureStatusValue = string(statuses[name])
}
status := procedureStatus(name, procedureStatusValue, string(statuses[command]), consoles)
status := procedureStatus(name, statuses[command][name], consoles)
console := "no"
if _, ok := consoles[name]; ok {
console = "yes"
Expand All @@ -103,9 +99,9 @@ func procedureRows(file *domain.File, statuses map[string]domain.ScrollLockStatu
return rows
}

func procedureStatus(name string, status string, commandStatus string, consoles map[string]domain.Console) string {
if status != "" {
return status
func procedureStatus(name string, status domain.LockStatus, consoles map[string]domain.Console) string {
if status.Status != "" {
return string(status.Status)
}
if console, ok := consoles[name]; ok {
if console.Exit == nil {
Expand All @@ -116,12 +112,6 @@ func procedureStatus(name string, status string, commandStatus string, consoles
}
return string(domain.ScrollLockStatusError)
}
if commandStatus == string(domain.ScrollLockStatusRunning) {
return string(domain.ScrollLockStatusWaiting)
}
if commandStatus != "" {
return commandStatus
}
return "-"
}

Expand Down
62 changes: 11 additions & 51 deletions apps/druid/adapters/cli/client/procedure_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@ func TestProcedureRowsCombineConfigStatusAndConsoles(t *testing.T) {
},
},
}}
rows := procedureRows(file, map[string]domain.ScrollLockStatus{
"start": domain.ScrollLockStatusWaiting,
"coldstart": domain.ScrollLockStatusRunning,
rows := procedureRows(file, domain.ProcedureStatusMap{
"start": {
"coldstart": {Status: domain.ScrollLockStatusRunning},
"start.1": {Status: domain.ScrollLockStatusWaiting},
},
}, map[string]domain.Console{
"coldstart": {},
})
Expand All @@ -48,8 +50,10 @@ func TestProcedureRowsDoNotMarkEveryProcedureRunningFromCommandStatus(t *testing
},
},
}}
rows := procedureRows(file, map[string]domain.ScrollLockStatus{
"start": domain.ScrollLockStatusRunning,
rows := procedureRows(file, domain.ProcedureStatusMap{
"start": {
"start": {Status: domain.ScrollLockStatusWaiting},
},
}, map[string]domain.Console{
"coldstart": {},
})
Expand All @@ -62,38 +66,6 @@ func TestProcedureRowsDoNotMarkEveryProcedureRunningFromCommandStatus(t *testing
}
}

func TestCommandRunCallsDaemon(t *testing.T) {
daemon := &fakeProcedureDaemon{}
withClientConfig(t, Config{Daemon: func() (RuntimeDaemon, error) { return daemon, nil }})

if err := CommandRunCommand.RunE(&cobra.Command{}, []string{"scroll-a", "start"}); err != nil {
t.Fatal(err)
}
if daemon.runScroll != "scroll-a" || daemon.runCommand != "start" {
t.Fatalf("run scroll=%q command=%q", daemon.runScroll, daemon.runCommand)
}
}

func TestCommandRowsCombineConfigAndQueue(t *testing.T) {
file := &domain.File{Commands: map[string]*domain.CommandInstructionSet{
"install": {Run: domain.RunModeOnce, Procedures: []*domain.Procedure{{}}},
"start": {Run: domain.RunModeRestart, Procedures: []*domain.Procedure{{}, {}}},
}}
rows := commandRows(file, map[string]domain.ScrollLockStatus{
"start": domain.ScrollLockStatusWaiting,
})

if len(rows) != 2 {
t.Fatalf("rows = %#v", rows)
}
if rows[0] != (commandRow{command: "install", status: "-", runMode: "once", procedures: 1}) {
t.Fatalf("row 0 = %#v", rows[0])
}
if rows[1] != (commandRow{command: "start", status: "waiting", runMode: "restart", procedures: 2}) {
t.Fatalf("row 1 = %#v", rows[1])
}
}

func TestProcedureAttachRequiresActiveConsole(t *testing.T) {
daemon := &fakeProcedureDaemon{consoles: map[string]domain.Console{"start": {}}}
var attachedScroll, attachedConsole string
Expand Down Expand Up @@ -125,9 +97,7 @@ func withClientConfig(t *testing.T, cfg Config) {
}

type fakeProcedureDaemon struct {
runScroll string
runCommand string
consoles map[string]domain.Console
consoles map[string]domain.Console
}

func (f *fakeProcedureDaemon) CreateScroll(ctx context.Context, name string, artifact string, registryCredentials []api.RegistryCredential) (*api.RuntimeScroll, error) {
Expand All @@ -150,21 +120,11 @@ func (f *fakeProcedureDaemon) DeleteScroll(ctx context.Context, id string) (*api
return nil, nil
}

func (f *fakeProcedureDaemon) RunScrollCommand(ctx context.Context, id string, command string) (*api.RuntimeScroll, error) {
f.runScroll = id
f.runCommand = command
return &api.RuntimeScroll{Id: id}, nil
}

func (f *fakeProcedureDaemon) GetScrollConfig(ctx context.Context, id string) (*domain.File, error) {
return &domain.File{}, nil
}

func (f *fakeProcedureDaemon) GetScrollProcedures(ctx context.Context, id string) (map[string]domain.ScrollLockStatus, error) {
return nil, nil
}

func (f *fakeProcedureDaemon) GetScrollQueue(ctx context.Context, id string) (map[string]domain.ScrollLockStatus, error) {
func (f *fakeProcedureDaemon) GetScrollQueue(ctx context.Context, id string) (domain.ProcedureStatusMap, error) {
return nil, nil
}

Expand Down
6 changes: 1 addition & 5 deletions apps/druid/adapters/cli/client/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,8 @@ type RuntimeDaemon interface {
ListScrolls(ctx context.Context) ([]api.RuntimeScroll, error)
GetScroll(ctx context.Context, id string) (*api.RuntimeScroll, error)
DeleteScroll(ctx context.Context, id string) (*api.DeletedScroll, error)
RunScrollCommand(ctx context.Context, id string, command string) (*api.RuntimeScroll, error)
GetScrollConfig(ctx context.Context, id string) (*domain.File, error)
GetScrollQueue(ctx context.Context, id string) (map[string]domain.ScrollLockStatus, error)
GetScrollProcedures(ctx context.Context, id string) (map[string]domain.ScrollLockStatus, error)
GetScrollQueue(ctx context.Context, id string) (domain.ProcedureStatusMap, error)
GetScrollConsoles(ctx context.Context, id string) (map[string]domain.Console, error)
GetScrollPorts(ctx context.Context, id string) ([]api.RuntimePortStatus, error)
StartScroll(ctx context.Context, id string) (*api.RuntimeScroll, error)
Expand All @@ -43,10 +41,8 @@ var config Config
func Register(root *cobra.Command, cfg Config) {
config = cfg
RoutingCommand.AddCommand(RoutingTargetsCommand, RoutingApplyCommand)
CommandCommand.AddCommand(CommandRunCommand, CommandListCommand)
ProcedureCommand.AddCommand(ProcedureListCommand, ProcedureAttachCommand)
root.AddCommand(
CommandCommand,
CreateCommand,
DeleteCommand,
DescribeCommand,
Expand Down
Loading
Loading