github.com/swisscom/cloudfoundry-cli@v7.1.0+incompatible/actor/v2action/service_instance.go (about) 1 package v2action 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/api/cloudcontroller/ccerror" 6 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2" 7 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2/constant" 8 ) 9 10 // ServiceInstance represents an instance of a service. 11 type ServiceInstance ccv2.ServiceInstance 12 type MaintenanceInfo ccv2.MaintenanceInfo 13 14 // CreateServiceInstance creates a new service instance with the provided attributes. 15 func (actor Actor) CreateServiceInstance(spaceGUID, serviceName, servicePlanName, serviceInstanceName, brokerName string, params map[string]interface{}, tags []string) (ServiceInstance, Warnings, error) { 16 var allWarnings Warnings 17 plan, allWarnings, err := actor.getServicePlanForServiceInSpace(servicePlanName, serviceName, spaceGUID, brokerName) 18 19 if err != nil { 20 return ServiceInstance{}, allWarnings, err 21 } 22 23 instance, warnings, err := actor.CloudControllerClient.CreateServiceInstance(spaceGUID, plan.GUID, serviceInstanceName, params, tags) 24 allWarnings = append(allWarnings, warnings...) 25 if err != nil { 26 return ServiceInstance{}, allWarnings, err 27 } 28 29 return ServiceInstance(instance), allWarnings, nil 30 } 31 32 func (actor Actor) GetServiceInstance(guid string) (ServiceInstance, Warnings, error) { 33 instance, warnings, err := actor.CloudControllerClient.GetServiceInstance(guid) 34 if _, ok := err.(ccerror.ResourceNotFoundError); ok { 35 return ServiceInstance{}, Warnings(warnings), actionerror.ServiceInstanceNotFoundError{GUID: guid} 36 } 37 38 return ServiceInstance(instance), Warnings(warnings), err 39 } 40 41 func (actor Actor) GetServiceInstanceByNameAndSpace(name string, spaceGUID string) (ServiceInstance, Warnings, error) { 42 serviceInstances, warnings, err := actor.CloudControllerClient.GetSpaceServiceInstances( 43 spaceGUID, 44 true, 45 ccv2.Filter{ 46 Type: constant.NameFilter, 47 Operator: constant.EqualOperator, 48 Values: []string{name}, 49 }) 50 51 if err != nil { 52 return ServiceInstance{}, Warnings(warnings), err 53 } 54 55 if len(serviceInstances) == 0 { 56 return ServiceInstance{}, Warnings(warnings), actionerror.ServiceInstanceNotFoundError{ 57 Name: name, 58 } 59 } 60 61 return ServiceInstance(serviceInstances[0]), Warnings(warnings), nil 62 } 63 64 func (actor Actor) GetServiceInstancesByApplication(appGUID string) ([]ServiceInstance, Warnings, error) { 65 var allWarnings Warnings 66 bindings, apiWarnings, err := actor.CloudControllerClient.GetServiceBindings(ccv2.Filter{ 67 Type: constant.AppGUIDFilter, 68 Operator: constant.EqualOperator, 69 Values: []string{appGUID}, 70 }) 71 allWarnings = append(allWarnings, apiWarnings...) 72 73 if err != nil { 74 return nil, allWarnings, err 75 } 76 77 var serviceInstances []ServiceInstance 78 for _, binding := range bindings { 79 instance, warnings, instanceErr := actor.GetServiceInstance(binding.ServiceInstanceGUID) 80 allWarnings = append(allWarnings, warnings...) 81 if instanceErr != nil { 82 return nil, allWarnings, instanceErr 83 } 84 serviceInstances = append(serviceInstances, ServiceInstance(instance)) 85 } 86 87 return serviceInstances, allWarnings, err 88 } 89 90 func (actor Actor) GetServiceInstancesBySpace(spaceGUID string) ([]ServiceInstance, Warnings, error) { 91 ccv2ServiceInstances, warnings, err := actor.CloudControllerClient.GetSpaceServiceInstances(spaceGUID, true) 92 93 if err != nil { 94 return []ServiceInstance{}, Warnings(warnings), err 95 } 96 97 serviceInstances := make([]ServiceInstance, len(ccv2ServiceInstances)) 98 for i, ccv2ServiceInstance := range ccv2ServiceInstances { 99 serviceInstances[i] = ServiceInstance(ccv2ServiceInstance) 100 } 101 102 return serviceInstances, Warnings(warnings), nil 103 } 104 105 // UpdateServiceInstanceMaintenanceInfo requests that the service instance be updated to the specified `maintenance_info` 106 func (actor Actor) UpdateServiceInstanceMaintenanceInfo(guid string, maintenanceInfo MaintenanceInfo) (Warnings, error) { 107 warnings, err := actor.CloudControllerClient.UpdateServiceInstanceMaintenanceInfo(guid, ccv2.MaintenanceInfo(maintenanceInfo)) 108 return Warnings(warnings), err 109 } 110 111 // IsManaged returns true if the service instance is managed, otherwise false. 112 func (instance ServiceInstance) IsManaged() bool { 113 return ccv2.ServiceInstance(instance).Managed() 114 } 115 116 // IsUserProvided returns true if the service instance is user provided, otherwise false. 117 func (instance ServiceInstance) IsUserProvided() bool { 118 return ccv2.ServiceInstance(instance).UserProvided() 119 }