rhc 0.75.9 → 0.77.8
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/bin/rhc-chk +21 -16
- data/bin/rhc-create-app +59 -68
- data/bin/rhc-create-domain +15 -10
- data/bin/rhc-ctl-app +5 -0
- data/bin/rhc-snapshot +5 -3
- data/bin/rhc-tail-files +22 -13
- data/bin/rhc-user-info +5 -3
- data/conf/express.conf +1 -1
- data/lib/rhc-common.rb +98 -6
- metadata +12 -13
data/Rakefile
CHANGED
@@ -18,7 +18,7 @@ spec = Gem::Specification.new do |s|
|
|
18
18
|
s.description = %q{The client tools for the OpenShift Express platform that allow for application management.}
|
19
19
|
s.files = FileList['lib/**/*.rb', 'bin/*', 'conf/*'].to_a
|
20
20
|
s.files += %w(LICENSE README Rakefile)
|
21
|
-
s.executables = ['rhc-create-app', 'rhc-create-domain', 'rhc-ctl-app', 'rhc-snapshot', 'rhc-user-info', 'rhc-tail-files']
|
21
|
+
s.executables = ['rhc-chk', 'rhc-create-app', 'rhc-create-domain', 'rhc-ctl-app', 'rhc-snapshot', 'rhc-user-info', 'rhc-tail-files']
|
22
22
|
begin
|
23
23
|
# Use Ruby version to target F13, RHEL5, Windows and OSX (assume no Xcode)
|
24
24
|
if ENV['JSON_PURE'] or (RUBY_VERSION == "1.8.6" or RUBY_PLATFORM =~ /mswin/ or RUBY_PLATFORM =~ /darwin/)
|
data/bin/rhc-chk
CHANGED
@@ -42,6 +42,7 @@ properly setup. Often run to troubleshoot connection issues.
|
|
42
42
|
-p|--password password Red Hat password (for RHN or OpenShift)
|
43
43
|
-d|--debug Print Debug info
|
44
44
|
-h|--help Show Usage info
|
45
|
+
--config path Path of alternate config file
|
45
46
|
|
46
47
|
USAGE
|
47
48
|
exit 255
|
@@ -52,7 +53,8 @@ begin
|
|
52
53
|
["--debug", "-d", GetoptLong::NO_ARGUMENT],
|
53
54
|
["--help", "-h", GetoptLong::NO_ARGUMENT],
|
54
55
|
["--rhlogin", "-l", GetoptLong::REQUIRED_ARGUMENT],
|
55
|
-
["--password", "-p", GetoptLong::REQUIRED_ARGUMENT]
|
56
|
+
["--password", "-p", GetoptLong::REQUIRED_ARGUMENT],
|
57
|
+
["--config", GetoptLong::REQUIRED_ARGUMENT]
|
56
58
|
)
|
57
59
|
opt = {}
|
58
60
|
opts.each do |o, a|
|
@@ -63,13 +65,13 @@ rescue Exception => e
|
|
63
65
|
p_usage
|
64
66
|
end
|
65
67
|
|
68
|
+
# If provided a config path, check it
|
69
|
+
check_cpath(opt)
|
70
|
+
|
66
71
|
# Pull in configs from files
|
67
72
|
@libra_server = get_var('libra_server')
|
68
73
|
@debug = get_var('debug') == 'false' ? nil : get_var('debug')
|
69
74
|
|
70
|
-
libra_kfile = "#{ENV['HOME']}/.ssh/libra_id_rsa"
|
71
|
-
libra_kpfile = "#{ENV['HOME']}/.ssh/libra_id_rsa.pub"
|
72
|
-
|
73
75
|
if opt["help"]
|
74
76
|
p_usage
|
75
77
|
end
|
@@ -170,33 +172,36 @@ end
|
|
170
172
|
puts
|
171
173
|
puts "TEST3: SSH Key check"
|
172
174
|
remote_ssh_pubkey = @user_info["user_info"]["ssh_key"]
|
173
|
-
|
174
|
-
|
175
|
-
|
175
|
+
libra_kfile = get_kfile(false)
|
176
|
+
libra_kpfile = get_kpfile(libra_kfile, false)
|
177
|
+
|
178
|
+
if File.exists?(libra_kfile)
|
179
|
+
puts " OK: #{libra_kfile} - Found"
|
180
|
+
key_dump = `ssh-keygen -f #{libra_kfile} -y`
|
176
181
|
local_derived_ssh_pubkey = key_dump.to_s.strip.split(' ')[1]
|
177
182
|
else
|
178
|
-
puts " ERROR:
|
183
|
+
puts " ERROR: #{libra_kfile} - Not Found!"
|
179
184
|
end
|
180
185
|
|
181
|
-
if File.exists?(
|
182
|
-
puts " OK:
|
183
|
-
fp = File.open(
|
186
|
+
if File.exists?(libra_kpfile)
|
187
|
+
puts " OK: #{libra_kpfile} Found"
|
188
|
+
fp = File.open(libra_kpfile)
|
184
189
|
local_ssh_pubkey = fp.gets.split(' ')[1]
|
185
190
|
fp.close
|
186
191
|
else
|
187
|
-
puts " WARNING:
|
192
|
+
puts " WARNING: #{libra_kpfile} Not Found! (non fatal error)"
|
188
193
|
end
|
189
194
|
|
190
195
|
if local_ssh_pubkey.to_s.strip == remote_ssh_pubkey.to_s.strip
|
191
|
-
puts " OK: Remote and
|
196
|
+
puts " OK: Remote and #{libra_kpfile} - match"
|
192
197
|
else
|
193
|
-
puts " WARNING: Remote and
|
198
|
+
puts " WARNING: Remote and #{libra_kpfile} key do not match. (have you changed machines or ssh keys?)"
|
194
199
|
end
|
195
200
|
|
196
201
|
if local_derived_ssh_pubkey.to_s.strip == remote_ssh_pubkey.to_s.strip
|
197
|
-
puts " OK: local
|
202
|
+
puts " OK: local #{libra_kfile} should auth with openshift"
|
198
203
|
else
|
199
|
-
puts " WARNING: local
|
204
|
+
puts " WARNING: local #{libra_kpfile} DOES NOT match remote pub key, ssh auth cannot continue"
|
200
205
|
puts " FIX: Perhaps you should regenerate your public key, or run rhc-create-domain with -a to alter the remote key"
|
201
206
|
end
|
202
207
|
|
data/bin/rhc-create-app
CHANGED
@@ -40,6 +40,7 @@ Create an OpenShift Express app.
|
|
40
40
|
-n|--nogit Only create remote space, don't pull it locally
|
41
41
|
-d|--debug Print Debug info
|
42
42
|
-h|--help Show Usage info
|
43
|
+
--config path Path of alternate config file
|
43
44
|
|
44
45
|
USAGE
|
45
46
|
exit 255
|
@@ -54,6 +55,7 @@ begin
|
|
54
55
|
["--password", "-p", GetoptLong::REQUIRED_ARGUMENT],
|
55
56
|
["--app", "-a", GetoptLong::REQUIRED_ARGUMENT],
|
56
57
|
["--repo", "-r", GetoptLong::REQUIRED_ARGUMENT],
|
58
|
+
["--config", GetoptLong::REQUIRED_ARGUMENT],
|
57
59
|
["--type", "-t", GetoptLong::REQUIRED_ARGUMENT]
|
58
60
|
)
|
59
61
|
opt = {}
|
@@ -65,6 +67,9 @@ rescue Exception => e
|
|
65
67
|
p_usage
|
66
68
|
end
|
67
69
|
|
70
|
+
# If provided a config path, check it
|
71
|
+
check_cpath(opt)
|
72
|
+
|
68
73
|
# Pull in configs from files
|
69
74
|
libra_server = get_var('libra_server')
|
70
75
|
debug = get_var('debug') == 'false' ? nil : get_var('debug')
|
@@ -140,23 +145,6 @@ unless opt['nogit']
|
|
140
145
|
end
|
141
146
|
end
|
142
147
|
|
143
|
-
#
|
144
|
-
# Confirm libra_id_rsa exists
|
145
|
-
#
|
146
|
-
unless File.exists?("#{ssh_config_d}/libra_id_rsa")
|
147
|
-
puts
|
148
|
-
puts "Could not find #{ssh_config_d}/libra_id_rsa. Unable to continue."
|
149
|
-
puts "Your SSH keys are created either by running ssh-keygen (password optional)"
|
150
|
-
puts "or by having the rhc-create-domain command do it for you. If you created"
|
151
|
-
puts "them on your own (or want to use an existing keypair), be sure to paste"
|
152
|
-
puts "your public key into the dashboard page at http://www.openshift.com."
|
153
|
-
puts "The client tools expect libra_id_rsa[.pub] so in the event that you are"
|
154
|
-
puts "using existing keys, you can symlink libra_id_rsa -> id_rsa and"
|
155
|
-
puts "libra_id_rsa.pub -> id_rsa.pub"
|
156
|
-
puts "Also, make sure you never give out your secret key!"
|
157
|
-
exit 212
|
158
|
-
end
|
159
|
-
|
160
148
|
#
|
161
149
|
# Create remote application space
|
162
150
|
#
|
@@ -214,66 +202,69 @@ puts "Checking ~/.ssh/config"
|
|
214
202
|
user_info = RHC::get_user_info(libra_server, opt['rhlogin'], password, @http, debug, false)
|
215
203
|
|
216
204
|
fqdn = "#{opt['app']}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']}"
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
205
|
+
|
206
|
+
ssh_key_file_name = File.basename(get_kfile())
|
207
|
+
if (ssh_key_file_name != 'id_rsa')
|
208
|
+
found = false
|
209
|
+
|
210
|
+
begin
|
211
|
+
File.open(ssh_config, "r") do |sline|
|
212
|
+
while(line = sline.gets)
|
213
|
+
if line.to_s.index("Host *.#{user_info['user_info']['rhc_domain']}") == 0
|
214
|
+
found = true
|
215
|
+
break
|
216
|
+
end
|
217
|
+
end
|
218
|
+
end
|
219
|
+
rescue Errno::EACCES
|
220
|
+
puts "Could not read from #{ssh_config}"
|
221
|
+
puts "Reason: " + $!
|
222
|
+
puts
|
223
|
+
puts "Please correct this first. Then run rerun."
|
224
|
+
puts
|
225
|
+
exit 213
|
226
|
+
rescue Errno::ENOENT
|
227
|
+
puts "Could not find #{ssh_config}. This is ok, continuing"
|
228
|
+
end
|
229
|
+
if found
|
230
|
+
puts "Found #{user_info['user_info']['rhc_domain']} in ~/.ssh/config... No need to adjust"
|
231
|
+
else
|
232
|
+
puts " Adding #{user_info['user_info']['rhc_domain']} to ~/.ssh/config"
|
233
|
+
begin
|
234
|
+
f = File.open(ssh_config, "a")
|
235
|
+
f.puts <<SSH
|
236
|
+
|
247
237
|
# Added by rhc-create-app on #{`date`}
|
248
238
|
Host *.#{user_info['user_info']['rhc_domain']}
|
249
|
-
IdentityFile ~/.ssh
|
239
|
+
IdentityFile ~/.ssh/#{ssh_key_file_name}
|
250
240
|
VerifyHostKeyDNS yes
|
251
241
|
StrictHostKeyChecking no
|
252
242
|
UserKnownHostsFile ~/.ssh/libra_known_hosts
|
253
243
|
|
254
244
|
SSH
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
245
|
+
f.close
|
246
|
+
rescue Errno::EACCES
|
247
|
+
puts "Could not write to #{ssh_config}"
|
248
|
+
puts "Reason: " + $!
|
249
|
+
puts
|
250
|
+
puts "Please correct this first. Then run rerun."
|
251
|
+
puts
|
252
|
+
exit 214
|
253
|
+
rescue Errno::ENOENT
|
254
|
+
# Make directory and config if they do not exist
|
255
|
+
puts "Could not find directory: " + $!
|
256
|
+
puts "creating"
|
257
|
+
FileUtils.mkdir_p ssh_config_d
|
258
|
+
file = File.open(ssh_config, 'w')
|
259
|
+
file.close
|
260
|
+
retry
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
File.chmod(0700, ssh_config_d)
|
265
|
+
File.chmod(0600, ssh_config)
|
272
266
|
end
|
273
267
|
|
274
|
-
File.chmod(0700, ssh_config_d)
|
275
|
-
File.chmod(0600, ssh_config)
|
276
|
-
|
277
268
|
#
|
278
269
|
# Confirm that the host exists in DNS
|
279
270
|
#
|
data/bin/rhc-create-domain
CHANGED
@@ -27,13 +27,14 @@ require 'rhc-common'
|
|
27
27
|
# print help
|
28
28
|
#
|
29
29
|
def p_usage
|
30
|
+
|
30
31
|
puts <<USAGE
|
31
32
|
|
32
33
|
Usage: #{$0}
|
33
34
|
Bind a registered rhcloud user to a domain in rhcloud.
|
34
35
|
|
35
|
-
NOTE: to change ssh key,
|
36
|
-
|
36
|
+
NOTE: to change ssh key, alter your openshift <id_rsa> and
|
37
|
+
<id_rsa>.pub keys, then re-run with --alter
|
37
38
|
|
38
39
|
-n|--namespace namespace Namespace for your application(s) (alphanumeric - max #{RHC::Maxdlen} chars) (required)
|
39
40
|
-l|--rhlogin rhlogin Red Hat login (RHN or OpenShift login with OpenShift Express access) (required)
|
@@ -41,6 +42,7 @@ Bind a registered rhcloud user to a domain in rhcloud.
|
|
41
42
|
-a|--alter Alter namespace (will change urls) and/or ssh key
|
42
43
|
-d|--debug Print Debug info
|
43
44
|
-h|--help Show Usage info
|
45
|
+
--config path Path of alternate config file
|
44
46
|
|
45
47
|
USAGE
|
46
48
|
exit 255
|
@@ -53,6 +55,7 @@ begin
|
|
53
55
|
["--rhlogin", "-l", GetoptLong::REQUIRED_ARGUMENT],
|
54
56
|
["--password", "-p", GetoptLong::REQUIRED_ARGUMENT],
|
55
57
|
["--namespace", "-n", GetoptLong::REQUIRED_ARGUMENT],
|
58
|
+
["--config", GetoptLong::REQUIRED_ARGUMENT],
|
56
59
|
["--alter", "-a", GetoptLong::NO_ARGUMENT]
|
57
60
|
)
|
58
61
|
|
@@ -62,16 +65,19 @@ begin
|
|
62
65
|
end
|
63
66
|
rescue Exception => e
|
64
67
|
#puts e.message
|
65
|
-
|
68
|
+
p_usage
|
66
69
|
end
|
67
70
|
|
71
|
+
# If provided a config path, check it
|
72
|
+
check_cpath(opt)
|
73
|
+
|
68
74
|
# Pull in configs from files
|
69
75
|
libra_server = get_var('libra_server')
|
70
76
|
debug = get_var('debug') == 'false' ? nil : get_var('debug')
|
71
77
|
|
72
78
|
|
73
|
-
libra_kfile =
|
74
|
-
libra_kpfile =
|
79
|
+
libra_kfile = get_kfile(false)
|
80
|
+
libra_kpfile = get_kpfile(libra_kfile, opt['alter'])
|
75
81
|
|
76
82
|
if opt["help"]
|
77
83
|
p_usage
|
@@ -104,8 +110,8 @@ end
|
|
104
110
|
#
|
105
111
|
|
106
112
|
def add_rhlogin_config(rhlogin, uuid)
|
107
|
-
f = open(File.expand_path(
|
108
|
-
unless
|
113
|
+
f = open(File.expand_path(config_path), 'a')
|
114
|
+
unless config.get_value('default_rhlogin')
|
109
115
|
f.puts("# Default rhlogin to use if none is specified")
|
110
116
|
f.puts("default_rhlogin=#{rhlogin}")
|
111
117
|
f.puts("")
|
@@ -115,7 +121,7 @@ end
|
|
115
121
|
|
116
122
|
|
117
123
|
#
|
118
|
-
# Check to see if a
|
124
|
+
# Check to see if a libra_kfile exists, if not create it.
|
119
125
|
#
|
120
126
|
|
121
127
|
if File.readable?(libra_kfile)
|
@@ -157,8 +163,7 @@ if response.code == '200'
|
|
157
163
|
puts <<EOF
|
158
164
|
Creation successful
|
159
165
|
|
160
|
-
You may now create an application.
|
161
|
-
in #{@local_config_path} which has been created and populated for you.
|
166
|
+
You may now create an application.
|
162
167
|
|
163
168
|
EOF
|
164
169
|
else
|
data/bin/rhc-ctl-app
CHANGED
@@ -41,6 +41,7 @@ Control an OpenShift express app
|
|
41
41
|
-b|--bypass Bypass warnings
|
42
42
|
-d|--debug Print Debug info
|
43
43
|
-h|--help Show Usage info
|
44
|
+
--config path Path of alternate config file
|
44
45
|
|
45
46
|
USAGE
|
46
47
|
exit 255
|
@@ -67,6 +68,7 @@ begin
|
|
67
68
|
["--embed", "-e", GetoptLong::REQUIRED_ARGUMENT],
|
68
69
|
["--password", "-p", GetoptLong::REQUIRED_ARGUMENT],
|
69
70
|
["--app", "-a", GetoptLong::REQUIRED_ARGUMENT],
|
71
|
+
["--config", GetoptLong::REQUIRED_ARGUMENT],
|
70
72
|
["--command", "-c", GetoptLong::REQUIRED_ARGUMENT]
|
71
73
|
)
|
72
74
|
opt = {}
|
@@ -78,6 +80,9 @@ rescue Exception => e
|
|
78
80
|
p_usage
|
79
81
|
end
|
80
82
|
|
83
|
+
# If provided a config path, check it
|
84
|
+
check_cpath(opt)
|
85
|
+
|
81
86
|
# Pull in configs from files
|
82
87
|
libra_server = get_var('libra_server')
|
83
88
|
debug = get_var('debug') == 'false' ? nil : get_var('debug')
|
data/bin/rhc-snapshot
CHANGED
@@ -40,6 +40,7 @@ Pull down application snapshot for a user
|
|
40
40
|
-p|--password password RHLogin password (optional, will prompt)
|
41
41
|
-d|--debug Print Debug info
|
42
42
|
-h|--help Show Usage info
|
43
|
+
--config path Path of alternate config file
|
43
44
|
|
44
45
|
USAGE
|
45
46
|
exit 255
|
@@ -53,6 +54,7 @@ begin
|
|
53
54
|
["--save", "-s", GetoptLong::REQUIRED_ARGUMENT],
|
54
55
|
["--restore", "-r", GetoptLong::REQUIRED_ARGUMENT],
|
55
56
|
["--rhlogin", "-l", GetoptLong::REQUIRED_ARGUMENT],
|
57
|
+
["--config", GetoptLong::REQUIRED_ARGUMENT],
|
56
58
|
["--password", "-p", GetoptLong::REQUIRED_ARGUMENT]
|
57
59
|
)
|
58
60
|
opt = {}
|
@@ -64,13 +66,13 @@ rescue Exception => e
|
|
64
66
|
p_usage
|
65
67
|
end
|
66
68
|
|
69
|
+
# If provided a config path, check it
|
70
|
+
check_cpath(opt)
|
71
|
+
|
67
72
|
# Pull in configs from files
|
68
73
|
libra_server = get_var('libra_server')
|
69
74
|
debug = get_var('debug') == 'false' ? nil : get_var('debug')
|
70
75
|
|
71
|
-
libra_kfile = "#{ENV['HOME']}/.ssh/libra_id_rsa"
|
72
|
-
libra_kpfile = "#{ENV['HOME']}/.ssh/libra_id_rsa.pub"
|
73
|
-
|
74
76
|
if opt["help"] || !opt['app']
|
75
77
|
p_usage
|
76
78
|
end
|
data/bin/rhc-tail-files
CHANGED
@@ -41,6 +41,7 @@ Tail the logs of an application
|
|
41
41
|
-p|--password password RHLogin password (optional, will prompt)
|
42
42
|
-d|--debug Print Debug info
|
43
43
|
-h|--help Show Usage info
|
44
|
+
--config path Path of alternate config file
|
44
45
|
|
45
46
|
USAGE
|
46
47
|
exit 255
|
@@ -54,6 +55,7 @@ begin
|
|
54
55
|
["--opts", "-o", GetoptLong::REQUIRED_ARGUMENT],
|
55
56
|
["--files", "-f", GetoptLong::REQUIRED_ARGUMENT],
|
56
57
|
["--rhlogin", "-l", GetoptLong::REQUIRED_ARGUMENT],
|
58
|
+
["--config", GetoptLong::REQUIRED_ARGUMENT],
|
57
59
|
["--password", "-p", GetoptLong::REQUIRED_ARGUMENT]
|
58
60
|
)
|
59
61
|
opt = {}
|
@@ -65,13 +67,13 @@ rescue Exception => e
|
|
65
67
|
p_usage
|
66
68
|
end
|
67
69
|
|
70
|
+
# If provided a config path, check it
|
71
|
+
check_cpath(opt)
|
72
|
+
|
68
73
|
# Pull in configs from files
|
69
74
|
libra_server = get_var('libra_server')
|
70
75
|
debug = get_var('debug') == 'false' ? nil : get_var('debug')
|
71
76
|
|
72
|
-
libra_kfile = "#{ENV['HOME']}/.ssh/libra_id_rsa"
|
73
|
-
libra_kpfile = "#{ENV['HOME']}/.ssh/libra_id_rsa.pub"
|
74
|
-
|
75
77
|
if opt['help'] || !opt['app']
|
76
78
|
p_usage
|
77
79
|
end
|
@@ -108,19 +110,26 @@ file_glob = "#{opt['files']}"
|
|
108
110
|
app_uuid = user_info['app_info'][app]['uuid']
|
109
111
|
namespace = user_info['user_info']['namespace']
|
110
112
|
rhc_domain = user_info['user_info']['rhc_domain']
|
111
|
-
|
113
|
+
|
114
|
+
# -t to force PTY and avoid daemons
|
115
|
+
# Red Hat Openshift: https://bugzilla.redhat.com/show_bug.cgi?id=726646
|
116
|
+
# OpenSSH https://bugzilla.mindrot.org/show_bug.cgi?id=396
|
117
|
+
|
118
|
+
ssh_cmd = "ssh -t #{app_uuid}@#{app}-#{namespace}.#{rhc_domain} 'tail#{opt['opts'] ? ' --opts ' + Base64::encode64(opt['opts']).chomp : ''} #{file_glob}'"
|
112
119
|
|
113
120
|
puts "Attempting to tail files: #{file_glob}"
|
114
121
|
puts "Use ctl + c to stop"
|
115
122
|
puts
|
116
123
|
puts ssh_cmd if debug
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
124
|
+
begin
|
125
|
+
exec ssh_cmd
|
126
|
+
rescue SystemCallError
|
127
|
+
puts
|
128
|
+
puts "Error in trying to tail files. You can tail manually by running:"
|
129
|
+
puts
|
130
|
+
puts ssh_cmd
|
131
|
+
puts
|
132
|
+
exit 254
|
125
133
|
end
|
126
|
-
|
134
|
+
# this should never happen
|
135
|
+
exit 1
|
data/bin/rhc-user-info
CHANGED
@@ -39,6 +39,7 @@ Display information about a user
|
|
39
39
|
-i|--info Show user info
|
40
40
|
-d|--debug Print Debug info
|
41
41
|
-h|--help Show Usage info
|
42
|
+
--config path Path of alternate config file
|
42
43
|
|
43
44
|
USAGE
|
44
45
|
exit 255
|
@@ -51,6 +52,7 @@ begin
|
|
51
52
|
["--apps", "-a", GetoptLong::NO_ARGUMENT],
|
52
53
|
["--info", "-i", GetoptLong::NO_ARGUMENT],
|
53
54
|
["--rhlogin", "-l", GetoptLong::REQUIRED_ARGUMENT],
|
55
|
+
["--config", GetoptLong::REQUIRED_ARGUMENT],
|
54
56
|
["--password", "-p", GetoptLong::REQUIRED_ARGUMENT]
|
55
57
|
)
|
56
58
|
opt = {}
|
@@ -62,13 +64,13 @@ rescue Exception => e
|
|
62
64
|
p_usage
|
63
65
|
end
|
64
66
|
|
67
|
+
# If provided a config path, check it
|
68
|
+
check_cpath(opt)
|
69
|
+
|
65
70
|
# Pull in configs from files
|
66
71
|
libra_server = get_var('libra_server')
|
67
72
|
debug = get_var('debug') == 'false' ? nil : get_var('debug')
|
68
73
|
|
69
|
-
libra_kfile = "#{ENV['HOME']}/.ssh/libra_id_rsa"
|
70
|
-
libra_kpfile = "#{ENV['HOME']}/.ssh/libra_id_rsa.pub"
|
71
|
-
|
72
74
|
if opt["help"]
|
73
75
|
p_usage
|
74
76
|
end
|
data/conf/express.conf
CHANGED
data/lib/rhc-common.rb
CHANGED
@@ -102,10 +102,7 @@ module RHC
|
|
102
102
|
# Invalid chars (") ($) (^) (<) (>) (|) (%) (/) (;) (:) (,) (\) (*) (=) (~)
|
103
103
|
def self.check_rhlogin(rhlogin)
|
104
104
|
if rhlogin
|
105
|
-
if rhlogin
|
106
|
-
puts 'RHLogin must be at least 6 characters'
|
107
|
-
return false
|
108
|
-
elsif rhlogin =~ /["\$\^<>\|%\/;:,\\\*=~]/
|
105
|
+
if rhlogin =~ /["\$\^<>\|%\/;:,\\\*=~]/
|
109
106
|
puts 'RHLogin may not contain any of these characters: (\") ($) (^) (<) (>) (|) (%) (/) (;) (:) (,) (\) (*) (=) (~)'
|
110
107
|
return false
|
111
108
|
end
|
@@ -334,6 +331,7 @@ end
|
|
334
331
|
# Config paths... /etc/openshift/express.conf or $GEM/conf/express.conf -> ~/.openshift/express.conf
|
335
332
|
#
|
336
333
|
# semi-private: Just in case we rename again :)
|
334
|
+
@opts_config_path = nil
|
337
335
|
@conf_name = 'express.conf'
|
338
336
|
_linux_cfg = '/etc/openshift/' + @conf_name
|
339
337
|
_gem_cfg = File.join(File.expand_path(File.dirname(__FILE__) + "/../conf"), @conf_name)
|
@@ -344,7 +342,16 @@ _home_conf = File.expand_path('~/.openshift')
|
|
344
342
|
FileUtils.mkdir_p _home_conf unless File.directory?(_home_conf)
|
345
343
|
local_config_path = File.expand_path(@local_config_path)
|
346
344
|
if !File.exists? local_config_path
|
347
|
-
|
345
|
+
file = File.open(local_config_path, 'w')
|
346
|
+
begin
|
347
|
+
file.puts <<EOF
|
348
|
+
# SSH key file
|
349
|
+
#ssh_key_file = 'libra_id_rsa'
|
350
|
+
EOF
|
351
|
+
|
352
|
+
ensure
|
353
|
+
file.close
|
354
|
+
end
|
348
355
|
puts ""
|
349
356
|
puts "Created local config file: " + local_config_path
|
350
357
|
puts "express.conf contains user configuration and can be transferred across clients."
|
@@ -369,12 +376,97 @@ else
|
|
369
376
|
@http = Net::HTTP
|
370
377
|
end
|
371
378
|
|
379
|
+
|
380
|
+
#
|
381
|
+
# Support funcs
|
382
|
+
#
|
383
|
+
def check_cpath(opts)
|
384
|
+
if !opts["config"].nil?
|
385
|
+
@opts_config_path = opts["config"]
|
386
|
+
if !File.readable?(File.expand_path(@opts_config_path))
|
387
|
+
puts "Could not open config file: #{@opts_config_path}"
|
388
|
+
exit 253
|
389
|
+
else
|
390
|
+
begin
|
391
|
+
@opts_config = ParseConfig.new(File.expand_path(@opts_config_path))
|
392
|
+
rescue Errno::EACCES => e
|
393
|
+
puts "Could not open config file (#{@opts_config_path}): #{e.message}"
|
394
|
+
exit 253
|
395
|
+
end
|
396
|
+
end
|
397
|
+
end
|
398
|
+
end
|
399
|
+
|
400
|
+
def config_path
|
401
|
+
return @opts_config_path ? @opts_config_path : @local_config_path
|
402
|
+
end
|
403
|
+
|
404
|
+
def config
|
405
|
+
return @opts_config ? @opts_config : @local_config
|
406
|
+
end
|
407
|
+
|
372
408
|
#
|
373
409
|
# Check for local var in
|
410
|
+
# 0) --config path file
|
374
411
|
# 1) ~/.openshift/express.conf
|
375
412
|
# 2) /etc/openshift/express.conf
|
376
413
|
# 3) $GEM/../conf/express.conf
|
377
414
|
#
|
378
415
|
def get_var(var)
|
379
|
-
|
416
|
+
v = nil
|
417
|
+
if !@opts_config.nil? && @opts_config.get_value(var)
|
418
|
+
v = @opts_config.get_value(var)
|
419
|
+
else
|
420
|
+
v = @local_config.get_value(var) ? @local_config.get_value(var) : @global_config.get_value(var)
|
421
|
+
end
|
422
|
+
v
|
423
|
+
end
|
424
|
+
|
425
|
+
def kfile_not_found
|
426
|
+
puts <<KFILE_NOT_FOUND
|
427
|
+
Your SSH keys are created either by running ssh-keygen (password optional)
|
428
|
+
or by having the rhc-create-domain command do it for you. If you created
|
429
|
+
them on your own (or want to use an existing keypair), be sure to paste
|
430
|
+
your public key into the express console at http://www.openshift.com.
|
431
|
+
The client tools use the value of 'ssh_key_file' in express.conf to find
|
432
|
+
your key followed by the defaults of libra_id_rsa[.pub] and then
|
433
|
+
id_rsa[.pub].
|
434
|
+
KFILE_NOT_FOUND
|
435
|
+
|
436
|
+
#exit 212
|
380
437
|
end
|
438
|
+
|
439
|
+
def get_kfile(check_exists=true)
|
440
|
+
ssh_key_file = get_var('ssh_key_file')
|
441
|
+
if ssh_key_file
|
442
|
+
if (File.basename(ssh_key_file) == ssh_key_file)
|
443
|
+
kfile = "#{ENV['HOME']}/.ssh/#{ssh_key_file}"
|
444
|
+
else
|
445
|
+
kfile = File.expand_path(ssh_key_file)
|
446
|
+
end
|
447
|
+
else
|
448
|
+
kfile = "#{ENV['HOME']}/.ssh/libra_id_rsa"
|
449
|
+
end
|
450
|
+
if check_exists && !File.exists?(kfile)
|
451
|
+
if ssh_key_file
|
452
|
+
puts "WARNING: Unable to find '#{kfile}' referenced in express.conf."
|
453
|
+
kfile_not_found
|
454
|
+
else
|
455
|
+
kfile = "#{ENV['HOME']}/.ssh/id_rsa"
|
456
|
+
if !File.exists?(kfile)
|
457
|
+
puts "WARNING: Unable to find ssh key file."
|
458
|
+
kfile_not_found
|
459
|
+
end
|
460
|
+
end
|
461
|
+
end
|
462
|
+
return kfile
|
463
|
+
end
|
464
|
+
|
465
|
+
def get_kpfile(kfile, check_exists=true)
|
466
|
+
kpfile = kfile + '.pub'
|
467
|
+
if check_exists && !File.exists?(kpfile)
|
468
|
+
puts "WARNING: Unable to find '#{kpfile}'"
|
469
|
+
kfile_not_found
|
470
|
+
end
|
471
|
+
return kpfile
|
472
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rhc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 315
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 77
|
9
|
+
- 8
|
10
|
+
version: 0.77.8
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Red Hat
|
@@ -15,8 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-09-28 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
name: json_pure
|
@@ -49,6 +48,7 @@ dependencies:
|
|
49
48
|
description: The client tools for the OpenShift Express platform that allow for application management.
|
50
49
|
email: openshift@redhat.com
|
51
50
|
executables:
|
51
|
+
- rhc-chk
|
52
52
|
- rhc-create-app
|
53
53
|
- rhc-create-domain
|
54
54
|
- rhc-ctl-app
|
@@ -61,18 +61,17 @@ extra_rdoc_files: []
|
|
61
61
|
|
62
62
|
files:
|
63
63
|
- lib/rhc-common.rb
|
64
|
-
- bin/rhc-
|
65
|
-
- bin/rhc-create-domain
|
64
|
+
- bin/rhc-ctl-app
|
66
65
|
- bin/rhc-tail-files
|
67
66
|
- bin/rhc-create-app
|
68
|
-
- bin/rhc-
|
69
|
-
- bin/rhc-user-info
|
67
|
+
- bin/rhc-chk
|
70
68
|
- bin/rhc-snapshot
|
69
|
+
- bin/rhc-create-domain
|
70
|
+
- bin/rhc-user-info
|
71
71
|
- conf/express.conf
|
72
72
|
- LICENSE
|
73
73
|
- README
|
74
74
|
- Rakefile
|
75
|
-
has_rdoc: true
|
76
75
|
homepage: https://openshift.redhat.com/app/express
|
77
76
|
licenses: []
|
78
77
|
|
@@ -102,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
101
|
requirements: []
|
103
102
|
|
104
103
|
rubyforge_project:
|
105
|
-
rubygems_version: 1.
|
104
|
+
rubygems_version: 1.7.2
|
106
105
|
signing_key:
|
107
106
|
specification_version: 3
|
108
107
|
summary: OpenShift Express Client Tools
|