rhc 0.93.18 → 0.93.19

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