rhc 0.71.2 → 0.72.29

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -1,4 +1,4 @@
1
- Openshift Express (RHC)
1
+ OpenShift Express (RHC)
2
2
  ========
3
3
 
4
4
  Please stop by #openshift on irc.freenode.net if you have any questions or
@@ -13,16 +13,16 @@ DEPENDENCIES: git
13
13
  openssh-clients
14
14
  ruby (1.8.7 or later)
15
15
  rubygems
16
- json gem
16
+ json_pure gem (native json is fine too)
17
17
  parseconfig gem
18
18
 
19
19
  Step 1: Create an rhc domain:
20
20
 
21
- $ ./rhc-create-domain -n desirednamespace -l rhlogin
21
+ $ rhc-create-domain -n desirednamespace -l rhlogin
22
22
 
23
23
  Step 2: Create an rhc application:
24
24
 
25
- $ ./rhc-create-app -l rhlogin -a appname -r /path/to/new/git/repo -t <framework Ex: php-5.3.2>
25
+ $ rhc-create-app -l rhlogin -a appname -r /path/to/new/git/repo -t <framework Ex: php-5.3>
26
26
 
27
27
  Once that's complete, follow the directions printed at the end of running
28
28
  rhc-create-app
@@ -38,4 +38,32 @@ $ edit index.php
38
38
  $ git commit -a -m "what I did"
39
39
  $ git push
40
40
 
41
- Then just reload your web page to see the changes
41
+ Then just reload your web page to see the changes
42
+
43
+ -----------
44
+ OS X Notes:
45
+ -----------
46
+
47
+ git:
48
+ OS X 10.6 comes w/ ssh and ruby, but not with git, unless you have
49
+ Xcode 4.0.x installed (as a developer you should have Xcode anyway).
50
+ Xcode, however, is not free (unless you are a registered Apple
51
+ Developer) and costs around $5 from the Apple App Store.
52
+
53
+ If you do not have Xcode, you can obtain a pre-packaged version
54
+ of git from:
55
+
56
+ http://code.google.com/p/git-osx-installer/
57
+
58
+ Installing git from MacPorts/HomeBrew/Fink/etc requires Xcode.
59
+
60
+ Now obtain the client code, either via 'git clone' as above
61
+ or via the rhc gem.
62
+
63
+ json_pure gem:
64
+ The client tools also make use of JSON as the data set for
65
+ I/O, and therefore needs the json ruby gem. Unless you have
66
+ Xcode installed, you will need to install json_pure, which
67
+ is the 100% ruby version of the JSON gem. If you have Xcode,
68
+ you can elect to install either json_pure or the native
69
+ json gem.
data/Rakefile CHANGED
@@ -10,7 +10,7 @@ task :default => [:package]
10
10
  # Create the gem specification for packaging
11
11
  spec = Gem::Specification.new do |s|
12
12
  s.name = %q{rhc}
13
- s.version = /(Version: )(.*)/.match(File.read("../build/specs/rhc.spec"))[2]
13
+ s.version = /(Version: )(.*)/.match(File.read("client.spec"))[2]
14
14
  s.author = "Red Hat"
15
15
  s.email = %q{openshift@redhat.com}
16
16
  s.summary = %q{OpenShift Express Client Tools}
data/bin/rhc-create-app CHANGED
@@ -24,16 +24,17 @@
24
24
  require 'rhc-common'
25
25
 
26
26
  def p_usage
27
- rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "(required)"
28
- type_keys = RHC::get_supported_cartridge_types(', ')
27
+ libra_server = get_var('libra_server')
28
+ rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "required"
29
+ type_keys = RHC::get_cartridge_list(nil, ', ', libra_server, @http, false)
29
30
  puts <<USAGE
30
31
 
31
32
  Usage: #{$0}
32
- Create an Openshift Express app.
33
+ Create an OpenShift Express app.
33
34
 
34
35
  -a|--app application Application name (alphanumeric - max #{RHC::Maxdlen} chars) (required)
35
36
  -t|--type type Type of app to create (#{type_keys}) (required)
36
- -l|--rhlogin rhlogin RHCloud rhlogin (#{rhlogin})
37
+ -l|--rhlogin rhlogin Red Hat login (RHN or OpenShift login with OpenShift Express access) (#{rhlogin})
37
38
  -p|--password password RHLogin password (optional, will prompt)
38
39
  -r|--repo path Git Repo path (defaults to ./$app_name)
39
40
  -n|--nogit Only create remote space, don't pull it locally
@@ -89,8 +90,9 @@ if !RHC::check_app(opt['app'])
89
90
  p_usage
90
91
  end
91
92
 
92
- type = RHC::get_cartridge(opt['type'])
93
+ type = RHC::get_cartridge_type(opt['type'])
93
94
  if !type
95
+ puts 'Type is required'
94
96
  p_usage
95
97
  end
96
98
 
@@ -103,16 +105,6 @@ if !password
103
105
  password = RHC::get_password
104
106
  end
105
107
 
106
- #
107
- # Get UUID from file
108
- #
109
-
110
- uuid = get_var(opt["rhlogin"])
111
- unless uuid
112
- puts "Could not find UUID for '#{opt["rhlogin"]}' in express.conf. Be sure you have successfully ran rhc-create-domain before running rhc-create-app."
113
- exit 99
114
- end
115
-
116
108
  opt["repo"] = opt["app"] unless opt["repo"]
117
109
 
118
110
  puts "
@@ -165,7 +157,7 @@ end
165
157
  # Create remote application space
166
158
  #
167
159
 
168
- puts "Creating remote application space: " + opt['app']
160
+ puts "Attempting to create remote application space: " + opt['app']
169
161
 
170
162
  data = {:cartridge => opt['type'],
171
163
  :action => 'configure',
@@ -179,7 +171,7 @@ json_data = JSON.generate(data)
179
171
 
180
172
  puts "Contacting https://#{libra_server}"
181
173
 
182
- url = URI.parse("https://#{libra_server}/app/broker/cartridge")
174
+ url = URI.parse("https://#{libra_server}/broker/cartridge")
183
175
  response = RHC::http_post(@http, url, json_data, password)
184
176
 
185
177
  if response.code == '200'
@@ -198,11 +190,10 @@ at_exit do
198
190
  {:cartridge => opt['type'],
199
191
  :action => 'deconfigure',
200
192
  :app_name => opt['app'],
201
- :rhlogin => opt['rhlogin'],
202
- :password => password
193
+ :rhlogin => opt['rhlogin']
203
194
  })
204
195
  puts "Cleaning up application"
205
- url = URI.parse("https://#{libra_server}/app/broker/cartridge")
196
+ url = URI.parse("https://#{libra_server}/broker/cartridge")
206
197
  RHC::http_post(@http, url, json_data, password)
207
198
  end
208
199
  end
@@ -215,7 +206,7 @@ puts "Checking ~/.ssh/config"
215
206
 
216
207
  user_info = RHC::get_user_info(libra_server, opt['rhlogin'], password, @http, debug, false)
217
208
 
218
- my_url = "#{opt['app']}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']}"
209
+ fqdn = "#{opt['app']}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']}"
219
210
 
220
211
  found = false
221
212
 
@@ -287,10 +278,10 @@ sleep 15
287
278
  # Now start checking for DNS
288
279
  loop = 0
289
280
  sleep_time = 2
290
- while loop < RHC::Maxretries && !RHC::hostexist?(my_url)
281
+ while loop < RHC::Maxretries && !RHC::hostexist?(fqdn)
291
282
  sleep sleep_time
292
283
  loop+=1
293
- puts " retry # #{loop} - Waiting for DNS: #{my_url}"
284
+ puts " retry # #{loop} - Waiting for DNS: #{fqdn}"
294
285
  sleep_time = RHC::delay(sleep_time)
295
286
  end
296
287
 
@@ -305,7 +296,12 @@ attempt = 0
305
296
  # Pull new repo locally
306
297
  #
307
298
 
308
- git_url = "ssh://#{uuid}@#{opt['app']}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']}/~/git/#{opt['app']}.git/"
299
+ app_name = opt['app']
300
+ namespace = user_info['user_info']['namespace']
301
+ rhc_domain = user_info['user_info']['rhc_domain']
302
+ app_uuid = user_info['app_info'][app_name]['uuid']
303
+
304
+ git_url = "ssh://#{app_uuid}@#{app_name}-#{namespace}.#{rhc_domain}/~/git/#{app_name}.git/"
309
305
 
310
306
  unless opt['nogit']
311
307
  puts "Pulling new repo down"
@@ -352,11 +348,10 @@ while attempt < RHC::Maxretries
352
348
  page = 'health'
353
349
  if (type == :php)
354
350
  page = 'health_check.php'
355
- end
356
- if (type == :perl)
351
+ elsif (type == :perl)
357
352
  page = 'health_check.pl'
358
353
  end
359
- url = URI.parse("http://#{my_url}/#{page}")
354
+ url = URI.parse("http://#{fqdn}/#{page}")
360
355
  begin
361
356
  response = @http.get_response(url)
362
357
  rescue Exception => e
@@ -367,14 +362,14 @@ while attempt < RHC::Maxretries
367
362
 
368
363
  Success! Your application is now published here:
369
364
 
370
- http://#{my_url}/
365
+ http://#{fqdn}/
371
366
 
372
367
  The remote repository is located here:
373
368
 
374
369
  #{git_url}
375
370
 
376
371
  To make changes to your application, commit to #{opt['repo']}/.
377
- Then run 'git push' to update your Openshift Express space
372
+ Then run 'git push' to update your OpenShift Express space
378
373
 
379
374
  LOOKSGOOD
380
375
  exit 0
@@ -35,8 +35,8 @@ Bind a registered rhcloud user to a domain in rhcloud.
35
35
  NOTE: to change ssh key, please alter your ~/.ssh/libra_id_rsa and
36
36
  ~/.ssh/libra_id_rsa.pub key, then re-run with --alter
37
37
 
38
- -n|--namespace namespace Openshift Express namespace (alphanumeric - max #{RHC::Maxdlen} chars) (required)
39
- -l|--rhlogin rhlogin Red Hat login (required)
38
+ -n|--namespace namespace Namespace for your application(s) (alphanumeric - max #{RHC::Maxdlen} chars) (required)
39
+ -l|--rhlogin rhlogin Red Hat login (RHN or OpenShift login with OpenShift Express access) (required)
40
40
  -p|--password password RHLogin password (optional, will prompt)
41
41
  -a|--alter Alter namespace (will change urls) and/or ssh key
42
42
  -d|--debug Print Debug info
@@ -110,10 +110,6 @@ def add_rhlogin_config(rhlogin, uuid)
110
110
  f.puts("default_rhlogin=#{rhlogin}")
111
111
  f.puts("")
112
112
  end
113
- unless @local_config.get_value(rhlogin)
114
- puts "Adding rhlogin to #{@local_config_path}"
115
- f.puts("#{rhlogin}=#{uuid}")
116
- end
117
113
  f.close
118
114
  end
119
115
 
@@ -123,9 +119,9 @@ end
123
119
  #
124
120
 
125
121
  if File.readable?(libra_kfile)
126
- puts "Openshift Express key found at #{libra_kfile}. Reusing..."
122
+ puts "OpenShift Express key found at #{libra_kfile}. Reusing..."
127
123
  else
128
- puts "Generating Openshift Express ssh key to #{libra_kfile}"
124
+ puts "Generating OpenShift Express ssh key to #{libra_kfile}"
129
125
  # Use system for interaction
130
126
  system("ssh-keygen -t rsa -f '#{libra_kfile}'")
131
127
  end
@@ -138,6 +134,8 @@ data = {'namespace' => opt['namespace'],
138
134
  'ssh' => ssh_key}
139
135
  if (opt['alter'])
140
136
  data['alter'] = "true"
137
+ not_found_message = "A user with rhlogin '#{opt['rhlogin']}' does not have a registered domain. Be sure to run rhc-create-domain without -a|--alter first."
138
+ user_info = RHC::get_user_info(libra_server, opt['rhlogin'], password, @http, debug, true, not_found_message)
141
139
  end
142
140
  if debug
143
141
  data['debug'] = "true"
@@ -145,7 +143,7 @@ end
145
143
  RHC::print_post_data(data, debug)
146
144
  json_data = JSON.generate(data)
147
145
 
148
- url = URI.parse("https://#{libra_server}/app/broker/domain")
146
+ url = URI.parse("https://#{libra_server}/broker/domain")
149
147
  response = RHC::http_post(@http, url, json_data, password)
150
148
 
151
149
  if response.code == '200'
@@ -164,8 +162,40 @@ in #{@local_config_path} which has been created and populated for you.
164
162
 
165
163
  EOF
166
164
  else
167
- puts "Alteration successful. You can use rhc-user-info to view any url changes."
168
- puts
165
+ app_info = user_info['app_info']
166
+ dns_success = true
167
+ if !app_info.empty? && opt['namespace'] != user_info['user_info']['namespace']
168
+ #
169
+ # Confirm that the host(s) exist in DNS
170
+ #
171
+ puts "Now your new domain name(s) are being populated worldwide (this might take a minute)..."
172
+ # Allow DNS to propogate
173
+ sleep 15
174
+ app_info.each_key do |appname|
175
+ fqdn = "#{appname}-#{opt['namespace']}.#{user_info['user_info']['rhc_domain']}"
176
+
177
+ # Now start checking for DNS
178
+ loop = 0
179
+ sleep_time = 2
180
+ while loop < RHC::Maxretries && !RHC::hostexist?(fqdn)
181
+ sleep sleep_time
182
+ loop+=1
183
+ puts " retry # #{loop} - Waiting for DNS: #{fqdn}"
184
+ sleep_time = RHC::delay(sleep_time)
185
+ end
186
+
187
+ if loop >= RHC::Maxretries
188
+ puts "Host could not be found: #{fqdn}"
189
+ dns_success = false
190
+ end
191
+ end
192
+ end
193
+ if dns_success
194
+ puts "Alteration successful. You can use rhc-user-info to view any url changes."
195
+ else
196
+ puts "Alteration successful but at least one of the urls is still updating in DNS. You can use rhc-user-info to view any url changes."
197
+ end
198
+ puts ""
169
199
  end
170
200
  exit 0
171
201
  rescue JSON::ParserError
data/bin/rhc-ctl-app CHANGED
@@ -24,14 +24,14 @@
24
24
  require 'rhc-common'
25
25
 
26
26
  def p_usage
27
- rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "(required)"
27
+ rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "required"
28
28
  puts <<USAGE
29
29
 
30
30
  Usage: #{$0}
31
31
  Control an OpenShift express app
32
32
 
33
33
  -a|--app application Application name (alphanumeric) (required)
34
- -l|--rhlogin rhlogin Red Hat login (#{rhlogin})
34
+ -l|--rhlogin rhlogin Red Hat login (RHN or OpenShift login with OpenShift Express access) (#{rhlogin})
35
35
  -p|--password password RHLogin password (optional, will prompt)
36
36
  -c|--command command (start|stop|restart|reload|status|destroy)
37
37
  -b|--bypass Bypass warnings
@@ -146,7 +146,7 @@ json_data = JSON.generate(data)
146
146
 
147
147
  puts "Contacting https://#{libra_server}"
148
148
 
149
- url = URI.parse("https://#{libra_server}/app/broker/cartridge")
149
+ url = URI.parse("https://#{libra_server}/broker/cartridge")
150
150
  response = RHC::http_post(@http, url, json_data, password)
151
151
 
152
152
  if response.code == '200'
data/bin/rhc-snapshot CHANGED
@@ -27,13 +27,13 @@ require 'rhc-common'
27
27
  # print help
28
28
  #
29
29
  def p_usage
30
- rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "(required)"
30
+ rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "required"
31
31
  puts <<USAGE
32
32
 
33
33
  Usage: #{$0}
34
34
  Pull down application snapshot for a user
35
35
 
36
- -l|--rhlogin rhlogin RHCloud rhlogin (#{rhlogin})
36
+ -l|--rhlogin rhlogin Red Hat login (RHN or OpenShift login with OpenShift Express access) (#{rhlogin})
37
37
  -a|--app Target application to snapshot (required)
38
38
  -s|--save Local path to save tarball (default: ./$APPNAME.tar.gz)
39
39
  -p|--password password RHLogin password (optional, will prompt)
@@ -93,25 +93,28 @@ user_info = RHC::get_user_info(libra_server, opt['rhlogin'], password, @http, de
93
93
  app = opt['app']
94
94
  opt['save'] = "#{opt['app']}.tar.gz" unless opt['save']
95
95
 
96
- begin
97
- framework = user_info['app_info'][app]['framework'].split('-')[0]
98
- rescue NoMethodError
96
+ unless user_info['app_info'][app]
99
97
  puts
100
- puts "Could not find app '#{opt['app']}'. Please run rhc-user-info to get a list"
98
+ puts "Could not find app '#{app}'. Please run rhc-user-info to get a list"
101
99
  puts "of your current running applications"
102
100
  puts
103
101
  exit 101
104
102
  end
105
103
 
104
+ app_uuid = user_info['app_info'][app]['uuid']
105
+ namespace = user_info['user_info']['namespace']
106
+ rhc_domain = user_info['user_info']['rhc_domain']
107
+ ssh_cmd = "ssh #{app_uuid}@#{app}-#{namespace}.#{rhc_domain} 'snapshot #{app}' > #{opt['save']}"
108
+
106
109
  puts "Pulling down a snapshot to #{opt['save']}"
107
110
  puts
108
- puts "ssh #{user_info['user_info']['uuid']}@#{app}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']} 'snapshot #{framework} #{app}' > #{opt['save']}" if debug
109
- git_pull = `ssh #{user_info['user_info']['uuid']}@#{app}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']} 'snapshot #{framework} #{app}' > #{opt['save']}`
111
+ puts ssh_cmd if debug
112
+ git_pull = `#{ssh_cmd}`
110
113
  if $?.exitstatus != 0
111
114
  puts
112
115
  puts "Error in trying to save snapshot. You can try to save manually by running:"
113
116
  puts
114
- puts "ssh #{user_info['user_info']['uuid']}@#{app}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']} 'snapshot #{framework} #{app}' > #{opt['save']}"
117
+ puts ssh_cmd
115
118
  puts
116
119
  exit 254
117
120
  end
data/bin/rhc-tail-files CHANGED
@@ -27,13 +27,13 @@ require 'rhc-common'
27
27
  # print help
28
28
  #
29
29
  def p_usage
30
- rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "(required)"
30
+ rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "required"
31
31
  puts <<USAGE
32
32
 
33
33
  Usage: #{$0}
34
34
  Tail the logs of an application
35
35
 
36
- -l|--rhlogin rhlogin RHCloud rhlogin (#{rhlogin})
36
+ -l|--rhlogin rhlogin Red Hat login (RHN or OpenShift login with OpenShift Express access) (#{rhlogin})
37
37
  -a|--app Target application (required)
38
38
  -f|--files File glob relative to app (default ./logs/*) (optional)
39
39
  -p|--password password RHLogin password (optional, will prompt)
@@ -92,9 +92,7 @@ user_info = RHC::get_user_info(libra_server, opt['rhlogin'], password, @http, de
92
92
 
93
93
  app = opt['app']
94
94
 
95
- begin
96
- framework = user_info['app_info'][app]['framework'].split('-')[0]
97
- rescue NoMethodError
95
+ unless user_info['app_info'][app]
98
96
  puts
99
97
  puts "Could not find app '#{opt['app']}'. Please run rhc-user-info to get a list"
100
98
  puts "of your current running applications"
@@ -103,18 +101,22 @@ rescue NoMethodError
103
101
  end
104
102
 
105
103
  opt['files'] = "logs/*" unless opt['files']
106
- file_glob = "#{framework}/#{opt['app']}/#{opt['files']}"
104
+ file_glob = "#{opt['app']}/#{opt['files']}"
105
+ app_uuid = user_info['app_info'][app]['uuid']
106
+ namespace = user_info['user_info']['namespace']
107
+ rhc_domain = user_info['user_info']['rhc_domain']
108
+ ssh_cmd = "ssh #{app_uuid}@#{app}-#{namespace}.#{rhc_domain} 'tail #{file_glob}'"
107
109
 
108
110
  puts "Attempting to tail files: #{file_glob}"
109
111
  puts "Use ctl + c to stop"
110
112
  puts
111
- puts "ssh #{user_info['user_info']['uuid']}@#{app}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']} 'tail #{file_glob}'" if debug
112
- system("ssh #{user_info['user_info']['uuid']}@#{app}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']} 'tail #{file_glob}'")
113
+ puts ssh_cmd if debug
114
+ system(ssh_cmd)
113
115
  if $?.exitstatus != 0 and $?.exitstatus != 255
114
116
  puts
115
117
  puts "Error in trying to tail files. You can tail manually by running:"
116
118
  puts
117
- puts "ssh #{user_info['user_info']['uuid']}@#{app}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']} 'tail #{file_glob}'`"
119
+ puts ssh_cmd
118
120
  puts
119
121
  exit 254
120
122
  end
data/bin/rhc-user-info CHANGED
@@ -21,27 +21,19 @@
21
21
  # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  # SOFTWARE.
23
23
 
24
- require "rubygems"
25
- require "uri"
26
- require "net/http"
27
- require "net/https"
28
- require "getoptlong"
29
- require "json"
30
- require 'parseconfig'
31
- require 'fileutils'
32
24
  require 'rhc-common'
33
25
 
34
26
  #
35
27
  # print help
36
28
  #
37
29
  def p_usage
38
- rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "(required)"
30
+ rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "required"
39
31
  puts <<USAGE
40
32
 
41
33
  Usage: #{$0}
42
34
  Display information about a user
43
35
 
44
- -l|--rhlogin rhlogin RHCloud rhlogin (#{rhlogin})
36
+ -l|--rhlogin rhlogin Red Hat login (RHN or OpenShift login with OpenShift Express access) (#{rhlogin})
45
37
  -p|--password password RHLogin password (optional, will prompt)
46
38
  -a|--apps List applications for rhlogin
47
39
  -i|--info Show user info
@@ -52,18 +44,6 @@ USAGE
52
44
  exit 255
53
45
  end
54
46
 
55
- def validate_email(email)
56
- if email =~ /([^@]+)@([a-zA-Z0-9\.])+\.([a-zA-Z]{2,3})/
57
- if $1 =~ /[^a-zA-Z0-9\.]/
58
- return false
59
- else
60
- return true
61
- end
62
- else
63
- return false
64
- end
65
- end
66
-
67
47
  begin
68
48
  opts = GetoptLong.new(
69
49
  ["--debug", "-d", GetoptLong::NO_ARGUMENT],
@@ -111,17 +91,6 @@ end
111
91
  opt['apps'] = true if not opt['info'] and not opt['apps']
112
92
  user_info = RHC::get_user_info(libra_server, opt['rhlogin'], password, @http, debug, true)
113
93
 
114
- if user_info['user_info']['uuid'] != get_var(opt["rhlogin"])
115
- puts "!! WARNING !! WARNING !! WARNING !! WARNING !!"
116
- puts
117
- puts "The UUID in your #{@conf_name} file is either missing or incorrect."
118
- puts "Please ensure the below line exists in #{@local_config_path}"
119
- puts
120
- puts "#{opt['rhlogin']}=#{user_info['user_info']['uuid']}"
121
- puts
122
- puts "!! WARNING !! WARNING !! WARNING !! WARNING !!"
123
- end
124
-
125
94
  if opt['info']
126
95
  puts "User Info"
127
96
  puts "========="
@@ -140,7 +109,8 @@ if opt['apps']
140
109
  puts key
141
110
  puts " Framework: #{val['framework']}"
142
111
  puts " Creation: #{val['creation_time']}"
143
- puts " Git URL: ssh://#{user_info['user_info']['uuid']}@#{key}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']}/~/git/#{key}.git/"
112
+ puts " UUID: #{val['uuid']}"
113
+ puts " Git URL: ssh://#{val['uuid']}@#{key}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']}/~/git/#{key}.git/"
144
114
  puts " Public URL: http://#{key}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']}/"
145
115
  puts ""
146
116
  end
data/lib/rhc-common.rb CHANGED
@@ -37,41 +37,53 @@ module RHC
37
37
  Maxretries = 10
38
38
  Defaultdelay = 2
39
39
 
40
- TYPES = {
41
- 'php-5.3.2' => :php,
42
- 'perl-5.10.1' => :perl,
43
- 'rack-1.1.0' => :rack,
44
- 'wsgi-3.2.1' => :wsgi,
45
- 'jbossas-7.0.0' => :jbossas
46
- }
47
-
48
- SUPPORTED_TYPES = {
49
- 'php-5.3.2' => :php,
50
- 'rack-1.1.0' => :rack,
51
- 'wsgi-3.2.1' => :wsgi
52
- }
53
-
54
40
  def self.delay(time, adj=Defaultdelay)
55
41
  (time*=adj).to_int
56
42
  end
57
43
 
58
- def self.get_supported_cartridge_types(sep=', ')
59
- return get_cartridge_types(SUPPORTED_TYPES)
44
+ def self.get_cartridges_tbl(libra_server, net_http, debug=true, print_result=nil)
45
+ puts "Contacting https://#{libra_server} to obtain list of cartridges..."
46
+ puts " (please excuse the delay)"
47
+ data = {'cart_types' => "standalone"}
48
+ if debug
49
+ data['debug'] = "true"
50
+ end
51
+ print_post_data(data, debug)
52
+ json_data = JSON.generate(data)
53
+
54
+ url = URI.parse("https://#{libra_server}/broker/cartlist")
55
+ response = http_post(net_http, url, json_data, "none")
56
+
57
+ unless response.code == '200'
58
+ print_response_err(response, debug)
59
+ return []
60
+ end
61
+ if print_result
62
+ print_response_success(response, debug)
63
+ end
64
+ begin
65
+ json_resp = JSON.parse(response.body)
66
+ carts = (JSON.parse(json_resp['result']))['carts']
67
+ rescue JSON::ParserError
68
+ exit 254
69
+ end
70
+ carts
60
71
  end
61
72
 
62
- def self.get_cartridge_types(types=TYPES, sep=', ')
63
- i = 1
64
- type_keys = ''
65
- types.each_key do |key|
66
- type_keys += key
67
- if i < types.size
68
- type_keys += sep
69
- end
70
- i += 1
73
+ def self.get_cartridge_list(carts, sep, libra_server, net_http, debug=true, print_result=nil)
74
+ carts = get_cartridges_tbl(libra_server, net_http, debug, print_result) if carts.nil?
75
+ carts.join(sep)
76
+ end
77
+
78
+ def self.get_cartridge_type(type)
79
+ if type
80
+ type = type.split('-')[0]
81
+ return type.to_sym
71
82
  end
72
- type_keys
83
+ nil
73
84
  end
74
85
 
86
+
75
87
  # Invalid chars (") ($) (^) (<) (>) (|) (%) (/) (;) (:) (,) (\) (*) (=) (~)
76
88
  def self.check_rhlogin(rhlogin)
77
89
  if rhlogin
@@ -114,19 +126,6 @@ module RHC
114
126
  true
115
127
  end
116
128
 
117
- def self.get_cartridge(type)
118
- if type
119
- if !(RHC::TYPES.has_key?(type))
120
- puts 'type must be ' << get_supported_cartridge_types(' or ')
121
- else
122
- return RHC::TYPES[type]
123
- end
124
- else
125
- puts "Type is required"
126
- end
127
- nil
128
- end
129
-
130
129
  def self.print_post_data(h, debug)
131
130
  if (debug)
132
131
  puts 'DEBUG: Submitting form:'
@@ -144,7 +143,7 @@ module RHC
144
143
  end
145
144
  end
146
145
 
147
- def self.get_user_info(libra_server, rhlogin, password, net_http, debug, print_result)
146
+ def self.get_user_info(libra_server, rhlogin, password, net_http, debug, print_result, not_found_message=nil)
148
147
 
149
148
  puts "Contacting https://#{libra_server}"
150
149
  data = {'rhlogin' => rhlogin}
@@ -154,12 +153,16 @@ module RHC
154
153
  print_post_data(data, debug)
155
154
  json_data = JSON.generate(data)
156
155
 
157
- url = URI.parse("https://#{libra_server}/app/broker/userinfo")
156
+ url = URI.parse("https://#{libra_server}/broker/userinfo")
158
157
  response = http_post(net_http, url, json_data, password)
159
158
 
160
159
  unless response.code == '200'
161
160
  if response.code == '404'
162
- puts "A user with rhlogin '#{rhlogin}' does not have a registered domain. Be sure to run rhc-create-domain before using the other rhc tools."
161
+ if not_found_message
162
+ puts not_found_message
163
+ else
164
+ puts "A user with rhlogin '#{rhlogin}' does not have a registered domain. Be sure to run rhc-create-domain before using the other rhc tools."
165
+ end
163
166
  exit 99
164
167
  elsif response.code == '401'
165
168
  puts "Invalid user credentials"
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: 263
4
+ hash: 261
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 71
9
- - 2
10
- version: 0.71.2
8
+ - 72
9
+ - 29
10
+ version: 0.72.29
11
11
  platform: ruby
12
12
  authors:
13
13
  - Red Hat
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-31 00:00:00 -05:00
18
+ date: 2011-06-27 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency