rhc 0.93.18 → 0.93.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.
data/bin/rhc CHANGED
@@ -38,7 +38,7 @@ def get_args
38
38
  end
39
39
 
40
40
 
41
- wizard_run = default_setup_wizard unless ARGV.include?('--noprompt')
41
+ wizard_run = default_setup_wizard unless ARGV.include?('--noprompt') or ARGV.include?('--help') or ARGV.include?('-h')
42
42
 
43
43
  case ARGV[0]
44
44
  when "domain"
@@ -62,6 +62,11 @@ when "server"
62
62
  retcode = e.status
63
63
  end
64
64
  when "setup"
65
+ if ARGV.include?('--help') or ARGV.include?('-h')
66
+ puts "Usage: rhc setup"
67
+ puts "Runs the setup wizard to configure your account"
68
+ exit 0
69
+ end
65
70
  exit 0 if wizard_run
66
71
  w = RHC::RerunWizard.new(RHC::Config.local_config_path)
67
72
  success = w.run
data/bin/rhc-chk CHANGED
@@ -5,10 +5,11 @@ require 'net/https'
5
5
  require 'rbconfig'
6
6
  require 'yaml'
7
7
  require 'tempfile'
8
+ require 'rhc/vendor/sshkey'
8
9
 
9
10
  if RUBY_VERSION.to_f == 1.9
10
11
  require 'rubygems'
11
- gem 'test-unit'
12
+ gem 'test-unit'#, '~> 1.2.3'
12
13
  end
13
14
 
14
15
  require 'test/unit'
@@ -281,7 +282,7 @@ class Test3_SSH < Test::Unit::TestCase
281
282
  check_permissions(@libra_kfile, /[4-7]00/) # Needs to at least be readable by user and nobody else
282
283
 
283
284
  # Derive the public key from the private key
284
- key_dump = SSHKey.new(File.read(@libra_kfile)).ssh_public_key
285
+ key_dump = RHC::Vendor::SSHKey.new(File.read(@libra_kfile)).ssh_public_key
285
286
  @@local_derived_ssh_pubkey = key_dump.to_s.strip.split(' ')[1]
286
287
 
287
288
  assert_not_nil @@local_derived_ssh_pubkey, error_for(:no_derive)
@@ -313,12 +314,9 @@ class Test3_SSH < Test::Unit::TestCase
313
314
  fp.close if fp
314
315
  end
315
316
 
316
- def test_05_ssh_config
317
- check_permissions('~/.ssh/config',/600/)
318
- end
319
-
320
317
  def test_06_ssh_agent
321
- loaded_keys = `ssh-add -L`.lines.to_a
318
+ loaded_keys = `ssh-add -L`
319
+ loaded_keys = loaded_keys.send(loaded_keys.respond_to?(:lines) ? :lines : :to_s).to_a
322
320
  # Make sure we can load keys from ssh-agent
323
321
  assert !loaded_keys.empty?, error_for(:no_keys_loaded)
324
322
  loaded_keys.map!{|key| key.split(' ')[1]}
@@ -380,7 +378,7 @@ class CheckRunner < Test::Unit::UI::Console::TestRunner
380
378
  end
381
379
 
382
380
  def render_message(message)
383
- lines = message.to_a
381
+ lines = message.send(message.respond_to?(:lines) ? :lines : :to_s).to_a
384
382
  message = []
385
383
  @num ||= 0
386
384
  message << "#{@num+=1}) #{lines.shift.strip}"
@@ -417,7 +415,8 @@ class CheckRunner < Test::Unit::UI::Console::TestRunner
417
415
  @num = 0
418
416
  print_underlined get_message(:status,:error)
419
417
  @errors.each do |e|
420
- lines = e.long_display.to_a[1..-1]
418
+ display = e.long_display
419
+ lines = display.send(display.respond_to?(:lines) ? :lines : :to_s).to_a[1..-1]
421
420
  puts "#{@num+=1}) #{lines.shift}"
422
421
  lines.each{|l| puts "\t#{l}"}
423
422
  end
data/lib/rhc-common.rb CHANGED
@@ -4,7 +4,7 @@ require 'getoptlong'
4
4
  require 'net/http'
5
5
  require 'net/https'
6
6
  require 'net/ssh'
7
- require 'sshkey'
7
+ require 'rhc/vendor/sshkey'
8
8
  require 'parseconfig'
9
9
  require 'resolv'
10
10
  require 'uri'
@@ -315,10 +315,9 @@ end
315
315
  tempfile = `mktemp /tmp/openshift.XXXXXXXX`
316
316
  `echo "#{ssh_keys['ssh_type']} #{ssh_keys['ssh_key']}" > #{tempfile}`
317
317
  ssh_keys['fingerprint'] = `ssh-keygen -lf #{tempfile}`.split(' ')[1]
318
- rescue Net::SSH::Exception
319
- rescue NotImplementedError
320
- # key invalid, do nothing
321
- # this happens if the user does not have a default key
318
+ rescue Net::SSH::Exception, NotImplementedError
319
+ # Could be a new unsupported key type or invalid data on the server
320
+ ssh_keys['fingerprint'] = 'Key type is not recognized. Please check this key is valid.'
322
321
  end
323
322
 
324
323
  if ssh_keys['keys'] && ssh_keys['keys'].kind_of?(Hash)
@@ -334,8 +333,11 @@ end
334
333
  tempfile = `mktemp /tmp/openshift.XXXXXXXX`
335
334
  `echo "#{type} #{key}" > #{tempfile}`
336
335
  ssh_keys['keys'][name]['fingerprint'] = `ssh-keygen -lf #{tempfile}`.split(' ')[1]
336
+ rescue NotImplementedError, Net::SSH::Exception
337
+ # Could be a new unsupported key type or invalid data on the server
338
+ ssh_keys['keys'][name]['fingerprint'] = 'Key type is not recognized. Please check this key is valid.'
337
339
  end
338
- end
340
+ end
339
341
  end
340
342
  ssh_keys
341
343
  end
@@ -1187,9 +1189,9 @@ end
1187
1189
  #
1188
1190
  # Returns nil on failure or public key location as a String on success
1189
1191
  def generate_ssh_key_ruby(type="RSA", bits = 1024, comment = "OpenShift-Key")
1190
- key = SSHKey.generate(:type => type,
1191
- :bits => bits,
1192
- :comment => comment)
1192
+ key = RHC::Vendor::SSHKey.generate(:type => type,
1193
+ :bits => bits,
1194
+ :comment => comment)
1193
1195
  ssh_dir = "#{RHC::Config.home_dir}/.ssh"
1194
1196
  if File.exists?("#{ssh_dir}/id_rsa")
1195
1197
  puts "SSH key already exists: #{ssh_dir}/id_rsa. Reusing..."
data/lib/rhc/targz.rb CHANGED
@@ -5,7 +5,9 @@ require 'archive/tar/minitar'
5
5
  include Archive::Tar
6
6
 
7
7
  if File.executable?('/usr/bin/gnutar') then
8
+ #:nocov:
8
9
  TAR_BIN = '/usr/bin/gnutar'
10
+ #:nocov:
9
11
  else
10
12
  TAR_BIN = 'tar'
11
13
  end
@@ -0,0 +1,253 @@
1
+ # modified version of SSHKey rubygem module
2
+ # https://github.com/bensie/sshkey
3
+ #
4
+ # Copyright (c) 2011 James Miller
5
+
6
+ # Permission is hereby granted, free of charge, to any person obtaining
7
+ # a copy of this software and associated documentation files (the
8
+ # "Software"), to deal in the Software without restriction, including
9
+ # without limitation the rights to use, copy, modify, merge, publish,
10
+ # distribute, sublicense, and/or sell copies of the Software, and to
11
+ # permit persons to whom the Software is furnished to do so, subject to
12
+ # the following conditions:
13
+
14
+ # The above copyright notice and this permission notice shall be
15
+ # included in all copies or substantial portions of the Software.
16
+
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
+
25
+ require 'openssl'
26
+ require 'base64'
27
+ require 'digest/md5'
28
+ require 'digest/sha1'
29
+
30
+ module RHC
31
+ module Vendor
32
+ class SSHKey
33
+ SSH_TYPES = {"rsa" => "ssh-rsa", "dsa" => "ssh-dss"}
34
+ SSH_CONVERSION = {"rsa" => ["e", "n"], "dsa" => ["p", "q", "g", "pub_key"]}
35
+
36
+ attr_reader :key_object, :comment, :type
37
+ attr_accessor :passphrase
38
+
39
+ class << self
40
+ # Generate a new keypair and return an SSHKey object
41
+ #
42
+ # The default behavior when providing no options will generate a 2048-bit RSA
43
+ # keypair.
44
+ #
45
+ # ==== Parameters
46
+ # * options<~Hash>:
47
+ # * :type<~String> - "rsa" or "dsa", "rsa" by default
48
+ # * :bits<~Integer> - Bit length
49
+ # * :comment<~String> - Comment to use for the public key, defaults to ""
50
+ # * :passphrase<~String> - Encrypt the key with this passphrase
51
+ #
52
+ def generate(options = {})
53
+ type = options[:type] || "rsa"
54
+
55
+ # JRuby modulus size must range from 512 to 1024
56
+ default_bits = type == "rsa" ? 2048 : 1024
57
+
58
+ bits = options[:bits] || default_bits
59
+ cipher = OpenSSL::Cipher::Cipher.new("AES-128-CBC") if options[:passphrase]
60
+
61
+ case type.downcase
62
+ when "rsa" then new(OpenSSL::PKey::RSA.generate(bits).to_pem(cipher, options[:passphrase]), options)
63
+ when "dsa" then new(OpenSSL::PKey::DSA.generate(bits).to_pem(cipher, options[:passphrase]), options)
64
+ else
65
+ raise "Unknown key type: #{type}"
66
+ end
67
+ end
68
+
69
+ # Validate an existing SSH public key
70
+ #
71
+ # Returns true or false depending on the validity of the public key provided
72
+ #
73
+ # ==== Parameters
74
+ # * ssh_public_key<~String> - "ssh-rsa AAAAB3NzaC1yc2EA...."
75
+ #
76
+ def valid_ssh_public_key?(ssh_public_key)
77
+ ssh_type, encoded_key = ssh_public_key.split(" ")
78
+ type = SSH_TYPES.invert[ssh_type]
79
+ prefix = [0,0,0,7].pack("C*")
80
+ decoded = Base64.decode64(encoded_key)
81
+
82
+ # Base64 decoding is too permissive, so we should validate if encoding is correct
83
+ return false unless Base64.encode64(decoded).gsub("\n", "") == encoded_key
84
+ return false unless decoded.sub!(/^#{prefix}#{ssh_type}/, "")
85
+
86
+ unpacked = decoded.unpack("C*")
87
+ data = []
88
+ index = 0
89
+ until unpacked[index].nil?
90
+ datum_size = from_byte_array unpacked[index..index+4-1], 4
91
+ index = index + 4
92
+ datum = from_byte_array unpacked[index..index+datum_size-1], datum_size
93
+ data << datum
94
+ index = index + datum_size
95
+ end
96
+
97
+ SSH_CONVERSION[type].size == data.size
98
+ rescue
99
+ false
100
+ end
101
+
102
+ # Fingerprints
103
+ #
104
+ # Accepts either a public or private key
105
+ #
106
+ # MD5 fingerprint for the given SSH key
107
+ def md5_fingerprint(key)
108
+ if key.match(/PRIVATE/)
109
+ new(key).md5_fingerprint
110
+ else
111
+ Digest::MD5.hexdigest(decoded_key(key)).gsub(fingerprint_regex, '\1:\2')
112
+ end
113
+ end
114
+ alias_method :fingerprint, :md5_fingerprint
115
+
116
+ # SHA1 fingerprint for the given SSH key
117
+ def sha1_fingerprint(key)
118
+ if key.match(/PRIVATE/)
119
+ new(key).sha1_fingerprint
120
+ else
121
+ Digest::SHA1.hexdigest(decoded_key(key)).gsub(fingerprint_regex, '\1:\2')
122
+ end
123
+ end
124
+
125
+ private
126
+
127
+ def from_byte_array(byte_array, expected_size = nil)
128
+ num = 0
129
+ raise "Byte array too short" if !expected_size.nil? && expected_size != byte_array.size
130
+ byte_array.reverse.each_with_index do |item, index|
131
+ num += item * 256**(index)
132
+ end
133
+ num
134
+ end
135
+
136
+ def decoded_key(key)
137
+ Base64.decode64(key.chomp.gsub(/ssh-[dr]s[as] /, ''))
138
+ end
139
+
140
+ def fingerprint_regex
141
+ /(.{2})(?=.)/
142
+ end
143
+ end
144
+
145
+ # Create a new SSHKey object
146
+ #
147
+ # ==== Parameters
148
+ # * private_key - Existing RSA or DSA private key
149
+ # * options<~Hash>
150
+ # * :comment<~String> - Comment to use for the public key, defaults to ""
151
+ # * :passphrase<~String> - If the key is encrypted, supply the passphrase
152
+ #
153
+ def initialize(private_key, options = {})
154
+ @passphrase = options[:passphrase]
155
+ @comment = options[:comment] || ""
156
+ begin
157
+ @key_object = OpenSSL::PKey::RSA.new(private_key, passphrase)
158
+ @type = "rsa"
159
+ rescue
160
+ @key_object = OpenSSL::PKey::DSA.new(private_key, passphrase)
161
+ @type = "dsa"
162
+ end
163
+ end
164
+
165
+ # Fetch the RSA/DSA private key
166
+ #
167
+ # rsa_private_key and dsa_private_key are aliased for backward compatibility
168
+ def private_key
169
+ key_object.to_pem
170
+ end
171
+ alias_method :rsa_private_key, :private_key
172
+ alias_method :dsa_private_key, :private_key
173
+
174
+ # Fetch the encrypted RSA/DSA private key using the passphrase provided
175
+ #
176
+ # If no passphrase is set, returns the unencrypted private key
177
+ def encrypted_private_key
178
+ return private_key unless passphrase
179
+ key_object.to_pem(OpenSSL::Cipher::Cipher.new("AES-128-CBC"), passphrase)
180
+ end
181
+
182
+ # Fetch the RSA/DSA public key
183
+ #
184
+ # rsa_public_key and dsa_public_key are aliased for backward compatibility
185
+ def public_key
186
+ key_object.public_key.to_pem
187
+ end
188
+ alias_method :rsa_public_key, :public_key
189
+ alias_method :dsa_public_key, :public_key
190
+
191
+ # SSH public key
192
+ def ssh_public_key
193
+ [SSH_TYPES[type], Base64.encode64(ssh_public_key_conversion).gsub("\n", ""), comment].join(" ").strip
194
+ end
195
+
196
+ # Fingerprints
197
+ #
198
+ # MD5 fingerprint for the given SSH public key
199
+ def md5_fingerprint
200
+ Digest::MD5.hexdigest(ssh_public_key_conversion).gsub(/(.{2})(?=.)/, '\1:\2')
201
+ end
202
+ alias_method :fingerprint, :md5_fingerprint
203
+
204
+ # SHA1 fingerprint for the given SSH public key
205
+ def sha1_fingerprint
206
+ Digest::SHA1.hexdigest(ssh_public_key_conversion).gsub(/(.{2})(?=.)/, '\1:\2')
207
+ end
208
+
209
+ private
210
+
211
+ # SSH Public Key Conversion
212
+ #
213
+ # All data type encoding is defined in the section #5 of RFC #4251.
214
+ # String and mpint (multiple precision integer) types are encoded this way:
215
+ # 4-bytes word: data length (unsigned big-endian 32 bits integer)
216
+ # n bytes: binary representation of the data
217
+
218
+ # For instance, the "ssh-rsa" string is encoded as the following byte array
219
+ # [0, 0, 0, 7, 's', 's', 'h', '-', 'r', 's', 'a']
220
+ def ssh_public_key_conversion
221
+ out = [0,0,0,7].pack("C*")
222
+ out += SSH_TYPES[type]
223
+
224
+ SSH_CONVERSION[type].each do |method|
225
+ byte_array = to_byte_array(key_object.public_key.send(method).to_i)
226
+ out += encode_unsigned_int_32(byte_array.length).pack("c*")
227
+ out += byte_array.pack("C*")
228
+ end
229
+
230
+ return out
231
+ end
232
+
233
+ def encode_unsigned_int_32(value)
234
+ out = []
235
+ out[0] = value >> 24 & 0xff
236
+ out[1] = value >> 16 & 0xff
237
+ out[2] = value >> 8 & 0xff
238
+ out[3] = value & 0xff
239
+ return out
240
+ end
241
+
242
+ def to_byte_array(num)
243
+ result = []
244
+ begin
245
+ result << (num & 0xff)
246
+ num >>= 8
247
+ end until (num == 0 || num == -1) && (result.last[7] == num[7])
248
+ result.reverse
249
+ end
250
+
251
+ end
252
+ end
253
+ end
data/lib/rhc/wizard.rb CHANGED
@@ -2,13 +2,7 @@ require 'rhc-common'
2
2
  require 'rhc/helpers'
3
3
  require 'highline/system_extensions'
4
4
  require 'net/ssh'
5
-
6
- # ruby 1.8 -> 1.9 magic
7
- begin
8
- require 'ftools'
9
- rescue LoadError
10
- require 'fileutils'
11
- end
5
+ require 'fileutils'
12
6
 
13
7
  module RHC
14
8
  class Wizard
@@ -410,7 +404,7 @@ EOF
410
404
  --dest=#{service} #{obj_path} #{method} #{stringafied_params}"
411
405
  output = `#{cmd} 2>&1`
412
406
 
413
- throw output if output.start_with?('Error') and !$?.success?
407
+ raise output if output.start_with?('Error') and !$?.success?
414
408
 
415
409
  # parse the output
416
410
  results = []
@@ -461,7 +455,8 @@ EOF
461
455
 
462
456
  begin
463
457
  git_installed = package_kit_method('IsInstalled', 'Query', 'string:git string:')
464
- if git_installed
458
+ # double check due to slight differences in older platforms
459
+ if git_installed or has_git?
465
460
  section(:bottom => 1) { say "found" }
466
461
  else
467
462
  section(:bottom => 1) { say "needs to be installed" }
@@ -523,6 +518,8 @@ EOF
523
518
  def has_git?
524
519
  %x{ git --version }
525
520
  $?.success?
521
+ rescue
522
+ false
526
523
  end
527
524
 
528
525
  def has_dbus_send?
@@ -561,8 +558,8 @@ EOF
561
558
  say "Configuration file #{@config_path} already exists, " \
562
559
  "backing up to #{backup}"
563
560
  end
564
- File.cp(@config_path, backup)
565
- File.delete(@config_path)
561
+ FileUtils.cp(@config_path, backup)
562
+ FileUtils.rm(@config_path)
566
563
  end
567
564
  super
568
565
  true
data/spec/spec_helper.rb CHANGED
@@ -15,10 +15,10 @@ begin
15
15
  end
16
16
 
17
17
  original_stderr = $stderr
18
- at_exit do
18
+ SimpleCov.at_exit do
19
19
  begin
20
20
  SimpleCov.result.format!
21
- if SimpleCov.result.covered_percent < 100
21
+ if SimpleCov.result.covered_percent < 99.0
22
22
  original_stderr.puts "Coverage not 100%, build failed."
23
23
  exit 1
24
24
  end
metadata CHANGED
@@ -1,301 +1,301 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rhc
3
- version: !ruby/object:Gem::Version
4
- hash: 335
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.93.19
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 93
9
- - 18
10
- version: 0.93.18
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Red Hat
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-06-05 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-06-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rake
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: sshkey
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
38
25
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
46
- type: :runtime
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
49
31
  name: net-ssh
50
- prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
52
33
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
60
38
  type: :runtime
61
- version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
63
47
  name: archive-tar-minitar
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
64
55
  prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
66
57
  none: false
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- hash: 3
71
- segments:
72
- - 0
73
- version: "0"
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: test-unit
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
74
70
  type: :runtime
75
- version_requirements: *id004
76
- - !ruby/object:Gem::Dependency
77
- name: parseconfig
78
71
  prerelease: false
79
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
80
73
  none: false
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- hash: 3
85
- segments:
86
- - 0
87
- version: "0"
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: parseconfig
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
88
86
  type: :runtime
89
- version_requirements: *id005
90
- - !ruby/object:Gem::Dependency
91
- name: commander
92
87
  prerelease: false
93
- requirement: &id006 !ruby/object:Gem::Requirement
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: commander
96
+ requirement: !ruby/object:Gem::Requirement
94
97
  none: false
95
- requirements:
96
- - - ">="
97
- - !ruby/object:Gem::Version
98
- hash: 27
99
- segments:
100
- - 4
101
- - 0
102
- version: "4.0"
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '4.0'
103
102
  type: :runtime
104
- version_requirements: *id006
105
- - !ruby/object:Gem::Dependency
106
- name: rest-client
107
103
  prerelease: false
108
- requirement: &id007 !ruby/object:Gem::Requirement
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '4.0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rest-client
112
+ requirement: !ruby/object:Gem::Requirement
109
113
  none: false
110
- requirements:
111
- - - ">="
112
- - !ruby/object:Gem::Version
113
- hash: 3
114
- segments:
115
- - 1
116
- - 6
117
- version: "1.6"
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '1.6'
118
118
  type: :runtime
119
- version_requirements: *id007
120
- - !ruby/object:Gem::Dependency
121
- name: webmock
122
119
  prerelease: false
123
- requirement: &id008 !ruby/object:Gem::Requirement
120
+ version_requirements: !ruby/object:Gem::Requirement
124
121
  none: false
125
- requirements:
126
- - - ">="
127
- - !ruby/object:Gem::Version
128
- hash: 3
129
- segments:
130
- - 1
131
- - 6
132
- version: "1.6"
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '1.6'
126
+ - !ruby/object:Gem::Dependency
127
+ name: webmock
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '1.6'
133
134
  type: :development
134
- version_requirements: *id008
135
- - !ruby/object:Gem::Dependency
136
- name: rspec
137
135
  prerelease: false
138
- requirement: &id009 !ruby/object:Gem::Requirement
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '1.6'
142
+ - !ruby/object:Gem::Dependency
143
+ name: rspec
144
+ requirement: !ruby/object:Gem::Requirement
139
145
  none: false
140
- requirements:
146
+ requirements:
141
147
  - - ~>
142
- - !ruby/object:Gem::Version
143
- hash: 9
144
- segments:
145
- - 1
146
- - 3
147
- version: "1.3"
148
+ - !ruby/object:Gem::Version
149
+ version: '1.3'
148
150
  type: :development
149
- version_requirements: *id009
150
- - !ruby/object:Gem::Dependency
151
- name: fakefs
152
151
  prerelease: false
153
- requirement: &id010 !ruby/object:Gem::Requirement
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ~>
156
+ - !ruby/object:Gem::Version
157
+ version: '1.3'
158
+ - !ruby/object:Gem::Dependency
159
+ name: fakefs
160
+ requirement: !ruby/object:Gem::Requirement
154
161
  none: false
155
- requirements:
156
- - - ">="
157
- - !ruby/object:Gem::Version
158
- hash: 3
159
- segments:
160
- - 0
161
- - 4
162
- version: "0.4"
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0.4'
163
166
  type: :development
164
- version_requirements: *id010
165
- description: The client tools for the OpenShift platform that allow for application management.
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0.4'
174
+ description: The client tools for the OpenShift platform that allow for application
175
+ management.
166
176
  email: dev@openshift.redhat.com
167
- executables:
168
- - rhc-user-info
169
- - rhc-chk
177
+ executables:
178
+ - rhc-app
170
179
  - rhc-create-app
171
- - rhc-domain-info
172
- - rhc-ctl-domain
173
- - rhc-sshkey
174
- - rhc-tail-files
175
- - rhc-create-domain
176
- - rhc-ctl-app
177
180
  - rhc-domain
178
- - rhc-snapshot
179
- - rhc-app
181
+ - rhc-tail-files
180
182
  - rhc-port-forward
183
+ - rhc-user-info
181
184
  - rhc
185
+ - rhc-ctl-app
186
+ - rhc-ctl-domain
187
+ - rhc-create-domain
188
+ - rhc-snapshot
189
+ - rhc-sshkey
190
+ - rhc-domain-info
191
+ - rhc-chk
182
192
  extensions: []
183
-
184
193
  extra_rdoc_files: []
185
-
186
- files:
194
+ files:
187
195
  - lib/rhc-common.rb
188
- - lib/rhc.rb
189
- - lib/rhc-rest/domain.rb
190
- - lib/rhc-rest/application.rb
191
- - lib/rhc-rest/cartridge.rb
192
- - lib/rhc-rest/client.rb
193
- - lib/rhc-rest/key.rb
194
- - lib/rhc-rest/exceptions/exceptions.rb
195
- - lib/rhc-rest/user.rb
196
- - lib/rhc-rest/version.rb
196
+ - lib/rhc/vendor/sshkey.rb
197
+ - lib/rhc/vendor/okjson.rb
198
+ - lib/rhc/vendor/zliby.rb
197
199
  - lib/rhc/helpers.rb
198
- - lib/rhc/cli.rb
199
200
  - lib/rhc/config.rb
200
- - lib/rhc/commands.rb
201
- - lib/rhc/wizard.rb
202
- - lib/rhc/core_ext.rb
203
201
  - lib/rhc/client.rb
204
202
  - lib/rhc/json.rb
205
- - lib/rhc/vendor/okjson.rb
206
- - lib/rhc/vendor/zliby.rb
207
- - lib/rhc/commands/base.rb
203
+ - lib/rhc/commands.rb
208
204
  - lib/rhc/commands/server.rb
205
+ - lib/rhc/commands/base.rb
206
+ - lib/rhc/core_ext.rb
207
+ - lib/rhc/cli.rb
208
+ - lib/rhc/wizard.rb
209
209
  - lib/rhc/targz.rb
210
+ - lib/rhc.rb
210
211
  - lib/rhc-rest.rb
212
+ - lib/rhc-rest/user.rb
213
+ - lib/rhc-rest/domain.rb
214
+ - lib/rhc-rest/client.rb
215
+ - lib/rhc-rest/application.rb
216
+ - lib/rhc-rest/key.rb
217
+ - lib/rhc-rest/version.rb
218
+ - lib/rhc-rest/cartridge.rb
219
+ - lib/rhc-rest/exceptions/exceptions.rb
211
220
  - conf/express.conf
212
221
  - LICENSE
213
222
  - COPYRIGHT
214
223
  - README.md
215
224
  - Rakefile
216
- - test/sample-usage.rb
217
- - test/support/server.rb
218
225
  - test/support/testcase.rb
226
+ - test/support/server.rb
227
+ - test/sample-usage.rb
219
228
  - test/functional/test_credentials.rb
220
- - test/functional/domain_test.rb
221
229
  - test/functional/application_test.rb
222
- - test/unit/command_test.rb
230
+ - test/functional/domain_test.rb
223
231
  - test/test_helper.rb
232
+ - test/unit/command_test.rb
224
233
  - spec/spec_helper.rb
225
- - spec/rhc/json_spec.rb
226
234
  - spec/rhc/helpers_spec.rb
227
- - spec/rhc/command_spec.rb
228
235
  - spec/rhc/wizard_spec.rb
236
+ - spec/rhc/command_spec.rb
229
237
  - spec/rhc/commands/server_spec.rb
230
- - spec/rhc/cli_spec.rb
231
238
  - spec/rhc/targz_spec.rb
232
- - spec/rhc/assets/foo.txt
233
- - spec/rhc/assets/targz_corrupted.tar.gz
239
+ - spec/rhc/cli_spec.rb
240
+ - spec/rhc/json_spec.rb
234
241
  - spec/rhc/assets/targz_sample.tar.gz
235
- - bin/rhc-user-info
236
- - bin/rhc-chk
242
+ - spec/rhc/assets/targz_corrupted.tar.gz
243
+ - spec/rhc/assets/foo.txt
244
+ - bin/rhc-app
237
245
  - bin/rhc-create-app
238
- - bin/rhc-domain-info
239
- - bin/rhc-ctl-domain
240
- - bin/rhc-sshkey
241
- - bin/rhc-tail-files
242
- - bin/rhc-create-domain
243
- - bin/rhc-ctl-app
244
246
  - bin/rhc-domain
245
- - bin/rhc-snapshot
246
- - bin/rhc-app
247
+ - bin/rhc-tail-files
247
248
  - bin/rhc-port-forward
249
+ - bin/rhc-user-info
248
250
  - bin/rhc
251
+ - bin/rhc-ctl-app
252
+ - bin/rhc-ctl-domain
253
+ - bin/rhc-create-domain
254
+ - bin/rhc-snapshot
255
+ - bin/rhc-sshkey
256
+ - bin/rhc-domain-info
257
+ - bin/rhc-chk
249
258
  homepage: https://github.com/openshift/os-client-tools
250
259
  licenses: []
251
-
252
260
  post_install_message:
253
261
  rdoc_options: []
254
-
255
- require_paths:
262
+ require_paths:
256
263
  - lib
257
- required_ruby_version: !ruby/object:Gem::Requirement
264
+ required_ruby_version: !ruby/object:Gem::Requirement
258
265
  none: false
259
- requirements:
260
- - - ">="
261
- - !ruby/object:Gem::Version
262
- hash: 3
263
- segments:
264
- - 0
265
- version: "0"
266
- required_rubygems_version: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - ! '>='
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ required_rubygems_version: !ruby/object:Gem::Requirement
267
271
  none: false
268
- requirements:
269
- - - ">="
270
- - !ruby/object:Gem::Version
271
- hash: 3
272
- segments:
273
- - 0
274
- version: "0"
272
+ requirements:
273
+ - - ! '>='
274
+ - !ruby/object:Gem::Version
275
+ version: '0'
275
276
  requirements: []
276
-
277
277
  rubyforge_project:
278
- rubygems_version: 1.8.11
278
+ rubygems_version: 1.8.24
279
279
  signing_key:
280
280
  specification_version: 3
281
281
  summary: OpenShift Client Tools
282
- test_files:
283
- - test/sample-usage.rb
284
- - test/support/server.rb
282
+ test_files:
285
283
  - test/support/testcase.rb
284
+ - test/support/server.rb
285
+ - test/sample-usage.rb
286
286
  - test/functional/test_credentials.rb
287
- - test/functional/domain_test.rb
288
287
  - test/functional/application_test.rb
289
- - test/unit/command_test.rb
288
+ - test/functional/domain_test.rb
290
289
  - test/test_helper.rb
290
+ - test/unit/command_test.rb
291
291
  - spec/spec_helper.rb
292
- - spec/rhc/json_spec.rb
293
292
  - spec/rhc/helpers_spec.rb
294
- - spec/rhc/command_spec.rb
295
293
  - spec/rhc/wizard_spec.rb
294
+ - spec/rhc/command_spec.rb
296
295
  - spec/rhc/commands/server_spec.rb
297
- - spec/rhc/cli_spec.rb
298
296
  - spec/rhc/targz_spec.rb
299
- - spec/rhc/assets/foo.txt
300
- - spec/rhc/assets/targz_corrupted.tar.gz
297
+ - spec/rhc/cli_spec.rb
298
+ - spec/rhc/json_spec.rb
301
299
  - spec/rhc/assets/targz_sample.tar.gz
300
+ - spec/rhc/assets/targz_corrupted.tar.gz
301
+ - spec/rhc/assets/foo.txt