nurego 1.1.18 → 1.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nurego (1.1.17)
4
+ nurego (1.1.19)
5
5
  cf-uaa-lib (= 1.3.10)
6
6
  mime-types (~> 1.25)
7
7
  multi_json (>= 1.0.4, < 2)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.18
1
+ 1.1.19
@@ -38,6 +38,8 @@ require 'nurego/entitlement'
38
38
  require 'nurego/discount'
39
39
  require 'nurego/legal_doc'
40
40
  require 'nurego/extensions'
41
+ require 'nurego/subscription'
42
+ require 'nurego/cf/broker_utility'
41
43
 
42
44
 
43
45
  # Errors
@@ -0,0 +1,97 @@
1
+ module Nurego
2
+ module Cf
3
+ class BrokerUtility
4
+ PROVIDER = 'cloud-foundry'
5
+ @external_ids = true
6
+
7
+ class << self
8
+ attr_accessor :external_ids
9
+ end
10
+
11
+ def self.provision(params)
12
+ return nil if nurego_notified(params)
13
+ raise InvalidRequestError.new('Invalid parameter instance_id', 'instance_id') unless params['instance_id']
14
+ create_params = { provider: PROVIDER,
15
+ external_subscription_id: params['instance_id'],
16
+ plan_id: params['plan_id'],
17
+ skip_service_webhook: true
18
+ }
19
+ Subscription.create(params['organization_guid'], create_params)
20
+ end
21
+
22
+ def self.update(params)
23
+ return nil if nurego_notified(params)
24
+ raise InvalidRequestError.new('Invalid parameter instance_id', 'instance_id') unless params['instance_id']
25
+ sub = Subscription.retrieve(params['instance_id'])
26
+ sub.plan_id = params['plan_id']
27
+ sub.provider = PROVIDER
28
+ sub.skip_service_webhook = true
29
+ sub.save
30
+ end
31
+
32
+ def self.deprovision(params)
33
+ return nil if nurego_notified(params)
34
+ raise InvalidRequestError.new('Invalid parameter instance_id', 'instance_id') unless params['instance_id']
35
+ sub = Subscription.retrieve(params['instance_id'])
36
+ sub.delete({ provider: PROVIDER, skip_service_webhook: true })
37
+ end
38
+
39
+ def self.nurego_notified(params)
40
+ params['nurego_notified'] == true
41
+ end
42
+
43
+ def self.get_service_catalog(service_id)
44
+ service = Service.retrieve(service_id)
45
+ service_to_cloud_foundry_catalog(service)
46
+ end
47
+
48
+ private
49
+
50
+ def self.service_to_cloud_foundry_catalog(service)
51
+ cf_catalog = {
52
+ offer_id: service.offerings.first['id'],
53
+ offer_name: service.offerings.first['name'],
54
+ offer_description: service.offerings.first['description'],
55
+ services: []
56
+ }
57
+ cf_service = {
58
+ # required
59
+ id: service['id'],
60
+ name: service['name'],
61
+ description: service['description'],
62
+ bindable: true,
63
+ plans: []
64
+
65
+ ## possible
66
+ # tags: [],
67
+ # metadata: Object,
68
+ # requires: [],
69
+ # plan_updateable: true,
70
+ # dashboard_client: Object {id,secret,redirect_uri}
71
+
72
+ }
73
+ service.offerings.first['plans']['data'].each do | nurego_plan |
74
+ cf_plan = {
75
+ # required
76
+ id: nurego_plan['id'],
77
+ name: nurego_plan['name'],
78
+ description: nurego_plan['description'] || " ",
79
+
80
+ ## possible
81
+ # metadata: Object,
82
+ # free: true,
83
+ }
84
+
85
+ recurring = nurego_plan['features']['data'].find { | feature | feature['element_type'] == 'recurring' }
86
+ cf_plan[:free] = !(recurring && recurring['price'] > 0)
87
+
88
+ cf_service[:plans] << cf_plan # Add plans to the service
89
+ end
90
+ cf_catalog[:services] << cf_service # Add service to offer
91
+
92
+ cf_catalog.to_json
93
+ end
94
+
95
+ end
96
+ end
97
+ end
@@ -15,8 +15,8 @@ module Nurego
15
15
  '/v1/customers/me'
16
16
  end
17
17
 
18
- def self.update_plan(plan_id)
19
- response, api_key = Nurego.request(:put, "/v1/customers/plan", nil, { :plan_id => plan_id })
18
+ def self.update_plan(plan_id, sub_id)
19
+ response, api_key = Nurego.request(:post, "/v1/customers/subscriptions/#{CGI.escape(sub_id)}", nil, { :plan_id => plan_id })
20
20
  Util.convert_to_nurego_object(response, api_key)
21
21
  end
22
22
 
@@ -8,7 +8,7 @@ module Nurego
8
8
  feature_id: feature_id,
9
9
  amount: amount,
10
10
  }
11
- response, api_key = Nurego.request(:put, "/v1/organizations/#{id}/entitlements/usage", nil, payload)
11
+ response, api_key = Nurego.request(:post, "/v1/organizations/#{id}/entitlements/usage", nil, payload)
12
12
  end
13
13
 
14
14
  def self.all(organization_id, filters={}, api_key=nil)
@@ -28,6 +28,11 @@ module Nurego
28
28
  Util.convert_to_nurego_object(response, api_key)
29
29
  end
30
30
 
31
+ def feature_data(params = {}, api_key = nil)
32
+ response, api_key = Nurego.request(:get, url + "/feature_data", api_key, params)
33
+ Util.convert_to_nurego_object(response, api_key)
34
+ end
35
+
31
36
  def cancel(params = {}, api_key = nil)
32
37
  response, api_key = Nurego.request(:post, url + '/cancel', api_key, params)
33
38
  Util.convert_to_nurego_object(response, api_key)
@@ -2,55 +2,5 @@ module Nurego
2
2
 
3
3
  class Service < APIResource
4
4
 
5
- def to_cloud_foundry_catalog
6
- service_to_cloud_foundry_catalog.to_json
7
- end
8
-
9
- private
10
-
11
- def service_to_cloud_foundry_catalog
12
- cf_catalog = {
13
- offer_id: self.offerings.first['id'],
14
- offer_name: self.offerings.first['name'],
15
- offer_description: self.offerings.first['description'],
16
- services: []
17
- }
18
- cf_service = {
19
- # required
20
- id: self['id'],
21
- name: self['name'],
22
- description: self['description'],
23
- bindable: true,
24
- plans: []
25
-
26
- ## possible
27
- # tags: [],
28
- # metadata: Object,
29
- # requires: [],
30
- # plan_updateable: true,
31
- # dashboard_client: Object {id,secret,redirect_uri}
32
-
33
- }
34
- self.offerings.first['plans']['data'].each do | nurego_plan |
35
- cf_plan = {
36
- # required
37
- id: nurego_plan['id'],
38
- name: nurego_plan['name'],
39
- description: nurego_plan['description'],
40
-
41
- ## possible
42
- # metadata: Object,
43
- # free: true,
44
- }
45
-
46
- recurring = nurego_plan['features']['data'].find { | feature | feature['element_type'] == 'recurring' }
47
- cf_plan[:free] = !(recurring && recurring['price'] > 0)
48
-
49
- cf_service[:plans] << cf_plan # Add plans to the service
50
- end
51
- cf_catalog[:services] << cf_service # Add service to offer
52
-
53
- cf_catalog
54
- end
55
5
  end
56
6
  end
@@ -0,0 +1,50 @@
1
+ module Nurego
2
+ class Subscription < APIResource
3
+ # include Nurego::APIOperations::Create
4
+ include Nurego::APIOperations::Update
5
+ # include Nurego::APIOperations::Delete
6
+
7
+ # Create override
8
+ def self.create(org_id, params={}, api_key=nil)
9
+ response, api_key = Nurego.request(:post, self.url(org_id), api_key, params)
10
+ Util.convert_to_nurego_object(response, api_key)
11
+ end
12
+
13
+ # Update override
14
+ def save
15
+ values = serialize_params(self)
16
+
17
+ if values.length > 0
18
+ values.delete(:id)
19
+
20
+ response, api_key = Nurego.request(:post, url(self.organization_id), @api_key, values)
21
+ refresh_from(response, api_key)
22
+ end
23
+ self
24
+ end
25
+
26
+ # Delete override
27
+ def delete(params={})
28
+ # use params to pass extra parameters to Nurego backend
29
+ response, api_key = Nurego.request(:delete, url(self.organization_id), @api_key, params)
30
+ refresh_from(response, api_key)
31
+ self
32
+ end
33
+
34
+ # override class url
35
+ def self.url(org_id = nil)
36
+ return super() unless org_id
37
+ "/v1/organizations/#{CGI.escape(org_id)}/#{CGI.escape(class_name.downcase)}s"
38
+ end
39
+
40
+ # override instance url
41
+ def url(org_id = nil)
42
+ return super() unless org_id
43
+ unless id = self['id']
44
+ raise InvalidRequestError.new("Could not determine which URL to request: #{self.class} instance has no ID: #{self.inspect}", 'id')
45
+ end
46
+ "#{self.class.url(org_id)}/#{CGI.escape(id)}"
47
+ end
48
+
49
+ end
50
+ end
@@ -25,6 +25,7 @@ module Nurego
25
25
  'passwordreset' => PasswordReset,
26
26
  'offering' => Offering,
27
27
  'service' => Service,
28
+ 'subscription' => Subscription,
28
29
  'plan' => Plan,
29
30
  'feature' => Feature,
30
31
  'paymentmethod' => PaymentMethod,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nurego
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.18
4
+ version: 1.1.19
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-27 00:00:00.000000000 Z
12
+ date: 2015-06-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -224,6 +224,7 @@ files:
224
224
  - lib/nurego/discount.rb
225
225
  - lib/nurego/util.rb
226
226
  - lib/nurego/registration.rb
227
+ - lib/nurego/cf/broker_utility.rb
227
228
  - lib/nurego/version.rb
228
229
  - lib/nurego/bill.rb
229
230
  - lib/nurego/json.rb
@@ -231,6 +232,7 @@ files:
231
232
  - lib/nurego/list_object.rb
232
233
  - lib/nurego/payment_method.rb
233
234
  - lib/nurego/offering.rb
235
+ - lib/nurego/subscription.rb
234
236
  - lib/nurego/plan.rb
235
237
  - lib/nurego/feature.rb
236
238
  - lib/nurego/auth.rb
@@ -297,4 +299,3 @@ test_files:
297
299
  - spec/unit/nurego/list_object_spec.rb
298
300
  - spec/unit/nurego/util_spec.rb
299
301
  - spec/unit/test_helper.rb
300
- has_rdoc: