prof 0.32.0 → 0.33.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4f28d50d262d8b8224ba2d09451964fdb63dd916
4
- data.tar.gz: 77838236f26763ff9cc0dfb37e587f9ae675e24f
3
+ metadata.gz: dade8eaa281e844ba97b6a7585a538ce0d6979ca
4
+ data.tar.gz: e49902370f17f71a712bd66a7ac73a5490f0963b
5
5
  SHA512:
6
- metadata.gz: 8533e5ddd7b7ccc465096ec48789f3089328cffd63ba8c22e0de802bfb0bec94a7dfdc99071d85ab0ebd1de01bcaff915ce5b22f57362064fa6153d1b24b75f2
7
- data.tar.gz: db56ed3337f9a53ee7ef9c4c0c4ce62537cbad81c55069bad826726015a7b4e189c189f89ff00fcb07c6fe81c7518643a9ce9e82b20c35d2dc6b0005f5cf7760
6
+ metadata.gz: ac1f724bb366a27aea9a36f50bce7817c6fc710a7dfdd8a381f2e184468f79881b94acec9a75145682d23f3c6632f824ba3eac6b1019abc312e9f231eb893239
7
+ data.tar.gz: e8e441475bf7413c9e91981f8a4878e7fd56c83f044d7966a85356756deecd12ba4f44995e37ae40674b781b464b4d4f3efc03ef03829de90963035a10a08326
@@ -19,7 +19,7 @@ module Prof
19
19
  class CloudFoundry
20
20
  extend Forwardable
21
21
 
22
- attr_reader :api_url, :domain, :username, :password
22
+ attr_reader :api_url, :domain, :username, :password, :retry_timeout, :retry_interval
23
23
 
24
24
  def_delegators :hula_cloud_foundry,
25
25
  :add_public_service_broker,
@@ -47,6 +47,11 @@ module Prof
47
47
  @api_url = opts.fetch(:api_url) { "https://api.#{domain}" }
48
48
  @username = opts.fetch(:username)
49
49
  @password = opts.fetch(:password)
50
+
51
+ @retry_interval = opts.fetch(:retry_interval) { 5 }
52
+ @retry_timeout = opts.fetch(:retry_timeout) { 720 }
53
+
54
+ @hula_cloud_foundry = opts.fetch(:hula_cloud_foundry) if opts.key?(:hula_cloud_foundry)
50
55
  end
51
56
 
52
57
  def push_and_keep_app(app, pushed_app_name = "cf-app-#{SecureRandom.hex(4)}")
@@ -110,24 +115,12 @@ module Prof
110
115
 
111
116
  def provision_and_create_service_key(service, &_block)
112
117
  provision_service(service) do |service_instance|
113
- wait_for_service_creation(service_instance)
114
118
  create_service_key(service_instance) do |service_key, service_key_data|
115
119
  yield service_instance, service_key, service_key_data
116
120
  end
117
121
  end
118
122
  end
119
123
 
120
- def wait_for_service_creation(service_instance)
121
- Timeout::timeout(12 * 60) do
122
- loop do
123
- status = hula_cloud_foundry.get_service_status(service_instance.name)
124
- return if status == 'create succeeded'
125
- raise "service instance creation failed: #{service_instance.name}" if status.include? 'failed'
126
- sleep 5
127
- end
128
- end
129
- end
130
-
131
124
  def list_service_keys(service_instance)
132
125
  hula_cloud_foundry.list_service_keys(service_instance.name)
133
126
  end
@@ -160,6 +153,7 @@ module Prof
160
153
  service_instance = ServiceInstance.new
161
154
 
162
155
  hula_cloud_foundry.create_service_instance(service.name, service_instance.name, service.plan)
156
+ wait_for_service_state(service_instance, "create succeeded", "create failed")
163
157
 
164
158
  yield service_instance if block_given?
165
159
 
@@ -169,6 +163,8 @@ module Prof
169
163
 
170
164
  def delete_service_instance_and_unbind(service_instance, options = {})
171
165
  hula_cloud_foundry.delete_service_instance_and_unbind(service_instance.name, options)
166
+
167
+ wait_for_service_state(service_instance, "Service instance #{service_instance.name} not found", "delete failed")
172
168
  end
173
169
 
174
170
  def auth_token
@@ -177,6 +173,17 @@ module Prof
177
173
 
178
174
  private
179
175
 
176
+ def wait_for_service_state(service_instance, expected_state, failure_state)
177
+ Timeout::timeout(retry_timeout) do
178
+ loop do
179
+ status = hula_cloud_foundry.get_service_status(service_instance.name)
180
+ return if status.include? expected_state
181
+ raise "Error #{failure_state} occured for service instance: #{service_instance.name}" if status.include? failure_state
182
+ sleep retry_interval
183
+ end
184
+ end
185
+ end
186
+
180
187
  def hula_cloud_foundry
181
188
  @hula_cloud_foundry ||= Hula::CloudFoundry.new(
182
189
  api_url: api_url,
data/lib/prof/version.rb CHANGED
@@ -9,5 +9,5 @@
9
9
  #
10
10
 
11
11
  module Prof
12
- VERSION = '0.32.0'
12
+ VERSION = '0.33.0'
13
13
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prof
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.32.0
4
+ version: 0.33.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - CF London
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-02 00:00:00.000000000 Z
11
+ date: 2017-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem-release
@@ -212,14 +212,14 @@ dependencies:
212
212
  requirements:
213
213
  - - "~>"
214
214
  - !ruby/object:Gem::Version
215
- version: 0.9.0
215
+ version: 0.9.1
216
216
  type: :runtime
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - "~>"
221
221
  - !ruby/object:Gem::Version
222
- version: 0.9.0
222
+ version: 0.9.1
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: net-ssh-gateway
225
225
  requirement: !ruby/object:Gem::Requirement