bosh_cli 1.2416.0 → 1.2427.0

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.
@@ -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