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