github.com/randomtask1155/cli@v6.41.1-0.20181227003417-a98eed78cbde+incompatible/integration/helpers/service_binding.go (about) 1 package helpers 2 3 import ( 4 "time" 5 6 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2" 7 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2/constant" 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 ) 11 12 func PollLastOperationUntilSuccess(client *ccv2.Client, appName string, serviceInstanceName string) { 13 apps, _, err := client.GetApplications(ccv2.Filter{ 14 Type: constant.NameFilter, 15 Operator: constant.EqualOperator, 16 Values: []string{appName}, 17 }) 18 Expect(err).ToNot(HaveOccurred()) 19 Expect(apps).To(HaveLen(1)) 20 21 serviceInstances, _, err := client.GetServiceInstances(ccv2.Filter{ 22 Type: constant.NameFilter, 23 Operator: constant.EqualOperator, 24 Values: []string{serviceInstanceName}, 25 }) 26 Expect(err).ToNot(HaveOccurred()) 27 Expect(serviceInstances).To(HaveLen(1)) 28 29 bindings, _, err := client.GetServiceBindings(ccv2.Filter{ 30 Type: constant.AppGUIDFilter, 31 Operator: constant.EqualOperator, 32 Values: []string{apps[0].GUID}, 33 }, ccv2.Filter{ 34 Type: constant.ServiceInstanceGUIDFilter, 35 Operator: constant.EqualOperator, 36 Values: []string{serviceInstances[0].GUID}, 37 }) 38 Expect(err).ToNot(HaveOccurred()) 39 Expect(bindings).To(HaveLen(1)) 40 binding := bindings[0] 41 42 startTime := time.Now() 43 for binding.LastOperation.State == constant.LastOperationInProgress { 44 if time.Now().After(startTime.Add(5 * time.Minute)) { 45 Fail("Service Binding in progress for more than 5 minutes - failing") 46 } 47 time.Sleep(time.Second) 48 bindings, _, err := client.GetServiceBindings(ccv2.Filter{ 49 Type: constant.AppGUIDFilter, 50 Operator: constant.EqualOperator, 51 Values: []string{apps[0].GUID}, 52 }, ccv2.Filter{ 53 Type: constant.ServiceInstanceGUIDFilter, 54 Operator: constant.EqualOperator, 55 Values: []string{serviceInstances[0].GUID}, 56 }) 57 Expect(err).ToNot(HaveOccurred()) 58 Expect(bindings).To(HaveLen(1)) 59 binding = bindings[0] 60 } 61 Expect(binding.LastOperation.State).To(Equal(constant.LastOperationSucceeded)) 62 }