class Hula::ServiceBroker::Api

Attributes

http_client[R]
password[R]
url[R]
username[R]

Public Class Methods

new(url:, username:, password:, http_client: HttpJsonClient.new, broker_api_version:) click to toggle source
# File lib/hula/service_broker/api.rb, line 25
def initialize(url:, username:, password:, http_client: HttpJsonClient.new, broker_api_version:)
  @http_client = http_client

  @url = URI(url)
  @username = username
  @password = password
  @broker_api_version = broker_api_version
end

Public Instance Methods

bind_instance(service_instance, plan, binding_id: SecureRandom.uuid) click to toggle source
# File lib/hula/service_broker/api.rb, line 55
def bind_instance(service_instance, plan, binding_id: SecureRandom.uuid)
  result = http_bind_instance(
    service_instance_id: service_instance.id,
    binding_id: binding_id,
    service_id: plan.service_id,
    plan_id: plan.id
  )

  InstanceBinding.new(
    id: binding_id,
    credentials: result.fetch(:credentials),
    service_instance: service_instance
  )
end
catalog() click to toggle source
# File lib/hula/service_broker/api.rb, line 36
def catalog
  json = http_client.get(url_for('/v2/catalog'), auth: { username: username, password: password }, headers: { 'X-Broker-Api-Version': @broker_api_version })
  Catalog.new(json)
end
debug() click to toggle source
# File lib/hula/service_broker/api.rb, line 79
def debug
  http_client.get(url_for('/debug'), auth: { username: username, password: password }, headers: { 'X-Broker-Api-Version': @broker_api_version })
end
deprovision_instance(service_instance, plan) click to toggle source
# File lib/hula/service_broker/api.rb, line 51
def deprovision_instance(service_instance, plan)
  http_deprovision_service(service_instance_id: service_instance.id, plan_id: plan.id, service_id: plan.service_id)
end
provision_instance(plan, service_instance_id: SecureRandom.uuid) click to toggle source
# File lib/hula/service_broker/api.rb, line 41
def provision_instance(plan, service_instance_id: SecureRandom.uuid)
  http_provision_instance(
    service_id: plan.service_id,
    plan_id: plan.id,
    service_instance_id: service_instance_id
  )

  ServiceInstance.new(id: service_instance_id)
end
unbind_instance(instance_binding, plan) click to toggle source
# File lib/hula/service_broker/api.rb, line 70
def unbind_instance(instance_binding, plan)
  http_unbind_instance(
    service_instance_id: instance_binding.service_instance.id,
    binding_id: instance_binding.id,
    service_id: plan.service_id,
    plan_id: plan.id
  )
end

Private Instance Methods

http_bind_instance(service_instance_id:, binding_id:, service_id:, plan_id:) click to toggle source
# File lib/hula/service_broker/api.rb, line 112
def http_bind_instance(service_instance_id:, binding_id:, service_id:, plan_id:)
  http_client.put(
    url_for("/v2/service_instances/#{service_instance_id}/service_bindings/#{binding_id}"),
    body: {
      service_id: service_id,
      plan_id: plan_id,
    },
    auth: { username: username, password: password },
    headers: { 'X-Broker-Api-Version': @broker_api_version }
  )
end
http_deprovision_service(service_instance_id:, plan_id:, service_id:) click to toggle source
# File lib/hula/service_broker/api.rb, line 97
def http_deprovision_service(service_instance_id:, plan_id:, service_id:)
  uri = url.dup
  uri.path = uri.path += "/v2/service_instances/#{service_instance_id}"
  params = { :'plan_id' => plan_id, :'service_id' => service_id}
  uri.query = URI.encode_www_form(params)
  http_client.delete(
    uri,
    auth: {
      username: username,
      password: password
    },
    headers: { 'X-Broker-Api-Version': @broker_api_version }
  )
end
http_provision_instance(service_instance_id:, service_id:, plan_id:) click to toggle source
# File lib/hula/service_broker/api.rb, line 85
def http_provision_instance(service_instance_id:, service_id:, plan_id:)
  http_client.put(
    url_for("/v2/service_instances/#{service_instance_id}"),
    body: {
      service_id: service_id,
      plan_id: plan_id,
    },
    auth: { username: username, password: password },
    headers: { 'X-Broker-Api-Version': @broker_api_version }
  )
end
http_unbind_instance(service_instance_id:, binding_id:, service_id:, plan_id:) click to toggle source
# File lib/hula/service_broker/api.rb, line 124
def http_unbind_instance(service_instance_id:, binding_id:, service_id:, plan_id:)
  uri = url.dup
  uri.path = uri.path += "/v2/service_instances/#{service_instance_id}/service_bindings/#{binding_id}"
  params = { :'plan_id' => plan_id, :'service_id' => service_id}
  uri.query = URI.encode_www_form(params)

  http_client.delete(
    uri,
    auth: { username: username, password: password },
    headers: { 'X-Broker-Api-Version': @broker_api_version }
  )
end
url_for(path) click to toggle source
# File lib/hula/service_broker/api.rb, line 137
def url_for(path)
  url.dup.tap { |uri| uri.path += path }
end