nurego 1.1.18 → 1.1.19

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: