bosh_cli 1.2416.0 → 1.2427.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,6 +5,8 @@ module Bosh::Cli
5
5
  def initialize(key, size)
6
6
  @key = key
7
7
  @size = size
8
+
9
+ @parsed_version = key.scan(/[\d]*_?[\d]+/).first
8
10
  end
9
11
 
10
12
  def name
@@ -12,12 +14,11 @@ module Bosh::Cli
12
14
  end
13
15
 
14
16
  def version
15
- version_digits = @key.gsub(/[^\d]/, '')
16
- version_digits.to_i
17
+ @parsed_version.gsub('_', '.').to_f
17
18
  end
18
19
 
19
20
  def variety
20
- name.gsub(version.to_s, '')
21
+ name.gsub(/(.tgz)|(bosh-stemcell-)|(#{@parsed_version})/, '').split('-').reject { |c| c.empty? }.join('-')
21
22
  end
22
23
 
23
24
  def url
@@ -27,5 +28,6 @@ module Bosh::Cli
27
28
  def legacy?
28
29
  @key.include?('legacy')
29
30
  end
31
+
30
32
  end
31
33
  end
@@ -16,10 +16,37 @@ module Bosh::Cli
16
16
  end
17
17
 
18
18
  def all
19
- response = HTTPClient.new.get(PUBLIC_STEMCELLS_BASE_URL)
19
+ response = HTTPClient.new.get(PUBLIC_STEMCELLS_BASE_URL, {'prefix' => 'bosh-stemcell'})
20
20
  doc = REXML::Document.new(response.body)
21
- stemcell_tags = REXML::XPath.match(doc, "/ListBucketResult/Contents[Key[text()[starts-with(.,'bosh-stemcell/') and not(contains(.,'latest'))]]]")
21
+ stemcells_tags = parse_document(doc)
22
+ stemcells = parse_stemcells(stemcells_tags)
23
+
24
+ while is_truncated(doc)
25
+ response = HTTPClient.new.get(PUBLIC_STEMCELLS_BASE_URL, {
26
+ 'prefix' => 'bosh-stemcell',
27
+ 'marker' => stemcells_tags.last.get_text('Key').value
28
+ })
29
+
30
+ doc = REXML::Document.new(response.body)
31
+ stemcells_tags = parse_document(doc)
32
+ stemcells += parse_stemcells(stemcells_tags)
33
+ end
34
+
35
+ stemcells
36
+ end
37
+
38
+ def recent
39
+ stemcell_varietes = all.reject(&:legacy?).group_by(&:variety).values
40
+ stemcell_varietes.map { |stemcells| stemcells.sort_by(&:version).last }
41
+ end
42
+
43
+ private
44
+
45
+ def parse_document(doc)
46
+ REXML::XPath.match(doc, "/ListBucketResult/Contents[Key[text()[not(contains(.,'latest'))]]]")
47
+ end
22
48
 
49
+ def parse_stemcells(stemcell_tags)
23
50
  stemcell_tags.map do |stemcell_tag|
24
51
  stemcell_key = stemcell_tag.get_text('Key').value
25
52
  stemcell_size = Integer(stemcell_tag.get_text('Size').value)
@@ -28,9 +55,8 @@ module Bosh::Cli
28
55
  end
29
56
  end
30
57
 
31
- def recent
32
- stemcell_varietes = all.reject(&:legacy?).group_by(&:variety).values
33
- stemcell_varietes.map { |stemcells| stemcells.sort_by(&:version).last }
58
+ def is_truncated(doc)
59
+ REXML::XPath.match(doc, "/ListBucketResult/IsTruncated").first.get_text == 'true'
34
60
  end
35
61
  end
36
62
  end
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Cli
3
- VERSION = '1.2416.0'
3
+ VERSION = '1.2427.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2416.0
4
+ version: 1.2427.0
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: 2014-04-17 00:00:00.000000000 Z
12
+ date: 2014-04-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bosh_common
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 1.2416.0
21
+ version: 1.2427.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 1.2416.0
29
+ version: 1.2427.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: json_pure
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -114,7 +114,7 @@ dependencies:
114
114
  requirements:
115
115
  - - ~>
116
116
  - !ruby/object:Gem::Version
117
- version: 1.2416.0
117
+ version: 1.2427.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
@@ -122,7 +122,7 @@ dependencies:
122
122
  requirements:
123
123
  - - ~>
124
124
  - !ruby/object:Gem::Version
125
- version: 1.2416.0
125
+ version: 1.2427.0
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: net-ssh
128
128
  requirement: !ruby/object:Gem::Requirement
@@ -269,7 +269,7 @@ dependencies:
269
269
  version: '0'
270
270
  description: ! 'BOSH CLI
271
271
 
272
- 7ca225'
272
+ 921db9'
273
273
  email: support@cloudfoundry.com
274
274
  executables:
275
275
  - bosh
@@ -381,7 +381,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
381
381
  version: '0'
382
382
  segments:
383
383
  - 0
384
- hash: -2981352722135897714
384
+ hash: 1936487875795083424
385
385
  requirements: []
386
386
  rubyforge_project:
387
387
  rubygems_version: 1.8.23