class Nurego::Cf::BrokerUtility

Constants

PROVIDER

Attributes

external_ids[RW]

Public Class Methods

deprovision(params) click to toggle source
# File lib/nurego/cf/broker_utility.rb, line 32
def self.deprovision(params)
  return nil if nurego_notified(params)
  raise InvalidRequestError.new('Invalid parameter instance_id', 'instance_id') unless params['instance_id']
  sub = Subscription.retrieve(params['instance_id'])
  sub.cancel({ provider: PROVIDER, skip_service_webhook: true })
end
get_service_catalog(service_id) click to toggle source
# File lib/nurego/cf/broker_utility.rb, line 43
def self.get_service_catalog(service_id)
  service = Service.retrieve(service_id)
  plans = service.plans
  service_to_cloud_foundry_catalog(service, plans)
end
nurego_notified(params) click to toggle source
# File lib/nurego/cf/broker_utility.rb, line 39
def self.nurego_notified(params)
  params['nurego_notified'] == true
end
provision(params) click to toggle source
# File lib/nurego/cf/broker_utility.rb, line 11
def self.provision(params)
  return nil if nurego_notified(params)
  raise InvalidRequestError.new('Invalid parameter instance_id', 'instance_id') unless params['instance_id']
  create_params = { provider: PROVIDER,
                    external_subscription_id: params['instance_id'],
                    plan_id: params['plan_id'],
                    skip_service_webhook: true
  }
  Subscription.create(params['organization_guid'], create_params)
end
update(params) click to toggle source
# File lib/nurego/cf/broker_utility.rb, line 22
def self.update(params)
  return nil if nurego_notified(params)
  raise InvalidRequestError.new('Invalid parameter instance_id', 'instance_id') unless params['instance_id']
  sub = Subscription.retrieve(params['instance_id'])
  sub.plan_id = params['plan_id']
  sub.provider = PROVIDER
  sub.skip_service_webhook = true
  sub.save
end

Private Class Methods

service_to_cloud_foundry_catalog(service, plans) click to toggle source
# File lib/nurego/cf/broker_utility.rb, line 51
def self.service_to_cloud_foundry_catalog(service, plans)
  cf_catalog = { services: [] }
  cf_service = {
      # required
      id: service['id'],
      name: service['name'],
      description: service['description'],
      bindable: true,
      plans: []

      ## possible
      # tags: [],
      # metadata: Object,
      # requires: [],
      # plan_updateable: true,
      # dashboard_client: Object {id,secret,redirect_uri}

  }
  plans.each do | nurego_plan |
    cf_plan = {
      # required
      id: nurego_plan['id'],
      name: nurego_plan['name'],
      description: nurego_plan['description'] || nurego_plan['name'],

      ## possible
      # metadata: Object,
      # free: true,
    }


    recurring = nurego_plan['features']['data'].find { | feature | feature['element_type'] == 'recurring' }
    cf_plan[:free] = !(recurring && recurring['price'] > 0)

    cf_service[:plans] << cf_plan # Add plans to the service
  end
  cf_catalog[:services] << cf_service # Add service to offer

  cf_catalog.to_json
end