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  }