github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/internal/acceptance/openstack/workflow/v2/workflow.go (about) 1 package v2 2 3 import ( 4 "context" 5 "fmt" 6 "strings" 7 "testing" 8 9 "github.com/vnpaycloud-console/gophercloud/v2" 10 "github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/tools" 11 "github.com/vnpaycloud-console/gophercloud/v2/openstack/workflow/v2/workflows" 12 th "github.com/vnpaycloud-console/gophercloud/v2/testhelper" 13 ) 14 15 // GetEchoWorkflowDefinition returns a simple workflow definition that does nothing except a simple "echo" command. 16 func GetEchoWorkflowDefinition(workflowName string) string { 17 return fmt.Sprintf(`--- 18 version: '2.0' 19 20 %s: 21 description: Simple workflow example 22 type: direct 23 tags: 24 - tag1 25 - tag2 26 27 input: 28 - msg 29 30 tasks: 31 test: 32 action: std.echo output="<%% $.msg %%>"`, workflowName) 33 } 34 35 // CreateWorkflow creates a workflow on Mistral API. 36 // The created workflow is a dummy workflow that performs a simple echo. 37 func CreateWorkflow(t *testing.T, client *gophercloud.ServiceClient) (*workflows.Workflow, error) { 38 workflowName := tools.RandomString("workflow_echo_", 5) 39 40 definition := GetEchoWorkflowDefinition(workflowName) 41 42 t.Logf("Attempting to create workflow: %s", workflowName) 43 44 opts := &workflows.CreateOpts{ 45 Namespace: "some-namespace", 46 Scope: "private", 47 Definition: strings.NewReader(definition), 48 } 49 workflowList, err := workflows.Create(context.TODO(), client, opts).Extract() 50 if err != nil { 51 return nil, err 52 } 53 th.AssertEquals(t, 1, len(workflowList)) 54 55 workflow := workflowList[0] 56 57 t.Logf("Workflow created: %s", workflowName) 58 59 th.AssertEquals(t, workflowName, workflow.Name) 60 61 return &workflow, nil 62 } 63 64 // DeleteWorkflow deletes the given workflow. 65 func DeleteWorkflow(t *testing.T, client *gophercloud.ServiceClient, workflow *workflows.Workflow) { 66 err := workflows.Delete(context.TODO(), client, workflow.ID).ExtractErr() 67 if err != nil { 68 t.Fatalf("Unable to delete workflows %s: %v", workflow.Name, err) 69 } 70 71 t.Logf("Deleted workflow: %s", workflow.Name) 72 } 73 74 // GetWorkflow gets a workflow. 75 func GetWorkflow(t *testing.T, client *gophercloud.ServiceClient, id string) (*workflows.Workflow, error) { 76 workflow, err := workflows.Get(context.TODO(), client, id).Extract() 77 if err != nil { 78 t.Fatalf("Unable to get workflow %s: %v", id, err) 79 } 80 t.Logf("Workflow get: %s", workflow.Name) 81 return workflow, err 82 } 83 84 // ListWorkflows lists the workflows. 85 func ListWorkflows(t *testing.T, client *gophercloud.ServiceClient, opts workflows.ListOptsBuilder) ([]workflows.Workflow, error) { 86 allPages, err := workflows.List(client, opts).AllPages(context.TODO()) 87 if err != nil { 88 t.Fatalf("Unable to list workflows: %v", err) 89 } 90 workflowsList, err := workflows.ExtractWorkflows(allPages) 91 if err != nil { 92 t.Fatalf("Unable to extract workflows: %v", err) 93 } 94 t.Logf("Workflows list find, length: %d", len(workflowsList)) 95 return workflowsList, err 96 }