From c3f9164364a006b15ad74c722ea6af1996b3300b Mon Sep 17 00:00:00 2001 From: mls-361 Date: Fri, 14 May 2021 19:11:22 +0200 Subject: [PATCH] =?UTF-8?q?En=20cours=20de=20d=C3=A9veloppement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/demo/demo.go | 35 +++----------------- internal/demo/jobs.go | 76 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 31 deletions(-) create mode 100644 internal/demo/jobs.go diff --git a/internal/demo/demo.go b/internal/demo/demo.go index ce6d0fd..20f15f4 100644 --- a/internal/demo/demo.go +++ b/internal/demo/demo.go @@ -7,8 +7,6 @@ package demo import ( - "time" - "forge.chapril.org/armen/runner" "forge.chapril.org/armen/workers" @@ -22,35 +20,6 @@ type demo struct { var _demo *demo -func (d *demo) panic(_ *runner.Job) { - panic("it's only a test") //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -} - -func (d *demo) pending(job *runner.Job) { - v, ok := job.Private["key"] - if ok { - value, ok := v.(int) - if ok { - if value == 3 { - // end - return - } - - job.SetPrivate("key", value+1) - } else { - job.Failed().SetError("bug") - } - } else { - job.SetPrivate("key", 0) - } - - job.Pending().SetDuration(time.Second) -} - -func (d *demo) succeeded(_ *runner.Job) { - // nothing to do -} - func Build(ccs *components.Components) error { if _, ok := ccs.Application.LookupEnv("CONFIG"); ok { return nil @@ -78,6 +47,10 @@ func Build(ccs *components.Components) error { return err } + if err := r.AddJobHandler("workflow", runner.JHF(d.workflow)); err != nil { + return err + } + p, err := workers.NewPool(&workers.Config{ Logger: ccs.Logger, Runner: r, diff --git a/internal/demo/jobs.go b/internal/demo/jobs.go new file mode 100644 index 0000000..605aee4 --- /dev/null +++ b/internal/demo/jobs.go @@ -0,0 +1,76 @@ +/* +------------------------------------------------------------------------------------------------------------------------ +####### demo ####### Copyright (c) 2021 mls-361 #################################################### MIT License ####### +------------------------------------------------------------------------------------------------------------------------ +*/ + +package demo + +import ( + "time" + + "forge.chapril.org/armen/jw" + "forge.chapril.org/armen/runner" +) + +func (d *demo) panic(_ *runner.Job) { + panic("it's only a test") //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +} + +func (d *demo) pending(job *runner.Job) { + v, ok := job.Private["count"] + if ok { + count, ok := v.(int) + if ok { + if count == 3 { + // end + return + } + + job.SetPrivate("count", count+1) + } else { + job.Failed().SetError("bug") + } + } else { + job.SetPrivate("count", 0) + } + + job.Pending().SetDuration(time.Second) +} + +func (d *demo) succeeded(_ *runner.Job) { + // nothing to do +} + +func (d *demo) workflow(job *runner.Job) { + allSteps := map[string]*jw.Step{ + "stepA": &jw.Step{ + Namespace: "demo", + Type: "succeeded", + Next: map[string]interface{}{"succeeded": "stepB"}, + }, + "stepB": &jw.Step{ + Namespace: "demo", + Type: "pending", + }, + } + + _, err := job.Factory.NewWorkflow("stepA", allSteps). + SetDescription("Demonstration worflow"). + SetOrigin("demo"). + CreateWorkflow() + + if err != nil { + job.Logger.Error( ////////////////////////////////////////////////////////////////////////////////////////////// + "Create workflow error", + "reason", err, + ) + + job.Failed().SetError(err.Error()) + return + } +} + +/* +######################################################################################################## @(°_°)@ ####### +*/