github.com/loafoe/cli@v7.1.0+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 // PollLastOperationUntilSuccess polls the last operation performed on a service instance bound to a given app until 13 // success. An expectation will fail if the last operation does not succeed or polling takes over 5 minutes. 14 func PollLastOperationUntilSuccess(client *ccv2.Client, appName string, serviceInstanceName string) { 15 apps, _, err := client.GetApplications(ccv2.Filter{ 16 Type: constant.NameFilter, 17 Operator: constant.EqualOperator, 18 Values: []string{appName}, 19 }) 20 Expect(err).ToNot(HaveOccurred()) 21 Expect(apps).To(HaveLen(1)) 22 23 serviceInstances, _, err := client.GetServiceInstances(ccv2.Filter{ 24 Type: constant.NameFilter, 25 Operator: constant.EqualOperator, 26 Values: []string{serviceInstanceName}, 27 }) 28 Expect(err).ToNot(HaveOccurred()) 29 Expect(serviceInstances).To(HaveLen(1)) 30 31 bindings, _, err := client.GetServiceBindings(ccv2.Filter{ 32 Type: constant.AppGUIDFilter, 33 Operator: constant.EqualOperator, 34 Values: []string{apps[0].GUID}, 35 }, ccv2.Filter{ 36 Type: constant.ServiceInstanceGUIDFilter, 37 Operator: constant.EqualOperator, 38 Values: []string{serviceInstances[0].GUID}, 39 }) 40 Expect(err).ToNot(HaveOccurred()) 41 Expect(bindings).To(HaveLen(1)) 42 binding := bindings[0] 43 44 startTime := time.Now() 45 for binding.LastOperation.State == constant.LastOperationInProgress { 46 if time.Now().After(startTime.Add(5 * time.Minute)) { 47 Fail("Service Binding in progress for more than 5 minutes - failing") 48 } 49 time.Sleep(time.Second) 50 bindings, _, err := client.GetServiceBindings(ccv2.Filter{ 51 Type: constant.AppGUIDFilter, 52 Operator: constant.EqualOperator, 53 Values: []string{apps[0].GUID}, 54 }, ccv2.Filter{ 55 Type: constant.ServiceInstanceGUIDFilter, 56 Operator: constant.EqualOperator, 57 Values: []string{serviceInstances[0].GUID}, 58 }) 59 Expect(err).ToNot(HaveOccurred()) 60 Expect(bindings).To(HaveLen(1)) 61 binding = bindings[0] 62 } 63 Expect(binding.LastOperation.State).To(Equal(constant.LastOperationSucceeded)) 64 }