rhc 1.3.8 → 1.4.7
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/features/lib/rhc_helper/domain.rb +9 -18
- data/features/scaled_application.feature +1 -1
- data/features/step_definitions/cartridge_steps.rb +1 -1
- data/lib/rhc.rb +3 -0
- data/lib/rhc/cartridge_helpers.rb +85 -27
- data/lib/rhc/command_runner.rb +1 -1
- data/lib/rhc/commands/app.rb +64 -52
- data/lib/rhc/commands/cartridge.rb +19 -32
- data/lib/rhc/commands/port_forward.rb +4 -2
- data/lib/rhc/coverage_helper.rb +2 -4
- data/lib/rhc/exceptions.rb +0 -3
- data/lib/rhc/git_helpers.rb +1 -1
- data/lib/rhc/helpers.rb +25 -11
- data/lib/rhc/output_helpers.rb +1 -7
- data/lib/rhc/rest/cartridge.rb +1 -1
- data/lib/rhc/rest/client.rb +3 -3
- data/lib/rhc/rest/mock.rb +8 -2
- data/lib/rhc/wizard.rb +29 -22
- data/spec/coverage_helper.rb +5 -8
- data/spec/rhc/commands/app_spec.rb +95 -8
- data/spec/rhc/commands/cartridge_spec.rb +2 -4
- data/spec/rhc/commands/port_forward_spec.rb +16 -7
- data/spec/rhc/helpers_spec.rb +52 -16
- data/spec/rhc/wizard_spec.rb +1 -6
- data/spec/spec_helper.rb +0 -1
- metadata +2 -61
- data/bin/rhc-app +0 -549
- data/bin/rhc-chk +0 -595
- data/bin/rhc-create-app +0 -249
- data/bin/rhc-create-domain +0 -190
- data/bin/rhc-ctl-app +0 -180
- data/bin/rhc-ctl-domain +0 -191
- data/bin/rhc-domain +0 -347
- data/bin/rhc-domain-info +0 -156
- data/bin/rhc-port-forward +0 -234
- data/bin/rhc-snapshot +0 -109
- data/bin/rhc-sshkey +0 -177
- data/bin/rhc-tail-files +0 -133
- data/bin/rhc-user-info +0 -12
- data/lib/rhc-common.rb +0 -1205
data/bin/rhc-domain-info
DELETED
@@ -1,156 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'rhc/coverage_helper'
|
4
|
-
|
5
|
-
require 'rhc-common'
|
6
|
-
|
7
|
-
RHC::Helpers.deprecated_command('rhc domain show',true)
|
8
|
-
|
9
|
-
#
|
10
|
-
# print help
|
11
|
-
#
|
12
|
-
def p_usage(error_code = 255)
|
13
|
-
rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "required"
|
14
|
-
puts <<USAGE
|
15
|
-
|
16
|
-
Usage: #{$0}
|
17
|
-
Display information about a user
|
18
|
-
|
19
|
-
-l|--rhlogin rhlogin OpenShift login (#{rhlogin})
|
20
|
-
-p|--password password Password (optional, will prompt)
|
21
|
-
-a|--apps List applications for rhlogin
|
22
|
-
-i|--info Show user info
|
23
|
-
-d|--debug Print Debug info
|
24
|
-
-h|--help Show Usage info
|
25
|
-
--config path Path of alternate config file
|
26
|
-
--timeout # Timeout, in seconds, for the session
|
27
|
-
|
28
|
-
USAGE
|
29
|
-
exit error_code
|
30
|
-
end
|
31
|
-
|
32
|
-
begin
|
33
|
-
opts = GetoptLong.new(
|
34
|
-
["--debug", "-d", GetoptLong::NO_ARGUMENT],
|
35
|
-
["--help", "-h", GetoptLong::NO_ARGUMENT],
|
36
|
-
["--apps", "-a", GetoptLong::NO_ARGUMENT],
|
37
|
-
["--info", "-i", GetoptLong::NO_ARGUMENT],
|
38
|
-
["--rhlogin", "-l", GetoptLong::REQUIRED_ARGUMENT],
|
39
|
-
["--config", GetoptLong::REQUIRED_ARGUMENT],
|
40
|
-
["--password", "-p", GetoptLong::REQUIRED_ARGUMENT],
|
41
|
-
["--timeout", GetoptLong::REQUIRED_ARGUMENT]
|
42
|
-
)
|
43
|
-
opt = {}
|
44
|
-
opts.each do |o, a|
|
45
|
-
opt[o[2..-1]] = a.to_s
|
46
|
-
end
|
47
|
-
rescue Exception => e
|
48
|
-
#puts e.message
|
49
|
-
p_usage
|
50
|
-
end
|
51
|
-
|
52
|
-
# If provided a config path, check it
|
53
|
-
RHC::Config.check_cpath(opt)
|
54
|
-
|
55
|
-
# Pull in configs from files
|
56
|
-
libra_server = get_var('libra_server')
|
57
|
-
debug = get_var('debug') == 'false' ? nil : get_var('debug')
|
58
|
-
|
59
|
-
p_usage 0 if opt["help"]
|
60
|
-
|
61
|
-
p_usage if 0 != ARGV.length
|
62
|
-
|
63
|
-
debug = true if opt["debug"]
|
64
|
-
|
65
|
-
RHC::debug(debug)
|
66
|
-
|
67
|
-
RHC::timeout(opt["timeout"], get_var('timeout'))
|
68
|
-
RHC::connect_timeout(opt["timeout"], get_var('timeout'))
|
69
|
-
|
70
|
-
opt["rhlogin"] = get_var('default_rhlogin') unless opt["rhlogin"]
|
71
|
-
|
72
|
-
if !RHC::check_rhlogin(opt['rhlogin'])
|
73
|
-
p_usage
|
74
|
-
end
|
75
|
-
|
76
|
-
password = opt['password']
|
77
|
-
if !password
|
78
|
-
password = RHC::get_password
|
79
|
-
end
|
80
|
-
|
81
|
-
opt['apps'] = true if not opt['info'] and not opt['apps']
|
82
|
-
user_info = RHC::get_user_info(libra_server, opt['rhlogin'], password, RHC::Config.default_proxy, true)
|
83
|
-
|
84
|
-
if opt['info']
|
85
|
-
ssh_keys = RHC::get_ssh_keys(libra_server, opt['rhlogin'], password, RHC::Config.default_proxy)
|
86
|
-
|
87
|
-
domains = user_info['user_info']['domains']
|
88
|
-
num_domains = domains.length
|
89
|
-
|
90
|
-
puts "User Info"
|
91
|
-
puts "========="
|
92
|
-
if num_domains == 0
|
93
|
-
puts "Namespace: No namespaces found. You can use 'rhc domain create -n <namespace>' to create a namespace for your applications."
|
94
|
-
elsif num_domains == 1
|
95
|
-
puts "Namespace: #{domains[0]['namespace']}"
|
96
|
-
else
|
97
|
-
domains.each_index { |i| puts "Namespace(#{i}): #{domains[i]['namespace']}" }
|
98
|
-
end
|
99
|
-
#puts " UUID: #{user_info['user_info']['uuid']}"
|
100
|
-
puts " OpenShift login: #{user_info['user_info']['rhlogin']}"
|
101
|
-
puts "Primary SSH key: #{user_info['user_info']['ssh_key']}"
|
102
|
-
puts "Primary SSH key type: #{user_info['user_info']['ssh_type']}" unless user_info['user_info']['ssh_type'].to_s.strip.length == 0
|
103
|
-
|
104
|
-
if ssh_keys['keys'] && ssh_keys['keys'].kind_of?(Hash)
|
105
|
-
puts ""
|
106
|
-
puts "Additional SSH keys"
|
107
|
-
puts "==================="
|
108
|
-
ssh_keys['keys'].each do |name, keyval|
|
109
|
-
puts "Name: #{name}"
|
110
|
-
puts " Key: #{keyval['key']}"
|
111
|
-
puts "Type: #{keyval['type']}"
|
112
|
-
puts ""
|
113
|
-
end
|
114
|
-
puts "Use rhc-ctl-domain for managing additional ssh keys"
|
115
|
-
end
|
116
|
-
|
117
|
-
end
|
118
|
-
|
119
|
-
if opt['apps']
|
120
|
-
puts "\n\n" if opt['info']
|
121
|
-
|
122
|
-
puts "Application Info"
|
123
|
-
puts "================"
|
124
|
-
unless user_info['app_info'].empty?
|
125
|
-
user_info['app_info'].each do |key, val|
|
126
|
-
puts key
|
127
|
-
puts " Framework: #{val['framework']}"
|
128
|
-
puts " Creation: #{val['creation_time']}"
|
129
|
-
puts " UUID: #{val['uuid']}"
|
130
|
-
puts " Git URL: ssh://#{val['uuid']}@#{key}-#{user_info['user_info']['domains'][0]['namespace']}.#{user_info['user_info']['rhc_domain']}/~/git/#{key}.git/"
|
131
|
-
puts " Public URL: http://#{key}-#{user_info['user_info']['domains'][0]['namespace']}.#{user_info['user_info']['rhc_domain']}/"
|
132
|
-
if val['aliases'] && !val['aliases'].empty?
|
133
|
-
puts " Aliases: #{val['aliases'].join(', ')}"
|
134
|
-
end
|
135
|
-
puts ""
|
136
|
-
puts " Embedded: "
|
137
|
-
if val['embedded'] && !val['embedded'].empty?
|
138
|
-
val['embedded'].each do |embed_key, embed_val|
|
139
|
-
if embed_val.has_key?('info') && !embed_val['info'].empty?
|
140
|
-
puts " #{embed_key} - #{embed_val['info']}"
|
141
|
-
else
|
142
|
-
puts " #{embed_key}"
|
143
|
-
end
|
144
|
-
end
|
145
|
-
else
|
146
|
-
puts " None"
|
147
|
-
end
|
148
|
-
puts ""
|
149
|
-
end
|
150
|
-
else
|
151
|
-
puts "No applications found. You can use rhc-create-app to create new applications."
|
152
|
-
end
|
153
|
-
|
154
|
-
end
|
155
|
-
|
156
|
-
exit 0
|
data/bin/rhc-port-forward
DELETED
@@ -1,234 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'rhc/coverage_helper'
|
4
|
-
|
5
|
-
require 'rhc-common'
|
6
|
-
|
7
|
-
RHC::Helpers.deprecated_command('rhc port-forward',true)
|
8
|
-
|
9
|
-
#
|
10
|
-
# print help
|
11
|
-
#
|
12
|
-
def p_usage(exit_code = 255)
|
13
|
-
rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "required"
|
14
|
-
puts <<USAGE
|
15
|
-
|
16
|
-
Usage: rhc port-forward
|
17
|
-
Forward remote ports to the workstation
|
18
|
-
|
19
|
-
-l|--rhlogin rhlogin OpenShift login (#{rhlogin})
|
20
|
-
-a|--app Target application (required)
|
21
|
-
-p|--password password Password (optional, will prompt)
|
22
|
-
-d|--debug Print Debug info
|
23
|
-
-h|--help Show Usage info
|
24
|
-
--config path Path of alternate config file
|
25
|
-
--timeout # Timeout, in seconds, for the session
|
26
|
-
|
27
|
-
USAGE
|
28
|
-
exit exit_code
|
29
|
-
end
|
30
|
-
|
31
|
-
begin
|
32
|
-
opts = GetoptLong.new(
|
33
|
-
["--debug", "-d", GetoptLong::NO_ARGUMENT],
|
34
|
-
["--help", "-h", GetoptLong::NO_ARGUMENT],
|
35
|
-
["--app", "-a", GetoptLong::REQUIRED_ARGUMENT],
|
36
|
-
["--rhlogin", "-l", GetoptLong::REQUIRED_ARGUMENT],
|
37
|
-
["--config", GetoptLong::REQUIRED_ARGUMENT],
|
38
|
-
["--password", "-p", GetoptLong::REQUIRED_ARGUMENT],
|
39
|
-
["--timeout", GetoptLong::REQUIRED_ARGUMENT]
|
40
|
-
)
|
41
|
-
opt = {}
|
42
|
-
opts.each do |o, a|
|
43
|
-
opt[o[2..-1]] = a.to_s
|
44
|
-
end
|
45
|
-
rescue Exception => e
|
46
|
-
#puts e.message
|
47
|
-
p_usage
|
48
|
-
end
|
49
|
-
|
50
|
-
# If provided a config path, check it
|
51
|
-
RHC::Config.check_cpath(opt)
|
52
|
-
|
53
|
-
# Pull in configs from files
|
54
|
-
libra_server = get_var('libra_server')
|
55
|
-
debug = get_var('debug') == 'false' ? nil : get_var('debug')
|
56
|
-
|
57
|
-
p_usage 0 if opt['help']
|
58
|
-
|
59
|
-
p_usage if !opt['app'] || 0 != ARGV.length
|
60
|
-
|
61
|
-
debug = true if opt['debug']
|
62
|
-
|
63
|
-
RHC::debug(debug)
|
64
|
-
|
65
|
-
RHC::timeout(opt["timeout"], get_var('timeout'))
|
66
|
-
RHC::connect_timeout(opt["timeout"], get_var('timeout'))
|
67
|
-
|
68
|
-
opt['rhlogin'] = get_var('default_rhlogin') unless opt['rhlogin']
|
69
|
-
|
70
|
-
if !RHC::check_rhlogin(opt['rhlogin'])
|
71
|
-
p_usage
|
72
|
-
end
|
73
|
-
|
74
|
-
password = opt['password']
|
75
|
-
if !password
|
76
|
-
password = RHC::get_password
|
77
|
-
end
|
78
|
-
|
79
|
-
user_info = RHC::get_user_info(libra_server, opt['rhlogin'], password, RHC::Config.default_proxy, false)
|
80
|
-
|
81
|
-
app_name = opt['app']
|
82
|
-
|
83
|
-
unless user_info['app_info'][app_name]
|
84
|
-
puts
|
85
|
-
puts "Could not find app '#{app_name}'. Please run rhc-domain-info to get a list"
|
86
|
-
puts "of your current running applications"
|
87
|
-
puts
|
88
|
-
exit 101
|
89
|
-
end
|
90
|
-
|
91
|
-
if (user_info['app_info'][app_name].has_key?('embedded') && user_info['app_info'][app_name]['embedded'].keys.any?{ |k| k =~ /\Ahaproxy/ })
|
92
|
-
puts
|
93
|
-
puts "This utility does not currently support scaled applications.\n"
|
94
|
-
puts "You will need to set up port forwarding manually.\n"
|
95
|
-
puts
|
96
|
-
exit 101
|
97
|
-
end
|
98
|
-
|
99
|
-
# mock for windows
|
100
|
-
if defined?(UNIXServer) != 'constant' or UNIXServer.class != Class
|
101
|
-
class UNIXServer; end
|
102
|
-
end
|
103
|
-
|
104
|
-
app_uuid = user_info['app_info'][app_name]['uuid']
|
105
|
-
namespace = user_info['user_info']['domains'][0]['namespace']
|
106
|
-
rhc_domain = user_info['user_info']['rhc_domain']
|
107
|
-
ssh_host = "#{app_name}-#{namespace}.#{rhc_domain}"
|
108
|
-
|
109
|
-
puts "Checking available ports..."
|
110
|
-
|
111
|
-
ip_and_port_simple_regex = /[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\:[0-9]{1,5}/
|
112
|
-
|
113
|
-
hosts_and_ports = []
|
114
|
-
hosts_and_ports_descriptions = []
|
115
|
-
scaled_uuids = []
|
116
|
-
|
117
|
-
puts "Using #{app_uuid}@#{ssh_host}..." if debug
|
118
|
-
|
119
|
-
Net::SSH.start(ssh_host, app_uuid) do |ssh|
|
120
|
-
|
121
|
-
ssh.exec! "rhc-list-ports" do |channel, stream, data|
|
122
|
-
|
123
|
-
if stream == :stderr
|
124
|
-
|
125
|
-
data.lines { |line|
|
126
|
-
|
127
|
-
line = line.chomp
|
128
|
-
|
129
|
-
if line.downcase =~ /permission denied/
|
130
|
-
puts line
|
131
|
-
exit 1
|
132
|
-
end
|
133
|
-
|
134
|
-
if line.index(ip_and_port_simple_regex)
|
135
|
-
hosts_and_ports_descriptions << line
|
136
|
-
end
|
137
|
-
}
|
138
|
-
|
139
|
-
else
|
140
|
-
|
141
|
-
data.lines { |line|
|
142
|
-
|
143
|
-
line = line.chomp
|
144
|
-
|
145
|
-
if line.downcase =~ /scale/
|
146
|
-
scaled_uuid = line[5..-1]
|
147
|
-
scaled_uuids << scaled_uuid
|
148
|
-
|
149
|
-
else
|
150
|
-
if ip_and_port_simple_regex.match(line)
|
151
|
-
hosts_and_ports << line
|
152
|
-
end
|
153
|
-
end
|
154
|
-
}
|
155
|
-
|
156
|
-
end
|
157
|
-
|
158
|
-
end
|
159
|
-
|
160
|
-
scaled_uuids.each { |scaled_uuid|
|
161
|
-
|
162
|
-
puts "Using #{scaled_uuid}@#{ssh_host} (scaled instance)..." if debug
|
163
|
-
|
164
|
-
Net::SSH.start(ssh_host, scaled_uuid) do |ssh|
|
165
|
-
|
166
|
-
ssh.exec! "rhc-list-ports" do |channel, stream, data|
|
167
|
-
if stream == :stderr
|
168
|
-
data.lines { |line|
|
169
|
-
|
170
|
-
line = line.chomp
|
171
|
-
if line.downcase =~ /permission denied/
|
172
|
-
puts line
|
173
|
-
exit 1
|
174
|
-
end
|
175
|
-
if line.index(ip_and_port_simple_regex)
|
176
|
-
hosts_and_ports_descriptions << line
|
177
|
-
end
|
178
|
-
}
|
179
|
-
else
|
180
|
-
data.lines { |line|
|
181
|
-
|
182
|
-
line = line.chomp
|
183
|
-
if ip_and_port_simple_regex.match(line)
|
184
|
-
hosts_and_ports << line
|
185
|
-
end
|
186
|
-
}
|
187
|
-
end
|
188
|
-
end
|
189
|
-
end
|
190
|
-
}
|
191
|
-
|
192
|
-
if hosts_and_ports.length == 0
|
193
|
-
puts
|
194
|
-
puts "No available ports to forward"
|
195
|
-
exit 102
|
196
|
-
end
|
197
|
-
|
198
|
-
puts
|
199
|
-
|
200
|
-
hosts_and_ports_descriptions.each { |description| puts "Binding #{description}..." }
|
201
|
-
|
202
|
-
begin
|
203
|
-
|
204
|
-
Net::SSH.start(ssh_host, app_uuid) do |ssh|
|
205
|
-
puts "Use ctl + c to stop"
|
206
|
-
hosts_and_ports.each do |host_and_port|
|
207
|
-
host, port = host_and_port.split(/:/)
|
208
|
-
ssh.forward.local(host, port.to_i, host, port.to_i)
|
209
|
-
end
|
210
|
-
ssh.loop { true }
|
211
|
-
end
|
212
|
-
|
213
|
-
rescue Interrupt
|
214
|
-
puts
|
215
|
-
puts "Terminating..."
|
216
|
-
exit 0
|
217
|
-
|
218
|
-
rescue Exception => e
|
219
|
-
puts
|
220
|
-
puts e.message if debug
|
221
|
-
puts "Error trying to forward ports. You can try to forward manually by running:"
|
222
|
-
ssh_cmd = "ssh -N "
|
223
|
-
hosts_and_ports.each { |port| ssh_cmd << "-L #{port}:#{port} " }
|
224
|
-
ssh_cmd << "#{app_uuid}@#{app_name}-#{namespace}.#{rhc_domain}"
|
225
|
-
puts
|
226
|
-
puts ssh_cmd
|
227
|
-
puts
|
228
|
-
exit 1
|
229
|
-
end
|
230
|
-
|
231
|
-
end
|
232
|
-
|
233
|
-
# never
|
234
|
-
exit 1
|
data/bin/rhc-snapshot
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'rhc/coverage_helper'
|
4
|
-
|
5
|
-
require 'rhc-common'
|
6
|
-
|
7
|
-
puts "Warning: This command is deprecated and will be removed in the future. Please use 'rhc snapshot' instead."
|
8
|
-
puts""
|
9
|
-
|
10
|
-
#
|
11
|
-
# print help
|
12
|
-
#
|
13
|
-
def p_usage(exit_code = 255)
|
14
|
-
rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "required"
|
15
|
-
puts <<USAGE
|
16
|
-
|
17
|
-
Usage: #{$0}
|
18
|
-
Pull down application snapshot for a user
|
19
|
-
|
20
|
-
-l|--rhlogin rhlogin OpenShift login (#{rhlogin})
|
21
|
-
-a|--app Target application to snapshot (required)
|
22
|
-
-r|--restore Local path of the tarball to restore (restores git and application data folders found in archive)
|
23
|
-
-s|--save Local path to save tarball (default: ./$APPNAME.tar.gz)
|
24
|
-
-p|--password password Password (optional, will prompt)
|
25
|
-
-d|--debug Print Debug info
|
26
|
-
-h|--help Show Usage info
|
27
|
-
--config path Path of alternate config file
|
28
|
-
--timeout # Timeout, in seconds, for the session
|
29
|
-
|
30
|
-
USAGE
|
31
|
-
exit exit_code
|
32
|
-
end
|
33
|
-
|
34
|
-
begin
|
35
|
-
opts = GetoptLong.new(
|
36
|
-
["--debug", "-d", GetoptLong::NO_ARGUMENT],
|
37
|
-
["--help", "-h", GetoptLong::NO_ARGUMENT],
|
38
|
-
["--app", "-a", GetoptLong::REQUIRED_ARGUMENT],
|
39
|
-
["--save", "-s", GetoptLong::REQUIRED_ARGUMENT],
|
40
|
-
["--restore", "-r", GetoptLong::REQUIRED_ARGUMENT],
|
41
|
-
["--rhlogin", "-l", GetoptLong::REQUIRED_ARGUMENT],
|
42
|
-
["--config", GetoptLong::REQUIRED_ARGUMENT],
|
43
|
-
["--password", "-p", GetoptLong::REQUIRED_ARGUMENT],
|
44
|
-
["--timeout", GetoptLong::REQUIRED_ARGUMENT]
|
45
|
-
)
|
46
|
-
opt = {}
|
47
|
-
opts.each do |o, a|
|
48
|
-
opt[o[2..-1]] = a.to_s
|
49
|
-
end
|
50
|
-
rescue Exception => e
|
51
|
-
#puts e.message
|
52
|
-
p_usage
|
53
|
-
end
|
54
|
-
|
55
|
-
# If provided a config path, check it
|
56
|
-
RHC::Config.check_cpath(opt)
|
57
|
-
|
58
|
-
# Pull in configs from files
|
59
|
-
libra_server = get_var('libra_server')
|
60
|
-
debug = get_var('debug') == 'false' ? nil : get_var('debug')
|
61
|
-
|
62
|
-
p_usage 0 if opt["help"]
|
63
|
-
|
64
|
-
p_usage if !opt['app'] || 0 != ARGV.length
|
65
|
-
|
66
|
-
debug = true if opt["debug"]
|
67
|
-
|
68
|
-
RHC::debug(debug)
|
69
|
-
|
70
|
-
RHC::timeout(opt["timeout"], get_var('timeout'))
|
71
|
-
RHC::connect_timeout(opt["timeout"], get_var('timeout'))
|
72
|
-
|
73
|
-
opt["rhlogin"] = get_var('default_rhlogin') unless opt["rhlogin"]
|
74
|
-
|
75
|
-
if !RHC::check_rhlogin(opt['rhlogin'])
|
76
|
-
p_usage
|
77
|
-
end
|
78
|
-
|
79
|
-
password = opt['password']
|
80
|
-
if !password
|
81
|
-
password = RHC::get_password
|
82
|
-
end
|
83
|
-
|
84
|
-
user_info = RHC::get_user_info(libra_server, opt['rhlogin'], password, RHC::Config.default_proxy, debug, false)
|
85
|
-
|
86
|
-
app = opt['app']
|
87
|
-
opt['save'] = "#{opt['app']}.tar.gz" unless opt['save'] || opt['restore']
|
88
|
-
|
89
|
-
unless user_info['app_info'][app]
|
90
|
-
puts
|
91
|
-
puts "Could not find app '#{app}'. Please run rhc-domain-info to get a list"
|
92
|
-
puts "of your current running applications"
|
93
|
-
puts
|
94
|
-
exit 101
|
95
|
-
end
|
96
|
-
|
97
|
-
app_uuid = user_info['app_info'][app]['uuid']
|
98
|
-
namespace = user_info['user_info']['domains'][0]['namespace']
|
99
|
-
rhc_domain = user_info['user_info']['rhc_domain']
|
100
|
-
|
101
|
-
if opt['save']
|
102
|
-
status = RHC.snapshot_create rhc_domain, namespace, app, app_uuid, opt['save'], debug
|
103
|
-
exit status if ! status
|
104
|
-
else
|
105
|
-
status = RHC.snapshot_restore rhc_domain, namespace, app, app_uuid, opt['restore'], debug
|
106
|
-
exit status if ! status
|
107
|
-
end
|
108
|
-
|
109
|
-
exit 0
|